情報処理学会チュートリアル・テキスト

オリジナルMIDIセンサを作ろう

1999年5月 長嶋洋一


MIDIという国際標準音楽演奏情報転送プロトコルと、MIDIベースでの音楽情報処理環境 としての"MAX"がある現在では、あらゆるセンサ情報をいったんMIDI化してしまえば、 どのようにも料理できる環境にあります。また、エレクトロニクスやソフトウェアの 専門家でなくても、「ある物理量を0V-5Vの電圧に変換する」というような各種の 「センサキット」を秋葉原や日本橋や通販で容易に入手して、あらゆるセンシングが 簡単にできる時代です。

そこで、ここでは秋葉原の秋月電子のカードマイコンキット"AKI-H8"を使って、 誰もが簡単に「センサからの電圧をMIDIに変換する」ツールを製作して、どんどん 「センサ@コンピュータミュージック」を楽しめるように、その製作方法の詳細に ついて公開するとともに、プログラミング不要でそのままAKI-H8に「MIDIセンサ」 のプログラムを焼き込む、つまりソフトについてはブラックボックスとして 利用できる方法を無償公開することにしました。(^_^)

以下に、筆者が日曜大工的にほぼ1日で完成させた、「汎用MIDIセンサ」の製作過程 を紹介しつつ、製作の注意点、テクニック、応用の可能性などについて伝授いたします。 なお、個別の質問等には応じられませんので、質問やオリジナル仕様のシステム開発 依頼などについては、 こちら をご覧下さい。
また、このドキュメントは、筆者がAtau Tanaka氏とともに講師を行う、1999年8月6日の 情報処理学会チュートリアル「センサ@コンピュータミュージック」のサブテキストの 一部を兼ねていますので、このチュートリアルの内容に関連して、今後も変更の 可能性がありますので注意して下さい。常識ですが、全ての情報に関する著作権は 筆者にありますので、無断転載などはご遠慮下さい。


MIDIを空気のように活用し、自然界や生体活動やパフォーマーの動作から センシングされたセンサ情報を「音楽に応用する」という話については、 ここでは省略します。このあたりについては、 この本 を読んでいる(もしくはその内容程度は知っている)、ということを前提と します。 そこで、いきなり「AKI-H8」からスタートします。 これは、秋葉原の秋月電子のカードマイコンキットで、日立のH8を中枢にした コンパクトで非常に強力なものです。

これは、AKI-H8キットに付属してくる、秋月電子のマニュアルの第一ページです。 秋月のキットにしては珍しく、抵抗のカラーコードが載っていませんが、3種類しかない ので、初心者でも簡単に作れます。

これは、マニュアルの第二ページです。AKI-H8のプログラミングに関する、残り2ページは 省略します。AKI-H8ライタについては後述します。

これは、AKI-H8キットの回路図と基板のピンコネクタの信号マップです。 MIDIモノを作るためには、一部に手を加える(ICの足をカットする)必要がありますが、 これも後述します。

これが、AKI-H8を使ってこれから新しいMIDIモノを作ろう、というスタートの時の 筆者の自宅自室の机の上です。(^_^)  コンピュータは左からPowerBook2400、DynaBook、そしてIndyです(まだ何台かありますが、 ここでは隠れています)。正面中央上の「厄除御守」は、バグ退散・クラッシュ御免を心から 祈願してのものですが、あまり効きません。(^_^;)  最近はマウスでなくトラックボール(MacとWinとで同じ、サンワサプライ製)を活用しています。 手前のスペースにハンダごてを出し、秋月のマニュアルを広げて部品を出したところです。

AKI-H8キットには2種類あり、いちばん最初には、AKI-H8ライタとか書き込みソフトの 一式入った方を用意する必要があります。これは最初だけで、あとは半額程度の、 「基板と部品だけ」という、このキットで十分です。秋月電子の企業努力(パーツの入手 ルートなど)により、どんどん価格は下がっています。偉いですね。いつもこれを多数常備 している、というのは、マイコン屋の基本です。(^_^)

これが袋から出した、キットの中身一式です。H8チップ等は既に基板に実装されているので、 パーツを基板に差し込んでハンダ付けすればほぼ確実に動きます。基板は両面スルーホール ですので、取り付ける部品とか向き(電解コンデンサやダイオードなどの向きのある部品)を 間違うと、抜くのはとても困難です。注意しましょう。

これがAKI-H8基板です。耐腐食コートされていますが、あまり手でじかに 触れないようにして下さい。

マニュアルに従って、まずはコンデンサの取り付けです。パスコンには大小2種類が あります。水晶振動子のところには小さなセラミックコンです。この中では、 電解コンデンサだけに極性があります。コンデンサ本体には「-」が印刷されて いますが、基板のシルク印刷は「+」の方がありますので注意して下さい。逆に したまま電源を入れると、昔なら爆発してPCBが飛び散りました。(^_^;)

部品はまず、大きなパスコン4個を、基板のシルク印刷とマニュアルのコンデンサ番号 をチェックしつつ、こうやって差し込みます。基板の裏でリードを広げて、ひっくり返しても 落ちないようにします。全部のコンデンサをまとめて、などと欲張らないのが正解です。

とりあえずパスコン4個を差し込んで基板を裏返します。

リードの根元をハンダ付けします。スルーホール基板なので、小さなランドの割には 熱容量が大きいので、ちらっと当てただけではハンダ不良になります。 緑色のレジスト(ハンダをはじく)印刷があって、すぐ隣に見えるパターンにまで 付いてしまうことはないので、安心してしっかり付けましょう。

パスコン4個をまとめてハンダ付けしたら、リードをカットします。切ったリードは あとで使うことがあるので、取っておくのもいいですね。(^_^)

同様にして小さなパスコンを付けて、セラコンを付けて、ケミコンを付けて(立ててもいい のですが、小型に作る時には邪魔になるので、僕はこうして寝かせます)、これで コンデンサ類が全部、付きました。

さらに、抵抗、水晶、リセットIC(トランジスタみたいな3端子の外形)、レギュレータIC などの全ての部品を取り付けたところです。抵抗は、4.7Kが「黄紫赤金」、47Ωが「黄紫黒金」、 残りは全て10Kで「茶黒橙金」です。 ダイオードには向きがありますので注意しましょう。

完成した基板のハンダ面です。スッキリとしたもんです。AKI-80基板では、裏にもICが あったのですが、こちらは外付けのロジックICはゼロです。(^_^)

さて、ここで重要な改造があります。AKI-H8をMIDIに使う場合には、2つあるシリアルポート のうちの一方、チャンネル0を使います(チャンネル1はライタからの内部EEPROM書き込みに 使用)。ところがAKI-H8では、両方にRS-232-CのバッファIC(MAX232)を入れてくれちゃって るので(^_^;)、この足をカットする必要があります。

回路図でこうなっている部分ですが、MAX232の11ピンと12ピンを以下のようにカットします。

これによって、TXD0/RXD0のラインはRS-232-Cから切り離され、MIDIに使用できる ようになります。秋月電子さん、次のAKI-H8のバージョンでは、ここをジャンパオプション (パターンカットできるよう)にして下さい。(^_^;)

具体的には、基板上のMAX232の11ピンと12ピンの根元をニッパでカットして、 あとは足にハンダごてを当てれば、リードがパターンから簡単に剥がれます。 表面張力でコテにひっつくので、無理にゴリゴリする必要はまったくありません。 隣のパターンにブリッジにならないように注意して、こんなふうに空間が空いて 分離されたこと、他のパターンには何も悪さしていないこと、を確認して下さい。

基板の周囲にグルッと4つのコネクタがあります(内側のCN5は普通は何もしないでオープン です)が、ここに律儀に全部、ピンヘッダを付ける必要はありません。AKI-H8ライタとの 接続のために最低限必要なのは、CN4の10ピンだけです。普通はこのような向きに 付けます。

これが、マニュアルにある「AKI-H8ライタ」の回路図です。僕が最初にAKI-H8キットを 買った時には、これを見て自分でライタを作らなければならなかったのですが、 最近ではライタ基板も付いているそうです。

これは、僕が作ったAKI-H8ライタです。スイッチング電源を「土台」として(^_^;)、 その上の基板に、AKI-H8ライタ回路と、AKI-H8基板を差し込むためのソケットを 並べています。また、僕はたいていMIDIものですので、MIDI送信回路とMIDI受信回路も この基板の上に作っています。また、ポートBの8ビットに対応したLEDを付けていて、 ここでデバッグからソフト完成まで、実機さながらに行うことができます。 このあたりのことは、 これ を参考にしてみて下さい。

これが、AKI-H8のためのMIDI受信回路/MIDI送信回路です。 今回のMIDIセンサは送信専用ですので、上の部分、HC05だけを付ければいい ことになります。

AKI-H8のEEPROM焼き(プログラム)の際には、こうやってCN4のところをライタに合わせて

こうやって差し込んで書き込みします。他のコネクタは、使わなければピンヘッダを 挿す必要もないのです。

多数の入出力ポートなどを使う場合には、このようにAKI-H8基板にピンヘッダを 取り付けて、

このようにライタに入れます。多数のポートで複雑なことをする場合には、ちゃんと 手抜きせずに、こうする事もあります。(^_^;)

AKI-H8システムは、+5V単一電源でいいので、ここで何か製作する時には、ハテ今回は 電源はどうしようかな、と考えます(^_^;)。実はまだ、ここでは今回製作するMIDIセンサ の回路図はまったく何も考えていません。これが、行き当たりばったり製作の醍醐味 なのですが、初心者は真似しないように。(^_^;)  これは小型スイッチング電源モジュールのPowerBoyというものです。かなり スイッチングのノイズが少ないのが特長です。+5Vで2A取れます。

これはさらに小型の、ゴリラというモジュールです。基板上にも載ります。+5Vで1A ですが、マイコンのシステムはたいていこれで十分です。 あとの選択肢としては、

  ・006Pアルカリ電池にして、7805でレギュレーションして+5V化
  ・単3アルカリ電池4個にして、低ドロップレギュレータICで+5V化
というあたりです。今回は特に理由もなく(^_^;)、ゴリラにしました。実験システム なので、乾電池で携帯する必要がないからです。ステージで使う場合には、 乾電池にしましょう。

さて、「AKI-H8には8チャンネルのA/D入力があるから、8入力のMIDIセンサにしよう」 という程度で、まだ回路図もシステムの仕様も決めていないまま(^_^;)、ケースの加工 に入ります。 僕の場合には、だいたい「ケース加工」「ハンダ付け」「ソフト開発」が3等分ぐらいの 負担なので、とりあえずケースの穴開けなどして「外形」が決まってから、ハンダ付け しながらアドリブで回路を考え(^_^;)、それら全ての仕様の尻ぬぐいをソフトで やっつける、という事が多いです。初心者は真似しないように。(^_^;)  ここに持ってきたのは、たまたま余っていた900円のケースです。

これは"MiniBioMuse" を作った時に仕入れたケースで、なかなかコンパクトです。 電池を出し入れする蓋がないのですが、今回はAC電源なので、まぁこんなもんで いけるやろ、と採用しました。パネルが前後に小さいので、アナログ電圧を 与えるボリュームは外に出すことなりそうです。

ケースを開けて、だいたいの部品の大きさをチェックします。これをギョーカイでは 「現物合わせ」と言います。ここでは大物としては、AKI-H8基板と、電源のゴリラだけ ですが、MIDI送信用のHC05が1個、どこかに入ることを忘れてはいけません。 また、前後(写真の上下)のパネルの部分のスペースには、スイッチとかLEDとか ケーブルの曲がるためのスペースが必要ですので、パネルのぎりぎりまでベース基板 を広げることはできません。このあたりは、長年のカンで、ちゃんと抑えています。(^_^)

ケースとともに必要となるのが、1本100円のACコードとか、ジャンクの余りケーブル、 あと電源スイッチやLEDなどです。今回は手抜きをして、手持ちの余ったものだけで 作ることにして、部品の買い出しには行きませんでした。(^_^;)

市販の製品の場合には、MIDIコネクタはパネルに付いているのですが、このケースは パネルのアルミ板が厚く、MIDIの大きな穴を開けるのがけっこう面倒なので(^_^;)、 コードを出して、MIDIのメスのコネクタで通常のMIDIケーブルと空中接続する、と いう方式にしました。これはコード穴だけでいいので、けっこう使えるテクです。

だいたいの部品が決まったので、ベース基板として、ユニバーサル基板をカットして 用意します。当然ですが、このサイズもまた、現物に合わせて切ります。 まだ、ここでも回路図も仕様も決まっていません。(^_^;)

ところで今回は、このケースに組み込むAKI-H8基板として、このように別なものを 使いました。CN4が基板の下に出ていないで、上に出ています。

こんなふうにです。これでは、AKI-H8ライタに上から挿す、ということはできません。

実は、こういうケーブルを以前に作っていました。一方がオス、一方がメスで、 ピン-ピン対応となるようにカラーを配置しています。

このケーブルをこのように使うと、AKI-H8ライタからケーブルで延ばして、遠くに離れた AKI-H8に「出張」することができます。つまり、システム内にAKI-H8を組み込んで しまって、そこにROMプログラムを書き込むわけです。(^_^)

注意点としてはこのように、ライタのCN4とAKI-H8のCN4とが、必ずピン同士で 対応すること、です。間違えるとライタとAKI-H8の両方を壊します。(^_^;)

さて、回路図と仕様をまだ決めないまま、僕がもっとも苦手な「ケース加工」です。 もっとも今回は、前後のパネルに穴をあけるだけなので、比較的簡単です。 机の引き出しからドリルを出し、この時しか使わない折り畳みの卓袱台を出します。

まず、ベース基板をケースに取り付けるための穴開けです。これを後回しにすると、 取り付け穴のくる部分に部品を付けてしまって悲惨なことになったりします。(^_^;)

3mmのチタンのドリル歯で、ベーク基板の穴は一瞬で開きます。

次にパネルです。パネル板は一般にこのように、無地の裏側と、化粧模様の入った表側 があり、表側には保護ビニールがついています。加工の時にキズがつくのを防ぐもの ですから、これを取って加工してはいけません。(^_^;)

ポンチでガイド穴をあけました。実はここで、しばし考えて、「仕様」が決まったのです。 3つの穴のあるのはフロントパネルで、電源スイッチ、動作表示LED、センサ入力ケーブル、 ということです。2つの穴はリアパネルで、ACコード、MIDIケーブル、ということです。 ここで何かを忘れて、あとになって追加作業するのは、とっても大変です。(^_^;)

このパネルは結構厚いので、まずは3mmのチタンでガイド穴を開けます。最初から太いドリル で一気に、というのは絶対にいけません。ドリルがあばれて、それはそれは悲惨なことに なります。(^_^;)

部品を並べて間隔の確認です。ケーブルの出るところは、このように大きな穴にして ブッシングを入れます。ケーブルの太さピッタリの穴で、パネルにじかに通すというのは、 いずれ断線しますので、絶対にこうしましょう。

スイッチの取り付け穴の加工です。こうやって、現物を入れて確認します。(^_^;)

全部の穴の開いたところです。下のボコボコの(^_^;)板は、テーブルではありません。 ドリル加工用の板ですので。

これで、今回のヘヴィーな加工はおしまいです。掃除機でドリル屑を掃除して、 再び机の上に戻ります。ここからは、よりクリーンな作業です。パネル板の ビニールは、ここで剥がします。(^_^)

ドリルも机の引き出しに片付けます。今回はリーマとかも使わなかったので、楽でした。

パネルの部品を全部取り付けたところです。なかなかキレイになりましたが、実は近くに 寄ってみると、回した時に付けたキズがあったりします。まぁご愛敬ですね。(^_^;)

パネルをケースに戻して、ベース基板を置いて、AKI-H8基板と電源とHC05を並べてみた ところです。今回は、けっこう余裕があるシステムになりそうです。(^_^)

まず、電源コードから取り付けます。ブッシングの内側で、このように結び目を作ります。 これをしないと、たまたまコードが引っ張られて危険なことになります。(^_^;)

さらにこのように、ケースの取り付けビス台に一巻きします。これで、外から強くACコード を引っ張っても、基板のハンダ付けの部分には絶対にテンションがかかりません。 このあたりは、ACを使うシステムの製作では、実はとても重要な事です。

ベース基板に、電源のゴリラとAKI-H8とHC05を取り付け、電源回りの裏配線をこのように 完成してしまいます。残りの実際の配線は、もうこの面を見ることなく、あとは上面で じかに配線する、という予定です。つまりこの段階でも、まだ回路図は決まっていません。(^_^;)

ベース基板をケースに取り付けるネジを、ネジ類のジャンク箱から捜します。よく見ると みんな違ってバラバラですが、要は取り付けられれば何でもいいのです。なんせ 現物合わせですから。

ベース基板の裏側から電源スイッチの配線だけしたところで、ネジで止めて、これで システムの全体像が見えてきました。なお、ゴリラの+5V出力のところには、 大きなケミコンと、あと105のパスコンを並列に入れてあります。電源回りのここらは、 ケチらずにたっぷり入れるのが、アマチュアの特権です。(^_^)

システムそのものの回路について考えるのをなるべく後回しにする(決めたあとで時間が 経過すると忘れるので(^_^;))ために、電源回りに続いて、どんなシステムでも同じで 何も考えなくていい、MIDI回りを作ります。まずは適当なコードの余りを使って、この ようにケースのブッシングに通します。

ここでも、ブッシングのすぐ内側と、ケースの取り付けビス台のところの2箇所に、 束線パンドできっちりと固定します。これで、引っ張っても回しても大丈夫です。 「引っ張り」は誰でも注意しますが、ケーブルを回しても大丈夫か、というのは ちょっとしたテクニックです。(^_^)

MIDIコネクタ側で、ケーブルの芯線をハンダ付けします。MIDIで使うのは、4ピンと 5ピンです。まだこの段階でも回路図を見なくて済むように、カラーコードに従って、 数字の少ない4ピンに「赤」を、5ピンには「青」を付けました。このようなデフォルト を決めておくと、メモも不要です。(^_^)

コネクタの内側では、このようにコードをきっちりと固めて締めます。これが、あとあと まで実用に耐える、故障しにくい製作の基本です。

これでMIDIケーブルの「外側」は完成です。(^_^)

そして、ここがMIDIケーブルの「内側」です。ようやくここで初めて、「Java & AKI-80」 などのネタ本を出してきて、MIDIラインのプルアップ側は4ピン(赤)だったんだぁ、と 知って接続し、もう忘れます。AKI-H8のシリアル出力(CN1-25pin)からHC05に入れて、 出力は220Ωを通って5ピン(青)です。これで、MIDI回りも完了です。

何もないのは淋しいし、電源を入れて+5VからLEDをただ点灯させるのも芸がないので、 AKI-H8のポートから点滅させることにしました。ここでもなるべく何も考えないように、 ポート1のビット0、ということにしました。A/Dのポートと違っていれば、どこでも いいのです。(^_^)

これで、残るはA/D入力ポートの部分です。ようやく、回路とシステム仕様を本当に考えないと いけない段階になりました。いずれにしても必要な、10芯のコード(8ビットと電源とGND) をこのようにパネルに通して固定して、ここでハタと手を止めて、検討しました。 実は、最後まで回路図も描かずに製作して完成してしまったのですが、ここでは、完成した あとで「現物に合わせて描いた」という回路図を以下に示しましょう。(^_^;)

これが、今回のシステムの回路図です。考えてみれば、AKI-H8で汎用A/D入力MIDI出力、というのは この中 ですでに紹介していた事に気付いたので、そのままいただく事にしました。 違いとしては、動作確認LEDを今回はポート1のビット0に付けてしまった ので(普段は下7ビットをデータの表示に使いつつ、ポートBのビット7にしている 事をここで思い出したがもう遅い(^_^;))、今回はハードを修正せず、ソフトの方で これに合わせることにしました。

ということで、実際には描かずに回路図を決定したので、いよいよ最後の配線です。 A/D入力はコネクタCN2のところに集中しています。アナログ電源、アナログリファレンス 電圧は、AKI-H8ではディジタルの+5Vとつながっています。また、アナログGNDも ディジタルGNDとつながっているので、何もしなくて大丈夫です。 実際には、8本のアナログ入力ラインのそれぞれとGNDとの間に、これから ボリュームをつなぐAN-0からAN-3までの4本はノイズ吸収用にパスコン104を、 そして将来的に別のアナログ入力をつなぐ予定(当面はオープン)のAN-4からAN-7 までの4本には、GNDとの間に100KΩを入れてあります。まぁ保護用です。

そして今回は、外に出張所として、このような基板をじかに接続することにしました。 コネクタを入れるのは面倒ですし手元に適当なものがなかったからです。 ボリュームは、10回転のポテンションメータが1個と、小型ボリュームが3個の、 計4個となりました。その理由は、たまたま手元にこれだけ余っていたからです。 残りの4チャンネルは、将来的にいろいろなセンサの実験のためにリザーブして おく、ということです。(^_^)

こうやってボリュームを適当な間隔で取り付けて(^_^;)、基板スペーサの余っていたもの をスタンドとして活用します。

裏返してみると、ボリュームも100Kと20Kとバラバラです(^_^;)。要するに、+5VとGNDとの 間に入れて分圧した電圧を作るだけなので、同じB特性なら関係ありません。1Kとかだと 電流を食うようになるので、たとえば10KΩ以上にしましょう。

この基板の裏側の配線です。ボリュームの中点電圧出力のところには、ここにもGNDとの 間に、ノイズ対策のパスコンを入れています。ボリュームの抵抗とで、かなりの時定数の 積分回路(ローパスフィルタ)を形成するのですが、人間がボリュームを回すスピードに 比べれば、このような平滑機能は問題ありません。もっと高速に変化する筋電とかの場合 には、このパスコンは絶対に入れては駄目です。(^_^;)

これが「出張所」の上面です。ボリュームのツマミが並ぶと、それっぽいですね。(^_^)

これでようやく、システムの全体像が見えてきました。行き当たりばったりで作った割には、 けっこうイケてるのではないでしょうか。

仮に、ケースの上蓋を付けてみたところです。なかなか、まともっぽいですね。

出張所の基板にも、電源ライン(これは、ここからさらに実験用に外部のセンサにも電源供給を 行う)には、十分大きなケミコンと、高域ノイズ吸収用の積層セラミックのパスコン105を 入れます。ここのLEDは、単純に+5Vで点灯するものです。

ハードが完成したので、いよいよ「魂」を入れる作業、ソフトの開発です。ここではもう1台、 PowerBook2400が登場してDynaBookの上に載り(^_^;)、こちらにはMIDIラインのチェックの ためにMAXを走らせます。左のPowerBook2400にはAKI-H8ライタ(RS-232-Cラインとして、 Windows用の25ピンDSUBコネクタとMac用のモデムポートケーブルの両方が付いている)を 接続して、VirtualPCというWindowsエミュレータソフトを起動し、中身としてはWindows95 マシンとして、ここでは使います。 このあたりの事も、 ここ に書いてありますので、詳しくは省略します。 質問については、 こちら をご覧下さい。

AKI-H8ライタのCN4と、システム内に実装したAKI-H8のCN4とを、こうやってケーブルで ピン-ピン対応で接続します。簡単ですね。(^_^)

こちらが、MIDI出力の確認用のMAXです。このシステムでは、8チャンネルのA/D入力電圧を、 チャンネル1-8のアフタータッチのバリューとして出力するようにしました。

これが、ここで作った、動作確認用MAXパッチです。センサからの入力で、 スライダーがうりうりと動きます。このパッチの開発時間は、およそ1分です。(^_^)

こちらが、ソフト開発用のPowerBookの画面です。Windowsエミュレータのウインドウ の中には、エクスプローラと秀丸エディタが見えます。ところがここで再び気付いたの ですが、このソフトは以前に作った汎用A/Dとほぼ同じなのでした。そこで、不要な 部分(将来拡張用にと、コールせずに置いていたMIDI受信処理関係)を削除して、 あと、動作表示のLEDのポートを変更してみたところ、一発で動いてしまいました。 ソフト開発時間は、AKI-H8への書き込みまで含めて、全部でおよそ5分でした。 ソフトウェア部品としての再利用のメリットを、あらためて実感できました。(^_^)

これ が、今回のセンサMIDIシステムの、AKI-H8のソースプログラムです。ただしこれは、 判らなくても問題ありません。 そして、 これ が、AKI-H8にライタから転送する、モトローラ形式のオブジェクトファイルです。 この転送の方法についても、 ここ に書いてありますので、詳しくは省略します。 質問については、 こちら をご覧下さい。

システムのMIDI出力は、ここではモニタのMAXのMIDIポートと、このように普通のMIDIケーブルで 接続します。あとり料理はもう、皆さんの自由です。(^_^)