Pythonで始めるアルゴレイヴ入門

これは 😺TECHSCORE Advent Calendar 2019😺の22日目の記事です。

Introduction(はじめに)

アルゴレイヴとは

アルゴレイヴ(Algorave)というものをご存じでしょうか?アルゴレイヴとはAlgorithm(アルゴリズム)とRave(皆で楽しむこと)を組み合わせた造語です。音楽や映像をプログラミングで即興的に作り上げるライブコーディングという技術を使用し、ライブコーダーが様々なアルゴリズムから生成された音楽を流すイベントのことを指します。2011年イギリスで最初のイベントが開催され、現在世界で広がりつつあります。日本でも度々開催されています(algorave.tokyo)


ライブコーディングとは

ライブコーディングとは即興的にプログラムを書き/編集しながら、音楽や映像を奏でるリアルタイム・パフォーマンスのことです。作りこんだものではなく、偶然性や即興性を楽しむものでパフォーミングアートにおける新たな表現形態として注目されています。

とはいってもなかなか想像しづらいかもしれません。これから紹介するFoxDotの公式サイトでデモ動画が公開されているので一度見てみて下さい。きっと試してみたくなるはずです。
また、PyConJP2019でも紹介されていたのでこちらもご参照ください(Pythonでライブをしよう -FoxDotを使った新時代のPython活用法-)

Requirement(環境)

では早速ライブコーディングを始めてみましょう。ライブコーディング環境としてTidalCyclesやFoxDot,Sonic Piなどが挙げられますが、今回はSuperColliderとFoxDotを使います。SuperColliderとは強力な音響合成エンジンであり、FoxDotはSuperColliderを操作するPythonライブラリです。
図で表すとこのような構成になります。

 Install(インストール)

インストールするものは四種類だけです。
  • Python(3系推奨,2系でも動きます)
  • Git
  • SuperCollider(バージョン3.8以上)
  • FoxDot(pipやAnacondaでインストール可能)

詳しいインストール方法は公式ページをご覧ください

StartUp(立ち上げ)

立ち上げもとても簡単です。三つのステップで立ち上げていきます。
  1. SuperColliderを起動する。
  2. SuperColliderのコンソールからFoxDotと通信するように設定。
    >>> FoxDot.start
  3. コマンドラインを立ち上げFoxDotを起動。
    $ python -m FoxDot
FoxDotのインターフェースが開き準備完了です。

 Getting Started(入門)

音の再生

では早速音を鳴らしてみましょう。FoxDotのコンソールに

と入力し、 CTRL+ENTER で実行します。すると弦をはじいたような音(プラック音)が鳴るはずです。これは1行目でテンポを指定し、二行目でメロディを奏でています。pluckの引数が指定されていないので4つ打ちで音が鳴っているはずです。また、pluckが音色を指定しています。bassやstar,sawなどに変更してみてください。音色が変わります。

音の停止

音を止めるときには p1.stop() で指定した音が停止し、 Ctrl+. ですべての音が停止します。

音の変更

音の高さや長さ,振幅などを指定することによって音を変更することができます。
最初の引数は音の高さを表し、明示的に命名する必要はありません。
degree : 音程が指定できます。(命名する必要なし)
dur : 音の長さが指定できます。(1:四分音符,1/2:八分音符)
amp : 音量が指定できます。

音のグループ化

また複数の値を括弧で囲むことによって音をグループ化することもできます。

[] : 角括弧でグループ化すると音を分割し連符を表現することができます。
() : 丸括弧でグループ化すると同時に鳴り和音を鳴らすことができます。
pan : 音のLRチャンネル -1:L100%,1:R100%((-1,1)なので一つ目の和音が左から、二つ目は右から聞こえます)

ドラム

次のようにドラムも演奏可能です。

x : バスドラム
o : スネアドラム
- : クローズドハイハット
= : オープンハイハット
などなどたくさんありますが、今回は省略します。
ピアノと同様、音の変更や同時に再生することも可能です。
このような感じでDTMのように打ち込むことも可能です。
またピアノと同様グループ化もできます。

Pattern(パターン)

アルゴレイヴというからにはアルゴリズムから音楽を生成する必要があります。アルゴリズムを組む上でよくリストの操作などを使うのですがFoxDot特有の書き方もあるので少し見ていきましょう。まず一般的にPythonで用いられるlistですが、もし全ての数に同じ数をかけたい場合どうしますか?
結果はどうしょう。きっと想像していたものではないかと思います。もしリスト内の全ての要素に数字をかけたいのであればPythonではfor文やnumpyを使うことが多いですが,FoxDotには"pattern"と呼ばれるクラスがあります。これを用いることによってより柔軟にリストを操作することができます。使用するにはリストの前に"P"と書きます。
これを用いることによって例えば2と3を交互にかけたり、なかなか書きづらいコードも簡単に書くことができます。

Summary(さいごに)

いかがだったでしょうか。今回の記事では導入からFoxDotでのコーディングの基礎まで説明しました。基礎ではありますが、これらを組み合わせることによって面白いパターンを生み出せます。是非皆さんもFoxDotをはじめAlgoraveを盛り上げていきましょう。Thanks☺

Comments are closed, but you can leave a trackback: Trackback URL.