Martin LightJockey 2.7 のショーデータを読み解く記録 | 2026年7月時点
照明制御ソフト Martin LightJockey は終売しました。後継版は USB ドングルを要求し、しかも 古いデータを開いた瞬間に新しい形式へ変換してしまいます。つまり「後で考えよう」が効きません。
手元には 2007〜2014 年に現場で育った キュー 1,527 件・シーケンス 2,353 件・機材プロファイル 1,427 件があります。仕様書も変換ツールも世の中に存在しません。
そこで 2.7 が動くうちに、同じデータから同じ光を出せる仕組みを自前で作ることにしました。このページはその解析記録です。新しい照明ソフトを作る話ではなく、データを救出する話です。
後半(§6)には、ここから先に計画していることも書いています。本命は DMX レコーダーの置き換え——「編集できるデータのまま、外部のスタート信号で走らせる、タイムテーブル付きの再生機」です。映像との同期で困っている方に読んでいただきたい部分です。
この作業を始めてから、いまも LightJockey を使い続けている現場が想像以上に多いことが分かってきました。実際にいただいた声は、だいたい次の 2 つに集約されます。
どちらも「新しくて高機能なもの」では解決しません。同じ操作で、同じ光が出ることが要件だからです。そして、それを確かめる方法は「実際に同じ数字が出るか」を機械で突き合わせるしかありません。このページで書いているのは、まさにその突き合わせの話です。
Dataformat has Changed というダイアログが出て、データが新しい形式へ変換されます。元に戻せません。
現行のデータを触る前に、ライブラリのフォルダごと丸ごと複製して、複製の側で作業してください。
着手前の見立てでは、この仕事の最大の難所は足場の無さでした。
公開されていないデータ形式の解析では、「このバイトはフェード時間だ」と読んだとして、それが合っているかを確かめる手段がありません。読み違えたまま実装が進み、最後に「なんか違う」となって全部やり直しになります。
ところが、ここが崩れました。
これで作業の性質が変わりました。
| 以前 | 以後 | |
|---|---|---|
| 検証手段 | 無い(推測の積み上げ) | 1 バイト単位の突き合わせ |
| 誤りの発覚 | 実装の最終段 | その場 |
| 必要な手間 | 全工程で最大の注意 | 難所 1 箇所だけ |
データを睨む前に、そのソフトの画面を開きます。パッチ表(どの機材が DMX の何番に居るか)を解読していたとき、設定画面の右下にこう書いてありました。
59 Fixtures configured 790 DMX Addresses Used
自作の読み取りプログラムが同じファイルから算出した値も 59 台 / 790 アドレスでした。
これは強い証拠です。台数だけなら偶然当たりますが、占有アドレス数まで一致するのは偶然では起きません。機材ごとのチャンネル数を全部正しく解釈し、重なりを正しく数えないとこの数字にならないからです。
| ライブラリ | ソフトの表示 | 自作プログラム |
|---|---|---|
| デモ用(最大構成) | 59 台 / 790 | 59 台 / 790 |
| ある現場 | 37 台 / 530 | 37 台 / 530 |
| 別の現場 | 16 台 / 512 | 16 台 / 512 |
| 既定ライブラリ | 7 台 / 168 | 7 台 / 168 |
同じ画面から、機材名の読み方の誤りも見つかりました。生のデータには PTER2 と並んでいるのに、ソフトの画面には PT と出ていたのです。この形式は「先頭に文字数が入っている」方式で、指定された長さより後ろには前の名前の残骸が残ります。そのまま読んでいたら、全ライブラリで機材名が壊れていました。
パッチ表は Patch2.Cfg というファイルだと思っていました。名前がそれらしく、サイズも 4 系統ぶんに割り切れます。
ところが、最も素直に動く現場のライブラリには Patch2.Cfg が存在しませんでした。それでもパッチは正しく効いています。
無いものは使われていない。 そこで全ファイルの「中身が入っているバイト数」を数えたら、候補は一目で絞れました。
サイズ 中身あり
Scanner1.dat 102,400 0 ← 名前は「スキャナ(=ムービングライト)」だが空
Follow2.Dat 134,000 0
Special.dat 51,300 0
Config.dat 16,546 892 ← ここだけ規模が合う
Config.dat を開いたら、機材名らしき文字列が一定の間隔で並んでいました。これが本体でした。機材プロファイルへの参照は「スロット番号そのもの」で、あるライブラリでは使用中スロットが 59 個、プロファイルのフォルダにあったファイルもまさにその 59 個だけでした。
ちなみに Patch2.Cfg のサイズが 4 で割り切れたのはただの偶然でした。割り切れる数字は、意味があるとは限りません。
設定の中には「原本のどのライブラリでも 0」という領域がいくつも残ります。22 個のライブラリを横断して比べても、差が出ないものは分かりません。
そこで、ソフトの側に書かせました。
結果、毎回きっかり 1 バイトしか動きませんでした。Invert Pan / Invert Tilt / Swap Pan-Tilt / Ignore Blackout / Ignore Grand Master が、それぞれ別の 1 箇所に対応していると確定しました。
しかもこれで、自分が書いた仕様書の誤りが 1 つ見つかりました。「この設定は先頭 42 バイトしか使っていない」と書いていたのですが、Ignore Blackout と Ignore Grand Master はその外側に居ました。原本ではずっと 0 なので、ファイルを眺めているかぎり一生気づけない場所でした。
これが一番の教訓かもしれません。
キューを発火させて出力を採取し、自作の計算値と比べる作業を 16 本まとめて回したら、1,298 チャンネルが不一致になりました。合成規則の仮説を 4 つ立てて全部外し、かなりの時間を溶かしました。
原因は単純でした。発火の 1.2 秒後に採取していたのです。このソフトはキューの切り替えをクロスフェードします。途中の値を掴んでいました。
発火 → 8 秒待つ → 採取 → 2 秒あけてもう一度採取
→ 2 つが完全一致したときだけ「止まった」とみなす
これで不一致はほぼ消えました。さらに、2 回採取しても一致しないキューが 16 本中 2 本あることも分かりました。これはチェイス(複数シーンを巡回する演出)を参照しているキューで、そもそも止まりません。比較の対象から外すべきものでした。
前任の記録にも同じ罠が残っていました。「ある機材の 1〜4 チャンネルが出力されない」と書いてあったのですが、待って測り直したら全部出ていました。
一番長く残っていた謎が、これで片付きました。
あるキューを発火させると、データ上は 113 チャンネルを支配しているのに、43 チャンネルが出力されません。別のライブラリでは完全に一致するのに、です。
パッチ表が読めるようになって、答えが出ました。
ついでに 2 つの仮説が消えました。「一部のチャンネルが反転している」と見えていたものは、値が 255 のまま未パッチだったチャンネルで、0 が偶然「255 − 255」と一致していただけでした。
そして分かったのは、こちらの理解は最初から正しく、食い違っていたのは特定のライブラリの方だったということです。2008〜2009 年に育ったデモ用のライブラリで、シーケンスを作った当時とパッチが食い違っていたのでした。実運用のライブラリを 10 個調べたら、パッチ外を触るシーケンスは 1 つもありませんでした。
| 対象 | 状態 |
|---|---|
キュー(.cue) | 解読済み(1,132 バイト固定・12 スロット参照) |
シーケンス(.seq) | 解読済み(時間の扱いを実測で訂正済み) |
機材プロファイル(.GS2) | 解読済み(チャンネル数と名前を自動抽出できる) |
パッチ表(Config.dat) | 解読済み |
| 位置プリセット | 外枠のみ |
| 複数シーケンスの合成規則 | 未解明(最難所) |
最後の行は毎回確認しています。世界に 1 部しかないデータを扱っているので、「壊していないこと」を毎回機械で確かめないと怖くて先に進めません。
ここを曖昧にしたまま進めると、いつまでも「もう 100% になったのか」を判定できません。難易度が桁で違うので、4 段階に分けました。
| 水準 | 内容 | 現状 |
|---|---|---|
| L1 | 単純なキューで、止まった後の全チャンネルが完全一致 | 達成 |
| L2 | 複数のシーケンスを重ねたキューでも一致 | 55〜58% で頭打ち。ここが本丸 |
| L3 | 主力 5 現場の全キューで一致 | 未着手 |
| L4 | 時間の動きまで一致(フェード曲線・チェイス周期) | 未着手 |
L3 をもって「同じ再生ができた」とする方針にしました。実運用の要件は「同じ絵が出る」ことであって、フェードの途中経過が 1000 分の 1 秒まで同じである必要は通常ありません。
そして次に作るのは、解読の続きではなく 一致率を 1 個の数字にする自動照合の仕組みです。主力 5 現場で 1,433 キュー(全体の 94%)。1 件 13 秒として約 5.2 時間なので、夜間に 1 回まわせば比較対象が丸ごと手に入ります。そこで採れた「正解」はファイルとして残るため、以後はソフトを起動せずに精度を上げられます。
「読める」ようになったので、次は使える形にする段階です。ただしこれは懐かしむための作業ではありません。いま現場で困っていることを解くための作業です。先にそこから書きます。
| 計画 | ねらい | 状態 |
|---|---|---|
| タイムテーブル付き再生機 | 本命。DMX レコーダーを置き換える(§6-1) | 要件確定 |
| キューリストの解読 | タイムテーブルの正本。ここが読めれば移植になる | 次の解読対象 |
| 自動照合の仕組み | 全キューを自動で発火・採取し、一致率を 1 個の数字にする | 最優先で着手 |
| 再生エンジン | ソフトを起動せずに同じ DMX を計算して出す | 実装中 |
| 3D 空間での可視化 | 実際に照明を吊らずに、画面の中でショーを再生して見せる(§6-5) | 第1段は着手可 |
| 時間軸まで一致させる(L4) | フェード曲線・巡回周期の再現。タイムテーブル再生には必須 | 前倒しを検討中 |
| 複数シーケンスの合成規則 | 最後まで残っている最難所 | 未解明 |
| 未解析のファイル数種・プリセット類 | 位置プリセットなど、まだ外枠しか分かっていないもの | 解析中 |
いま実際に困っているのは、次の 3 点です。
LightJockey には、PC を外してショーを再生するための専用機(Martin 2510 Controller)がありました。現場に PC を置きっぱなしにできない、あるいは PC を触らせたくない案件で使われてきた機材です。これも当然すでに終売です。
この機材の実機マニュアル(1996 年)と制御ソフト側の公式ヘルプを入手して、仕様を確定させました。資料に書かれていることだけを並べます。
| 項目 | 確定内容 |
|---|---|
| 再生できる単位 | シーケンスのみ。キューは再生できない |
| 最大件数 | 99 シーケンス(起動専用を使う場合は 98) |
| 収録できる量 | 使う DMX アドレス数で決まる。512 ch なら 247 シーン |
| 系統数 | 512 ch ちょうど 1 系統のみ。全機材が同じ系統に無いと書き出せない |
| フェード | 不可。ソフト側のフェードは自動でスナップに変換される |
| 起動時のトリガ | 手動 / 自動 / 音 / 音(ランダム)の 4 種 |
| 転送 | RS-232 の一方向のみ。ソフト側は機材の接続有無すら分からないため、同じデータを 2 回送って機材自身に照合させる |
| 出力コネクタ | 3 ピン XLR だがピン配が DMX と逆。DMX 機器へつなぐには変換ケーブルが要る |
そして重要なのは、この専用機では §6-1 の要求を満たせないということです。ここを混同すると設計を誤ります。
| やりたいこと | この専用機の実力 | 判定 |
|---|---|---|
| タイムテーブルで進行する | キューを再生できない。シーン時間と繰り返し回数しか時間軸を持たない | 不足 |
| 外部スタート信号で開始する | トリガは本体ボタン / 自動 / 内蔵マイクの音のみ。外部トリガ入力なし | 不足 |
| 編集したデータをそのまま再生する | 転送したデータから元データを復元できない一方通行。直すたびに作り直し | 部分的 |
| フェードする | 不可(スナップのみ) | 不足 |
進め方は 3 段階にしました。
ここで、調べていて一番うれしかったことを書きます。
§6-1 で「作りたい」と書いたタイムテーブル再生は、LightJockey の中に既に存在していました。「キューリスト」という機能で、公式ヘルプに仕様が書かれています。
| 進め方 | 内容 |
|---|---|
| 手動 | ボタンで 1 行ずつ進める |
| 時間経過待ち | 指定時間の経過で次へ ― スタート信号後のタイムテーブル進行そのもの |
| 時計 | 24 時間時計で発火(常設向け) |
| 外部タイムコード | 音楽 CD / 音声ファイル / 動画ファイル / MIDI タイムコード / SMPTE |
| 混在 | タイムコードで自動進行するリストの途中に、手動の行を割り込ませられる |
しかもソフト本体が MIDI タイムコードを受けられます。設定項目も受信用のプログラムも同梱されていました(既定では無効になっているので、気づいていない方も多いはずです)。
これは元の専用機に無い機能なので、新しく設計します。実装はまだ先ですが、要件だけ先に固めておきます。
| 受け方 | 用途 | 備考 |
|---|---|---|
| 接点入力(GPIO) | 映像再生装置の接点出力から | 最も確実。まずこれ |
| UDP パケット | 再生イベントに合わせて送ってもらう | ネットワーク経由。遅延とロスの評価が要る |
| RS-232 | 既製機の汎用出力 | 元の専用機と同じ口が使える |
| Art-Net / DMX 入力 | 照明卓側から走らせる | 既存の DMX 環境と親和 |
もう 1 つ計画しているのが、Art-Net をそのままゲームエンジン(Unreal Engine 5)へ流し込み、画面の中でショーを再生するものです。実際に照明を吊らずに、提案の段階で「こう光ります」を見せられるようにするのがねらいです。
これは新しく全部作る話ではなく、手元にある部品を繋ぐ話です。
ただし 現場の実際の吊り位置(3 次元座標)はまだ読めていません。そこで 2 段構えにしました。
座標が入っているファイルは特定できました。中身は標準的な容れ物の形式で、内部の構造一覧までは取り出せています。ただし座標そのものはまだ未解読です。ここは前述の「1 つだけ変えて差分を見る」手で崩す予定です。
調べている過程で分かったことがもう 1 つあります。この照明ソフト自身に、外部の 3D ビューアと双方向でつなぐ仕組みが元々あります。3D 側で首を振ると、卓側のシーンに書き戻る機能まで用意されています。「照明卓と 3D を繋ぐ」という発想はこのソフトに前例があるわけで、その延長として筋の通った計画だと考えています。
最後の項目が実は一番効いています。この解析は担当が何度も替わっていますが、却下の記録があるおかげで、同じ仮説を二度検証せずに済んでいます。この進め方そのものについては AIと組んで一番できたことは「管理」だった に書きました。
限定公開の段階です。とくに次の点について、現場の感覚でご指摘いただけると助かります。
ご意見をいただいたうえで、お問い合わせまたは直接のご連絡で調整し、一般公開の可否を判断します。