Last active
November 29, 2023 00:11
-
-
Save todbot/51d398b14d31d1f92baaf5c4b1c31c3f to your computer and use it in GitHub Desktop.
demo new USB MIDI Host capability in CircuiPython
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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