cs-midi-docs/docs/manual/02-midi/02-sending-messages.md

2.0 KiB

Sending MIDI Messages

Original: Sending MIDI messages

Direct sending

Use the interface object directly when you don't need the element system:

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

using namespace cs;

BluetoothMIDI_Interface midi;

int main() {
    stdio_init_all();
    if (cyw43_arch_init()) return 1;
    midi.begin();

    MIDIAddress note = {MIDI_Notes::C[4], Channel_1};
    midi.sendNoteOn(note, 127);
    sleep_ms(500);
    midi.sendNoteOff(note, 0);

    while (true) {
        midi.update();
        sleep_ms(1);
    }
}

Channel voice messages

Method Arguments Description
sendNoteOn address, velocity Note On
sendNoteOff address, velocity Note Off
sendControlChange address, value Control Change (0-127)
sendProgramChange address Program Change
sendPitchBend channel, value Pitch Bend (0-16383, center 8192)
sendChannelPressure channel, pressure Channel Pressure
sendKeyPressure address, pressure Polyphonic Key Pressure

System common messages

Method Arguments Description
sendMTCQuarterFrame type, value MIDI Time Code quarter frame
sendSongPositionPointer beats Song position (14-bit)
sendSongSelect song Song number (0-127)
sendTuneRequest Tune request

System exclusive

uint8_t sysex[] = {0xF0, 0x7E, 0x7F, 0x06, 0x01, 0xF7};
midi.sendSysEx(sysex);

Real-time messages

Method Description
sendTimingClock MIDI clock tick
sendStart Start sequence
sendContinue Continue sequence
sendStop Stop sequence
sendActiveSensing Active sensing
sendSystemReset System reset

Flushing

Call midi.sendNow() to flush buffered messages immediately.