これは 😺TECHSCORE Advent Calendar 2019😺の22日目の記事です。
Introduction(はじめに)
アルゴレイヴとは
アルゴレイヴ(Algorave)というものをご存じでしょうか?アルゴレイヴとはAlgorithm(アルゴリズム)とRave(皆で楽しむこと)を組み合わせた造語です。音楽や映像をプログラミングで即興的に作り上げるライブコーディングという技術を使用し、ライブコーダーが様々なアルゴリズムから生成された音楽を流すイベントのことを指します。2011年イギリスで最初のイベントが開催され、現在世界で広がりつつあります。日本でも度々開催されています(algorave.tokyo)
ライブコーディングとは
ライブコーディングとは即興的にプログラムを書き/編集しながら、音楽や映像を奏でるリアルタイム・パフォーマンスのことです。作りこんだものではなく、偶然性や即興性を楽しむものでパフォーミングアートにおける新たな表現形態として注目されています。
とはいってもなかなか想像しづらいかもしれません。これから紹介するFoxDotの公式サイトでデモ動画が公開されているので一度見てみて下さい。きっと試してみたくなるはずです。
また、PyConJP2019でも紹介されていたのでこちらもご参照ください(Pythonでライブをしよう -FoxDotを使った新時代のPython活用法-)
Requirement(環境)
Install(インストール)
- Python(3系推奨,2系でも動きます)
- Git
- SuperCollider(バージョン3.8以上)
- FoxDot(pipやAnacondaでインストール可能)
詳しいインストール方法は公式ページをご覧ください
StartUp(立ち上げ)
- SuperColliderを起動する。
- SuperColliderのコンソールからFoxDotと通信するように設定。
>>> FoxDot.start - コマンドラインを立ち上げFoxDotを起動。
$ python -m FoxDot
Getting Started(入門)
音の再生
では早速音を鳴らしてみましょう。FoxDotのコンソールに
1 2 |
Clock.bpm = 60 p1 >> pluck() |
と入力し、 CTRL+ENTER で実行します。すると弦をはじいたような音(プラック音)が鳴るはずです。これは1行目でテンポを指定し、二行目でメロディを奏でています。pluckの引数が指定されていないので4つ打ちで音が鳴っているはずです。また、pluckが音色を指定しています。bassやstar,sawなどに変更してみてください。音色が変わります。
音の停止
音を止めるときには p1.stop() で指定した音が停止し、 Ctrl+. ですべての音が停止します。
音の変更
1 |
p1 >> pluck([0,2,4], dur=[1,1/2,1/2], amp=[1,3/4,3/4]) |
dur : 音の長さが指定できます。(1:四分音符,1/2:八分音符)
amp : 音量が指定できます。
音のグループ化
また複数の値を括弧で囲むことによって音をグループ化することもできます。
1 |
b1 >> bass([(0,9),(3,7)], dur=4, pan=(-1,1)) |
pan : 音のLRチャンネル -1:L100%,1:R100%((-1,1)なので一つ目の和音が左から、二つ目は右から聞こえます)
ドラム
次のようにドラムも演奏可能です。
1 |
d1 >> play("x-o-") |
などなどたくさんありますが、今回は省略します。
1 2 |
d1 >> play("xxox") d2 >> play("---(-=)", pan=0.5) |
1 2 3 |
d1 >>("x x x x ") d2 >>(" o o ") d3 >>("=-------") |
1 |
d1 >> play("x[--]o(=[-o])") |
Pattern(パターン)
1 |
>> print([1,2,3] *2) |
1 2 3 4 |
>>> print([1,2,3] *2) [1, 2, 3, 1, 2, 3] >>> print(P[1,2,3] *2) P[2, 4, 6] |
1 2 |
>>> print(P[1,2,3]*[2,3]) P[2, 6, 6, 3, 4, 9] |
Summary(さいごに)
いかがだったでしょうか。今回の記事では導入からFoxDotでのコーディングの基礎まで説明しました。基礎ではありますが、これらを組み合わせることによって面白いパターンを生み出せます。是非皆さんもFoxDotをはじめAlgoraveを盛り上げていきましょう。Thanks☺