2.0 KiB
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.