MZ-80+CMU-800をMIDIの仲間に入れてしまおう!
昭和59年9月23日発行 月刊絵夢絶党32号より
 MSX(YAMAHA or Victor製)FMサウンドシンセサイザーユニット(YAMAHA)の組み合わせは、それがひとつのMIDI対応シンセサイザーユニットとして機能します。実際、私はYAMAHAのMSX【写真7】FMサウンドシンセサイザーユニット2(SFG-05)を装着(【写真8】)し、専用のキーボードも接続してMIDIシンセサイザーとして使用しています。これはつまり、パソコン+音源+ソフトウェアによって、MIDIシンセサイザーができあがるということです。
 そこで思いついたのが、しばらく眠っているMZ-80Cを使って、現在はFM-7に接続しているLolandDG(旧:AMDEK)の音源ユニット・CMU-800【写真5・6】をMIDI対応音源にしてしまおうという計略です。
MZ-80K/C用インタフェース for CMU-800
【写真1】 MZ-80K/C用インタフェース
インタフェース基板から・・・
【写真2】 インタフェース基板から・・・
 まず、CMU-800という音源について説明をいたしますと、おそらく初めての8bitパソコン用廉価版外部音源モジュールということができます。確か4万円くらいで購入した憶えがあります。が、制御用の作曲ソフトが\10,000程もしたり、接続マシンごとにインタフェースケーブル(【写真1】)を別途購入したりと、それなりにお金はかかったような気はします。また、あくまでも音源モジュールであり、音色は固定です。メロディー1chにのみサスティーンとディケイが設定でき(ツマミによりアナログ的に)、残りのベース1chとコード(和音)4chはディケイのみ調整できます。あとはパーカッションとしてバスドラ・スネア・ハイタム・ロータム・オープンハイハット・クローズハイハット・シンバルの7種が使えます。あとはアナログシンセサイザーの制御用にCVとGATEによる電圧コントロール出力が8ch出ており(6ch分の内蔵音源と共有)、アナログシンセインタフェースとしても利用できるようになっています。
 余談かもしれませんが、CMU-800の音源は2個のi8253タイマと1個のi8255パラレルI/Oです。8253は3chのインターバルタイマ×2 = 6chの矩形波オシレータ、8255はパーカッションのトリガとCV/GATEアナログ出力の制御に使用されています。コストダウンできる道理です。
【図1】 システム全体図
【図1】 システム全体図
 さて、システムのイメージは【図1】のようになります。MZ-80にCMU-800専用インタフェース経由でCMU-800を接続し、そのインタフェースの途中から50pinフラットケーブルでパラレルに今回製作するMIDIインタフェースボードへ信号を引きます。これはMZ-80から外部出力バスが1系統しか出ていないことによるものです。幸いなことにMZ-80専用インタフェースケーブルには拡張用と思われる50pinソケット用の穴が開いており、それをそのまま利用しています(【写真2】)。ここではコネクタを使用するメリットがなかったので半田で直付けしています。(というか、ソケットを付けるとカバーが閉まらなくなってしまうので・・・) 見た目をキレイに作りたいと思われればこの方法で、汎用性を優先したいと思われれば縦型50pinソケットを付けると良いでしょう。直付けしてカバーを戻すと【写真3】のようになります。左側にフラットケーブルが2本出て、1本はCMU-800へ、もう1本は今回製作するMIDIインタフェースボードへ接続します。
 次にMZ-80用MIDIインタフェースボードについて。言うまでもなくMIDIは電子楽器をコントロールするための世界共通プロトコル(通信規約)です。最小データ単位は8bitで、31,250bps(3,125Byte/s)の非同期シリアル通信です。要はこれを実現できるインタフェースボードを作れば良いわけです。
 これは回路図【図2】の通り、ごく簡単に作ることができます。主となるのはシリアルインタフェースLSIの定番、i8251Aだけです。これをAsynchronousモードで使用することによって実現します。
MZ-80K/C用インタフェース for CMU-800
【写真3】 改造後のインタフェースBOX
MIDIインタフェース回路図
 *の2MHzは本体のIC9(7493)の8番ピンからツイステッドペア線で引いてくる。
【図2】 MZ-80K/C/1200用 MIDIインタフェース回路図
 では回路図を簡単に解説していきます。CS用のデマルチプレクサはお馴染みの74LS138です。A,B,Cの3入力8出力と規格表にも載っていますが、使用方法次第ではこの回路のように6入力として利用できます。G1が「H」で、G2AG2Bも共に「L」の場合のみ出力のイネーブルが解けますから、このように配線しておけばI/Oポートアドレスの68H~6BHが指定されることになるのです(ただし、8251はアドレスを2バイトしか必要としないので6AHと6BHはイメージとなります)。また、RDWRIORQのORをとって8251に入力していますが、イメージアドレスが増えても構わないときは、RDWRを8251に直接接続し、A2IORQに変更すれば74LS32は不要になりICをひとつ減らせます。さらに、74LS393が入手できれば、74LS93相当の回路が2つ入っているのでICはもうひとつ減ります。もったいないのは出力バッファの7407ですが、何もディスクリートで組むこともないでしょうから、ケチケチせずに使いましょう。
MZ-80K/C用 MIDIインタフェースボード
【写真4】 MZ-80K/C用 MIDIインタフェースボード
 ハードが出来上がったら今度はソフトです。
 私の場合、『CMU-800との同期演奏がしたい!』というのがそもそもの動機でしたから、上の【図1】のようにMSXとMIDIケーブルで繋がっています。当初はMSXをメインシーケンサにしてJUNO-106とCMU-800をコントロールする予定だったのですが、MZ-80側をメインにした方がハードもソフトも簡単になるため、現在のところはCMU-800の演奏クロックで全体を同期させています。これまではMSXとJUNO-106の2台だけでやっていたため、MSX用の演奏ソフト(YRM-15)の制約により最大8パートしか制御できませんでした。何よりも残念なのはまともなパーカッションがないことです。今回の計画もパーカッション欲しさが発端といっても間違いではありません。
CMU-800
【写真5】 CMU-800 (AMDEK社初期ロット品)
 では具体的にどのようなプログラムを組めばよいのでしょう。実は既存のCMU-800用演奏ソフトにちょっと手を加えてやるだけでOKなのです。これにはOOI氏の解析されたディスアセンブルリストが強力な助けになりました。実際にはわずか3カ所にパッチを当てるだけです(【リスト1】)。具体的には、イニシャライズ時にMIDIインタフェースボード上の8251A用のイニシャライズルーチンを通るようにし、CMU-800へ1クロック分のデータを転送する際にMIDI-OUTへF8H(タイミングクロック)を送り出すように変更するだけです。これは、MSX側の演奏ソフトのYRM-15が「シンクロモード」を持っているからこそ可能なのですが・・・。このシンクロモードはMIDI-INに入ってくるF8Hを演奏クロックとして演奏する機能です。このため、CMU-800のテンポつまみを回すだけで、MSXのFM音源やJUNO-106による演奏のテンポがリアルタイムで変化します。実際にやってみるとすごく違和感を覚えて楽しいです(^_^!)。
 ちなみに、CMU-800にはCV/GATEインタフェースがありますから、MIDI←→アナログシンセサイザーインタフェースとしても機能することになります。
 現在は緊急的なパッチ処理しかしていませんが、そのうち党長のようにオリジナル演奏プログラムも作りたいですね。今は演奏イニシャライズ時にスタートバイト(FAH)も一緒に送っているため、演奏するたびにホットスタートをかけてますから・・・・。演奏コマンドや再開コマンドを入力したときにFAHが出るようにすれば楽ですね。
 まぁ、何はともあれ、JUNO-106の重厚なサウンドにFMの変化に富んだリアルサウンド、そしてCMU-800のパーカッション&ベース&アナログ拡張ができたのですから、このインタフェースは単純とはいえ結構価値あるものだと思います。
CMU-800裏面
【写真6】 CMU-800裏面
演奏プログラム(MCP-MZ)用パッチ
アドレス 変更前 変更後
1201H~ 40 12 CC 11
265BH~ 32 BF 31 CD 8B 2E
269CH~ C3 74 26 C3 4D 2E
パッチ部
アドレス データ
11CCH AF D3 69 E5 E1 D3 69 E5
11D4H E1 D3 69 E5 E1 D3 69 E5
11DCH E1 3E 40 D3 69 E5 E1 3E
11E4H 8D D3 69 E5 E1 3E 37 D3
11ECH 69 C3 40 12 00 00 00 00
2E8BH F5 3E FA D3 68 F1 C9 00
2E4DH F5 3E F8 D3 68 F1 C3 74
2E55H 26 00 00
一見すると無意味に見えるPUSH/POP(E5/E1)は、8251Aイニシャライズ時のタイムディレイです。
これらの変更を行った後、11CCH~338BHまでをオートスタート1200Hとしてセーブすればできあがりです。
このパッチは演奏プログラムのバージョン2専用です。バージョン1.13の場合はバージョンアップ版を入手してから行ってください。
【リスト1】 CMU-800演奏プログラム用パッチ
YAMAHA製MSX "CX5F"
【写真7】 YAMAHA製MSX CX5F
 このシステムは1ヶ月経過した現在も順調に稼働しています。確かに動いています。動いてはいるのですが、どうもうまくないことに気づいてしまいました。というのは、MSX(=Z-80A・3.58MHz)の処理能力なのです。現在MSXで使用しているソフトはYRM-15(ミュージック・コンポーザ)なのですが、これはMIDI対応8パート演奏に対応しています。MIDI規約では音に変化があるたびにデータを送ります。このため、8パートをフルに使用し、テンポの速い曲でトゥリルなどがあると、一連の処理が1タイミングクロック内に収まらないケースが出てきます。
このような場合、MSX自身(演奏プログラム)がタイミングクロック(F8H)を発信しているのであれば、多少時間がかかっても処理が全て終わってから次のタイミングクロックを出せば、一瞬テンポが遅くなるだけで済みます。しかし、このシステムの場合はテンポが外部同期です。MZ-80側は余裕で動作していますが、MSX側の事態は知るよしもありません。ということは、MSXは自分の処理で手一杯となり、外部からのタイミングクロックを読み飛ばしてしまうようなのです。割り込みとバッファリングである程度対処できることなのですが、その限界を超えてしまうのか、演奏が途中でエコーがかかったように同期がズレていってしまいます。
 やはりMZ側がタイミングをとるのではなく、MSX側にとらせた方が無難なようです。にしても、MSXの負荷が高いのには閉口します。FM音源(OPM-4operatorFM8和音)の制御や画面の表示と並行して演奏処理とMIDI処理を行わねばなりませんから、Z-80Aには荷が重すぎます。FM音源(SFG-05 = FMサウンドシンセサイザーユニット2)内にもCPUを内蔵させたインテリジェントタイプにすべきと感じました。
FM音源ユニット SFG-05
【写真8】 FM音源ユニット SFG-05
ちょびっとコラム 「FMサウンドシンセサイザーユニット」について
 ここで登場したMSX専用FM音源ユニットですが、正式には「FMサウンドシンセサイザーユニット」と呼ばれていました。ヤマハまたはビクター製のMSXには、このユニットを装着する専用のスロットがあり(【写真8】参照)、ROMスロットに演奏ソフトや音色作成ソフトなどを差して使用するようになっていました。(ユニット内にもROMを持っていますが、キーボードで音を出す程度です。)
YAMAHA/VICTOR製MSX専用FM音源ユニット SFG-01
【写真9】 初代・FM音源ユニット SFG-01
 またMIDIインタフェース機能も兼ね備えており、THROUGHコネクタこそありませんが、MIDI機器の制御はもとより、MIDI音源として外部から制御させることもできました(SFG-05のみ)。さらに専用のキーボード接続端子があり、ここに指定されたキーボードを接続すると、演奏可能なMIDIシンセサイザーキーボードにもなるという多機能ぶりです。
 音源としてのみ見た場合でも、当時ではめずらしいマルチ音源機能を備えていました(SFG-05のみ)。このユニットに搭載されていたOPMチップは4オペレータのFM音源チャネルを8つ持っているため、ソフト次第では最大8音のマルチ音源になります。このユニットでは最大4チャネルのマルチMIDI音源として使用することが可能で、MIDIチャネルも自由に設定できました。ちなみにこのOPMチップは、シャープ製パソコンのX68000やX1turboZシリーズの内蔵音源として、またYAMAHA製シンセサイザー音源ユニットFB-01などの音源としても使用されています。FB-01のCPUがZ-80B 6MHzであることからも、MSXでOPMを十分に制御することは難しかったことが窺えます。)
 今回使用しているのはSFG-05という型番のユニットで「FMサウンドシンセサイザーユニット2」と呼ばれるものです。とういうことは当然「FMサウンドシンセサイザーユニット1」に相当するものが存在するわけです。【写真9】がまさにそれです。型番はSFG-01で、見た目はSFG-05と全く変わりません。実はハードウェアにも変わりはないようで、音源はまったく同じOPMです。
 ではどこが変わったのかというと、まずは価格!SFG-01\19,800なのに対し、SFG-05\29,800と1万円も高くなっています。わずか1年間でハードを変えずにこの価格差とはいい根性です。よほど内蔵ソフトウェアの機能が上がっていないと納得できることではありません。で、その内蔵ROMのソフトですが、主にMIDI音源モジュールとしての機能が追加されています。SFG-01では、MIDI音源として外部から制御することが全くできませんでしたが、SFG-05ではマルチMIDI音源として使用可能になっています。この差は非常に大きなものです。ある意味、ユーザの足下を見た価格差であると言えます。私もわずか1年で買い換えることになり、少なからず憤りを感じました。余ったSFG-01を何とか有効に利用できないかと考えて書いたのが、実はSFG-01(05)の接続[前編]なのです。