cs-midi-docs/docs/examples/04-banks/06-program-change-selector.md

662 B

ProgramChangeSelector

Bank selection triggered by incoming MIDI Program Change messages.

#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"
#include <cs_midi.h>

using namespace cs;

BluetoothMIDI_Interface midi;

Bank<8> bank(1);

Bankable::CCValue<8> ccVal {
    {bank, BankType::ChangeAddress},
    {16, Channel_1},
};

ProgramChangeSelector<8> selector {
    bank,
    {Channel_1, Cable_1},
};

int main() {
    stdio_init_all();
    if (cyw43_arch_init()) return 1;
    Control_Surface.begin();
    while (true) {
        Control_Surface.loop();
        uint8_t val = ccVal.getValue();
        (void)val;
        sleep_ms(1);
    }
}