1 from __future__ import print_function
6 from mido import Message
9 def test_midi_in(port):
10 expected_messages_count=0
11 while expected_messages_count < 7:
12 for message in port.iter_pending():
13 if message.type in ('note_on', 'note_off', 'program_change', 'sysex'):
15 expected_messages_count+=1
18 def test_midi_loopback(input_port):
19 expected_messages_count=0
20 while expected_messages_count < 1:
21 for message in input_port.iter_pending():
22 print('Test MIDI OUT loopback received {}'.format(message.hex()))
23 expected_messages_count+=1
25 def test_midi_out_loopback(output_port,input_port):
26 print("Test MIDI OUT loopback")
27 output_port.send(Message('program_change', program=1))
28 test_midi_loopback(input_port)
30 output_port.send(Message('note_on', note=21))
31 test_midi_loopback(input_port)
33 output_port.send(Message('note_off', note=21))
34 test_midi_loopback(input_port)
36 output_port.send(Message('sysex', data=[0x7E,0x7F,0x09,0x01]))
37 test_midi_loopback(input_port)
39 output_port.send(Message('sysex', data=[0x7F,0x7F,0x04,0x01,0x7F,0x7F]))
40 test_midi_loopback(input_port)
42 output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x7F,0x00,0x41]))
43 test_midi_loopback(input_port)
45 output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x04,0x7F,0x3D]))
46 test_midi_loopback(input_port)
51 print("Wait for MIDI IN plug ...")
52 for name in mido.get_input_names():
53 matchObj = re.match( r'Mbed', name)
60 input_port = mido.open_input(portname)
61 output_port = mido.open_output(portname)
63 print('Using {}'.format(input_port))
67 for message in test_midi_in(input_port):
68 print('Test MIDI IN received {}'.format(message.hex()))
70 test_midi_out_loopback(output_port,input_port)
71 except KeyboardInterrupt: