summaryrefslogtreecommitdiff
path: root/tool/mbed/mbed-sdk/workspace_tools/host_tests/midi.py
diff options
context:
space:
mode:
authorJun Wako <wakojun@gmail.com>2015-04-24 16:26:14 +0900
committerJun Wako <wakojun@gmail.com>2015-04-24 16:26:14 +0900
commit1fe4406f374291ab2e86e95a97341fd9c475fcb8 (patch)
tree1be0e16b4b07b5a31ea97ec50a9eb13a288c3d27 /tool/mbed/mbed-sdk/workspace_tools/host_tests/midi.py
parenta20ef7052c6e937d2f7672dd59456e55a5c08296 (diff)
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
Diffstat (limited to 'tool/mbed/mbed-sdk/workspace_tools/host_tests/midi.py')
-rw-r--r--tool/mbed/mbed-sdk/workspace_tools/host_tests/midi.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/tool/mbed/mbed-sdk/workspace_tools/host_tests/midi.py b/tool/mbed/mbed-sdk/workspace_tools/host_tests/midi.py
new file mode 100644
index 0000000000..67f34ea6f8
--- /dev/null
+++ b/tool/mbed/mbed-sdk/workspace_tools/host_tests/midi.py
@@ -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 \ No newline at end of file