LMMS
Loading...
Searching...
No Matches
juce::ARAPlaybackRegionReader Class Reference

#include <juce_ARAAudioReaders.h>

Inheritance diagram for juce::ARAPlaybackRegionReader:
juce::AudioFormatReader juce::ARAPlaybackRegionListener

Public Member Functions

 ARAPlaybackRegionReader (ARAPlaybackRegion *playbackRegion)
 ARAPlaybackRegionReader (double sampleRate, int numChannels, const std::vector< ARAPlaybackRegion * > &playbackRegions)
 ~ARAPlaybackRegionReader () override
bool isValid () const
void invalidate ()
bool readSamples (int **destSamples, int numDestChannels, int startOffsetInDestBuffer, int64 startSampleInFile, int numSamples) override
void willUpdatePlaybackRegionProperties (ARAPlaybackRegion *playbackRegion, ARAPlaybackRegion::PropertiesPtr newProperties) override
void didUpdatePlaybackRegionContent (ARAPlaybackRegion *playbackRegion, ARAContentUpdateScopes scopeFlags) override
void willDestroyPlaybackRegion (ARAPlaybackRegion *playbackRegion) override
Public Member Functions inherited from juce::AudioFormatReader
virtual ~AudioFormatReader ()
const StringgetFormatName () const noexcept
bool read (float *const *destChannels, int numDestChannels, int64 startSampleInSource, int numSamplesToRead)
bool read (int *const *destChannels, int numDestChannels, int64 startSampleInSource, int numSamplesToRead, bool fillLeftoverChannelsWithCopies)
bool read (AudioBuffer< float > *buffer, int startSampleInDestBuffer, int numSamples, int64 readerStartSample, bool useReaderLeftChan, bool useReaderRightChan)
virtual void readMaxLevels (int64 startSample, int64 numSamples, Range< float > *results, int numChannelsToRead)
virtual void readMaxLevels (int64 startSample, int64 numSamples, float &lowestLeft, float &highestLeft, float &lowestRight, float &highestRight)
int64 searchForLevel (int64 startSample, int64 numSamplesToSearch, double magnitudeRangeMinimum, double magnitudeRangeMaximum, int minimumConsecutiveSamples)
virtual AudioChannelSet getChannelLayout ()

Public Attributes

int64 startInSamples = 0
Public Attributes inherited from juce::AudioFormatReader
double sampleRate = 0
unsigned int bitsPerSample = 0
int64 lengthInSamples = 0
unsigned int numChannels = 0
bool usesFloatingPointData = false
StringPairArray metadataValues
InputStreaminput

Private Attributes

std::unique_ptr< ARAPlaybackRendererplaybackRenderer
AudioPlayHead::PositionInfo positionInfo
ReadWriteLock lock

Static Private Attributes

static constexpr int maximumBlockSize = 4 * 1024

Additional Inherited Members

Protected Member Functions inherited from juce::AudioFormatReader
 AudioFormatReader (InputStream *sourceStream, const String &formatName)
Static Protected Member Functions inherited from juce::AudioFormatReader
static void clearSamplesBeyondAvailableLength (int **destChannels, int numDestChannels, int startOffsetInDestBuffer, int64 startSampleInFile, int &numSamples, int64 fileLengthInSamples)
Private Member Functions inherited from juce::ARAPlaybackRegionListener
virtual ~ARAPlaybackRegionListener ()=default
virtual void didUpdatePlaybackRegionProperties (ARAPlaybackRegion *playbackRegion)

Detailed Description

Subclass of AudioFormatReader that reads samples from a group of playback regions.

Plug-Ins typically use this to draw the output of a playback region in their UI.

In order to read from playback regions, the reader requires an audio processor that acts as ARA playback renderer. Configuring the audio processor for real-time operation results in the reader being real-time capable too, unlike most other AudioFormatReaders. The reader instance will take care of adding all regions being read to the renderer and invoke its processBlock function in order to read the region samples.

The reader becomes invalid if

  • any region properties are updated in a way that would affect its samples,
  • any region content is updated in a way that would affect its samples, or
  • any of its regions are destroyed.

@tags{ARA}

Constructor & Destructor Documentation

◆ ARAPlaybackRegionReader() [1/2]

juce::ARAPlaybackRegionReader::ARAPlaybackRegionReader ( ARAPlaybackRegion * playbackRegion)
explicit

Create an ARAPlaybackRegionReader instance to read the given playbackRegion, using the sample rate and channel count of the underlying ARAAudioSource.

Parameters
playbackRegionThe playback region that should be read - must not be nullptr!

◆ ARAPlaybackRegionReader() [2/2]

juce::ARAPlaybackRegionReader::ARAPlaybackRegionReader ( double sampleRate,
int numChannels,
const std::vector< ARAPlaybackRegion * > & playbackRegions )

Create an ARAPlaybackRegionReader instance to read the given playbackRegions

Parameters
sampleRateThe sample rate that should be used for reading.
numChannelsThe channel count that should be used for reading.
playbackRegionsThe vector of playback regions that should be read - must not be empty! All regions must be part of the same ARADocument.

◆ ~ARAPlaybackRegionReader()

juce::ARAPlaybackRegionReader::~ARAPlaybackRegionReader ( )
override

Member Function Documentation

◆ didUpdatePlaybackRegionContent()

void juce::ARAPlaybackRegionReader::didUpdatePlaybackRegionContent ( ARAPlaybackRegion * playbackRegion,
ARAContentUpdateScopes scopeFlags )
overridevirtual

Called when the playback region's content (i.e. samples or notes) changes.

Parameters
playbackRegionThe playback region with updated content.
scopeFlagsThe scope of the content update.

Reimplemented from juce::ARAPlaybackRegionListener.

◆ invalidate()

void juce::ARAPlaybackRegionReader::invalidate ( )

Invalidate the reader - this should be called if the sample content of any of the reader's ARAPlaybackRegions changes.

◆ isValid()

bool juce::ARAPlaybackRegionReader::isValid ( ) const
inline

Returns true as long as any of the reader's underlying playback region's haven't changed.

◆ readSamples()

bool juce::ARAPlaybackRegionReader::readSamples ( int ** destChannels,
int numDestChannels,
int startOffsetInDestBuffer,
int64 startSampleInFile,
int numSamples )
overridevirtual

Subclasses must implement this method to perform the low-level read operation.

Callers should use read() instead of calling this directly.

Parameters
destChannelsthe array of destination buffers to fill. Some of these pointers may be null
numDestChannelsthe number of items in the destChannels array. This value is guaranteed not to be greater than the number of channels that this reader object contains
startOffsetInDestBufferthe number of samples from the start of the dest data at which to begin writing
startSampleInFilethe number of samples into the source data at which to begin reading. This value is guaranteed to be >= 0.
numSamplesthe number of samples to read

Implements juce::AudioFormatReader.

◆ willDestroyPlaybackRegion()

void juce::ARAPlaybackRegionReader::willDestroyPlaybackRegion ( ARAPlaybackRegion * playbackRegion)
overridevirtual

Called before the playback region is destroyed.

Parameters
playbackRegionThe playback region that will be destroyed.

Reimplemented from juce::ARAPlaybackRegionListener.

◆ willUpdatePlaybackRegionProperties()

void juce::ARAPlaybackRegionReader::willUpdatePlaybackRegionProperties ( ARAPlaybackRegion * playbackRegion,
ARAPlaybackRegion::PropertiesPtr newProperties )
overridevirtual

Called before the playback region's properties are updated.

Parameters
playbackRegionThe playback region whose properties will be updated.
newPropertiesThe playback region properties that will be assigned to playbackRegion.

Reimplemented from juce::ARAPlaybackRegionListener.

Member Data Documentation

◆ lock

ReadWriteLock juce::ARAPlaybackRegionReader::lock
private

◆ maximumBlockSize

int juce::ARAPlaybackRegionReader::maximumBlockSize = 4 * 1024
staticconstexprprivate

◆ playbackRenderer

std::unique_ptr<ARAPlaybackRenderer> juce::ARAPlaybackRegionReader::playbackRenderer
private

◆ positionInfo

AudioPlayHead::PositionInfo juce::ARAPlaybackRegionReader::positionInfo
private

◆ startInSamples

int64 juce::ARAPlaybackRegionReader::startInSamples = 0

The starting point of the reader in playback samples


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