CMU-800 USB-MIDIインタフェースを作るCMU-800 USB-MIDI Interface
CMU-800は80年代にローランドから発売されていたコンピュータ用の外部音源です。
今回、RadioJunkBoxさんのCMU-800 MIDI Interfaceをベースに、今回はUSB-MIDIインタフェースを作ました。
USB直結で鳴らせますので、iPadや今時のパソコンに簡単に接続することができます。
1. はじめに
CMU-800はAppleやPC8801などに接続し音楽を演奏できるものでした。
簡易なアナログシンセサイザーをパソコンから制御するものです。Z-80などの8ビットパソコンのバスと直結するためのインタフェースになっており、現代のパソコンには接続できません。
CMU-800をMIDIから制御するインタフェースとして、RadioJunkBox(RJC)さんがCMU-800 MIDI Interfaceを発表しています。非常に良く出来ており、海外にも利用者がいるほど、ビンテージシンセファンに注目されています。
今回は、RadioJunkBoxさんの回路構成のまま、外部インタフェースだけをUSB-MIDIにしました。
USB-MIDI化によって、以下のメリット、デメリットが生じます。
- iPadなどUSB端子のある機器に直結可能
- インタフェースアダプタの電源もUSBから取れる。(さすがに、CMU-800 本体の電源は取れません。)
- 必ず、USB端子のある機器(パソコン等)が必要になる
- 既存のMIDI機器につなぐには、パソコン経由となる
2. ブロック図、回路図
ブロック図は次のようになります。USB機能付きのAVRを制御用に利用しています。
USB-MIDIからの入力にあわせて、CMU-800の内部のデバイスをZ80バス経由で制御します。
実際の回路図を示します。
マイコン部分は市販品(ストロベリーリナックス社のAVR-USBマイコンボードAT90USB162)をそのまま利用ました。
マイコン基板とCMU-800との接続は次のようになります。
※ 回路図では、DIN-SYNCが書かれていますが、実際にはテストしていません。
3. ソフトウエア
AVR用のUSBスタックとして、これまでV-USBを使ってきました。今回もV-USBでも良かったのですが、AVRに内蔵されたUSB機能を利用するLUFAを使ってみました。
LUFAにはStandard MIDI Classのドライバも例題として提供されていますので、例題をベースに拡張します。
USB-MIDIは4バイト固定長のパケットでMIDIコマンドが送られてきますので、シリアルMIDIに比べパーザの作成は簡単です。内部的に状態機械を持たずに、パケットの内容のケース分けだけで実現出来ます。
CMU-800の制御はRJBさんオリジナルのコードを、ほぼそのまま採用しています。
MIDI化にあたり、以下の2点だけ拡張しました。
- CMU-800の電源監視をインタフェースに実装した。後からCMU-800の電源を入れたり、再投入してもUSB側に影響がない。
- TEMPOつまみにあわせてMIDIがわにCLOCKを出すようにした(コンパイルオプション)
ソフトウエアはこちら
MacOSX上のCrossPack for AVR® Developmentでコンパイルできます。
4. 実装
ちょうど良い大きさだったので、ストロベリーリナックス社のAVRマイコンボード(AT90USB162)を利用しました。
この基板にはユニバーサル部分がありますので、その部分に40Pフラットケーブルコネクタをつなぎます。
ちょうど古いパソコンのパラレルATAケーブルが余っていたので使いました。
入手したCMU-800にもとからついていたフラットケーブルが断線していたため、本体基板のコネクタ部分からフラットケーブルを除去し、40Pフラットケーブルを信号にあわせて新たに配線しました。
CMU-800の後部の開口部から見えるようにLEDを3個配置しています。
5. 使い方
インタフェースボードにCMU-800の電源監視回路を入れましたので、電源投入順序は意識しなくても良くなりました。
(USB端子接続後にCMU-800の電源を投入しても、その逆でも正しく動作します。)
音源のマッピングやMIDIコマンドの対応状況はRJBさんのオリジナルと全く同じです。パソコンやiPad側からは全く同じように使えます。
デモ画像
[youtube]http://www.youtube.com/watch?v=xkFP6kPt09I[/youtube] [youtube]http://youtu.be/StQHnbRp25s[/youtube]
(了)