最終更新 2026-11-01 12:51 ・ 限定公開(URL を知る人だけ・検索には出ません)

DMX を 4 台の USB 受信機で同時に見張る — 動画の説明と「飛び」の正体

2026-11-01 11:41〜11:46 に撮った紹介動画 (約 5 分) の説明 ・ 担当: Ws (Dmx_Tool_M5) ・ 数字はモニターが 1 秒ごとに残した記録 (CSV) から拾いました

YouTube で開く: https://youtu.be/NSs_frU5sLM

ひとことで
  1. 新しく作った DMX 監視ツール (DmxUsbProMonitorM5) の紹介です。LjPlay (M5Stack) が出す 1 本の DMX を、USB 受信機 4 台で同時に受けて、1 枠ずつの細かい数字を表示・記録します。
  2. 録画中の 約 5 分 50 秒、4 台とも DMX は 1 枠も欠けていません。30Hz・長さ 512・誤り 0・途切れ 0・記録の抜け 0 でした。
  3. 画面に出ている「飛び」(橙色の数) は、DMX が抜けたのではなく、数え方の見かけです。LjPlay は Bluetooth でタイマーと時刻を合わせる M5Stack ですが、今回はその時刻を受けておらず、ch46〜49 に書く時刻が「秒まで」(1/100 秒が いつも 0) になっていたため、1 秒に 1 回、時刻が 1 秒ぶん進んで見え、モニターが「29 枠抜けた」と数えていました。演出の再生に影響が出ないのはこのためです (詳しくは 4 章)。
  4. (追記 12:4x) 録画の後も続けた 52 分間、4 台とも 93,631 枠ずつ受け、1 枠も欠けていません。飛びは同じ速さのまま一定で、原因も同じでした (5 章)。

1. 動画に映っているもの

LjPlay com-31
M5Stack CoreS3 + DMX-BASE
512ch・30Hz で送る
→ DMX の線 →
USB 受信機 4 台
COM61 / COM62 / COM63 / COM64
(USB-DMX-PRO 互換・FW2.9)
→ USB →
DmxUsbProMonitorM5 窓 #1〜#4
PC で表示・1 秒ごとに記録
→ Art-Net →
ArtNet Multi Monitor
U0〜U3 の 4 ユニバース

同じ PC の画面に、次のものを並べています。

4 台の受信機のモニター窓、PicoScope の波形、LjPlay の液晶
動画 0:32 頃 (11:41:55)。4 つの窓の値はすべて同じ (同じ DMX を受けている)。各窓の「飛び」(橙色) が 24,000 前後まで増えているが、「誤り」「化け」「戻り」「途切れ」はすべて 0。LjPlay は Scene 7 (SUNSET)。Dest IP の欄 (LAN のアドレス) はぼかしています。

動画の流れ

動画の時間時刻内容 (ナレーションの要旨)
0:00〜1:3511:41〜11:43PicoScope の波形と、出力している M5Stack (LjPlay) の紹介。CoreS3 でリチウム電池が無いと 8 秒に 1 回ちらつく件があり、細かく見張るために作った。以前は Wi-Fi で DMX を取っていたが、今は USB で 4 台を直接つなぎ、長さ・最大間隔・送り手の時刻まで細かく取って AI が長く記録できる。
1:35〜2:5011:43〜11:44LjPlay の演出を切り替える (GREEN・Blackout など)。1 本を 4 台に分けて同時に見張っている。1 日見張っておき、乱れたときだけ AI が細かいデータを残す。
2:50〜3:2011:44:2x受けた DMX を Art-Net (4 ユニバース) でも送り出し、ArtNet Multi Monitor で同じ中身が見える。IP の見張りも自作の道具 (IpPing)。
3:20〜4:0011:44〜11:45「飛び」が出ているが、ちらつきには影響していない。ただし理由はきちんと解析すべき (→ 4 章で解析)。
4:00〜4:3011:45:5x窓を全部閉じて開き直す。4 つの窓は位置を覚えていて、Connect を押すだけで元どおり受信に戻る。
4:30〜5:1411:46このツールも、PicoScope の取り込みも、DMX の演出ツールと M5 の再生専用機も、AI に頼んで作ったもの。
ArtNet Multi Monitor に 4 ユニバースが並んだ画面
動画 3:12 頃 (11:44:34)。中央下の ArtNet Multi Monitor に U0〜U3 の 4 ユニバースが並び、上の 4 窓と同じ中身が流れている。左下は IpPing。LAN のアドレスはぼかしています。

2. 画面の数字の意味 (よく出るもの)

Hz・長さ
この 1 秒に受けた枠の数と、1 枠の ch 数。LjPlay は 30Hz・512。
周期 ms・BREAK µs・MAB µs
受信機が線の上で測った値。枠と枠の間隔 33.10〜33.57ms、BREAK 173〜180µs、MAB 7〜16µs。
誤り・化け・戻り・途切れ・記録の抜け・受け損ね・余分な BREAK
線や受信の異常を数える欄。すべて 0 なら、DMX は欠けずに届いている。
送り手・時計差 ms
LjPlay が ch41〜50 に書き込んでいる「ビルド日時・今の時刻・COM 番号」を読んだもの。#31 = com-31、時計差 = LjPlay の時刻 − PC の時刻。
飛び
上の「送り手の時刻」が、前の枠より 1.6 枠ぶん (約 53ms) 以上進んでいたら「その間の枠が抜けた」とみなして数える欄。DMX の線そのものではなく、ch46〜49 に書かれた時刻だけを見ているのがポイント (次の章)。

3. 録画中の結果 (4 台の記録から)

モニターが 1 秒ごとに残した記録 (11:41〜11:47 の約 350 秒) を数えました。

受信機秒数Hz化け・戻り・誤り・途切れ・記録の抜け・受け損ね・余分な BREAK・短い BREAK・周期外れ飛び (合計)飛び (1 秒あたり)
COM6134930すべて 010,06328.8
COM6234830すべて 010,03428.8
COM6334730すべて 010,00528.8
COM6434530すべて 09,94728.8

Hz は窓を開き直した 11:45:52 の 1 秒だけ 4〜5 (つなぎ直しの途中)。それ以外はずっと 29〜31。

4 台とも「飛び」が同じ速さ (1 秒に約 29) で増え、ほかの異常は 0。線の上で本当に枠が抜けていれば、受信機の「記録の抜け」や「受け損ね」、Hz の低下にも出るはずですが、どれも出ていません。

4. 「飛び」はなぜ出るのか (解析)

4-0. まず前提: LjPlay は「Bluetooth でタイマーと時刻を合わせる M5Stack」

LjPlay (M5Stack CoreS3) は、照明用のカレンダータイマー (COM33) が Bluetooth (BLE) で流す時刻を受けて、自分の時計を合わせながら演出を再生します。何台あっても同じ時刻にそろうので、複数台が同時に同じ演出を出せます。そろっているかを外から確かめるため、LjPlay は DMX の ch46〜49 に「今の時刻 (時・分・秒・1/100 秒)」を目印として書き添えています。モニターの「送り手」「時計差」「飛び」は、この目印を読んだ数字です。

▶ 時刻合わせの仕組みは、こちらの動画で

説明の頁: LjPlay の時計のずれ ― カレンダータイマーの同期で補正できるか ・ LjPlay の 8 演出を SW8 とタイマーで切り替える

今回の飛びは、このタイマーとの時刻合わせが行われていなかったために出たものです。違いを図にすると次のとおりです。

図: タイマーと同期しているときと、していないときの ch46〜49 の時刻と飛びの数え方
図 (模式図)。① タイマーと時刻を合わせていれば、目印の時刻は枠ごとに 30〜40ms ずつ進み、飛びは出ない。② 今回は時刻を受けておらず、目印が「秒まで」になって 1 秒に 1 回 1,000ms 跳ぶ。モニターはそれを 29 枠の抜けと数える。DMX の枠そのものはどちらも欠けていない。
答え: LjPlay com-31 が ch46〜49 に書く時刻が 「秒まで」で、1/100 秒 (ch49) がいつも 0 だったため。
時刻は 1 秒間ずっと同じ値のまま 30 枠が出て、秒が変わった枠で 1 秒 (1,000ms) まとめて進みます。モニターは「1 枠 33ms のはずが 1,000ms 進んだ = 間の 29 枠が抜けた」と数えます。これが 1 秒に 1 回起きるので、飛びは 1 秒に約 29 ずつ増えます。DMX の枠は 1 枚も抜けていません。

4-1. 記録に残っていた証拠

モニターの記録には、各秒の最後に受けた「送り手の時刻」が残っています。抜き出すと次のとおりで、1/100 秒の桁がずっと .00 です (約 350 秒の記録のうち、.00 以外は 1 回だけ)。

PC の時刻受けた枠 (Hz)送り手 (LjPlay) の時刻飛び (この 1 秒)
11:43:143011:43:04.0029
11:43:153011:43:05.0029
11:43:163011:43:05.000
11:43:173011:43:07.0058
11:43:183011:43:08.0029

PC の 1 秒と LjPlay の秒の変わり目はずれているので、たまに「秒の変わり目が 0 回 (飛び 0)」「2 回 (飛び 58)」の 1 秒があります。平均すると 1 秒に 29 弱 = 記録の 28.8 と合います。

4-2. 1 秒の中で起きていること

枠LjPlay が書いた時刻 (ch46〜49)前の枠との差モニターの判定
111:43:04.00——
2〜3011:43:04.00 (同じ)0msふつう (53ms 未満)
3111:43:05.001,000ms飛び +29 (1000 ÷ 33.3 − 1)
32〜6011:43:05.00 (同じ)0msふつう

1/100 秒まで書かれていれば、時刻は枠ごとに 30ms か 40ms ずつ進むので、53ms を超えず飛びは数えられません。

4-3. なぜ 1/100 秒が 0 なのか (LjPlay のプログラムから)

LjPlay は ch46〜49 の時刻を次の順に選んで書きます (LjPlay/src/main.cpp の fillInfoCh)。

  1. BLE タイマー (COM33) の時刻を受けていれば、それを元に 1/100 秒まで書く。
  2. 受けていなければ、本体の RTC (時計 IC) の時刻を書く。RTC は秒までしか持たないので 1/100 秒は 0。
  3. どちらも無ければ 0。

今回は 2 の状態でした。つまり com-31 は起動してから一度も BLE タイマーの時刻を受けていないことになります。時計差が約 −10.6 秒なのも、BLE で合わせていない本体 RTC が PC より約 10.6 秒遅れているためです。

〔未確認〕BLE タイマーの時刻を受けていない理由 (タイマー COM33 が止まっていた・遠かった・com-31 の BLE が切ってあった など) は、まだ確かめていません。

4-4. 演出の再生に影響が出ない理由

注意: この状態のままだと、本当に枠が抜けたときも「飛び」に混ざって見分けられません。見張りとして使うには、飛びを本来の意味に戻す必要があります (下の 6 章)。なお、枠の抜けは「記録の抜け」「受け損ね」「Hz」でも見られるので、今回の 0 の結論は変わりません。

5. 録画の後も続けた記録の解析 (11:46〜12:38 の 52 分・中間報告)

動画の最後で窓を開き直した後 (11:45:54) も、4 台の見張りをそのまま続けています。12:38 までの 52 分間 (3,121 秒) の記録をまとめました。記録はまだ続いています。

5-1. 結果

受信機モニターが受けた枠受信機の記録 (線の上で数えた枠)1 秒あたり周期 msBREAK µsMAB µs本当の異常
COM6193,63193,63430.00033.10〜33.58173〜1817〜160
COM6293,63193,63330.00033.10〜33.58173〜1817〜160
COM6393,63193,63430.00033.10〜33.58173〜1817〜160
COM6493,63193,63030.00033.10〜33.58173〜1817〜160

「本当の異常」= 化け・戻り・大飛び・途切れ・記録の抜け・枠の誤り・余分な BREAK・短い BREAK・周期外れ・受け損ね・長さ変化の合計。受信機の記録の数が 1〜4 ずれるのは、52 分の区切りの瞬間にどちらの秒に入ったかの差です。

52 分間、4 台とも 93,631 枠ずつ、1 枠も欠けずに受けています。1 秒あたりちょうど 30.000 枠で、線の上の周期・BREAK・MAB も最初から最後まで同じ幅に収まっています。

5-2. 「飛び」の推移

52 分間の飛びは 4 台とも約 91,500 (1 秒あたり 28.97〜28.99) で、動画のときと同じ速さのまま一定でした。LjPlay の時刻の 1/100 秒は、この間 1 度も 0 以外になっていません。4 章の「BLE の時刻を受けておらず、秒までの時刻を書いている」状態が続いています。

5-3. 画面で「Hz 27」や「最大間隔 100ms 超」が出た秒について

記録を見ると、Hz が 27 前後になった秒が 50 回ほど、「最大間隔」が 100ms を超えた秒が十数回ありました。調べた結果、どれも線の上の異常ではありません。

11:45:54〜56 の Hz 5〜18 は、動画の中で窓を閉じて開き直した直後の 1〜2 秒です。

6. 直し方の案 (本人の判断待ち)

案やること手間
A. BLE タイマーを使うタイマー COM33 を動かし、com-31 が BLE の時刻を受けるようにする。1/100 秒が入り、飛びが止まるはず (未確認)。ファームの変更なし。まず確かめとして。小
B. LjPlay を直す (Ws)BLE が無く RTC だけのときも、秒の変わり目からの経過で 1/100 秒を埋める。タイマーが無い現場でも飛びが 0 になる。中
C. モニターを直す (tool_cs)1/100 秒がずっと 0 の送り手は「飛び」を数えず、「時刻は秒まで」と表示する。小〜中

Ws のおすすめは A で原因を確かめてから B。ファームの変更はまだしていません。

7. データの置き場所