2019😺の22日目の記事です。Introduction(はじめに)アルゴレイヴとはアルゴレイヴ(Algorave)というものをご存じでしょうか?アルゴレイヴとはAlgorithm(アルゴリズム)とRave(皆で楽しむこと)を組み合わせた造語です。音楽や映像をプログラミングで即興的に作り上げるライブコーディングという技術を使用し、ライブコーダーが様々なアルゴリズムから生成された音楽を流すイベントのことを指します。2011年イギリスで最初のイベントが開催され、現在世界で広がりつつあります。日本でも度々開催されています(algorave.tokyo)ライブコーディングとはライブコーディングとは即興的にプログラムを書き/編集しながら、音楽や映像を奏でるリアルタイム・パフォーマンスのことです。作りこんだものではなく、偶然性や即興性を楽しむものでパフォーミングアートにおける新たな表現形態として注目されています。いってもなかなか想像しづらいかもしれません。これから紹介するFoxDotの公式サイトでデモ動画が公開されているので一度見てみて下さい。試してみたくなるはずです。-FoxDotを使った新時代のPython活用法-)Requirement(環境)では早速ライブコーディングを始めてみましょう。Piなどが挙げられますが、今回はSuperColliderとFoxDotを使います。SuperColliderとは強力な音響合成エンジンであり、FoxDotはSuperColliderを操作するPythonライブラリです。図で表すとこのような構成になります。Install(インストール)インストールするものは四種類だけです。Python(3系推奨,2系でも動きます)GitSuperCollider(バージョン3.8以上)FoxDot(pipやAnacondaでインストール可能)詳しいインストール方法は公式ページをご覧くださいStartUp(立ち上げ)立ち上げもとても簡単です。三つのステップで立ち上げていきます。SuperColliderを起動する。SuperColliderのコンソールからFoxDotと通信するように設定。FoxDot.startコマンドラインを立ち上げFoxDotを起動。FoxDotFoxDotのインターフェースが開き準備完了です。Started(入門)音の再生では早速音を鳴らしてみましょう。すると弦をはじいたような音(プラック音)が鳴るはずです。これは1行目でテンポを指定し、二行目でメロディを奏でています。pluckの引数が指定されていないので4つ打ちで音が鳴っているはずです。pluckが音色を指定しています。bassやstar,sawなどに変更してみてください。すべての音が停止します。音の高さや長さ,振幅などを指定することによって音を変更することができます。最初の引数は音の高さを表し、明示的に命名する必要はありません。音の長さが指定できます。音のグループ化また複数の値を括弧で囲むことによって音をグループ化することもできます。角括弧でグループ化すると音を分割し連符を表現することができます。丸括弧でグループ化すると同時に鳴り和音を鳴らすことができます。-1:L100%,1:R100%((-1,1)なので一つ目の和音が左から、二つ目は右から聞こえます)ドラム次のようにドラムも演奏可能です。オープンハイハットなどなどたくさんありますが、今回は省略します。ピアノと同様、音の変更や同時に再生することも可能です。pan=0.5)このような感じでDTMのように打ち込むことも可能です。>>("=-------")またピアノと同様グループ化もできます。play("x[--]o(=[-o])")Pattern(パターン)アルゴレイヴというからにはアルゴリズムから音楽を生成する必要があります。アルゴリズムを組む上でよくリストの操作などを使うのですがFoxDot特有の書き方もあるので少し見ていきましょう。*2)結果はどうしょう。想像していたものではないかと思います。リスト内の全ての要素に数字をかけたいのであればPythonではfor文やnumpyを使うことが多いですが,FoxDotには"pattern"と呼ばれるクラスがあります。これを用いることによってより柔軟にリストを操作することができます。使用するにはリストの前に"P"と書きます。6]これを用いることによって例えば2と3を交互にかけたり、なかなか書きづらいコードも簡単に書くことができます。9]Summary(さいごに)いかがだったでしょうか。今回の記事では導入からFoxDotでのコーディングの基礎まで説明しました。基礎ではありますが、これらを組み合わせることによって面白いパターンを生み出せます。皆さんもFoxDotをはじめAlgoraveを盛り上げていきましょう。Codeのフォーマッタを自分好みに設定してみる。