ble_midi_simpletest.py
1 """ 2 This example sends MIDI out. It sends NoteOn and then NoteOff with a random pitch bend. 3 """ 4 5 import time 6 import random 7 import adafruit_ble 8 from adafruit_ble.advertising.standard import ProvideServicesAdvertisement 9 import adafruit_ble_midi 10 import adafruit_midi 11 from adafruit_midi.control_change import ControlChange 12 from adafruit_midi.note_off import NoteOff 13 from adafruit_midi.note_on import NoteOn 14 from adafruit_midi.pitch_bend import PitchBend 15 16 # Use default HID descriptor 17 midi_service = adafruit_ble_midi.MIDIService() 18 advertisement = ProvideServicesAdvertisement(midi_service) 19 # advertisement.appearance = 961 20 21 ble = adafruit_ble.BLERadio() 22 if ble.connected: 23 for c in ble.connections: 24 c.disconnect() 25 26 midi = adafruit_midi.MIDI(midi_out=midi_service, out_channel=0) 27 28 print("advertising") 29 ble.start_advertising(advertisement) 30 31 while True: 32 print("Waiting for connection") 33 while not ble.connected: 34 pass 35 print("Connected") 36 # Sleep briefly so client can get ready and send setup 37 # writes to the MIDIService. 0.5secs was insufficient. 38 time.sleep(1.0) 39 # Send one unique NoteOn/Off at the beginning to check that the 40 # delay is sufficient. 41 midi.send(NoteOn(20, 99)) 42 midi.send(NoteOff(20, 99)) 43 while ble.connected: 44 midi.send(NoteOn(44, 120)) # G sharp 2nd octave 45 time.sleep(0.25) 46 a_pitch_bend = PitchBend(random.randint(0, 16383)) 47 midi.send(a_pitch_bend) 48 time.sleep(0.25) 49 # note how a list of messages can be used 50 midi.send([NoteOff("G#2", 120), ControlChange(3, 44)]) 51 time.sleep(0.5) 52 print("Disconnected") 53 print() 54 ble.start_advertising(advertisement)