pygameを利用したMIDIフットスイッチの情報受信

前回の続き

Pygame ライブラリを利用してMIDIフットスイッチの情報を受信してみました。

#!/usr/bin/python3
#!/usr/bin/python3
# coding:utf-8
import time
import pygame
import pygame.midi

pygame.init()
pygame.midi.init()
sw_name = 'UM-1G'

for i in range(pygame.midi.get_count()):
    print (i,end=' ')
    midi_info = (pygame.midi.get_device_info(i))
    if_name = str(midi_info[1])
    print (midi_info)
    if midi_info[2] == 1:
        if sw_name in if_name:
            print ("footSW ID = ",i)
            foot_sw = i print(pygame.midi.get_default_input_id())

while True:
    out = pygame.midi.Input(foot_sw)
    a = out.read(1)
    time.sleep(0.1)
    out.close()
        if a:
            print (a)

 

 

前半でインターフェース名と受信したいID(UM-1G)を取得して後半でそのインターフェースに接続された機器から受信したMIDIメッセージを表示しています。

実行結果はこちら

0 (b'ALSA', b'Midi Through Port-0', 0, 1, 0)
1 (b'ALSA', b'Midi Through Port-0', 1, 0, 0)
2 (b'ALSA', b'microKEY-25 MIDI 1', 0, 1, 0)
3 (b'ALSA', b'microKEY-25 MIDI 1', 1, 0, 0)
4 (b'ALSA', b'GP-10 MIDI 1', 0, 1, 0)
5 (b'ALSA', b'GP-10 MIDI 1', 1, 0, 0)
6 (b'ALSA', b'GP-10 MIDI 2', 0, 1, 0)
7 (b'ALSA', b'GP-10 MIDI 2', 1, 0, 0)
8 (b'ALSA', b'UM-1G MIDI 1', 0, 1, 0)
9 (b'ALSA', b'UM-1G MIDI 1', 1, 0, 0)
footSW ID = 9
10 (b'ALSA', b'NSX-39 MIDI 1', 0, 1, 0)
11 (b'ALSA', b'NSX-39 MIDI 1', 1, 0, 0)
1
[[[192, 8, 0, 0], 1896]]
[[[192, 7, 0, 0], 3009]]
[[[192, 9, 0, 0], 4548]]

 

192はMIDIのメッセージ「プログラムチェンジ」

次の数字がプログラムの番号です

この番号を判定して他に接続したMIDIの機器に目的のメッセージを送信すれば完成です。

 

とりあえずはここまで