Skip to content

Instantly share code, notes, and snippets.

@todbot
Last active November 29, 2023 00:11
Show Gist options
  • Save todbot/51d398b14d31d1f92baaf5c4b1c31c3f to your computer and use it in GitHub Desktop.
Save todbot/51d398b14d31d1f92baaf5c4b1c31c3f to your computer and use it in GitHub Desktop.
demo new USB MIDI Host capability in CircuiPython
# usb_host_midi_demo.py - demo new USB MIDI Host capability in CircuiPython
# 27 Nov 2023 - @todbot / Tod Kurt
# adapted from https://github.com/adafruit/Adafruit_CircuitPython_USB_Host_MIDI/blob/main/examples/usb_host_midi_simpletest.py
# needs "circup install adafruit_midi adafruit_usb_host_descriptors"
# and hand-copy library from https://github.com/adafruit/Adafruit_CircuitPython_USB_Host_MIDI
import time
import board
import usb.core
import adafruit_usb_host_midi
import adafruit_midi
from adafruit_midi.note_off import NoteOff
from adafruit_midi.note_on import NoteOn
from adafruit_midi.control_change import ControlChange
from adafruit_midi.pitch_bend import PitchBend
from adafruit_midi.timing_clock import TimingClock
import usb_host
usb_host.Port(board.GP20, board.GP21)
print("Looking for midi device")
raw_midi = None
while raw_midi is None:
for device in usb.core.find(find_all=True):
try:
raw_midi = adafruit_usb_host_midi.MIDI(device)
print("Found vid/pid %04x/%04x" % (device.idVendor, device.idProduct),
device.manufacturer, device.product)
except ValueError:
continue
midi = adafruit_midi.MIDI(midi_in=raw_midi, in_channel=0)
while True:
msg = midi.receive()
if msg is not None:
print(time.monotonic(), msg)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment