2nd DAY ログ(4)
[5] 同期(Sync)
参考ページ:https://github.com/samaaron/sonic-pi/blob/master/etc/doc/tutorial/10.2-Sync.md
[sample.1]
プログラム内にいくつかlive_loopを設けているときに、あるひとつのlive_loopのみ音をストップさせたい場合、
止めたいコード内に「stop」と書き足すと音が止まる。
live_loop :bar do
sample :drum_heavy_kick
sleep 1
sample :drum_snare_hard
sleep 1
end
live_loop :foo do
stop
sample :drum_cymbal_closed
sleep 0.5
end
[smaple.2]
コード内から「stop」を消すと、音を止めていたlive_loopの音が再度なり始める。
しかし、スタート位置がそろわずにずっと音がズレたままになる可能性があるため、
あらかじめstopしていたコード内に、「sync: ~~(音を揃えたいlive_loop名)」を書き加えておく。
※考え方がややこしいので要注意!※
例えば、下記のコードをそのまま再生すると、ドラムを2拍打つ間に、シンバルが4拍打たれる。
live_loop :bar do
sample :drum_heavy_kick
sleep 1
sample :drum_snare_hard
sleep 1
end
live_loop :foo do
sample :drum_cymbal_closed
sleep 0.5
end
しかしながら、そこに下記のようにsyncを加えると、live_loop :barが1回実行されるごとに、live_loop :fooが1回しか実行されない。
live_loop :bar do
sample :drum_heavy_kick
sleep 1
sample :drum_snare_hard
sleep 1
end
live_loop :foo do
stop
sync :bar #stopを消しても、自動的にlive_loop :bar doで流れている曲に合わせて再生をしてくれる
sample :drum_cymbal_closed
sleep 0.5
end
そのため、live_loop :fooの中身は始めから実行したいとおりに4.times do等を書くなどしておくとよい。
(syncについては後ほどもうちょっと詳しくまとめます...!)