usb midi - dmx bridge
TRANSCRIPT
![Page 1: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/1.jpg)
USB MIDI - DMX bridge@toyoshim
![Page 2: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/2.jpg)
照明機材に手を出そう
● DMX-512A照明制御のデファクト規格、EIA-485上を通す
USB標準規格がなく、独自アダプタが乱立
Amazonで対応照明機材が数千円から入手可能
● MIDI楽器制御の標準規格、現在はUSB-MIDIがデファクト
最近はブラウザ上からJavaScriptで制御可能
![Page 3: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/3.jpg)
USB-MIDIとDMXを繋げると幸せ
自作すればいいじゃない
PC変換器USB-MIDI
照明 照明DMX DMX
ChromeWeb MIDI
![Page 4: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/4.jpg)
DMX-512A
● 最大512chのデバイスをデイジーチェイン接続● 各チャンネル8-bitの値(0-255)で制御
- ch1で赤の明るさを256段階で制御、ch2は緑、など
● 250kbps差動非同期シルアル伝送● 全chデータを繰り返し送信し続けるプロトコル
- 512chでは40fps程度が限界
- 最大ch数を減らすことで高fps化も可能
● Amazonにて対応照明が数千円から入手可能
![Page 5: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/5.jpg)
USB-MIDI
● ポート毎16ch、各ch128種類のノートを持つ- ポート(システム)全体の制御、チャンネル個別の制御
- さらにチャンネル内でノート別の制御もある
● 各種情報は基本7-bitの値(0-127)で制御● USB - FS(12Mbps) バルク転送
- LS(1.5Mbps) インタラプト転送も事実上動作(Win/Mac)- LSならV-USB/AVRを使って安価に自作可能
![Page 6: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/6.jpg)
MIDI → DMXの対応を考える
● DMX 512chに対応するにはMIDI 16chは役不足- MIDIノートに割り当てればDMX 128chがMIDI 1chに対応
- ノート毎の制御はノートオン・オフ、キープレッシャーの3種- MIDIは7-bit、DMXは8-bit、残り1-bitは制御種別で対応
● 制御方式の変換- MIDIはイベント方式、DMXはフレームバッファ方式
- MIDIイベントで内部のDMX 512ch分のバッファ値を更新
- DMX送信側はバッファから常時データ送出
![Page 7: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/7.jpg)
イメージ図
MIDI DMX
MIDIノートをDMXのチャンネルに対応させる
DMX ch.1
DMX ch.2
DMX ch.3・・・
DMX ch.512
全チャンネルのデータを連続して繰り返し送信し続ける
Ch.1 / Note 0 ONVelocity 127
Ch.1 / Note 2 ONVelocity 30
イベントが届くタイミングで対応chのバッファ値を更新
高fps対応のため、最大chを128/256/384/512から選べるようにする
![Page 8: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/8.jpg)
ハードウェア構成・資料
● USB-MIDI (USB MIDI Devices)- 自作USBの定番AVR (TINY2313/150円) + V-USB- DMX側の電圧振幅を確保するためVcc=5Vで回路を組む
● DMX-512A (プロトコル資料)- ATMEGA88-20PU/170円
512Bバッファが用意でき、USARTがあれば何でも良い
マイコン間はUSARTで接続 (DMX出力側と同じモード)- 74*04 (inverter): 差動信号用
![Page 9: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/9.jpg)
ブロック図
物理層、論理層それぞれのプロトコル
TINY2313 MEGA88
非同期シリアル
USB
74*04非同期シリアル
差動非同期シリアル
250kpbs/パリティなし /Data 8-bits/Stop bit 2-bitsLS インタラプト転送
USB-MIDI raw MIDI DMX DMX
![Page 10: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/10.jpg)
回路図
![Page 11: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/11.jpg)
試作中の様子
ブレッドボードで実験
![Page 12: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/12.jpg)
最近は部品の足でほとんど配線しちゃう
珍しくケースも自作
(コネクタが不安だったので)
表側はこんな感じ(これでもISPは可能)
製作例
![Page 13: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/13.jpg)
MIDI to DMX 変換仕様
MIDI mapped DMX spec● DMX 128/256/384/512モード変更
Ch.1-4に対してプログラムチェンジでモードを変更
例)Ch.1 プログラム1、Ch.2-4 プログラム0でDMX 128ch.モード
プログラム番号に応じて有効になるイベントが切り替わる(演奏向け、DAW向け)
● ノートオフ / キープレッシャーノート番号のDMX ch.にベロシティ×2の値をセット
● ノートオンノート番号のDMX ch.にベロシティ×2+1の値をセット
![Page 14: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/14.jpg)
さらなる改善点
● シングルマイコン化DMX側の物理層タイミングはUSARTモジュールに任せられるので、割り込みを駆使すればMEGA88単体でUSBとDMXの両方が安定駆動できそう
● Vcc=3.3V化(部品点数削減)EIA-485的には5V推奨みたいだけど+12Vから-7Vの間で0.2Vの電位差が作れれば良いので3.3Vでも十分なはず
● FS バルク転送化(標準準拠)
![Page 15: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/15.jpg)
FS バルク転送 vs LS インタラプト転送
● FS バルク転送- V-USBはソフトウェア制御の限界でLSモードのみサポート
- PIC18F14K50/170円(今見つけた)を使えば解決?
● LS インタラプト転送- AVRマイコンを使いソフトウェア制御のみで自作可能
個人的には慣れた環境なので製作時トラブルも少ない
- 超低スループット(オリジナルMIDI以下)
- 仕様への非準拠
![Page 16: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/16.jpg)
回路まわりの応援希望
● 保護回路をまじめに入れてない● 電気的に仕様準拠していない部分がありそう● セラロック駆動なのでクロック精度が悪い● USBドライバ周りのコンデンサ値が怪しい
この辺が理由で、認識しないホストがあったりHubを通せば認識したり、といった相性問題あり
![Page 17: USB MIDI - DMX bridge](https://reader036.vdocument.in/reader036/viewer/2022081800/559356141a28ab465c8b45c9/html5/thumbnails/17.jpg)
Fork me
https://github.com/toyoshim/usb-midi-dmx/