【Sonic Pi】Sonic Piでアルペジオを使ってみる

Sonic Piでアルペジオを使ってみた。play_pattern chord()という関数。

アルペジオの使い方は公式のヘルプに乗ってるので読めば構造はわかるのだが、調べる→使う→満足→忘れる→調べるのループが本当にひどいので書いておく。

それと、「わかる」と「使う」の間には乖離があると思うので、恥じず恐れずにブログに書く。

 

live_loop :_20171226 do
  
  sample :bd_klub,amp:3
  sample :drum_cymbal_open, rate: rrand(0,0.5)
  
  in_thread do
    20.times do
      sample :bd_klub
      sleep choose([0.25,0.5,0.75])
      sample :drum_cymbal_pedal,rate:3
      sleep choose([0,0.25,0.5,0.75])
    end
  end
  
  play chord(:E3, :maj),amp:3
  sleep 1
  play_pattern chord(:E3, :minor)
  play_pattern_timed chord(:E3, :major7),0.25
  play_pattern_timed chord(:E3, :madd11), [0.25, 0.5]
  play_pattern_timed chord(:E3, :m13), [1, 2, 3]
  
end

 

Sonic Piで実行したら流れる。

前半はビートを書いてる。見たらわかると思うが、sleepが入っていないので、一気に実行される。in_thread do ~ endで囲われているところはthreadが実行されるので、下部に書いたアルペジオのコードと共にビートのシーケンスが同時に出力される。

アルペジオはplay_pattern chord()という関数で、時間を保持する。

つまり下に処理が流れない。その使い方を理解しようと思った。

 

play chord(:E3, :maj),amp:3

sleep 1

これは和音を出力する。アルペジオじゃないので時間を保持しない。

聞こえがわかりやすいようにsleepを入れた。

 

play_pattern chord(:E3, :minor)

これはアルペジオを出力する。

デフォルトではsleep1を保持していて、その間隔で順番に音を出力する

 

play_pattern_timed chord(:E3, :major7),0.25

このように書くと、時間間隔を指定することができる。

こうすると0.25の間隔で出力することができる。

 

play_pattern_timed chord(:E3, :madd11), [0.25, 0.5]

こういう風に書くと配列で間隔を指定できる。

0.25, 0.5を繰り返して間隔を作る。

 

play_pattern_timed chord(:E3, :m13), [1, 2, 3]

配列の数を増やすと、その分だけ繰り返す。

アルペジオなのでそんなに音の数ないけど。

 

書いててアルペジオのシーケンスの長さを指定とかもできるのかな!とか思った。

また調べて今度やってみる。