ちょっと前によく話題になっていたライブコーディング。リアルタイムにコーディングして映像や音楽を「演奏」するパフォーマンスとして使われます。そのツールとしてもよく使われSonic-Piは私も愛用しているのですが、
「Sonic Pi Remote」
https://decode.red/net/archives/460
「ユークリッドリズム」
https://decode.red/ed/archives/1270
今回Sonic-Pi CLIというものを使うとVSCodeでコード編集ができるということで試してみました。
https://www.parthkabra.me/vscode/sonic-pi
https://github.com/Widdershin/sonic-pi-cli
環境) Sonic Pi v3.2 / Windows 10
Sonic Piは新しいv4では対応できなくなっいたため古いバージョンに戻しました。
上記「Sonic Pi Remote」に詳しくありますが、OSC通信を使ってSonic-Piにコードを送り込むことができます。Sonic-Pi CLIも同じしくみでやっているわけですが、versin 3.2より新しいとrun-codeによるコード転送が対応できていないようです。run-codeを使う場合はSonic-Piをただ起動するだけで使用できますが、通信の場合はSonic-Piのコーディングが必要です。
VSCodeを使うメリットは、豊富なショートカットにより、より効率的にコーディングできることです。またキーバインディングによりリモートコントロールができます。
ここではCTL-Sでファイルを保存すると同時にSonic-Piにコードを転送しています。
Sonic-Piのよく考えられているところは、live_loopによって演奏しながらとぎれることなくコードをアップデートするところです。
tasks.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "version": "2.0.0", "tasks": [ { "label": "test-run", "type": "shell", "command": "set PATH=C:\\Ruby22-x64\\bin;%PATH% & type music.rb | sonic_pi" }, { "label": "test-stop", "type": "shell", "command": "set PATH=C:\\Ruby22-x64\\bin;%PATH% & sonic_pi stop" } ] } |
keybindings.json
1 2 3 4 5 6 7 8 9 10 11 12 |
[ { "key": "ctrl+s", "command": "workbench.action.tasks.runTask", "args": "test-run" }, { "key": "ctrl+d", "command": "workbench.action.tasks.runTask", "args": "test-stop" } ] |
ここでは上記「ユークリッドリズム」のコードを使用しました。
Sonic-Piの画面。立ち上げるだけでOK。バージョンも確認。
ちょっと古いネタですが、新しい使い方をしたいので環境をメンテナンスする意味でもとりあげてみました。
メモ)
gem install sonic-pi-cli
で失敗したため以下を参考にしました。
「gem install時にcertificate verify failed が発生したら」
https://qiita.com/hirokishirai/items/7579eaad5132a8e48975
証明書(.pem)は下記に保存(ファイル名はなんでもいいみたい)
C:\Ruby22-x64\lib\ruby\2.2.0\rubygems\ssl_certs