|
■テストプログラム(その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では難しかろう。 そのうち機械語による処理を考えてみよう。(という締め括り方で、ハナシが続いたためしがないのだが。) |
過去の投稿日別表示
-
詳細
2008年10月13日
全1ページ
[1]
コメント(0)
全1ページ
[1]



