FoxDotによるLiveCoding方法 実践編1

　前回の[基礎編](https://qiita.com/snafkinliberty/items/2ae72d94a2e91f932625)の内容で、音は鳴って自由に演奏はできるとは思いますが、実際にLiveCodingする上では、スピードが求められるので短く表現する方法や、曲に変化をつけるための方法を実践編としてまとめていきたいと思います。

# グループ化によるsolo,stopなど
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/29ecaf10-b92f-0bae-ae31-3f96f8c6ec7c.jpeg)
　曲の途中で、ソロにしたり、特定の楽器だけにしたいことがあります。
まずソロの場合ですが、**p1.solo()**と書けば、p1だけが鳴る状態になります。
p1だけでなく、複数の楽器だけ鳴らしたい場合はGroup機能が使えます。
**Gr1 = Group(p1,d1)**とグループを作り、**Gr1.solo()**または**Gr1.only()**と書けばGr1だけが鳴ります。逆にGr1だけ止めたい場合も**Gr1.stop()**で止めれます。
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/bfb6eaed-746d-8d01-8b5e-20139b884d59.jpeg)
　単純に、dで始まるもの全部なら**d_all.stop()**で、いちいちグループを作らなくても処理できるので便利です。

#変数による繰り返し表現
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/27f6f746-5985-3ca4-e5e8-1f20afbdb89b.jpeg)
　**var**:図のp1でvar([0,3,0,4],4), dur=[1])と入力すると、1拍ずつ 0 0 0 0 3 3 3 3 0 0 0 0 4 4 4 4 の順で演奏されます。[]の中の音が([],4) なら4拍で切り替わります。さらに[]の音はdur=[]の長さで鳴るため、p1は1拍ずつなので4回で音が切り替わり、p2は1/2 拍なので、8回鳴ると音が切り替わることになります。

　**linvar**:varの連続的変化をするもので、p3ではpanで-1から1まで8 拍で変化する。
#パターン活用によるメロディの改変
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/caeefac9-9197-4f38-e2aa-43279af3e651.jpeg)
　degreeを[]で与えますがこれを**P[]**とPを頭につけてパターンとして与えることができます。メリットとしては、**rotate()**, **reverse()**, **sort()**などで簡単に順番を変えることができます。
P[3,1,2,0]とあった場合、rotate()だとP[1,2,3,0]になり、reverse()だとP[3,2,1,0]、sort()だとP[0,1,2,3]に変わります。音階順に変えたいときなどに簡単に書けるので有効です。
他にも、**shuffle()**でランダムに入れ替えたり、**mirror()**で逆順にできます。

#ルート弾きの表現方法
![12.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/5982ff31-eddd-c623-633c-74844b4f31f6.jpeg)
　ベースなど同じ音を繰り返し、ルート弾きをよくすると思います。
音の繰り返しは、**stutter()**が使えます。これは()中の回数だけ、[]の各音を繰り返します。
この場合、繰り返しが4回なので、0,0,0,0,3,3,3,3,0,0,0,0,4,4,4,4となります。

![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/b809b280-1b87-8673-e26e-78815c8362dc.jpeg)
　繰り返し回数を個別に変えたい場合は、上記のvarを使えばよく、var([音程],繰り返し回数)でしたが、繰り返し回数も[]で与えることで、音程と対応させて、指定回数鳴らせます。この場合、5,5,5,5,5,5,5,5,2,2,2,2,3,3,0,0となります。これはコード進行を表現するのに使えます。

#音の長さの分割
　音の長さを決められた拍数で分割したい場合、**PSum**,**PDur**が使えます。
![2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/d8dd570b-b28b-49e6-52ac-4128e96b98ac.jpeg)
　まずはPSumですが、例えばdur=PSum(5,4)と書くと5つの音の長さを足して4拍になるように分割してくれます。どのように分割されているかは、print(PSum(5,4))を実行すれば、P[1.0, 0.75, 0.75, 0.75, 0.75]と返ってきて、分かります。
　任意の数の音を決まった拍数に収めるように音の長さを分割したい場合に有効です。順番を音の長さの順番を変えたい場合は、上記と組み合わせてdur=PSum(5,4).rotate(1)とかで順番は変えます。


![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/77fa4030-f02d-19ec-7c20-979bc4ace221.jpeg)
　もうひとつPDurでも同様なことができます。例えば、dur=PDur(5,18,0,0.25)と書くと5(第1引数)つの音に対し、0.25(第4引数)を18(第2引数)回分(4.5)を拍を5分割してくれます。やや分かりにくいですが、print(PDur(5,18,0,0.25))で実行すれば、P[1.0, 0.75, 1.0, 0.75, 1.0]に分割されていることが分かります。ここで0(第3引数)はパターンの順番で、0は初期設定で省略可ですが、1,2と変えていくと、rotate()と同じようにサイクリックに順番が変わります。0.25(第4引数)も初期設定で省略可です。ある拍数の倍数で分割したい場合に使えます。

#アーティキュレーション
　次は音の形やつながりの表現方法です。
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/47ecad0b-bad6-f024-0ab6-8cdae5fc86f6.jpeg)
　音の長さは**sus**で指定します。1/2にすると、4つ打ちでも8分音符で、各拍で鳴るようになります。
　次にレガートで滑らかに音をつなぐ(スラー)の方法でしが、**blur**で指定します。blur=[1,2]とすると2,3番目の音がつながります。
　ビブラートも**vib=4**で4拍のビブラートがかかります。**vibdepth**で、ビブラートのかかり具合を調整できます。
　音の音程を変化させる方法ですが、**slide**と**bend**があります。音の変化の幅を数値で指定しますが、マイナス値を指定すれば音を下げることもできます。ギターでいうスライドとチョーキングのようにニュアンスが違うので(リニアな変化か否か)、使い分けると良いです。

#エフェクト
　エフェクト多数ありますが、代表的なもの順次説明します。
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/65e5376d-90e4-f589-6456-d982ef447fb9.jpeg)
　まずは**delay**。これは音を遅れさせることができる。delay=[0,0,0,0.5]であれば、3の音が0.5拍遅れ、4.5拍目に鳴ります。よく使うのは**delay=(0,0.25)**として、0で本来の音と0.25遅らせた音を同時に出すことです。

![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/291d4c5a-f18c-127c-0655-02a1419eadbb.jpeg)
　次にfmodとchopです。**fmod**はフランジャーで、指定した数値により、周波数のずれた音が加わります。**chop**は音の長さが指定の回数切り刻まれるイメージでしょうか。
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/746b5590-e746-4b6d-7545-d62761594364.jpeg)
　次いでハイパスフィルターとローパスフィルターです。
　ハイパスフィルターはhpf=周波数で指定し、 resonanceのhprで音色が変化します。ローパスフィルターも同様で、lpf=周波数でlprでresonanceを指定します。これらは連続的に変えるのが効果的なので、linvarと組み合わせて使うことが多いです。

#所有音源を使用する
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311653/402c540c-cb80-ce41-1191-e282d9fdce57.jpeg)
ドラムなど1shot系のサンプル音源など、DTMをやっていれば持っているかと思います。その場合は、**loop()**でwavファイルのパスを指定すれば使用できます。

続きは[実践編2](https://qiita.com/snafkinliberty/items/a7d021c28bb9d7717370)へ