更新: 2026-07-28 09:07
← tkurume.work トップへ戻る

終売した照明ソフトの資産を、救い出す

Martin LightJockey 2.7 のショーデータを読み解く記録 | 2026年7月時点

このページは限定公開です。 検索エンジンには載せておらず、サイト内のどこからもリンクしていません。URL をお伝えした方だけがご覧になれます。 内容・掲載範囲についてご意見をいただいたうえで、一般公開するかどうかを判断します。

先に結論

照明制御ソフト Martin LightJockey は終売しました。後継版は USB ドングルを要求し、しかも 古いデータを開いた瞬間に新しい形式へ変換してしまいます。つまり「後で考えよう」が効きません。

手元には 2007〜2014 年に現場で育った キュー 1,527 件・シーケンス 2,353 件・機材プロファイル 1,427 件があります。仕様書も変換ツールも世の中に存在しません。

そこで 2.7 が動くうちに、同じデータから同じ光を出せる仕組みを自前で作ることにしました。このページはその解析記録です。新しい照明ソフトを作る話ではなく、データを救出する話です。

後半(§6)には、ここから先に計画していることも書いています。本命は DMX レコーダーの置き換え——「編集できるデータのまま、外部のスタート信号で走らせる、タイムテーブル付きの再生機」です。映像との同期で困っている方に読んでいただきたい部分です。

1. 同じお困りごとをお持ちの方へ

この作業を始めてから、いまも LightJockey を使い続けている現場が想像以上に多いことが分かってきました。実際にいただいた声は、だいたい次の 2 つに集約されます。

操作性この卓のさわり心地を
そのまま引き継ぎたい
過去データ何年もかけて作った
ショーを捨てたくない

どちらも「新しくて高機能なもの」では解決しません。同じ操作で、同じ光が出ることが要件だからです。そして、それを確かめる方法は「実際に同じ数字が出るか」を機械で突き合わせるしかありません。このページで書いているのは、まさにその突き合わせの話です。

お使いの方への注意点が 1 つあります。 後継版で古いライブラリを開くと Dataformat has Changed というダイアログが出て、データが新しい形式へ変換されます。元に戻せません。 現行のデータを触る前に、ライブラリのフォルダごと丸ごと複製して、複製の側で作業してください。

2. 最大の困難は「正解が分からない」ことだった

着手前の見立てでは、この仕事の最大の難所は足場の無さでした。

公開されていないデータ形式の解析では、「このバイトはフェード時間だ」と読んだとして、それが合っているかを確かめる手段がありません。読み違えたまま実装が進み、最後に「なんか違う」となって全部やり直しになります。

ところが、ここが崩れました。

LightJockey 2.7 の本体が、Windows 11 でそのまま起動しました。 しかも 1998 年に作られたソフトなので、実行するたびに同じ場所に読み込まれます。DMX の出力値が並んでいる場所も毎回同じです。 つまり 本体が「正解の出力」を吐き続けている。ならば、それを読んで自分の計算と突き合わせればよいわけです。

これで作業の性質が変わりました。

以前以後
検証手段無い(推測の積み上げ)1 バイト単位の突き合わせ
誤りの発覚実装の最終段その場
必要な手間全工程で最大の注意難所 1 箇所だけ
この解析は、自分が所有しているソフトのデータを自分で使い続けるためのものです。 複製や再配布のためではなく、相互運用(同じデータから同じ光を出す)を目的としています。

3. 効いた手 ― 4 つ

手 1. 画面に、答えが数字で書いてある

データを睨む前に、そのソフトの画面を開きます。パッチ表(どの機材が DMX の何番に居るか)を解読していたとき、設定画面の右下にこう書いてありました。

59 Fixtures configured        790 DMX Addresses Used

自作の読み取りプログラムが同じファイルから算出した値も 59 台 / 790 アドレスでした。

これは強い証拠です。台数だけなら偶然当たりますが、占有アドレス数まで一致するのは偶然では起きません。機材ごとのチャンネル数を全部正しく解釈し、重なりを正しく数えないとこの数字にならないからです。

ライブラリソフトの表示自作プログラム
デモ用(最大構成)59 台 / 79059 台 / 790
ある現場37 台 / 53037 台 / 530
別の現場16 台 / 51216 台 / 512
既定ライブラリ7 台 / 1687 台 / 168

同じ画面から、機材名の読み方の誤りも見つかりました。生のデータには PTER2 と並んでいるのに、ソフトの画面には PT と出ていたのです。この形式は「先頭に文字数が入っている」方式で、指定された長さより後ろには前の名前の残骸が残ります。そのまま読んでいたら、全ライブラリで機材名が壊れていました。

手 2. 「ファイルが無い」ことが手がかりになる

パッチ表は 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 で割り切れたのはただの偶然でした。割り切れる数字は、意味があるとは限りません。

手 3. どの現場でも 0 の場所は、比べても永久に分からない

設定の中には「原本のどのライブラリでも 0」という領域がいくつも残ります。22 個のライブラリを横断して比べても、差が出ないものは分かりません。

そこで、ソフトの側に書かせました。

  1. 対象が最小のライブラリを選ぶ(機材 1 台だけのもの)
  2. 作業用の複製を退避する(原本には絶対に触らない)
  3. ソフトを起動し、チェックボックスを 1 つだけ ON にして保存
  4. 退避したものと比べ、変化した場所を見る
  5. 最後に全部 OFF に戻して保存し、元と完全一致に戻ることを確認する

結果、毎回きっかり 1 バイトしか動きませんでした。Invert Pan / Invert Tilt / Swap Pan-Tilt / Ignore Blackout / Ignore Grand Master が、それぞれ別の 1 箇所に対応していると確定しました。

しかもこれで、自分が書いた仕様書の誤りが 1 つ見つかりました。「この設定は先頭 42 バイトしか使っていない」と書いていたのですが、Ignore Blackout と Ignore Grand Master はその外側に居ました。原本ではずっと 0 なので、ファイルを眺めているかぎり一生気づけない場所でした。

手 4. 「一致しない」ときは、まず自分の測り方を疑う

これが一番の教訓かもしれません。

キューを発火させて出力を採取し、自作の計算値と比べる作業を 16 本まとめて回したら、1,298 チャンネルが不一致になりました。合成規則の仮説を 4 つ立てて全部外し、かなりの時間を溶かしました。

原因は単純でした。発火の 1.2 秒後に採取していたのです。このソフトはキューの切り替えをクロスフェードします。途中の値を掴んでいました。

発火 → 8 秒待つ → 採取 → 2 秒あけてもう一度採取
      → 2 つが完全一致したときだけ「止まった」とみなす

これで不一致はほぼ消えました。さらに、2 回採取しても一致しないキューが 16 本中 2 本あることも分かりました。これはチェイス(複数シーンを巡回する演出)を参照しているキューで、そもそも止まりません。比較の対象から外すべきものでした。

前任の記録にも同じ罠が残っていました。「ある機材の 1〜4 チャンネルが出力されない」と書いてあったのですが、待って測り直したら全部出ていました。

4. 解けた例 ―「113 チャンネルのうち 43 が出ない」

一番長く残っていた謎が、これで片付きました。

あるキューを発火させると、データ上は 113 チャンネルを支配しているのに、43 チャンネルが出力されません。別のライブラリでは完全に一致するのに、です。

パッチ表が読めるようになって、答えが出ました。

パッチされていないチャンネルには、このソフトは一切書きません。 14 本のキューで測って、パッチ外は 450 チャンネルすべてが 0。例外なしでした。

ついでに 2 つの仮説が消えました。「一部のチャンネルが反転している」と見えていたものは、値が 255 のまま未パッチだったチャンネルで、0 が偶然「255 − 255」と一致していただけでした。

そして分かったのは、こちらの理解は最初から正しく、食い違っていたのは特定のライブラリの方だったということです。2008〜2009 年に育ったデモ用のライブラリで、シーケンスを作った当時とパッチが食い違っていたのでした。実運用のライブラリを 10 個調べたら、パッチ外を触るシーケンスは 1 つもありませんでした。

5. 現時点の到達

対象状態
キュー(.cue)解読済み(1,132 バイト固定・12 スロット参照)
シーケンス(.seq)解読済み(時間の扱いを実測で訂正済み)
機材プロファイル(.GS2)解読済み(チャンネル数と名前を自動抽出できる)
パッチ表(Config.dat)解読済み
位置プリセット外枠のみ
複数シーケンスの合成規則未解明(最難所)
33読み書き往復テスト
(読む→書く→完全一致)
19,529原本ファイルの照合
変更 0 / 欠落 0
1,527対象キュー総数

最後の行は毎回確認しています。世界に 1 部しかないデータを扱っているので、「壊していないこと」を毎回機械で確かめないと怖くて先に進めません。

「100% 同じ」を先に定義しておく

ここを曖昧にしたまま進めると、いつまでも「もう 100% になったのか」を判定できません。難易度が桁で違うので、4 段階に分けました。

水準内容現状
L1単純なキューで、止まった後の全チャンネルが完全一致達成
L2複数のシーケンスを重ねたキューでも一致55〜58% で頭打ち。ここが本丸
L3主力 5 現場の全キューで一致未着手
L4時間の動きまで一致(フェード曲線・チェイス周期)未着手

L3 をもって「同じ再生ができた」とする方針にしました。実運用の要件は「同じ絵が出る」ことであって、フェードの途中経過が 1000 分の 1 秒まで同じである必要は通常ありません。

そして次に作るのは、解読の続きではなく 一致率を 1 個の数字にする自動照合の仕組みです。主力 5 現場で 1,433 キュー(全体の 94%)。1 件 13 秒として約 5.2 時間なので、夜間に 1 回まわせば比較対象が丸ごと手に入ります。そこで採れた「正解」はファイルとして残るため、以後はソフトを起動せずに精度を上げられます。

6. ここから先に計画していること

「読める」ようになったので、次は使える形にする段階です。ただしこれは懐かしむための作業ではありません。いま現場で困っていることを解くための作業です。先にそこから書きます。

計画ねらい状態
タイムテーブル付き再生機本命。DMX レコーダーを置き換える(§6-1)要件確定
キューリストの解読タイムテーブルの正本。ここが読めれば移植になる次の解読対象
自動照合の仕組み全キューを自動で発火・採取し、一致率を 1 個の数字にする最優先で着手
再生エンジンソフトを起動せずに同じ DMX を計算して出す実装中
3D 空間での可視化実際に照明を吊らずに、画面の中でショーを再生して見せる(§6-5)第1段は着手可
時間軸まで一致させる(L4)フェード曲線・巡回周期の再現。タイムテーブル再生には必須前倒しを検討中
複数シーケンスの合成規則最後まで残っている最難所未解明
未解析のファイル数種・プリセット類位置プリセットなど、まだ外枠しか分かっていないもの解析中

6-1. 本当のねらい ― DMX レコーダーからの脱却

いま実際に困っているのは、次の 3 点です。

  1. 映像との同期が必要になってきた。 既製の映像再生装置と照明をきちんと同期させる良い方法が無く、もらえるのは実質「スタート信号」だけです。以後はこちら側のタイムテーブルで進むしかありません(タイムコードで同期できれば理想ですが、既製の映像機では現実的ではありません)
  2. いまは DMX を録って再生している。 いわゆる DMX レコーダー方式です。これだと修正が非常に大変で、少し直すだけでも録り直しになります
  3. やりたいのは「編集できるデータのまま再生する」こと。 使い慣れた編集環境でショーを作り、DMX の録音・再生を経由せず、そのデータを直接スタンドアロン機で再生したい
つまり作るべきものは、「編集可能なショーデータを、外部スタート信号で走らせる、タイムテーブル付きスタンドアロン再生機」です。 DMX レコーダーの置き換えです。最終形は手のひらサイズの機材(M5Stack 系)で実現できれば理想だと考えています。 将来は映像機との統合まで持っていきたいのですが、映像側は今はまだ着手しません。口だけ空けておきます。

6-2. 参照にする専用機と、その限界

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 機器へつなぐには変換ケーブルが要る
この機材をお使いの現場は、上の「フェード不可」「1 系統のみ」に見覚えがあるはずです。 ショーがそういう作りになっているのは、制作者の趣味ではなく再生機の制約です。 置き換えるときに、この制約まで引き継ぐのか外すのかは最初に決めておく必要があります。

そして重要なのは、この専用機では §6-1 の要求を満たせないということです。ここを混同すると設計を誤ります。

やりたいことこの専用機の実力判定
タイムテーブルで進行するキューを再生できない。シーン時間と繰り返し回数しか時間軸を持たない不足
外部スタート信号で開始するトリガは本体ボタン / 自動 / 内蔵マイクの音のみ。外部トリガ入力なし不足
編集したデータをそのまま再生する転送したデータから元データを復元できない一方通行。直すたびに作り直し部分的
フェードする不可(スナップのみ)不足
したがって、この専用機は「参照モデル」であって「到達点」ではありません。 操作の作法と、答え合わせの基準としては非常に有用です。同じデータを入れて同じ光が出れば、 こちらの理解が正しいと確かめられるからです。ただしその制約まで引き継いではいけません。 作るのは上位互換です。

進め方は 3 段階にしました。

  1. Windows 上で同じ動きをするものを作る — 記録・選択・再生・ブラックアウト・状態表示まで。出力は最初は画面表示とループバックだけで、実際の照明には出しません
  2. 出力が一致することを確かめる — 元のソフトが出した DMX と、こちらが出した DMX を 1 バイト単位で比較します
  3. 小型の組込み機へ移す — 一致が取れた再生部分だけを移植します。未解明の合成規則を組込み側に持ち込まないための順序です
実機との通信(RS-232 の中身)はまだ分かっていません。 一方向でハンドシェイクが無いことは資料で確定しましたが、通信速度もバイト列の中身も未確認です。 分かるまで推測で実装しない、という線を引いてあります。実機が手に入ったら、まず横で聞くだけの観測から始めます。

6-3. 幸運だったこと ― 欲しかった機能は、このソフトの中に既にあった

ここで、調べていて一番うれしかったことを書きます。

§6-1 で「作りたい」と書いたタイムテーブル再生は、LightJockey の中に既に存在していました。「キューリスト」という機能で、公式ヘルプに仕様が書かれています。

進め方内容
手動ボタンで 1 行ずつ進める
時間経過待ち指定時間の経過で次へ ― スタート信号後のタイムテーブル進行そのもの
時計24 時間時計で発火(常設向け)
外部タイムコード音楽 CD / 音声ファイル / 動画ファイル / MIDI タイムコード / SMPTE
混在タイムコードで自動進行するリストの途中に、手動の行を割り込ませられる

しかもソフト本体が MIDI タイムコードを受けられます。設定項目も受信用のプログラムも同梱されていました(既定では無効になっているので、気づいていない方も多いはずです)。

つまり、こちらがやるべきなのは発明ではなく、移植でした。 欲しい機能はこのソフトの中にあり、問題は「このソフトを現代の PC で常用し続けられないこと」だけです。 やることは キューリストの解読と、その再生系の移植に絞られました。 ゼロから仕様を考えるのと、動いている実例を写すのとでは、難易度も確実性もまるで違います。

6-4. 外部スタート信号をどう受けるか

これは元の専用機に無い機能なので、新しく設計します。実装はまだ先ですが、要件だけ先に固めておきます。

受け方用途備考
接点入力(GPIO)映像再生装置の接点出力から最も確実。まずこれ
UDP パケット再生イベントに合わせて送ってもらうネットワーク経由。遅延とロスの評価が要る
RS-232既製機の汎用出力元の専用機と同じ口が使える
Art-Net / DMX 入力照明卓側から走らせる既存の DMX 環境と親和
長尺での注意点を、要件として先に書いておきます。 スタート信号だけで同期すると、映像側と照明側で時間が少しずつずれていきます。 尺が長いほど効いてきます。対策は 2 つで、映像側から周期的に再同期の合図をもらえる構成にしておくか、 タイムコードを受けられる余地を残しておくか。どちらも後から足すのは大変なので、最初から入れておきます。

6-5. 3D 空間でショーを再生して見せる(UE5 + Art-Net)

もう 1 つ計画しているのが、Art-Net をそのままゲームエンジン(Unreal Engine 5)へ流し込み、画面の中でショーを再生するものです。実際に照明を吊らずに、提案の段階で「こう光ります」を見せられるようにするのがねらいです。

これは新しく全部作る話ではなく、手元にある部品を繋ぐ話です。

ただし 現場の実際の吊り位置(3 次元座標)はまだ読めていません。そこで 2 段構えにしました。

第 1 段は位置を仮置きのまま始めます。 灯体を等間隔に並べておいても、DMX の対応さえ合っていれば色・明るさ・首振りは正しく動きます。 第 2 段で実際の座標が読めた時点で差し替えれば、同じシーンがそのまま実配置になります。 この順序なら、座標の解読が空振りしても第 1 段の成果は残ります。

座標が入っているファイルは特定できました。中身は標準的な容れ物の形式で、内部の構造一覧までは取り出せています。ただし座標そのものはまだ未解読です。ここは前述の「1 つだけ変えて差分を見る」手で崩す予定です。

調べている過程で分かったことがもう 1 つあります。この照明ソフト自身に、外部の 3D ビューアと双方向でつなぐ仕組みが元々あります。3D 側で首を振ると、卓側のシーンに書き戻る機能まで用意されています。「照明卓と 3D を繋ぐ」という発想はこのソフトに前例があるわけで、その延長として筋の通った計画だと考えています。

いずれの計画も、原本のデータは読むだけです。 実際の照明への DMX 出力も、検証段階では行いません(同じ PC の中に閉じた送信のみ)。 先に壊さないことを確かめてから、外へ出します。

7. まとめ ― 仕様の分からないデータを解くときに効いたこと

最後の項目が実は一番効いています。この解析は担当が何度も替わっていますが、却下の記録があるおかげで、同じ仮説を二度検証せずに済んでいます。この進め方そのものについては AIと組んで一番できたことは「管理」だった に書きました。

LightJockey の資産を引き継ぎたい、という方はご相談ください。
「同じ操作性で使い続けたい」「過去のショーデータを捨てたくない」——どちらも、まずお手元のデータが今どういう状態かを確かめるところから始まります。
照明制御45年。DMX512 / Art-Net / DALI と、制御卓のデータそのものの取り扱いまで含めてご相談に応じます。
お問い合わせ

8. このページへのご意見をお願いします

限定公開の段階です。とくに次の点について、現場の感覚でご指摘いただけると助かります。

ご意見をいただいたうえで、お問い合わせまたは直接のご連絡で調整し、一般公開の可否を判断します。

関連ページ・資料