Marco Zecchini
/
Example_RTOS
Rtos API example
Embed:
(wiki syntax)
Show/hide line numbers
midi.py
00001 from __future__ import print_function 00002 import sys 00003 import re 00004 import time 00005 import mido 00006 from mido import Message 00007 00008 00009 def test_midi_in(port): 00010 expected_messages_count=0 00011 while expected_messages_count < 7: 00012 for message in port.iter_pending(): 00013 if message.type in ('note_on', 'note_off', 'program_change', 'sysex'): 00014 yield message 00015 expected_messages_count+=1 00016 time.sleep(0.1) 00017 00018 def test_midi_loopback(input_port): 00019 expected_messages_count=0 00020 while expected_messages_count < 1: 00021 for message in input_port.iter_pending(): 00022 print('Test MIDI OUT loopback received {}'.format(message.hex())) 00023 expected_messages_count+=1 00024 00025 def test_midi_out_loopback(output_port,input_port): 00026 print("Test MIDI OUT loopback") 00027 output_port.send(Message('program_change', program=1)) 00028 test_midi_loopback(input_port) 00029 00030 output_port.send(Message('note_on', note=21)) 00031 test_midi_loopback(input_port) 00032 00033 output_port.send(Message('note_off', note=21)) 00034 test_midi_loopback(input_port) 00035 00036 output_port.send(Message('sysex', data=[0x7E,0x7F,0x09,0x01])) 00037 test_midi_loopback(input_port) 00038 00039 output_port.send(Message('sysex', data=[0x7F,0x7F,0x04,0x01,0x7F,0x7F])) 00040 test_midi_loopback(input_port) 00041 00042 output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x7F,0x00,0x41])) 00043 test_midi_loopback(input_port) 00044 00045 output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x04,0x7F,0x3D])) 00046 test_midi_loopback(input_port) 00047 00048 portname="" 00049 00050 while portname=="": 00051 print("Wait for MIDI IN plug ...") 00052 for name in mido.get_input_names(): 00053 matchObj = re.match( r'Mbed', name) 00054 00055 if matchObj: 00056 portname=name 00057 time.sleep( 1 ) 00058 00059 try: 00060 input_port = mido.open_input(portname) 00061 output_port = mido.open_output(portname) 00062 00063 print('Using {}'.format(input_port)) 00064 00065 print("Test MIDI IN") 00066 00067 for message in test_midi_in(input_port): 00068 print('Test MIDI IN received {}'.format(message.hex())) 00069 00070 test_midi_out_loopback(output_port,input_port) 00071 except KeyboardInterrupt: 00072 pass
Generated on Sun Jul 17 2022 08:25:28 by 1.7.2