Sonic Piで学ぶ最も重要な教訓は、間違いはないということです。Sonic Piの一番の習得方法は、繰り返し試してみることです。いろんなことを試し、コードから出る音が良いか悪いか気にするのをやめ、できるだけ異なるシンセ、異なる音符、異なるエフェクト、異なるオプションを実験してみましょう。とてもひどくて笑ってしまうものも数多くある一方で、宝石のような本当に素晴らしい音もあるでしょう。そして、単純にあなたの好みの音は取っておき、そうでないものは捨ててしまえばよいのです。より多くの間違い
をすればするほど、あなたにしか出来ないコーディング音楽をより早く発見し、習得できるに違いありません。
sample
やplay
といったSonic Piの音作りの基本をマスターしたとして、次はどうしよう? Sonic Piには、あなたのコードの音を変えることができる27を超えるスタジオ・エフェクトがあるのを知っていますか? エフェクトは、ドローソフトの派手なイメージフィルタと同じようなものです。ただし、イメージフィルタがぼかしを入れたり、白黒にしたりするのに対し、エフェクトは音にリバーブやディストーション、エコーなどを追加します。それはちょうどギターからエフェクトペダルにケーブルを差して、さらにアンプに差すようなものと考えるとよいでしょう。幸いにも、Sonic Piではエフェクトが本当に簡単になっていて、ケーブルも必要としないのです! あなたのやることは、エフェクトを追加したいコード領域を選択し、エフェクトのコードで包むだけです。たとえば、次のようなコードがあったとしましょう。
sample :loop_garzul
16.times do
sample :bd_haus
sleep 0.5
end
:loop_garzul
のサンプルにエフェクトを追加したい場合には、次のようにwith_fx
に押し込むだけでよいのです。
with_fx :flanger do
sample :loop_garzul
end
16.times do
sample :bd_haus
sleep 0.5
end
では次にバスドラムにエフェクトを追加したい場合には、同じようにwith_fx
で包んでみましょう。
with_fx :flanger do
sample :loop_garzul
end
with_fx :echo do
16.times do
sample :bd_haus
sleep 0.5
end
end
どんなコードでもwith_fx
で包めば、どんな音もそのままエフェクトに送られることを覚えておくとよいでしょう。
もしあなた自身のコーディング音楽を本当に発見したい場合に、あなたはすぐにシンセやエフェクトを変更したり制御する方法を知りたくなるに違いありません。たとえば、音符の長さを変更したり、リバーブをもっと追加したり、エコーの間隔を変更したりしたいかもしれません。幸いにも、Sonic Piでは驚くべきレベルの制御の方法が提供されていて、オプション・パラメータ、略してオプションと呼ばれる特別な仕組みによって、まさしくこれと同じことが可能です。ちょっと見てみましょう。以下のコードをBufferにコピーして実行してみましょう。
sample :guit_em9
おお、すてきなギターサウンドですね! では、これで遊んでみましょう。レートを変えてみるのはどうでしょう?
sample :guit_em9, rate: 0.5
行の最後にちょっと付けたrate: 0.5
は何だろう? これはオプションと呼ばれています。Sonic Piの全てのシンセとエフェクトはオプションをサポートしていて、たくさんのオプションで遊べます。エフェクトでもオプションは利用可能です。次を試してみましょう。
with_fx :flanger, feedback: 0.6 do
sample :guit_em9
end
では、feedback
を1に変更して、クレイジーな音を聞いてみましょう! 利用可能な多くのオプションの詳細について、ドキュメントを読んでみましょう。
Sonic Piについて素早く調べてみたり実験したりする一番の方法は、ライブコーディングすることです。ライブコーディングにより、あるコードから演奏を開始して、演奏を止めずに継続してコードをいじったり、変更したりできます。たとえば、sample
でcutoffのオプションがどのように動作するか分からない場合には、ただ実行してみればよいのです。では試し見てみましょう! 以下のコードをSonic PiのBufferにコピーしてみましょう。
live_loop :experiment do
sample :loop_amen, cutoff: 70
sleep 1.75
end
実行すると、こもった音のドラムブレイクを聞くことができるでしょう。では、cutoff:
の値を80
に変更して再度実行してみましょう。違いが分かりますか? 90
, 100
, 110
も試してみましょう。
live_loop
を一度使い始めると、live_loop
を使わないコードに戻れなくなるでしょう。ドラマーがスティックを頼りにするのと同じように、私もライブコーディングするときはいつもlive_loop
を頼りにしています。ライブコーディングについての詳細は、チュートリアルの9章をチェックしてみてください。
最後に、私が好きでよくやるのは、Sonic Piに作曲してもらうズルい方法です。これを実現する本当に卓越した方法は、ランダム化を使用することです。ランダム化と言うと複雑そうに聞こえるかもしれませんが、実際にはそうでもありません。少し見てみましょう。以下のコードをBufferにコピーしてください。
live_loop :rand_surfer do
use_synth :dsaw
notes = (scale :e2, :minor_pentatonic, num_octaves: 2)
16.times do
play notes.choose, release: 0.1, cutoff: rrand(70, 120)
sleep 0.125
end
end
ここで、上記のコードを実行すると、:e2 :minor_pentatonic
のスケールから選ばれた音符の絶え間ないランダムな流れが、:dsaw
のシンセで再生されるのを聞くことができるでしょう。「待って、待って! これはメロディーじゃない」とあなたが叫んでいるのが想像できます。落ち着いてください。これはマジックのトリックの前半部分です。Sonic Piでは、live_loop
を繰り返す度に、特定の位置にランダムストリームをリセットするように指示することができます。それは、「Dr. Who」に登場するタイムマシンのTARDISが、特定の時間と場所に辿り着くのとちょっと似ています。ではやってみましょう。live_loop
にuse_random_seed 1
の行を追加してみてください。
live_loop :rand_surfer do
use_random_seed 1
use_synth :dsaw
notes = (scale :e2, :minor_pentatonic, num_octaves: 2)
16.times do
play notes.choose, release: 0.1, cutoff: rrand(70, 120)
sleep 0.125
end
end
これで、live_loop
がループする度に、ランダムストリームがリセットされるようになりました。これは、ループの度に同じ16の音符が選択されていることを意味しています。あら不思議! 手軽なメロディーでしょう。ここからが本当に面白くなるところです。シードの値を1
から別な数値、たとえば4923
に変更してみましょう。ワオ! 別なメロディーになったでしょう! 1つの数字(ランダムシード)を変更するだけで、あなたの想像する限り多くのメロディーの組合せを試すことができるのです! これがコードのマジックなのです。