matobaの備忘録

育児しながら働くあるエンジニアの記録

Pythonでライブコーディングできると聞いて、FoxDotを触ってみた

PyConJP 2019で以下の発表を見ました。

Pythonでライブをしよう -FoxDotを使った新時代のPython活用法


02-502_Pythonでライブをしよう -FoxDotを使った新時代のPython活用法-(田中 慎太郎)

Pythonでライブをしよう!FoxDotを使った新時代のPython活用法 - Speaker Deck

だいぶ気になる。ちょうど、最近音楽を作ろうとしていたし、プログラミングで音楽を作る環境欲しいと思って、自分で作ろうかと思ってたくらいなので、より気になる。

というわけで早速試してみました。

インストール

  • 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にあげたりブログに書いたりしたいですね。(ブログで宣言していくスタイル)