Rtos API example

Committer:
marcozecchini
Date:
Sat Feb 23 12:13:36 2019 +0000
Revision:
0:9fca2b23d0ba
final commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcozecchini 0:9fca2b23d0ba 1 from __future__ import print_function
marcozecchini 0:9fca2b23d0ba 2 import sys
marcozecchini 0:9fca2b23d0ba 3 import re
marcozecchini 0:9fca2b23d0ba 4 import time
marcozecchini 0:9fca2b23d0ba 5 import mido
marcozecchini 0:9fca2b23d0ba 6 from mido import Message
marcozecchini 0:9fca2b23d0ba 7
marcozecchini 0:9fca2b23d0ba 8
marcozecchini 0:9fca2b23d0ba 9 def test_midi_in(port):
marcozecchini 0:9fca2b23d0ba 10 expected_messages_count=0
marcozecchini 0:9fca2b23d0ba 11 while expected_messages_count < 7:
marcozecchini 0:9fca2b23d0ba 12 for message in port.iter_pending():
marcozecchini 0:9fca2b23d0ba 13 if message.type in ('note_on', 'note_off', 'program_change', 'sysex'):
marcozecchini 0:9fca2b23d0ba 14 yield message
marcozecchini 0:9fca2b23d0ba 15 expected_messages_count+=1
marcozecchini 0:9fca2b23d0ba 16 time.sleep(0.1)
marcozecchini 0:9fca2b23d0ba 17
marcozecchini 0:9fca2b23d0ba 18 def test_midi_loopback(input_port):
marcozecchini 0:9fca2b23d0ba 19 expected_messages_count=0
marcozecchini 0:9fca2b23d0ba 20 while expected_messages_count < 1:
marcozecchini 0:9fca2b23d0ba 21 for message in input_port.iter_pending():
marcozecchini 0:9fca2b23d0ba 22 print('Test MIDI OUT loopback received {}'.format(message.hex()))
marcozecchini 0:9fca2b23d0ba 23 expected_messages_count+=1
marcozecchini 0:9fca2b23d0ba 24
marcozecchini 0:9fca2b23d0ba 25 def test_midi_out_loopback(output_port,input_port):
marcozecchini 0:9fca2b23d0ba 26 print("Test MIDI OUT loopback")
marcozecchini 0:9fca2b23d0ba 27 output_port.send(Message('program_change', program=1))
marcozecchini 0:9fca2b23d0ba 28 test_midi_loopback(input_port)
marcozecchini 0:9fca2b23d0ba 29
marcozecchini 0:9fca2b23d0ba 30 output_port.send(Message('note_on', note=21))
marcozecchini 0:9fca2b23d0ba 31 test_midi_loopback(input_port)
marcozecchini 0:9fca2b23d0ba 32
marcozecchini 0:9fca2b23d0ba 33 output_port.send(Message('note_off', note=21))
marcozecchini 0:9fca2b23d0ba 34 test_midi_loopback(input_port)
marcozecchini 0:9fca2b23d0ba 35
marcozecchini 0:9fca2b23d0ba 36 output_port.send(Message('sysex', data=[0x7E,0x7F,0x09,0x01]))
marcozecchini 0:9fca2b23d0ba 37 test_midi_loopback(input_port)
marcozecchini 0:9fca2b23d0ba 38
marcozecchini 0:9fca2b23d0ba 39 output_port.send(Message('sysex', data=[0x7F,0x7F,0x04,0x01,0x7F,0x7F]))
marcozecchini 0:9fca2b23d0ba 40 test_midi_loopback(input_port)
marcozecchini 0:9fca2b23d0ba 41
marcozecchini 0:9fca2b23d0ba 42 output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x7F,0x00,0x41]))
marcozecchini 0:9fca2b23d0ba 43 test_midi_loopback(input_port)
marcozecchini 0:9fca2b23d0ba 44
marcozecchini 0:9fca2b23d0ba 45 output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x04,0x7F,0x3D]))
marcozecchini 0:9fca2b23d0ba 46 test_midi_loopback(input_port)
marcozecchini 0:9fca2b23d0ba 47
marcozecchini 0:9fca2b23d0ba 48 portname=""
marcozecchini 0:9fca2b23d0ba 49
marcozecchini 0:9fca2b23d0ba 50 while portname=="":
marcozecchini 0:9fca2b23d0ba 51 print("Wait for MIDI IN plug ...")
marcozecchini 0:9fca2b23d0ba 52 for name in mido.get_input_names():
marcozecchini 0:9fca2b23d0ba 53 matchObj = re.match( r'Mbed', name)
marcozecchini 0:9fca2b23d0ba 54
marcozecchini 0:9fca2b23d0ba 55 if matchObj:
marcozecchini 0:9fca2b23d0ba 56 portname=name
marcozecchini 0:9fca2b23d0ba 57 time.sleep( 1 )
marcozecchini 0:9fca2b23d0ba 58
marcozecchini 0:9fca2b23d0ba 59 try:
marcozecchini 0:9fca2b23d0ba 60 input_port = mido.open_input(portname)
marcozecchini 0:9fca2b23d0ba 61 output_port = mido.open_output(portname)
marcozecchini 0:9fca2b23d0ba 62
marcozecchini 0:9fca2b23d0ba 63 print('Using {}'.format(input_port))
marcozecchini 0:9fca2b23d0ba 64
marcozecchini 0:9fca2b23d0ba 65 print("Test MIDI IN")
marcozecchini 0:9fca2b23d0ba 66
marcozecchini 0:9fca2b23d0ba 67 for message in test_midi_in(input_port):
marcozecchini 0:9fca2b23d0ba 68 print('Test MIDI IN received {}'.format(message.hex()))
marcozecchini 0:9fca2b23d0ba 69
marcozecchini 0:9fca2b23d0ba 70 test_midi_out_loopback(output_port,input_port)
marcozecchini 0:9fca2b23d0ba 71 except KeyboardInterrupt:
marcozecchini 0:9fca2b23d0ba 72 pass