Generate sounds
下の例を見てください。何が起きているでしょう?
live_loop :melody do
use_synth :blade
r = [0.25, 0.25, 0.5, 1].choose
play (chord :c, :minor).choose, attack: 0, release: r
sleep r
endrという変数があって、ループが再生される度に特定の値を受け取り、playコマンドのreleaseオプションの値として使われ、またsleepの長さの値として使われています。変数は箱に少し似ていて、そこに何か入れたり出したりできます。変数の使い方は簡単で、variable_name = variable_valueとするだけです。これで、variable_valueがvariable_nameに格納されます。値を取得するには、variable_nameとタイプするだけです。
先程の例にシンセとベースを追加して変数を試してみましょう。:keysのループはシンプルで何も新しいことは起こりませんが、:bassループは少しトリッキーです:
live_loop :melody do
use_synth :blade
r = [0.25, 0.25, 0.5, 1].choose
play (chord :c, :minor).choose, attack: 0, release: r
sleep r
end
live_loop :keys do
use_synth :blade
play chord(:c, :minor)
sleep 1
end
live_loop :bass do
use_synth :fm
n = (chord :c2, :minor).tick
3.times do
play n
sleep 1
end
play n
sleep 0.5
play (chord :c2, :minor).tick
sleep 0.5
endn = (chord :c2, :minor).tickは、Cマイナーの和音から音を1つ取得して、nという名前の変数に格納します。.tickは、それが呼ばれた後に次の値に進みます。play nは、nに格納された音を鳴らします。続いて、ループの頭に戻ったとき、.tickは前に居た位置から再開されます。