|
■テストプログラム(その3) 「続いたためしがない」と言いつつ続けるわけだが、MIDI IN受信データのチャンネル1のノート番号を表示するプログラムを書いてみた。 右図がアセンブラリスト。本文下がBASICリスト。 「MSX-DOSスーパーハンドブック」掲載のASM.COMで、「/B」オプション付でアセンブル。BASICで読み込んで実行する。 アセンブラリストを簡単に説明する。 やっていることは、基本的には前回の「テストプログラム(その2)」の延長線。 受信バッファをチェックし、ノートオンのステータスバイトが来たら、次のノートナンバーを掴まえて、16進表示。 16進表示ルーチンは、「ポケットバンク」シリーズの「マシン語入門PART2」掲載ルーチンをほぼそのまま使用。 手持ちのMIDIキーボードは、ノートオフのステータスバイトを送出せず、ベロシティ00Hによって発声を止めている。このため、一度の打鍵で2回、ノートオンとノートナンバーのデータが送出される。そこで、「NTOFF」のところで、指を離したときのノートナンバーを拾って捨てている。 マシン語のループから抜けるには、Ctrl+STOP。 100 '=============== 110 ' TEST MID3.BAS 120 '=============== 130 SAVE "TESTMID3.BAS" 140 CLEAR 200,&HCFFF 150 BLOAD"TESTMIDI.OBJ" 160 DEFUSR=&HD000 170 CLS:KEY OFF 180 '--INIT 8154 TIMER#0 190 OUT &HEF,&B00010110 200 OUT &HEC,&B00001000 210 '--INIT 8151 220 OUT &HE9,0 230 OUT &HE9,0 240 OUT &HE9,0 250 OUT &HE9,&B01000000 260 OUT &HE9,&B01001110 270 OUT &HE9,&B00000101 280 D=INP(&HE8)'RESET FLAG 290 '--MAIN (Ctrl+STOP) 300 D=USR(0) ■実験結果 右図下の小さい図が、実行したところ。 キーボードの37鍵をひとつずつ打鍵して往復した。小さくてよく分からないかもしれないが、30Hから54Hまで往復する数字が返っている。 一応の目的は果たせているようだが、第一に、和音が正確に拾えない。第二に、データ表示タイミングが鍵盤から指を離したときにズレてしまうことがある(つまり、1回目のノートナンバーを捨てて2回目を拾っている)。 MIDI割込みに対応し、きちんと解釈していけば、もうちっとは正確に表示できるかもしれないが、あー面倒だ。 ■まとめ マシン語によるデータ取得及び表示まで出来たので、これぐらいで善しとしよう。 MSXによるMIDI IN のコントロールはいい勉強にはなるが、実用的に使おうとすると大変な苦労を伴う。GTは、BASICのMMLでチャチャッと手軽にMIDI遊びできるところに最大のメリットがあろう。 しょせんおもちゃパソコン。無理せず気楽に楽しめばよろしいと思う今日この頃である。 |
過去の投稿日別表示
-
詳細
2008年10月19日
全1ページ
[1]
コメント(0)
全1ページ
[1]


