Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
zrythm::structure::arrangement::MidiTimelineDataProvider Class Reference

MIDI-specific timeline data provider. More...

#include <src/structure/arrangement/timeline_data_provider.h>

Inheritance diagram for zrythm::structure::arrangement::MidiTimelineDataProvider:
Collaboration diagram for zrythm::structure::arrangement::MidiTimelineDataProvider:

Public Member Functions

void process_midi_events (const EngineProcessTimeInfo &time_nfo, dsp::ITransport::PlayState transport_state, dsp::MidiEventVector &output_buffer) noexcept
 Process MIDI events for the given time range.
void clear_all_caches () override
void remove_sequences_matching_interval_from_all_caches (IntervalType interval) override
const juce::MidiMessageSequence & get_midi_events () const
void generate_midi_events (const dsp::TempoMap &tempo_map, RangeOf< const arrangement::MidiRegion * > auto midi_regions, utils::ExpandableTickRange affected_range)
 Generate the MIDI event sequence to be used during realtime processing.
void generate_midi_events (const dsp::TempoMap &tempo_map, RangeOf< const arrangement::ChordRegion * > auto chord_regions, utils::ExpandableTickRange affected_range)
 Generate the MIDI event sequence to be used during realtime processing.
Public Member Functions inherited from zrythm::structure::arrangement::TimelineDataProvider
template<RegionObject RegionType>
void generate_events (this auto &self, const dsp::TempoMap &tempo_map, RangeOf< const RegionType * > auto regions, utils::ExpandableTickRange affected_range)
 Generate the event sequence to be used during realtime processing.

Protected Member Functions

dsp::TimelineDataCacheget_base_cache () override

Friends

class TimelineDataProvider

Additional Inherited Members

Public Types inherited from zrythm::structure::arrangement::TimelineDataProvider
using IntervalType = std::pair<units::sample_t, units::sample_t>
Protected Attributes inherited from zrythm::structure::arrangement::TimelineDataProvider
dsp::ITransport::PlayState last_seen_transport_state_
 Last transport state we've seen.
units::sample_t next_expected_transport_position_
 Next expected transport position (for detecting jumps).

Detailed Description

MIDI-specific timeline data provider.

Handles caching of MIDI sequences with thread-safe access and range-based updates.

Definition at line 140 of file timeline_data_provider.h.

Member Function Documentation

◆ clear_all_caches()

void zrythm::structure::arrangement::MidiTimelineDataProvider::clear_all_caches ( )
overridevirtual

◆ generate_midi_events() [1/2]

void zrythm::structure::arrangement::MidiTimelineDataProvider::generate_midi_events ( const dsp::TempoMap & tempo_map,
RangeOf< const arrangement::ChordRegion * > auto chord_regions,
utils::ExpandableTickRange affected_range )
inline

Generate the MIDI event sequence to be used during realtime processing.

To be called as needed from the UI thread when a new cache is requested.

Parameters
tempo_mapThe tempo map for timing conversion.
chord_regionsThe Chord regions to process.
affected_rangeThe range of ticks to process.

Definition at line 190 of file timeline_data_provider.h.

◆ generate_midi_events() [2/2]

void zrythm::structure::arrangement::MidiTimelineDataProvider::generate_midi_events ( const dsp::TempoMap & tempo_map,
RangeOf< const arrangement::MidiRegion * > auto midi_regions,
utils::ExpandableTickRange affected_range )
inline

Generate the MIDI event sequence to be used during realtime processing.

To be called as needed from the UI thread when a new cache is requested.

Parameters
tempo_mapThe tempo map for timing conversion.
midi_regionsThe MIDI regions to process.
affected_rangeThe range of ticks to process.

Definition at line 170 of file timeline_data_provider.h.

◆ get_base_cache()

dsp::TimelineDataCache * zrythm::structure::arrangement::MidiTimelineDataProvider::get_base_cache ( )
inlineoverrideprotectedvirtual

◆ remove_sequences_matching_interval_from_all_caches()

void zrythm::structure::arrangement::MidiTimelineDataProvider::remove_sequences_matching_interval_from_all_caches ( IntervalType interval)
overridevirtual

◆ TimelineDataProvider

friend class TimelineDataProvider
friend

Definition at line 142 of file timeline_data_provider.h.


The documentation for this class was generated from the following file: