3.8 KiB
3.8 KiB
cs-midi Roadmap
Extraction status of tttapa/Control-Surface (GPL-3.0) into cs-midi for pico-sdk + BTstack.
Implemented
MIDI Output Elements
NoteButton— momentary note on/offNoteButtons<N>— multiple sequential note buttonsNoteButtonLatched— toggle note on first press, off secondNoteButtonLatching— note on while held, toggles stateNoteButtonMatrix<R,C>— row/column scanned note gridNoteChordButton— plays chord on pressCCButton— momentary CC 127/0CCButtons<N>— multiple sequential CC buttonsCCButtonLatched— toggle CCCCButtonLatching— latching CCCCButtonMatrix<R,C>— row/column scanned CC gridCCPotentiometer— analog input to CC 0-127PBPotentiometer— analog input to 14-bit Pitch BendCCRotaryEncoder— relative CC encoderCCAbsoluteEncoder— absolute CC encoderPBAbsoluteEncoder— absolute Pitch Bend encoderCCIncrementDecrementButtons— inc/dec CC with resetPCButton— Program Change on pressProgramChanger<N>— bank-selectable program changes
MIDI Input Elements
NoteValue/CCValue/KPValue— 8-bit value readersPBValue— 14-bit Pitch Bend readerNoteRange<N>/CCRange<N>/KPRange<N>— range readersNoteLED/CCLED/KPLED— LED output from MIDI input- All bankable variants (
Bankable::NoteValue<N>, etc.)
Banks & Selectors
Bank<N>— groups bankable elements, manages bank switchingTransposer<Min,Max>— specialized bank for note transpositionEncoderSelector<N>— rotary encoder bank selectionIncrementDecrementSelector<N>— two-button bank selectionIncrementSelector<N>— single-button wrapping selectorManyButtonsSelector<N>— direct bank selection per buttonSwitchSelector— two-state toggle selectorProgramChangeSelector<N>— MIDI-driven bank selection
MIDI Interfaces
BluetoothMIDI_Interface— BLE MIDI via BTstack (pico-native)USBMIDI_Interface— USB MIDI device via TinyUSBHardwareSerialMIDI_Interface— 5-pin DIN MIDI over UART (31250 baud)AppleMIDI_Interface— RTP-MIDI over WiFi with mDNS/Bonjour discoveryMIDI_Pipe/MIDI_PipeFactory<N>/BidirectionalMIDI_PipeFactory<N>Control_Surfacesingleton — declarative begin/loop lifecycle
Infrastructure
AHEncoder— pico-native interrupt-driven rotary encoderExtendedInputOutput— GPIO abstraction (direct pins)- MIDI constants (notes, CC numbers, PC programs, chords/intervals)
- Platform shim (
pico_shim.h) — replaces Arduino runtime - HID over GATT (HoG) keyboard + Battery Service — BLE auto-reconnect and battery level via
CS_MIDI_HID_KEYBOARD
Not Yet Implemented
Bankable Output Elements
Bankable::NoteButton/Bankable::CCButton/ etc.Bankable::CCPotentiometer/Bankable::PBPotentiometerBankable::CCRotaryEncoder/Bankable::CCAbsoluteEncoderBankable::NoteChordButton(with Transposer)Bankable::NoteButtonMatrix/Bankable::CCButtonMatrix
Blocked Phase 11 of the extraction. Required for Bank.ino and Transposer.ino output-side examples.
Additional MIDI Interfaces
- Debug MIDI Interface (serial monitor output)
Display Elements
- OLED display support
- VU meter elements
- NoteLEDBar
Hardware Expansion
- MCP23017 I2C I/O expander
- MAX7219 LED driver
- Shift register chains (74HC595, etc.)
- FastLED / NeoPixel integration
Advanced Features
- MIDI input fine-grained callbacks (per-message-type)
- SysEx send/receive helpers
- AppleMIDI (RTP-MIDI over WiFi)