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
end

rという変数があって、ループが再生される度に特定の値を受け取り、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
end

n = (chord :c2, :minor).tickは、Cマイナーの和音から音を1つ取得して、nという名前の変数に格納します。.tickは、それが呼ばれた後に次の値に進みます。play nは、nに格納された音を鳴らします。続いて、ループの頭に戻ったとき、.tickは前に居た位置から再開されます。