cs-midi is a standalone MIDI library for pico-sdk, extracted from Control Surface. It provides BLE MIDI, Classic BT SPP MIDI, rotary encoders, buttons, potentiometers, LEDs, banks, and a flexible pipe-based routing system.
Add cs-midi as a git submodule:
git submodule add https://git.else-if.org/jess/cs-midi.git lib/cs-midi
In your CMakeLists.txt:
add_subdirectory(lib/cs-midi)
target_link_libraries(your_target cs_midi)
target_include_directories(cs_midi PRIVATE ${CMAKE_CURRENT_LIST_DIR})
The last line is required so cs-midi can find your project's btstack_config.h and lwipopts.h.
#include <cs_midi.h>
This single header pulls in everything: output elements, input elements, pipes, banks, BLE interface, and the Control Surface singleton.