takashi kadono / Mbed OS Nucleo446_SSD1331

Dependencies:   ssd1331

Committer:
kadonotakashi
Date:
Thu Oct 11 02:27:46 2018 +0000
Revision:
3:f3764f852aa8
Parent:
0:8fdf9a60065b
Nucreo 446 + SSD1331 test version;

Who changed what in which revision?

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