Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 1.9 KB

README.md

File metadata and controls

47 lines (35 loc) · 1.9 KB

This work is licensed under CC BY-SA 4.0.

midihelpers library

Helpers for some MIDI stuff common to my usb_midi_clocker and Microlidian projects.

  • Handle MIDI clock and timing, helper functions/macros to find the current MIDI time/position
  • Optionally (define #USE_UCLOCK) use uClock for accurate & solid timing
    • Supports Teensy 4.0/4.1 and RP2040 platforms
  • Functions to find the name of a MIDI note number (eg C5, D#3, etc)
  • Keys and scales, with quantising and chord-building
  • mymenu widgets for:
    • displaying/adjusting BPM
    • showing track position
    • switching clock sources between Internal/External/None.
    • adjusting root key, scale, chords and inversions
  • parameters library uses features of this for the 1v/oct tracking quantisation etc
  • Defines for GM drum note numbers
  • For RP2040 boards, set up MIDI USB with TinyUSB

Requirements

Setting up MIDI and USB MIDI on RP2040 boards

USB MIDI device

  • add -DUSE_TINYUSB
  • define -DUSB_MIDI_VID=0x1337 vendor ID
  • define -DUSB_MIDI_PID=0xBEEF product ID
  • define -DUSB_MIDI_MANUFACTURER=""TyrellCorp"" manufacturer string
  • define -DUSB_MIDI_PRODUCT=""FunkyDevice"" product string

Serial/DIN MIDI output

  • define -DUSE_DINMIDI
  • define -DMIDI_SERIAL_SPIO
  • define -DMIDI_SERIAL_OUT_PIN=D6 or whatever pin you're using for output

todo

  • a class to make it simple to track which notes are held by an input or output
  • chord inversions
  • fix envelopes
  • 'hold' stage doesnt work properly when inverted