SESSIONS2024で提出した動画の構成解説を行います。 https://www.youtube.com/watch?v=g52rHtOzGnI
まず再生についてはMIDIデータ限定にしています。 演奏を出力して音源は別のところで鳴らす形式ですね。
一応MIDI出力と音声を同期するための機能(MIDIレイテンシー調整)は付いてるのですが、レイテンシー機能が動いてるかわかりにくいのと調整に時間がかかること、用意する音源の種類を考慮し、MIDI出力オンリーで構築してます。
出力は後述の「仮想MIDIデバイス」に行います。
ソースコードは動画内で書いた通りです。 映像で記述したソースコードについて、実行ファイル一式にも封入しましたので、参考にしていただければ幸いです。
仮想MIDIデバイスを動作させてます。 これはloopMIDIを利用してます。 https://www.tobias-erichsen.de/software/loopmidi.html
仮想MIDIデバイスからの出力をAbletonLiveで受け取り、Liveから各音源に出力を分配します。 今回は以下の音源を利用しています。
VisualSynthesizerから映像を作ってます。 https://www.dotec-audio.com/deeacid_jp.html
VSTiとして起動できるため本当はMIDI制御も可能なのですが、時間がなかったのとソースコードが見づらくなるリスクがあったので、音声に合わせ書き出しし、最終的な出力を合成しております。 最低限の準備でオーディオリアクティブができるのはありがたいです。
また、このソフトウェアはGLSLのフラグメントシェーダで映像を生成しているらしく、最悪自分でソースコードを書けば拡張できるじゃん!という結論に至ったのも導入理由のひとつです。 (音楽作ってはいるものの、元々GLSL書いてましたので)