ここから本文です
Dr.KIKKIE(KIKI) MSX DeuxLaque
免責:記載誤りによる損害一切

書庫過去の投稿日別表示

全1ページ

[1]

MSX MIDI(4)

イメージ 1
■テストプログラム(その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遊びできるところに最大のメリットがあろう。
しょせんおもちゃパソコン。無理せず気楽に楽しめばよろしいと思う今日この頃である。

全1ページ

[1]

1 2
3
4
5 6 7 8 9 10
11
12
13
14 15 16 17 18
19
20 21 22 23 24 25
26 27 28 29 30 31
Dr.KIKKIE(KIKI)
Dr.KIKKIE(KIKI)
非公開 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について

よしもとブログランキング

もっと見る
本文はここまでですこのページの先頭へ
みんなの更新記事