LoginSignup
46
26

More than 3 years have passed since last update.

FoxDotによるLiveCoding方法 基礎編

Last updated at Posted at 2019-07-01

LiveCodingをご存じでしょうか?


要はプログラミングでコードを書きながら、リアルタイムに音楽や映像を作るパフォーマンスをすることを言います。
音楽の場合、PythonによるLiveCoding環境としてFoxDotがあります。
他にもTidalCyclesなどありますが、なじみのPythonでできるのがいいなとFoxDotを始めました。

FoxDotのサイトのTopPageのYouTubeのパフォーマンスがかっこいいです。
https://foxdot.org/

僕は∀RroWsという電子音楽とデジタルアートのユニットをやっており、ぜひ次回のライヴでLiveCodingに挑戦したいということで、学んだことを随時、本記事にまとめていきたいと思います。

インストール方法

以下の4つをインストールします。
①Python(anacondaでもOK)
②SuperCollider+PlugIn
③Git(SuperColliderでFoxDotをインストールするのに必要)
④FoxDot(SuperColliderとPythonでそれぞれインストール)
Ver.や環境もあるため、本家サイトを参照してインストールするのが良いです。

本家サイトのインストールガイドはこちら
https://foxdot.org/installation/
日本語でまとまっているのは、下記の記事が参考になります。
https://qiita.com/Hulc_0418/items/ba3e94633e465f7201d0

FoxDotの立ち上げ方法

Windowsの場合ですが、
①SuperColliderを立ち上げて、左の入力欄にFoxDot.startを入力して、Ctrl+Enter
1.JPG

②コマンドプロンプトを立ち上げて、python -m FoxDotを入力、Enterすると開始できる。
2.JPG
3.JPG

音の再生と停止

 再生:例えばp1 >> pluck()を入力し、Ctrl+Enterで音が鳴ります。
    もし、行が連続している場合、これらがまとめて実行されます。
 停止:p1.stop()でp1が停止します。
 全停止 Clock.clear()

曲の設定

 テンポClock.bpm = 175
 スケール(デフォルト:major):Scale.default.set = "minor"など
    と指定。スケールはprint(Scale.names())で確認できる。
 オクターブp1.oct = 5とp1など個別に音域を数値で指定

演奏の基本1 シンセ(メロディ)

1.JPG

 p1 >> pluck():引数なしでは4つうち
 degree:音程は[ ]のみで指定する。
 例) ドレミファソラシド p1 >> pluck([0,1,2,3,4,5,6,7])
 dur:音の長さ 1が1拍(4分音符)、1/2が1/2拍(8分音符)。
 amp:音量。
 pan:LRチャンネル-1でL:100%, 1でR:100%,0(なし)でCenter。
 sus:durで指定した長さで各音は鳴りますが、例えば、sus=1/2にするとその一音を短くできる。
 音色:print(SynthDefs)で確認できる。plunkの部分を例えば以下のように変更すれば良いです。
 Lead系
  star, soft, quin, saw, varsaw, lazerなど
 Pad系
  charm, prophet, pads, ambi, space,
  keys, klank, feel, glassなど
 ベース系
  bass, jbass, sawbass, dbass, dirt, dab など
1.JPG
 なお、音程を記述する[]の中で()で指定すると複数の音を指定すると同時になる。この例の場合4拍目で0と3の音が鳴ります。これで和音を作れます。
1.JPG
 もうひとつ和音の作り方として、(0,2,4)と足すと、[]の中の音を基準に、0,2,4の間隔で和音が鳴ります。[] の音全部を同じように和音にしたい場合はこの方法が有効です。
2.JPG
 代わりに[]の中で[]で複数の音を指定すると、内側の[]内の音が、順番に繰り返される度に変わります。この例の場合、0,1,2,3,0,1,2,0の順で鳴ります。
1.JPG
 また、最後に[0,2,4] で足した場合は、[0,1,2,3] の音が、0,3,6,3,2,5...と0,2,4 の順で足し算された音が鳴ります。

演奏の基本2 ドラム(リズム)

1.JPG

 d1 >> play("")
 ""に以下を記述
 ・休符は半角スペース
 ・音色は print(Samples)で確認できます。
 ・sampleで数値を変えると、それぞれの音が変わります。
 以下代表的な音色

 キック
  'V': Hard kick, 'v': Soft kick,
  'X': Heavy kick, 'x': Bass drum,
  'A': Gameboy kick drum
 スネア
  'O': Heavy snare, 'o': Snare drum,
  'I': Rock snare, 'i': Jungle snare
  'D': Dirty snare, 'u': Soft snare,
  't': Rimshot
 ハット系
  '-': Hi hat closed, '=': Hi hat open,
  ':': Hi-hats, 'a': Gameboy hihat
  '~': Ride cymbal, '#': Crash,
  'R': Metallic, 'r': Metal
 タム
  'm': 808 toms, 'M': Acoustic toms
 クラップ
  '*': Clap, 'H': Clap など
 

基本の8ビート

1.JPG
Xがバスドラ、Iがスネア、=がハイハットオープン、-がハイハットクローズド、スペースが休符
まずは、このようにパート毎に書くとDTMなどで打ち込みをやっている人には分かりやすいです。ただし、LiveCodingとしては、これを入力するのに時間がかかるので短く書く必要があります。

短くする方法の例:繰り返しは省略する
1.JPG
("")の中は繰り返されるので、Xは拍の頭だけ鳴らすなら"X "と1拍分だけで良いです。
Iは2,4拍目なので、" I "で2拍分書けば良いことになります。
"(=-)---"は"=-------"と同じ。つまり、ドラムの場合は()を付けると、1回目は1番目の=が鳴り、2回目は-が鳴るを繰り返します。
()と使うことで、よくある4小節の頭だけハイハットをオープンにするとか短く記述できるます。
シンセ系(メロディ)の場合と挙動が違うので注意。

音を細かくする

 ドラムで音を入力最小単位以上に細かくするには[]で囲います。
1.JPG
d3の最後が[--]になっていますが、ここは本来-が1の個のところ、--が2鳴ります。つまり音が2分割される。例えば[---]とすると3分割され、3連符になります。細かくリズムを刻む際に使えます。
シンセ系(メロディ)の場合と挙動が違うので注意です。

ランダムに選ぶ

{}で囲むと、これは{}の中に複数入力すれば、どれか1つがランダムに繰り返す度に選択されます。
1.JPG
図だと{-=*}が最後にあり、-か=か*が繰り返す度に変化します。

組み合わせ

(), [], {}を組み合わせると複雑なリズムパターンを作ることができます。
1.JPG
慣れないと、すぐにはパターンのイメージがわかないかもしれませんが、これらを使いこなせればLiveCodingゆえの面白いパターンを生み出せると思います。

毎日書いて慣れていこう!
実践編へ続く。

46
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
26