さて、ここからは実践編です。KYMAを実際の作品製作に使用した場合に、必要となりそうな機能をピックアップしていきます。

まず、再生されるサンプルループをマスターとしてそれににトリガーを同期させたい場合は

1 bpm: (60.0 / サンプルの長さ)

と表記します。以前は File Menu から Open を選択し、目的の Sample file を直接開いて、長さ (Duration) を調べる必要がありましたが、現行の KYMAX においては

'file name' sampleFileDuration S  

とすることで作業ステップを大幅に短縮出来ます。

定期的に出力されるトリガーに「オン時間」を設定する機能に bpm:dutyCycle: があります。例えば1秒に一回トリガーを発生させつつ、オン時間を1/4に設定したい場合は、

1 bpm: 60 dutyCycle: 0.25

となります。dutyCycle の値が小さいほど、立ち上がりのオン時間は短くなります。
この場合は1秒×0.25 = 250ミリセカンドのオン時間となります。



次は Random Variation について実習していきましょう。

Random Function メッセージには randomnextRandom が存在します。任意のパラメータにこれらランダムメッセージを書き込むことによって、-1 から1の間のランダムな数値 をジェネレートする事ができます。

2秒毎に新たなランダム化された数値を発生させる場合は

2 s random

新しいランダム数値を任意なトリガータイミング毎に発生させる場合は

!KeyDown nextRandom

240 BPM 毎にランダムな数値を発生させる場合は

(1 bpm: 240) nextRandom

と表記するとよいでしょう。

ランダム数値を音程操作に応用すると

!KeyDown nextRandom * 12 nn + 48 nn

のように2Cから4Cの間の音程が、鍵盤を押す毎にランダムに発生します。

この音程を、ある特定の音列に制限する場合は配列 (array) を使います。

(!KeyDown nextRandom abs * 5 of: #(53 50 48 45 43)) nn

この abs は絶対値の Function メッセージ です。今回のように配列を使う場合には、負の数値を扱うことが出来ないので、 これによって、 nextRandom の持つ -1 ~ 1 のデータ幅を 0 ~ 1 の正の値に変換します。* 5 でこの値は5倍され of: 以下にリストアップされている 5種類の配列 #(53 50 48 45 43) をトリガータイミング毎に選択することになります。配列の数に合わせて、掛ける数は変化します。

7種類の配列の場合は

(!KeyDown nextRandom abs * 7 of: #(60 58 53 50 48 45 43)) nn

となります。

これを応用して、鍵盤の音程から、0.125秒毎にリストアップされた5種類の音列の間でランダムに音程が変化するメッセージは、

!Pitch + ((0.125 s random abs * 5 of: #(10 7 5 2 0)) nn)

となります。

Event Value の変化に対して smoothed または smooth: という Function を使うことで、音階の変化にポルタメントをかける事もできます。

(!Pitch + (0.125 s random abs * 5 of: #(10 7 5 2 0)) nn) smoothed

この場合の変化に要する時間は100ミリセカンドです。これ以外の応答速度が望まれる場合は、

(!Pitch + (0.125 s random abs * 5 of: #(10 7 5 2 0)) nn) smooth: 0.5 s

というように smooth: n s を使って、時間を設定することが出来ます。


Arithmetic with Event Values and Sounds

ここからはリアルタイムに Event Value や Sound に対して行う、数学的な処理に関する例を紹介します。Arithmetic Operators と呼ばれる算術演算素子のなかで最も単純なものは、我々が日常四則計算で使っている、 + 、 - 、 * 、 / です。

expamples answers
+ 3 + 2, -3 + 2 5 -1
- 3 - 2, -3 - 2 1, -5
* 3 * 2, -3 * 2 6, -6
/
** 乗算
// 割算の結果を、負の無限大の方向に端数のない形で丸めたもの
€€ モジュロ演算する。最初の数を2番目の数で割った余り
mod: モジュロ演算する。最初の数を2番目の数で割った余り
negated 符号が反転
inverse 逆数
abs 絶対値
sqrt 平方根
truncated 小数点以下切り捨て (0を中心に行うことに注意)
rounded 小数点以下を四捨五入
roundTo: 指定した数の倍数に入力を変換
sign サイン
clipTo01 0以下の数は0に、 1以上の数は1にクリップ
vmin: 2つの入力された数のうち小さい方を出力
vmax: 2つの入力された数のうち大きい方を出力



expamples answers
** 3 ** 2, -3 ** 2 9, ERROR
// 3 // 2, -3 // 2 1, -2
€€ 3 €€ 2, -3 €€ 2, 3 €€ -2 1, 1, -1
mod: 3 mod: 2, -3 mod: 2, 3 mod: -2 1, 1, -1
negated 3 negated, -3 negated -3, 3
inverse 3 inverse, 3.0 inverse (1/3), 0.333333
abs 3 abs, -3 abs 3, 3
sqrt 3 sqrt, -3 sqrt 1.73205, ERROR
truncated 3.1 truncated, -2.1 truncated 3, -2
rounded 3.5 rounded, -2.1 rounded 4, -2
roundTo: 13 roundTo: 4, 15 roundTo: 5 12, 15
sign -3 sign, 0 sign, 2 sign -1, 0, 1
clipTo01 3 clipTo01, 0.5 clipTo01, 2 clipTo01 - 0, 0.5, 1
vmin: 3 vmin: 2, 2 vmin: 3 2
vmax: 3 vmax: 2, 2 vmax: 3 3

Transcendental Functions (超越関数)

expamples answers
cos (Float pi) cos, 0 cos -1.0, 1.0
sin (Float pi * -0.5) sin, (Float pi * 0.5) sin -1.0, 1.0
normCos 0 normCos, 1 normCos 1.0, -1.0
normSin 0.5 normSin, -0.5 normSin 1.0. -1.0
exp 0, 1.0 1.0, 2.71828
twoExp 0, 9 twoExp, 10 twoExp 1.0, 512.0, 1024.0
log 1.0 log, 10 log, 0.1 log, 100 log 0.0, 1.0, 2.0, -1.0
twoLog 1.0 twoLog, 2 twoLog,0.5 twoLog 0.0, 1.0, -1.0

Array Accessing

of:
メッセージの最初の変数はインデックスに、2番目の変数は数列になります。
数列の最初に位置する数はインデックスナンバー・ゼロ (index # 0) です。#1 でないことに注意しましょう。インデックスはリアルタイムで操作が可能ですが、数列 (array) は数字の配列でなければなりません。通常、インデックスをコントロールする数値の幅は0〜1なので、大抵の場合はこれに数列の大きさ -1 の値を掛けることで全ての数列にアクセスが可能になります。

expamples answers
of: 1 of: #(8 9 10 11), (0 of: #(1 3)) of: #(4 3 2 1) 9, 3

Booleans

リアルタイムに比較を行うファンクションです。条件適合の場合は 、不適合の場合は 0 が返ります。

expamples answers
ne: (not equal) 3 ne: 2, 3 ne: 3 1, 0
eq: (equal) 3 eq: 2, 3 eq: 3 0, 1
gt: (greater than) 3 gt: 2, 3 gt: 3 1, 0
lt: (less than) 3 lt: 2, 3 lt: 3 0, 0
ge: (greater or equal) 3 ge: 2, 3 ge: 3 1, 1
le: (less or equal) 3 le: 2, 3 le: 3 0, 1

では今までのおさらいを兼ねて、これらのファンクションを使用してみましょう。

((((((22050 * fvUnit L) hz) nn) removeUnits €€ 12) truncated) eq: 0) *
( fvUnit R gt: 0.01
)


next Page→