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

書庫過去の投稿日別表示

全1ページ

[1]

MSX MIDI(3)

イメージ 1
■テストプログラム(その2)

今回は、Baboo! JAPAN電子掲示板の質問への回答例として掲載されていたMIDI IN表示プログラムを若干改変。主な改変は次のとおり。
(1)16進や10進表記されていたI/Oポートへの出力値を2進表記にして、レジスタのビット毎の対応を見やすくした。
(2)プログラムの冒頭で、変数について整数型の使用宣言及び初期値設定。少しはスピードアップしたかも?
(3)248と254の非表示。ちなみに、248はタイミングクロック、254はアクティブセンシングを示すシステムメッセージであり、絶えず出力されて表示が煩わしい。「MSX-Datapack (Volime3)」のサンプルプログラム「THRU.MAC」でも、OUT端子への出力は行うものの、画面表示はしないようにしている。

100 '===============
110 ' TEST MID2.BAS
120 '===============
130 'SAVE "TESTMID2.BAS"
140 CLS:DEFINT A-Z:D=0:F=0
150 '--INIT 8154 TIMER#0
160 OUT &HEF,&B00010110
170 OUT &HEC,&B00001000
180 '--INIT 8151
190 OUT &HE9,0
200 OUT &HE9,0
210 OUT &HE9,0
220 OUT &HE9,&B01000000
230 OUT &HE9,&B01001110
240 OUT &HE9,&B00000101
250 '--RESET FLAG
260 D=INP(&HE8)
270 '--MAIN LOOP
280 IF (INP(&HE9) AND 2)=0 THEN 280
290 D=INP(&HE8):F=(D=248)+(D=254)
300 IF F=0 THEN PRINT D
310 GOTO 280

■実験

今回のプログラムの要点は次のとおり。
(1)前回は、インターフェースのテスト用にデータをループバックさせるプログラムを流用したため不要部分があったが、今回は、最低限必要な初期設定のみ行っている。
(2)260行で一度データを読み捨てて、ステータスレジスタの割込みフラグをリセットしている。
(3)280行で受信バッファにデータがあるかチェックしている。

前回同様に、キーボードのピッチベンドホイールを動かして、データが拾えるか試してみる(右写真)。
ホイールをゆっくり動かしたこともあるが、明らかにデータの取得が前回より改善されている。これは受信バッファチェックが功を奏したのかもしれない。

■まとめ

BASICを用いたMIDI IN へのアクセスは、いったん了とする。
それにしても「MIDI規格やシリアル通信に関しても知識が足りず、MSXにも詳しくなく、マシン語等は全く解らない」という質問者は、「MIDI ch1のノートナンバーを表示するだけの簡単な物を作りたい。」とのこと。
何を作ろうとされているのだろう?
ノートナンバーといえば音程を示すから、ch1の音程の変化を数値的に捉えたいということかな?

MIDIのデータフォーマットによれば、「10010000」のステータスバイトが掴まえられれば、直後のデータがch1のノートナンバーになるはずであるが、連続する2バイトのデータを掴まえるのはBASICでは難しかろう。
そのうち機械語による処理を考えてみよう。(という締め括り方で、ハナシが続いたためしがないのだが。)

全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!ブログヘルプ - ブログ人気度について

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

もっと見る
本文はここまでですこのページの先頭へ

[PR]お得情報

ふるさと納税サイト『さとふる』
11/30まで5周年記念キャンペーン中!
Amazonギフト券1000円分当たる!

その他のキャンペーン

みんなの更新記事