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の機器に目的のメッセージを送信すれば完成です。
とりあえずはここまで