usb midi - dmx bridge

17
USB MIDI - DMX bridge @toyoshim

Upload: takashi-toyoshima

Post on 01-Jul-2015

1.824 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: USB MIDI - DMX bridge

USB MIDI - DMX bridge@toyoshim

Page 2: USB MIDI - DMX bridge

照明機材に手を出そう

● DMX-512A照明制御のデファクト規格、EIA-485上を通す

USB標準規格がなく、独自アダプタが乱立

Amazonで対応照明機材が数千円から入手可能

● MIDI楽器制御の標準規格、現在はUSB-MIDIがデファクト

最近はブラウザ上からJavaScriptで制御可能

Page 3: USB MIDI - DMX bridge

USB-MIDIとDMXを繋げると幸せ

自作すればいいじゃない

PC変換器USB-MIDI

照明 照明DMX DMX

ChromeWeb MIDI

Page 4: USB MIDI - DMX bridge

DMX-512A

● 最大512chのデバイスをデイジーチェイン接続● 各チャンネル8-bitの値(0-255)で制御

- ch1で赤の明るさを256段階で制御、ch2は緑、など

● 250kbps差動非同期シルアル伝送● 全chデータを繰り返し送信し続けるプロトコル

- 512chでは40fps程度が限界

- 最大ch数を減らすことで高fps化も可能

● Amazonにて対応照明が数千円から入手可能

Page 5: USB MIDI - DMX bridge

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

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

イメージ図

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

ハードウェア構成・資料

● 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

ブロック図

物理層、論理層それぞれのプロトコル

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

回路図

Page 11: USB MIDI - DMX bridge

試作中の様子

ブレッドボードで実験

Page 12: USB MIDI - DMX bridge

最近は部品の足でほとんど配線しちゃう

珍しくケースも自作

  (コネクタが不安だったので)

表側はこんな感じ(これでもISPは可能)

製作例

Page 13: USB MIDI - DMX bridge

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

さらなる改善点

● シングルマイコン化DMX側の物理層タイミングはUSARTモジュールに任せられるので、割り込みを駆使すればMEGA88単体でUSBとDMXの両方が安定駆動できそう

● Vcc=3.3V化(部品点数削減)EIA-485的には5V推奨みたいだけど+12Vから-7Vの間で0.2Vの電位差が作れれば良いので3.3Vでも十分なはず

● FS バルク転送化(標準準拠)

Page 15: USB MIDI - DMX bridge

FS バルク転送 vs LS インタラプト転送

● FS バルク転送- V-USBはソフトウェア制御の限界でLSモードのみサポート

- PIC18F14K50/170円(今見つけた)を使えば解決?

● LS インタラプト転送- AVRマイコンを使いソフトウェア制御のみで自作可能

個人的には慣れた環境なので製作時トラブルも少ない

- 超低スループット(オリジナルMIDI以下)

- 仕様への非準拠

Page 16: USB MIDI - DMX bridge

回路まわりの応援希望

● 保護回路をまじめに入れてない● 電気的に仕様準拠していない部分がありそう● セラロック駆動なのでクロック精度が悪い● USBドライバ周りのコンデンサ値が怪しい

この辺が理由で、認識しないホストがあったりHubを通せば認識したり、といった相性問題あり

Page 17: USB MIDI - DMX bridge

Fork me

https://github.com/toyoshim/usb-midi-dmx/