今月のチュートリアルでは、Sonic Piを本物の楽器と同じように扱う方法を見ていきたいと思います。そのため、コードについて今までと全く異なる見方で考える必要があります。ライブコーダーはコードを、バイオリニストにとっての弓と同じように考えています。実際、バイオリニストが異なる音を作るのに様々な弓のテクニックを適用する(長くゆっくりとした動きと短く速い打弦)のとちょうど同じように、Sonic Piで可能な基本的なライブコーディングのテクニックを5つ見ていきます。この記事の終わりまでに、あなたはライブコーディングのパフォーマンスの練習を始めることが出来ているでしょう。
Sonic Piでライブコーディングする際の最初のヒントは、ショートカットを使うことです。例えば、マウスに手を伸ばしてRun
ボタンに合わせてクリックするのに貴重な時間を無駄にするよりも、単にalt
とr
を同時に押すことが可能です。これは速いし、指がキーボードに置かれたままなので、次の編集のための準備が整っています。ショートカットを探すには、画面上部のボタンにそれぞれマウスを乗せると表示されます。ショートカットの一覧を見るには、チュートリアルの10.2を参照してください。
パフォーマンスの際、1つやってみると面白いのは、ショートカットを叩くときの動作に少し装飾を追加してみることです。例えば、あなたが音を変更しようとするときにそれを観客に伝えるのは良いことです。したがって、alt-r
を叩く際の動作を飾るのはギタリストがパワーコードを掻き鳴らすのとちょうど同じことなのです。
コードをキーボードから素早く実行できるようになったら、そのスキルは、手動で音を重ねる2つめのテクニックに適用できます。たくさんのplay
とsample
の呼び出しをsleep
で挟んで’作曲’する代わりに、1つのplay
の呼び出しをalt-r
で手動で実行してみたいと思います。では試してみましょう。次のコードを新しいBufferにタイプしてみてください:
synth :tb303, note: :e2 - 0, release: 12, cutoff: 90
タイプしたら、Run
を叩いて音を出してみてください。音が出ている間に、次のコードのように、4音下げるためにコードを変更してください:
synth :tb303, note: :e2 - 4, release: 12, cutoff: 90
では、再度Run
を叩いてみてください。両方の音がそのまま再生されているが聞こえると思います。これは、Sonic PiのRun
が前回実行したコードが終わるのを待つたずに、新しいコードを開始するためです。これは、実行の度に多少の変更を加えることで、簡単にたくさんの音を重ねることが可能ということです。例えば、note:
とcutoff:
オプションの両方を変更して、再度実行してみてください。
また、このテクニックは長いアブストラクトなサンプルでも試すことができます。例えば、次のコードです:
sample :ambi_lunar_land, rate: 1
最初はサンプル無しで始めて、Run
を叩く度に、rate:
オプションを1
から0.5
, 0.25
, 0.125
に変更し、さらに-0.5
のような負の値も試してみましょう。音を重ね合わせてどう聞こえるか試してみてください。最後に何かエフェクトを追加してみてください。
パフォーマンスの際にこのようなシンプルなコードを使用すると、Sonic Piにあまり馴染みのない観客にとっては、あなたが何をしているのかを追ったり、コードと音を関連付けたりするのに良い機会になると言えるでしょう。
もっとリズミカルな音楽の場合、全てを手動で実行しながら良いタイミングを保つのは難しいでしょう。その場合は、live_loop
を使うのが良いでしょう。これはコードを繰り返しつつ、次にループが先頭に戻ったときに実行されるように、コードを編集できる機能を提供しています。また、ライブループは他のlive_loop
と同時に実行でき、それはすなわち、ライブループ同士を重ねたり、他に手動で実行したコードと重ねたりすることが可能ということです。ライブループに関するより詳細な情報については、チュートリアルの9.2を参照してください。
パフォーマンスの際には、live_loop
のsync:
を使うことを覚えておくと良いでしょう。これは、エラーによってライブループの実行が止まってしまった場合の回復手段として役に立ちます。もし既にsync:
が他の正常に動作しているlive_loop
を指しているのであれば、エラーをすぐに修正してコードを再実行することで、ビートが欠いた状態を解消して再起動できるでしょう。
Sonic Piの最高の秘密の1つは、全ての音が流れるマスターミキサーを持っていることです。そしてこのミキサーはローパスフィルタとハイパスフィルタを内蔵しているので、簡単に音全体を変更できます。マスターミキサーの機能は、set_mixer_control!
関数によりアクセス可能です。例えば、何かコードが実行中で音を出している最中に、次のコードを空いたBufferに入力してRun
を叩いてみてください:
set_mixer_control! lpf: 50
このコードの実行後、既に出ている音とこれから出てくる音の全てにローパスフィルタが適用されるので、ぼんやりとした音になります。これは、先程のコードで設定されたミキサーの値が、再び変更されるまで保持されることを意味しています。しかし、もし値をリセットしたい場合には、reset_mixer!
でいつでもデフォルトの状態に戻すことができます。現在対応しているオプションには、pre_amp:
, lpf:
, hpf:
,amp:
があります。全てのオプションの一覧については、set_mixer_control!
のドキュメントを参照してください。
オプションの値を時間に沿ってスライドさせるために、ミキサーの*_slide
オプションを使ってみましょう。例えば、ミキサーのローパスフィルタを現在の値から30にゆっくりスライドさせるには、次のコードを使ってみてください:
set_mixer_control! lpf_slide: 16, lpf: 30
次に、高い値に素早くスライドして戻すこともできます:
set_mixer_control! lpf_slide: 1, lpf: 130
パフォーマンスの際には、ここでやったようにミキサーのためのBufferを空けておくと便利でしょう。
ライブコーディングの最も重要なテクニックは練習です。すべてのプロのミュージシャンに共通する点は、自分の楽器を練習することです。多くの場合、1日に何時間も練習しています。ギタリストと同じようにライブコーダーにとっても練習は重要です。練習によってあなたの指は特定のパターンや一般的な編集内容を覚えるので、入力や作業がよりスムーズに行えます。練習はまた、新しい音やコード構成を探求する機会をあなたに提供します。
パフォーマンスの際には、やってきた練習が多ければ多いほど、緊張せずにライブに入ることが簡単になると気づくでしょう。練習はまたそこから豊富な経験を提供するでしょう。それにより、どんな種類の変更が面白く、また現在の音に上手く作用するか分かるようになるでしょう。
今月は、全てを組み合わせた例を示す代わりに、課題を設定してお別れにしましょう。今回紹介したアイデアを毎日1つ選んで練習して1週間を過ごせるか試してみてください。例えば、ある日は手動の実行を練習し、その次の日はlive_loop
の基本的な作業をやってみて、その次の日はマスターミキサーで遊んでみます。そしてそれを繰り返します。最初は、全てがゆっくりで不器用に感じられるかもしれませんが、心配しないでください。ただ練習を継続すれば、あなたの知らないうちに実際の聴衆の前でライブコーディングできるようになっているでしょう。