MZ-40K2
(MZ-40K用鍵盤キット)
MZ-40Kのオプション製品の二つ目は、本体のオルガン機能を拡張する鍵盤キット。これを接続することで、発音可能な全ての音階の音を弾けるようになります。
と言っても楽器店にあるようなちゃんとした鍵盤ではなく、当時で言うと鍵盤ハーモニカみたいなの(いわゆるミニ鍵盤)でもなく、MZ-40K本体に使われているキースイッチを鍵盤のように並べただけのちゃちなものです。電子オルガン的なものは昔からありましたけど、こういう製品で鍵盤だけ流用するとかコスト的に無理ですわな。
MZ-40K2はMZ-40Kと同じくキット製品になっていて、やはりはんだ付けにて組立てないといけません。幸いなことにこちらも未組立のものがあるので、その内容を見ていきましょう。
まずは箱。側面に「標準価格 4850円」とか書かれているとか、オープン価格が当たり前になった現代では忘れられた文化(?)ですね。
フタを開けると中からこんな感じで内容物が出てきます。
段ボールの上に乗っていたのはアクリル板(向こう側)と基板(手前側)。傷がつかないように厚紙を挟んで重ねられていました。基板の見えているのは部品面ですね。
向こう側にあるのがキー押下時のテンションを支えるアルミフレーム。色が近くてわかりにくいですが、穴の空いている面に両面テープが貼ってあって、そこに基板を乗せて貼り付けます。
手前にある基板は、裏返してハンダ面が見えています。MZ-40K本体と同様に、グリーンレジストはありますがランドが銅板そのままですね。
段ボールをパカッと開くと、部品とマニュアルが出てきます。マニュアルはやはりほとんどが組み立て手順書になっています。
マニュアルの下に見える…本当はマニュアルに挟み込まれているのですが、薄茶の帯は両面テープです。これを基板の部品面のキースイッチのところに貼って、キースイッチを載せた時に貼り付くようにしてはんだ付けしやすくします。
マニュアルにはもうひとつ、キーラベルも挟み込まれています。MZ-40Kのキーラベルと同じく、シールではなくて切り抜いて使います。
ケーブル。長さやコネクタなど加工済みです。コネクタはmolexの5051-12なのですが、これは絶版のようです(他の端子数のものは流通在庫がそれなりにあるのか、はたまた絶版したのは一部だけなのか、カタログ落ちはしていない模様)。
キートップ。黒と白があって、数量差もありますから、つまり黒鍵と白鍵を表しているということですね。だったらキーラベル使わない方が雰囲気出るんでは…?
キースイッチ(上)とキーカバー(下)。
左のはゴム足、右のは小物が入っているんですが、黒いのはケーブルをまとめて抑える金具(ネジ留めして黒い部分を曲げて使う)、ジャンパ線、MZ-40K本体にはんだ付けするコネクタなど。
糸ハンダとネジ・スペーサーなど。
組立てるとどうなるか、は…いやほら、組立てるのもったいないじゃないですか。入手した時は「組立てられる宿命だったんだし組立てよう」とか思ったんですけど、せっかくほぼ発売時の状態のものが保存されているなら、そのままにしておくのもやはり史料ということになるからと言い訳しつつ、組立済みのものを探す日々です…。
MZ-40K2エミュレータまたはMZ-40K用MIDI I/F
なかなか(組立済みの)MZ-40K2が手に入らないな…最近はMIDI漬けなので、手に入ったらインターフェース作ってMIDIキーボードにしちゃうとかいうネタができるのにな…とか妄想していたんですが、ふとひらめきました。逆に、MZ-40Kの方にMIDI I/FつけたらMIDIキーボードで鳴らせるやん!…と。なんですぐ思いつかなかったんでしょうね?(知らんがな)
言い換えればMZ-40KをMIDI楽器にするということですよ。ちょうどARTURIAのKEYSTEPを手に入れたところで、これが32鍵だったりするわけで、つまりはまさにMZ-40Kにつなぐために生まれたと言っても過言ではないと思うわけですよ(過言です)。そう、MZ-40Kだってハックできるんだよ!
オプション(2)コネクタ
方針としては、ArduinoのシールドにてMZ-40K2を模擬し、MIDIシールドを重ね使いするのが手軽で良さそうです。というわけでまずはMZ-40K2を接続するコネクタの調査です。
MZ-40Kを通常の向きに置くと、一番手前に「オプション(2)」とあるコネクタ(の取り付けられるパターン)があります。ここに取り付けるコネクタ部品はMZ-40Kに付属しないので、MZ-40K2を買わない限り空きになっていると思います。 |
コネクタを取り付けた様子。molexの5046-12AというのがMZ-40K2に付属してきます。これは現行製品ですね。 |
回路図にはオプション(2)コネクタはこのようになっているのですが…。
実際には左右の並びが逆になっています。いや、基板の裏から見た図なのか。信号の意味は、回路図から読み取ったところでは次のとおり。
信号名 | 機能 |
R7 | ストローブ |
R6 | |
R5 | |
R4 | |
R3 | |
R2 | |
R1 | |
R0 | |
K3 | スキャンデータ |
K2 | |
K1 | |
K0 |
おおう…GNDがない…。GNDがないと、対向する回路と信号レベルを合わせることができません。どちらも同じ5Vで動いているとしても、基準が合っていなければ相対的に相手の5Vが8Vだったり2Vだったりに見えてしまう可能性があるわけです。
さらには、ストローブ出力が必要な時以外はハイインピーダンス状態になっており、しかも一部は7セグメントLEDの点灯にも使われているため、簡単にはいかなさそうです。ロジアナでストローブ信号を観測しようとしたのですが、ロジアナ側の回路の影響でMZ-40K側が異常動作してしまいました。ArduinoのGPIOでストローブを受けて、そのラインに応じたスイッチ情報をスキャンデータとして出力するだけの簡単な工作だと思ってたんですが…。
GPIOが直接使えなさそうとすると、見込みがあるのはリレーの類いでしょうか? 電磁式リレーは動作速度とか電圧とか使い方が難しそうなので、使うならフォトMOSリレーですね。キーは全部で32キーありますからフォトMOSリレーも32個使って同様のマトリクスを構成するのが普通でしょうけど、Arduino Unoのバニラシールドなどの大きさのユニバーサル基板には乗り切りません。MEGA用ならいけるでしょうが…。
うんうん唸って、こんな回路で作ってみました。
マトリクスをそのまま構成するのではなくて、どうせ押されて有効になるキーはひとつだけなのですから、「受け入れるストローブ」「送り出すスキャンデータのビット」を一つずつ選んで、それらのフォトMOSリレーだけONにするという方針です。そうすればフォトMOSリレーは12個で済みます。フォトMOSリレーを個人的にもちゃんと使ったことがなかったので、LEDにシリアルに入れる抵抗の値とか、実験しながら決めました。
これがシールド本体。秋月電子のユニバーサル基板を使っているのでUSBコネクタなんかの分蛇の目エリアがちょっと狭くしてあるやつですね。白いのがフォトMOSリレー、橙色の軸が見えているのはロータリースイッチ(回路図中ではR-SWとある部品)で、受信するMIDIチャンネルを設定するのに使用します。 左の方に延びているケーブルでMZ-40Kと接続します。ケーブル自体は端子数さえ足りればいいやと適当に選んだもので、14ピン用のコネクタがあらかじめ圧着されているものです。反対側の白いコネクタがmolexの51191-1200で、MZ-40Kについている5046-12Aに対応するものです。 |
Arduino UnoとMIDIシールドでサンドイッチ。 |
MZ-40K2の代わりに接続します。オプション(2)コネクタには電源が出ていませんから、別途Arduinoの方にも電源が必要です。 |
実際のマトリクスは次の表のようになります。青く書いてあるのは本体と共通のキーで、RUNとSTOP以外のキーは全部外付けキーボードでも入力できることがわかります。というかRUNとSTOPも入力できるようになっていればよかったのにな…。
入力 | |||||
K0 | K1 | K2 | K3 | ||
出力 | R7 | G# | A | A# | B |
R6 | E | F | F# | G | |
R5 | C | C# | D | D# | |
R4 | ADR | READ | WRITE | CLEAR | |
G# | A | A# | B | ||
R3 | C | D | E | F | |
E | F | F# | G | ||
R2 | 8 | 9 | A | B | |
C | C# | D | D# | ||
R1 | 4 | 5 | 6 | 7 | |
G# | A | A# | B | ||
R0 | 0 | 1 | 2 | 3 | |
E | F | F# | G |
キーボードオプションで増える音階は上の方だけだったんですね…。
というわけで、こんな感じで動きます。
Sharp MZ-40K meets MIDI. pic.twitter.com/1IkmRTOosz
— Oh!石 (@oec_Nibbleslab) March 22, 2020
MZ-40Kをアルペジエーターで鳴らすとか、現代のキーボードならではですよね!
ソースなどはこちらで公開しています。RJBさんのCMU-800用MIDI I/Fを参考にノートオン降着優先処理をしている以外は、そんなに凝ったことをしてるつもりはありません(CMU-800用MIDI I/Fでは高音階優先)。
それと、ピッタリだと思ったARTURIAのKEYSTEPはなんと1キーだけ高音側にずれていて、一番下のEのキーがなく、一番上のBの次のキーが余る(隣のCの音はMZ-40Kには出せない)という、なんとも惜しい結果となりました…まぁオクターブずらせば一番下のEも押せるんですけどね。
MZ-40K用外部キーパッドI/F
酷使したのか、はたまた内部で錆びたのか、MZ-40Kの一部のキーがほとんど入力できなくなってしまいました。分解してクリーニングしたいところですがうまくバラせるか・組立てられるかわからず、かと言ってちょうど合うキースイッチが今から手に入るような気がせず…。
じゃあMZ-40K2の接続コネクタに外部キーパッドをつなげれば代用できるか…ということで部品探ししたものの、配線が面倒ゆえにいい感じにあらかじめ並んでいる基板とかないかなとか考えたりしたこともあって良い部品に出会えず…。まぁね、恒久的に使うわけではないつもりなので、できるだけ手っ取り早い方法にしたいと思ったのですよ。
そこで次に考えたのが、MZ-40K2エミュレータというかMZ-40K用MIDI I/Fのキーマトリクス部分だけ使って、MIDIの代わりにシリアル入力から該当するキーをON-OFFすればいいじゃないかというアイデア。これなら既にあるものを使えるので、スケッチだけ書けばいいですよね。
というわけでサクッと作ってみました…スケッチは上記リンクのGitHubリポジトリに追加してあります。mk40kKeypadというのを使って下さい。Tera Termなど適当なターミナルソフトからUSBシリアルでつなげられますから、9600bps・8bit・ストップビットなし・パリティなしの条件で設定すれば、本体のキー操作同様に入力可能です。
0〜9・A〜Fの16進キーの他、特殊キーの割り当ては次のとおりです。
入力文字 | キー |
@ | ADR |
R | READ |
W | WRITE |
L | CLEAR |
アルファベットについては小文字も受け付けます。RUNキーとSTOPキーはコネクタに出ているキーマトリクスから外れていますので入力できません。これらだけは本体のキーを操作してください。操作できれば便利だったのに…。
ターミナルソフトを使うとテキストファイルのアップロードやクリップボードからのペーストでまとまった文字数のキー入力を送ることができます。言わばバッチ実行みたいなものです。送信レートが高いとArduinoがハングアップしてしまいますので、適当にディレイを入れて調整してみてください。