1

私は pygame.midi ライブラリを使用して MIDI メッセージ (ノートではなく、コントロール チェンジ メッセージ) を送信しています。アイデアは、出力 (この python プログラムから) から別のプログラムの入力に送信することです。

>>> import time
>>> import pygame.midi as midi
>>> midiout = midi.Output(3)
>>> midi.init()
>>> midiout = midi.Output(3)
>>> midiout.write_short(0x74,124,0)
PortMidi call failed...
  PortMidi: `Invalid MIDI message Data'
type ENTER...

ご覧のとおり、0x74,124,0 を送信しています。これらの数値は、rakarrack (制御したいアプリケーション) 実装チャートから取得しています: http://rakarrack.sourceforge.net/midiic.html

私は何を間違っていますか?

4

1 に答える 1

1

MIDI ステータス バイト (メッセージの最初のバイト) には、上位 (0x80) ビットが設定されている必要があります。リンクされたチャートは少しわかりにくいですが、0x74 はデータ バイトであり、適切なステータス バイトが先行する必要があると思います。

>>> import pygame.midi as midi
>>> midi.init()
>>> midiout = midi.Output(0)
>>> midiout.write_short(0xb0, 0x74, 124)

基本的な MIDI ドキュメント: http://www.midi.org/techspecs/midimessages.php

コントロール チェンジは 0xbn で、n はチャンネル番号なので、0xb0 はチャンネル 0 のコントロール チェンジ メッセージです。

于 2013-08-23T17:54:14.750 に答える