3/14日記 ===== ゲーム開発 ===== * 5面ボスの形はできたけど、その次の動き作るのが難航しそう。 * おおざっぱに点を打って、パーツを動かす予定とする。 * これだったらGUIでモデル作れたほうが楽な気がしてきた。 * ボスごとに作りが違うので割と時間がかかっているという。 ===== プログラミング ===== * 音楽ツール作るのに、C言語使おうかと思ったけど、他の案でDelphi使えないかと思い至った。 * ただ、どうもWASAPIを利用する場合、自分でライブラリやバインダを用意しないとダメそう。 * 時間かかるのではと思い始めてる。 * それ以外については問題なさそう。サウンドIOのライブラリをDLL経由で読んだりソースコードからパッケージ作ったりしないとダメかもだけど。 * 確実な方法で作るためにC言語を使う必要があるという残念な結果に終わりそう。 * あとこんなのを見つけた。 * https://cmajor.dev/docs/Examples/Pro54/ * CMajorを試しに使ってみたら簡単に信号処理が書けてすごい面白い。これをライブコーディングに使いたいとか思い始める。 * ただ信号処理そのもののビルドになるので、JITとは言え時間はかかりそう。 * どうもCMajorは今日情報が出たばっかりのようだった。 ===== 音楽・プログラミング ===== * CMajorの大きなニュースについて教えてもらったので、Misskey上で急ぎ翻訳してたものをこちらにも記述する。(少し整理した) * 動画:https://www.youtube.com/watch?v=3daa35t89QA * 内容: * 完全に全部オープンソースになった(補記:CMajorコンパイラのソースコードも公開されてる) * ライセンスはGPL/商用選択式(補記:JUCEと同じ感じになってそう) * アプリに静的に組込ができるようにしてる。単体でソースコードを組み込みし易い構成。それを行えるようにオープンソースにした。 * 組み込みはDSPコードをC++に変換した上で組み込む・JUCEプロジェクトに変換して組み込む・CMajorコンパイラをプログラムに組み込んでJIT形式で動かす等の選択肢が存在する。(補記:バイナリ形式にも変換できるため、JITすらしなくていいケースもあるのでは?と思う) * Pro54は元のVSTiのコード(C++)→CMajorへの移植・保守のテストケースとして制作された。ほぼコピペ+名前規則を少し修正する等を実施。 * JIT形式での実行速度は結構早い。(補記:勿論エクスポートするほうが早いが。あとJITした後だとバイナリの実行速度かな?って思う) * CMajorの言語自体はイベントとストリームをやり取りするだけでメモリ割り当てやディスク書き込みまでは担当してない。(補記:実際コードみると前述の要素がまったく記述されてないことを確認できる) * UIとバックエンドは同じ場所にある必要はない。メモリは共有しておらず、サーバ・クライアント構成のような形でメモリを分割して管理ができる。 * パッチ形式でFaustからのインポートにも対応?(補記:Faust側にCMajorへのポート機能が用意されてる。https://faustdoc.grame.fr/tutorials/cmajor/) * 商用ライセンスは近日提供開始予定。(補記:Webページにその旨記述あり。https://cmajor.dev/docs/Licence) * コンパイラ経由で各種プラグインへのエクスポート可能(補記:プラグインに対応したJUCEプロジェクトのテンプレートが作成される) * VSTiもJITに対応。開発側がダイナミックにコード変更することを想定してる。 * 制御する周期・タイミングは自由にコントロールできるみたい。マルチレートにも対応しているので、オーバーサンプリングのような処理も可能。 * ML推論についても対応してる件、数百~千くらいのパラメータを備えた機械学習モデルを作ってみたところ性能がかなり出た。今後もいろいろ取り組んで見る予定。 * ギター音源は、ML推論を利用したサンプルのひとつ(補記:ソースコードに学習結果を書き込む) * 1秒あたり40000-48000回くらいの推論させる。 * CMajorで機械学習させるメリットは小規模リソースで運用できること。 * VSCodeのインテリセンス対応は後回し。 * マルチスレッド化は自動でスケジューリングするみたい。(補記:マルチスレッドはCMajorを実装する前提となったみたい)