PyConJP 2019で以下の発表を見ました。
Pythonでライブをしよう -FoxDotを使った新時代のPython活用法
02-502_Pythonでライブをしよう -FoxDotを使った新時代のPython活用法-(田中 慎太郎)
Pythonでライブをしよう!FoxDotを使った新時代のPython活用法 - Speaker Deck
だいぶ気になる。ちょうど、最近音楽を作ろうとしていたし、プログラミングで音楽を作る環境欲しいと思って、自分で作ろうかと思ってたくらいなので、より気になる。
というわけで早速試してみました。
- インストール
- SuperColliderのインストール
- Pythonのインストール
- FoxDotをOSにインストールする。
- FoxDotをSuperColliderにインストール
- FoxDotの起動
- FoxDot経由で音を鳴らす
- 終わり
インストール
- SuperColliderをインストールする。これはインストーラーを使います。
- Pythonのインストールする。僕の場合はすでにあるので、それを使います。
- FoxDotのインストール。pipでインストールします。
SuperColliderのインストール
まず、SuperColliderをインストールします。
次のリンクからインストールします。
https://supercollider.github.io/download
僕の場合は、macだったので、適当な場所にディレクトリを切って配置しました。 また、アプリケーションには、エイリアスをおいときました。(呼び出しやすくするため)
SuperColliderはIDEっぽい印象。音を鳴らす用の環境のようです。
Pythonのインストール
すでにインストールしてやつを使うので、飛ばします。 今回は、Python3.6で進めています。
FoxDotをOSにインストールする。
とりあえず、FoxDotをpip3でグローバルにインストールしました。
SuperColliderから参照したいと思うのですが、今のところ、SuperColliderが参照するパスがわからないので、とりあえず。
pip3 install FoxDot
FoxDotをSuperColliderにインストール
FoxDotは、SuperColliderという音を鳴らす環境を制御する基盤ですかね。 OSにインストールするだけではなくSuperCollider側にもインストールする必要があります。
SuperColliderを起動して、表示されたエディタに以下を書きます。
Quarks.install("FoxDot")
そして、実行してインストールします。実行は、macの場合、コマンドエンターです。
右下のコンソールっぽいところに、インストール成功したっぽいログが出たので進みます。
FoxDotの起動
FoxDotは、SuperCollider側で起動するのと、コンソール側で起動するのの両方が必要になります。
SuperColliderのエディタに以下を入力して、実行します。
FoxDot.start
ちなみに、最初はFoxDotが見つかりませんでした。 公式ドキュメントを見ると、FoxDotのインストール後にSuperColliderを再起動する必要があるらしいです。再起動して、再度試してみると、うまくFoxDotが見つかりました。
また、最初はBluetooth ヘッドフォンで音を聞きながらやろうとしたのですが、 Bluetoothヘッドフォンだとサンプリングレートが合わないようで、うまく起動できませんでした。 まあしょうがない。
というわけで、SupderCollider側でFoxDotの信号を受ける準備ができたら、次は、FoxDotそのものを起動します。
python3.6 -m FoxDot
こんな風に参照するなら、今回は、グローバルにFoxDotをインストールしましたが、venvで環境を作ってインストールしても良さそうですね。
あとで環境は整理したいと思います。
FoxDot経由で音を鳴らす
FoxDotを起動すると、エディタが起動します。
そこで、色々入力すると、音が出るようです。
とりあえず音が出るところまでは進めることができました。
終わり
とりあえずインストールして、音鳴らすところまでできました。
ちらっと発表を聞いた感じだと、FoxDot自体の文法はPythonっぽくないかもしれないですが、一応はPythonらしいです。
ということは、多分パターンをオブジェクトとして考えてクラスで実装したり、パラメータチューニングに機械学習や最適化ライブラリを使えるかも?とか勝手に色々想像しています。
もう少し遊んでみて、何かできたら、ライブコーディングの様子とかをyoutubeにあげたりブログに書いたりしたいですね。(ブログで宣言していくスタイル)