Simple test

Ensure your device works with this simple test.

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