LjRunは、老舗の舞台照明制御ソフト「Martin LightJockey」が持つ「Media Player機能」(音楽の再生位置に合わせて照明のキューを自動で切り替える仕組み)を、現代のWindows環境でそのまま動かせるように作り直した再生専用エンジンです。
音源を再生しながら、その再生位置そのものを時計として使い、あらかじめ決めたタイムテーブル(「この時刻になったらこの照明キューを出す」というリスト)を進めます。音楽と照明が別々のタイマーで動いているのではなく、音の再生位置そのものが照明の進行を直接動かしているため、ズレが蓄積しません。
t=4.05s 行4 2 "LS1 01 HONOU"など)が時系列で残るデモで流れている音楽は、既存の楽曲を一切使わず、その場でサイン波とクリック音を合成しただけの完全自作音源です(著作権上の問題を避けるため)。4秒ごとに音程が変わり、切り替わりの瞬間に低音のアクセント音を鳴らすことで、「ここでキューが切り替わった」ことが聞いてすぐ分かるように設計しています。照明側は実際のショーデータ(実演で使われた本物のキュー)を発火させているため、DMX側は本物のデータです。
実際に動いている様子を録画したものはこちらです。
▶
当初、音源再生には .NET標準のWPF MediaPlayerクラスを使っていましたが、これは内部でレガシー版のWindows Media Playerコンポーネントを必須とする古い設計でした。このコンポーネントが入っていないWindows 11環境では、音が鳴らないまま「一見動いているように見えて実際には固まっている」という気づきにくい不具合が発生することが分かりました。
この問題を、音声再生の仕組みをNAudio(Windowsの音声出力を直接扱う、レガシーコンポーネントに依存しないライブラリ)へ全面的に置き換えることで解決しました。実際に約5分の実ショーデータをフル尺で再生し、最初から最後までズレ0msのまま完走することを確認しています。