2週間ほど前の記事で
ここまできたらユーザがビルド環境を用意するのではなく、私がサーバを立てて、Pure Dataパッチをアップロードしたらlogue SDKでビルドしたオシレータが返ってくるようなオンラインコンパイラが作りたいですね。
と書きましたが、この週末はその試作をしていました。
ChatGPTにお伺いを立てたところ「FlaskかFastAPIですかね。処理が重そうならCelery + Redisも」と言われたので、まずはFlaskでPoCを組んでみました。
組んでみました、といってもほとんどChatGPTが書いてくれるので、それを見ながら仕様の修正や変な動作のデバッグが私の主な仕事です。
冒頭のスクリーンショットがそのPoCで、とりあえずローカル環境でPure Dataパッチをドラッグ&ドロップすればNTS-1のオシレータユニットが返ってくるようになっています。Pure Dataパッチを与えて、ユニットをダウンロードし、それをライブラリアンでNTS-1に転送するまでの実際の動作画面をキャプチャしてみました。
今のところはまだ、シェルの上で行う操作をWebアプリ化してみましたというだけの代物で、並列処理に対応していないので公開できないのですが、そのうち安いVPSを借りて公開してみようかなと思っています。(本体であるlogue SDK用external generatorも、何か新しいパッチを食わせるたびに新たなバグが発覚するイタチごっこ状態が続いていますので、その改善具合にもよりますが。)
ちなみに、このWebの画面には「use heavylib」というチェックボックスがあります。このチェックボックスは、アップロードするパッチがheavylibを使用する場合にオンにします。heavylibはPure Dataのライブラリで、hvccで利用できる機能だけを使って作られています。リポジトリはここにあります。
heavylibに入っているパッチのほとんどはエフェクト系ですが、PolyBLEPを使った鋸波と方形波のオシレータもあります。これらはそれほど大きなサイズではなく、logue SDKでもビルド可能です。
コメント