mbed-os

Dependents:   cobaLCDJoyMotor_Thread odometry_omni_3roda_v3 odometry_omni_3roda_v1 odometry_omni_3roda_v2 ... more

Committer:
be_bryan
Date:
Mon Dec 11 17:54:04 2017 +0000
Revision:
0:b74591d5ab33
motor ++

Who changed what in which revision?

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