Squashed 'tmk_core/' changes from 7967731..b9e0ea0
b9e0ea0 Merge commit '7fa9d8bdea3773d1195b04d98fcf27cf48ddd81d' as 'tool/mbed/mbed-sdk' 7fa9d8b Squashed 'tool/mbed/mbed-sdk/' content from commit 7c21ce5 git-subtree-dir: tmk_core git-subtree-split: b9e0ea08cb940de20b3610ecdda18e9d8cd7c552
This commit is contained in:
72
tool/mbed/mbed-sdk/workspace_tools/host_tests/midi.py
Normal file
72
tool/mbed/mbed-sdk/workspace_tools/host_tests/midi.py
Normal file
@ -0,0 +1,72 @@
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import re
|
||||
import time
|
||||
import mido
|
||||
from mido import Message
|
||||
|
||||
|
||||
def test_midi_in(port):
|
||||
expected_messages_count=0
|
||||
while expected_messages_count < 7:
|
||||
for message in port.iter_pending():
|
||||
if message.type in ('note_on', 'note_off', 'program_change', 'sysex'):
|
||||
yield message
|
||||
expected_messages_count+=1
|
||||
time.sleep(0.1)
|
||||
|
||||
def test_midi_loopback(input_port):
|
||||
expected_messages_count=0
|
||||
while expected_messages_count < 1:
|
||||
for message in input_port.iter_pending():
|
||||
print('Test MIDI OUT loopback received {}'.format(message.hex()))
|
||||
expected_messages_count+=1
|
||||
|
||||
def test_midi_out_loopback(output_port,input_port):
|
||||
print("Test MIDI OUT loopback")
|
||||
output_port.send(Message('program_change', program=1))
|
||||
test_midi_loopback(input_port)
|
||||
|
||||
output_port.send(Message('note_on', note=21))
|
||||
test_midi_loopback(input_port)
|
||||
|
||||
output_port.send(Message('note_off', note=21))
|
||||
test_midi_loopback(input_port)
|
||||
|
||||
output_port.send(Message('sysex', data=[0x7E,0x7F,0x09,0x01]))
|
||||
test_midi_loopback(input_port)
|
||||
|
||||
output_port.send(Message('sysex', data=[0x7F,0x7F,0x04,0x01,0x7F,0x7F]))
|
||||
test_midi_loopback(input_port)
|
||||
|
||||
output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x7F,0x00,0x41]))
|
||||
test_midi_loopback(input_port)
|
||||
|
||||
output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x04,0x7F,0x3D]))
|
||||
test_midi_loopback(input_port)
|
||||
|
||||
portname=""
|
||||
|
||||
while portname=="":
|
||||
print("Wait for MIDI IN plug ...")
|
||||
for name in mido.get_input_names():
|
||||
matchObj = re.match( r'Mbed', name)
|
||||
|
||||
if matchObj:
|
||||
portname=name
|
||||
time.sleep( 1 )
|
||||
|
||||
try:
|
||||
input_port = mido.open_input(portname)
|
||||
output_port = mido.open_output(portname)
|
||||
|
||||
print('Using {}'.format(input_port))
|
||||
|
||||
print("Test MIDI IN")
|
||||
|
||||
for message in test_midi_in(input_port):
|
||||
print('Test MIDI IN received {}'.format(message.hex()))
|
||||
|
||||
test_midi_out_loopback(output_port,input_port)
|
||||
except KeyboardInterrupt:
|
||||
pass
|
Reference in New Issue
Block a user