2017-09-11 1 views
1

だから私はその後、楽譜としてプリントアウトします私のMIDIキーボードからのイベントを検出するために、この機能を使用しています:Pygame MIDI機能は、MIDIINではなく、キーダウンまたはキーアップに対応していますか?

for e in events: 
    if 
    if e.type in [pygame.midi.MIDIIN]: 

、それが押されたときにこれが2つのイベント、キーが押下されたものと1を返します。これはイベントがあるたびにifステートメントをトリガする機能を作成するだけなので、個々のノートにはうまくいきます。しかし、イベントはさまざまな注文ノート40のキーダウン、ノート41 keydown、note 41キーアップ、note 40キーアップ。ノート40がダウン、ノート41がアップ、ノート40がダウン、ノート41がアップ。それ以外の場合は、 'キーアップ'または 'キーダウン'というだけで、ifステートメントをトリガーします。だから私の質問は、キーが押下されたときにだけトリガされる機能があるかどうかです。 pygame.midi.MIDI_KEYDOWN

+0

midiイベントにはどのような属性がありますか? – skrx

+0

私はどのノートが再生されたのかを伝えるe.data1を使用していますが、4または5があると思います –

+0

midiイベントは 'pygame'と同様の' keydown'と 'keyup'属性を持っていますか? .KEYDOWN'と 'KEYUP'イベントタイプ? – skrx

答えて

0

read()ファンクションは、MIDIメッセージの生のバイトを解析せずに返します。

midis2events()機能が本当にこれらのバイトで何もしない、次のいずれか

((status,data1,data2,data3),timestamp) = midi 

    e = pygame.event.Event(MIDIIN, 
          status=status, 
          data1=data1, 
          data2=data2, 
          data3=data3, 
          timestamp=timestamp, 
          vice_id = device_id) 

ですから、メッセージを自分で解析する必要があります:0x900x9F間のいずれかのステータスバイトは上のノートで、0x800x8Fの間に、ノートオフ。

+0

yaちょうどステータス属性thxを使用しています –

関連する問題