#ドラムをスピーディーにCodingしたい
通常、ドラムはパート別やある程度まとめて書いたりしますが、1行で書く方法があります。例の4行目にありますが、1パ-トずつ**<>**でくくることで1行で書けます。d1,d2,d3,d4を同時に鳴らすのと同じです。この1行で書く書き方のいいところは、まとめてpanなど設定できるところもあります。テンポが速い曲とか、早くCodingしないといけない場合など役立ちそうです。
#ピアノを鳴らしたい
ピアノはprint(SynthDefs)で探してもありません。そこで、Windowsの場合、midiを使うこと鳴らす方法があります。まずはSuperColliderで
FoxDot.midiを実行し、次いで、MIDIClientを実行する。
そうすると、Microsoft GS wavetable Synthを使えるようになります。
そこで、FoxDotでMidiOutによりピアノを鳴らせます。
#コードに合わせてメロディーを変化させたい
実践編1でルート弾きでもやりましたが、ch = var([5,2,3,0],[4,2,2,8])とするとコードを作れますが、これをベースで鳴らしつつ、メロディをp1で作り、ここでは[0,2,0,4]としましたが、これに+chとするだけで、コード上でメロディーが変化します。例ではshuffle()を加えて、実行するたびにコードが変わるようにしています。
#4小節目でメロディーを変化させたい
〇回目で変化させるには、**every()**が有効です。例えばP[0,1,2,4].every(2,"shuffle")とすると。0,1,2,4,2,1,0,4などと2 回目でshuffle されます。P[0,1,2,4].every(3,"shuffle")の場合は0,1,2,4,0,1,2,4,2,1,0,4などと3回目でshuffleされます。では4回目で変えたいなら、3を4にすればといいと思いますが、この場合、実際は5回目にshuffleされます。それならばと、2と3を組み合わせればどうだと、P[0,1,2,4].every(P[2,3],"shuffle")にしたら4回目でshuffleになりました。shuffleの代わりに、mirrorなども使えます。これは一般によく曲で使われるメロディーの展開方法なので、多用しそうです。
#メロディーで音を抜きたい
アルペジオで音を連続的に鳴らすと単調なので、休符を盛り込みたいところですが、休符はamp=0で音を消すことで作ります。特にランダムに休符を入れたい場合は**PRand()**が使えます。例えば、PRand(0,1)[:5]であれば、0,1,1,0,1など0と1がランダムに選ばれ、[:5]で5つ作れます。これをamp=(PRand(0,1)[:5])にすることで、アルペジオで連続していた音がランダムに休符で抜かれてパターンを変化させることができます。
#音に厚みをつける
音に厚みをつける方法として、ギターでよくやるオクターブ奏法があります。これは、先のピアノの例で、oct=(5,6)とすることで、oct=5と6でオクターブ違いで2音鳴らします。主旋律などに特に使えるかと思います。基礎編でも書いたように、最後に+(0,2)などで和音にすることで厚みがでます。
他にはエフェクトでダブリングのような効果をchopとsusの合わせ技で表現できます。これら2つを聴き比べると、chop,susがある方が、印象的なのはよくわかると思います。ただし、これだとchop=4,sus=2だと4分音符が8分音符になります。
音の長さはそのままで、同様な効果を狙うなら、**spread()**をつけても似たイメージになります。
#曲に変化をつける①フェードアウト
どうしてもLiveCodingで曲を作ると、ループベースなので、同じ音が続きますが、大きく変化をつけようとすると、グループ化して一気に止めて、別に書いておいた音を鳴らすなどのアプローチもできますが、音を聴かずに準備しておくのは、経験を積まないと難しいところです。
そこで、徐々に変化させていくパターンになるかと思います。まずはリード系の音を徐々に音を下げます。これは例えば、amp=var([0.8,0.6,0.4,0.2,0],[16,16,16,16,64])、または**amp=linvar([1,0],128)**で実現できます。十分長い時間を設定するか、途中でstop()かければ良いです。
フェードアウト(デクレッシェンド)の効果をこれで実現でき、クレッシェンドも逆に音を大きくしていけば同様にできます。
この間に、リズムパターンやコードを変えていくことで、曲に変化をつけることができます。
#曲に変化をつける②ソロからの元の演奏
一度、ソロにしてから、他全部を鳴らすアプローチもよくありますが、これは例えば、**b1.solo()**として演奏しておいて、nextBar(lambda:b1.solo(0))と書くと、次の小節始まりからソロにする前の状態で鳴るようになります。lambdaのところはλでも良いです。ソロから戻りたい場合はこの書き方は覚えておくと良いです。
#曲に変化をつける③転調
最後のサビの繰り返しで転調するのは、POPSの定番ですが、曲のキーを変えるのは、Root.default=1で数値を指定して変えれます。これは実行して即変わるので、タイミングよく実行しましょう。
このくらい知識がつけば、あとはYouTubeなどでFoxDotで検索し、うまい人のパフォーマンスに学び、実践していけば、どんどん身につくと思います。
役立ちそうな技は随時追加、更新していきます。