Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

USB MIDI - DMX bridge

3,679 views

Published on

Published in: Technology
  • Be the first to comment

USB MIDI - DMX bridge

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

×