Loading...
Searching...
No Matches
score-plugin-clap/Clap/MidiEvents.hpp
1#pragma once
2#include <Process/Dataflow/MidiSysexArena.hpp>
3
4#include <libremidi/ump.hpp>
5
6#include <clap/events.h>
7
8#include <optional>
9
10namespace Clap
11{
18inline std::optional<clap_event_midi_sysex_t> toSysexEvent(
19 const libremidi::ump& mess, uint32_t time, uint16_t port_index,
20 Process::MidiSysexArena& arena, Process::MidiSysexArena::stream& stream) noexcept
21{
22 const auto bytes = arena.feed(stream, mess);
23 if(bytes.empty())
24 return std::nullopt;
25
26 clap_event_midi_sysex_t ev{};
27 ev.header.size = sizeof(clap_event_midi_sysex_t);
28 ev.header.time = time;
29 ev.header.space_id = CLAP_CORE_EVENT_SPACE_ID;
30 ev.header.type = CLAP_EVENT_MIDI_SYSEX;
31 ev.header.flags = 0;
32 ev.port_index = port_index;
33 ev.buffer = bytes.data();
34 ev.size = uint32_t(bytes.size());
35 return ev;
36}
37}
Definition MidiSysexArena.hpp:30