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

Audio-specific timeline data cache. More...

#include <src/dsp/timeline_data_cache.h>

Inheritance diagram for zrythm::dsp::AudioTimelineDataCache:
Collaboration diagram for zrythm::dsp::AudioTimelineDataCache:

Data Structures

struct  AudioRegionEntry
 Audio region entry for caching. More...

Public Member Functions

 AudioTimelineDataCache (QObject *parent=nullptr)
void add_audio_region (IntervalType interval, const juce::AudioSampleBuffer &audio_buffer)
 Adds an audio region for the given interval.
const std::vector< AudioRegionEntry > & get_audio_regions () const
 Gets the cached audio regions.
void remove_sequences_matching_interval (IntervalType interval) override
 Removes cached data for intervals that truly overlap with the given interval.
bool has_content () const override
 Checks if the cache has any content.
Public Member Functions inherited from zrythm::dsp::TimelineDataCache
 TimelineDataCache (QObject *parent=nullptr)
void clear ()
 Clears all cached data and emits cachedRangesChanged.
void finalize_changes ()
 Finalizes changes, prepares cached data for access, and emits cachedRangesChanged.
Q_SIGNAL void cachedRangesChanged (std::vector< IntervalType > ranges) const
 Emitted when the cache content changes (after finalize_changes or clear).

Additional Inherited Members

Public Types inherited from zrythm::dsp::TimelineDataCache
using IntervalType = std::pair<units::sample_t, units::sample_t>
Static Protected Member Functions inherited from zrythm::dsp::TimelineDataCache
static bool intervals_overlap (IntervalType a, IntervalType b) noexcept
 Returns true if two intervals truly overlap (adjacent intervals do not count).

Detailed Description

Audio-specific timeline data cache.

Handles caching of audio regions with thread-safe access and range-based updates.

Definition at line 169 of file timeline_data_cache.h.

Constructor & Destructor Documentation

◆ AudioTimelineDataCache()

zrythm::dsp::AudioTimelineDataCache::AudioTimelineDataCache ( QObject * parent = nullptr)
inlineexplicit

Definition at line 172 of file timeline_data_cache.h.

Member Function Documentation

◆ add_audio_region()

void zrythm::dsp::AudioTimelineDataCache::add_audio_region ( IntervalType interval,
const juce::AudioSampleBuffer & audio_buffer )

Adds an audio region for the given interval.

Parameters
intervalThe time interval (in samples).
audio_bufferThe audio sample buffer to copy.

◆ get_audio_regions()

const std::vector< AudioRegionEntry > & zrythm::dsp::AudioTimelineDataCache::get_audio_regions ( ) const
inline

Gets the cached audio regions.

Returns
Reference to the vector of audio region entries.

Definition at line 211 of file timeline_data_cache.h.

◆ has_content()

bool zrythm::dsp::AudioTimelineDataCache::has_content ( ) const
overridevirtual

Checks if the cache has any content.

Returns
True if the cache contains any data, false otherwise.

Implements zrythm::dsp::TimelineDataCache.

◆ remove_sequences_matching_interval()

void zrythm::dsp::AudioTimelineDataCache::remove_sequences_matching_interval ( IntervalType interval)
overridevirtual

Removes cached data for intervals that truly overlap with the given interval.

Adjacent intervals (where one's end equals another's start) are NOT considered overlapping, since cache entries use exclusive-end semantics (end = one past the last sample).

Parameters
intervalThe time interval to remove (in samples).

Call finalize_changes() after one or more calls to this method.

Implements zrythm::dsp::TimelineDataCache.


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