]>
git.gir.st - tmk_keyboard.git/blob - tmk_core/tool/mbed/mbed-sdk/workspace_tools/host_tests/midi.py
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: