Sound Byte Libs 29c5ff3
C++ firmware library for audio applications on 32-bit ARM Cortex-M processors
Loading...
Searching...
No Matches
midi.cpp
Go to the documentation of this file.
1/**
2 * @file midi.cpp
3 * @brief USB MIDI device implementation
4 *
5 * Wraps TinyUSB's MIDI device class for SBL.
6 * See midi.hpp for API documentation.
7 */
8
9#include "tusb.h"
10#include <sbl/usb/midi.hpp>
11
12namespace sbl::usb {
13
14namespace {
15
16/// Cable number for our single virtual MIDI cable
17constexpr uint8_t CABLE_NUM = 0;
18
19} // anonymous namespace
20
22 return tud_midi_mounted();
23}
24
25uint32_t MidiPort::read(uint8_t* buf, uint32_t max_len) {
26 if (!tud_midi_mounted()) return 0;
27 return tud_midi_stream_read(buf, max_len);
28}
29
31 if (!tud_midi_mounted()) return false;
32
33 uint8_t msg[3];
34 uint8_t len = event.to_bytes(msg);
35 if (len == 0) return false;
36
37 return tud_midi_stream_write(CABLE_NUM, msg, len) == len;
38}
39
40uint32_t MidiPort::write(const uint8_t* data, uint32_t len) {
41 if (!tud_midi_mounted()) return 0;
42 return tud_midi_stream_write(CABLE_NUM, data, len);
43}
44
45} // namespace sbl::usb
static bool connected()
Check if USB MIDI interface is mounted by host.
Definition midi.cpp:21
static bool send(const sbl::midi::MidiEvent &event)
Send a MidiEvent over USB MIDI (TX)
Definition midi.cpp:30
static uint32_t read(uint8_t *buf, uint32_t max_len)
Read decoded MIDI bytes from USB (RX)
Definition midi.cpp:25
static uint32_t write(const uint8_t *data, uint32_t len)
Write raw MIDI bytes to USB MIDI (TX)
Definition midi.cpp:40
constexpr uint8_t CABLE_NUM
Cable number for our single virtual MIDI cable.
Definition midi.cpp:17
USB device support.
Definition cdc.cpp:24
USB MIDI device interface.