17 static constexpr size_t kMaxEventsPerBlock = 256;
19 units::sample_t timeline_position;
20 bool transport_recording{};
21 units::sample_u32_t nframes;
22 std::vector<dsp::MidiEvent> midi_events;
24 static void write_to_slot (
26 units::sample_t timeline_position,
27 bool transport_recording,
28 std::span<const dsp::MidiEvent> events,
29 units::sample_u32_t nframes)
noexcept [[clang::nonblocking]]
31 slot.timeline_position = timeline_position;
32 slot.transport_recording = transport_recording;
33 slot.nframes = nframes;
34 const auto count = std::min (events.size (), slot.midi_events.capacity ());
35 slot.midi_events.assign (
38 +
static_cast<decltype (slot.midi_events)::difference_type
> (count));
45 slot.timeline_position = source.timeline_position;
46 slot.transport_recording = source.transport_recording;
47 slot.nframes = source.nframes;
48 slot.midi_events = source.midi_events;
54 slot.midi_events.reserve (kMaxEventsPerBlock);