Zrythm v2.0.0-alpha.1+31.4967fd053471
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
zrythm::dsp::PortObserver Class Reference

Pure data-capture graph node that observes a port's output. More...

#include <src/dsp/port_observer.h>

Inheritance diagram for zrythm::dsp::PortObserver:
Collaboration diagram for zrythm::dsp::PortObserver:

Public Member Functions

 PortObserver (utils::IObjectRegistry &registry, const Port &observed_port)
PortUuid observed_port_uuid () const
const Portobserved_port () const
int num_channels () const
RingBuffer< float > & audio_ring (int ch)
const RingBuffer< float > & audio_ring (int ch) const
RingBuffer< RealtimeMidiEvent > & midi_ring ()
const RingBuffer< RealtimeMidiEvent > & midi_ring () const
bool has_audio_rings () const
bool has_midi_ring () const
Public Member Functions inherited from zrythm::dsp::ProcessorBase
 ProcessorBase (utils::IObjectRegistry &registry, utils::Utf8String name={ u8"ProcessorBase" })
void set_name (const utils::Utf8String &name)
 Set a custom name to be used in the DSP graph.
void add_input_port (const dsp::PortUuidReference &uuid)
void add_output_port (const dsp::PortUuidReference &uuid)
void add_parameter (const dsp::ProcessorParameterUuidReference &uuid)
auto & get_input_ports () const
auto & get_output_ports () const
auto & get_parameters () const
const ParameterChangeTrackerchange_tracker () const noexcept
 Returns the change tracker.
utils::Utf8String get_node_name () const final
 Returns a human friendly name of the node.
void process_block (dsp::graph::ProcessBlockInfo time_nfo, const dsp::ITransport &transport, const dsp::TempoMap &tempo_map) noexcept final
 Calls custom_process_block() internally after processing all the parameters.
void prepare_for_processing_impl (const graph::GraphNode *node, units::sample_rate_t sample_rate, units::sample_u32_t max_block_length) final
void release_resources () final
 Called to release resources allocated by prepare_for_processing().
Public Member Functions inherited from zrythm::dsp::graph::IProcessable
virtual units::sample_u32_t get_single_playback_latency () const
 Returns the latency of only the given processable, without adding the previous/next latencies (zero latency by default).
void prepare_for_processing (const GraphNode *node, units::sample_rate_t sample_rate, units::sample_u32_t max_block_length)
 Called to allocate resources required for processing.

Static Public Attributes

static constexpr size_t kAudioRingSeconds = 5
static constexpr size_t kMidiRingSize = 8192

Additional Inherited Members

Protected Member Functions inherited from zrythm::dsp::ProcessorBase
auto registry () const -> utils::IObjectRegistry &

Detailed Description

Pure data-capture graph node that observes a port's output.

Copies raw audio samples to per-channel RingBuffer<float> and raw MIDI events to RingBuffer<RealtimeMidiEvent>. No DSP, no metering — all signal processing stays on the UI side.

RT thread writes to ring buffers via custom_process_block(). UI-side drain timer consuming-reads into per-requester token caches.

Note
Only made a QObject so that GraphExport can get its class name.

Definition at line 38 of file port_observer.h.

Member Function Documentation

◆ audio_ring() [1/2]

RingBuffer< float > & zrythm::dsp::PortObserver::audio_ring ( int ch)
inline

Definition at line 54 of file port_observer.h.

◆ audio_ring() [2/2]

const RingBuffer< float > & zrythm::dsp::PortObserver::audio_ring ( int ch) const
inline

Definition at line 60 of file port_observer.h.

◆ has_audio_rings()

bool zrythm::dsp::PortObserver::has_audio_rings ( ) const
inline

Definition at line 79 of file port_observer.h.

◆ has_midi_ring()

bool zrythm::dsp::PortObserver::has_midi_ring ( ) const
inline

Definition at line 80 of file port_observer.h.

◆ midi_ring() [1/2]

RingBuffer< RealtimeMidiEvent > & zrythm::dsp::PortObserver::midi_ring ( )
inline

Definition at line 68 of file port_observer.h.

◆ midi_ring() [2/2]

const RingBuffer< RealtimeMidiEvent > & zrythm::dsp::PortObserver::midi_ring ( ) const
inline

Definition at line 73 of file port_observer.h.

◆ num_channels()

int zrythm::dsp::PortObserver::num_channels ( ) const
inline

Definition at line 51 of file port_observer.h.

◆ observed_port_uuid()

PortUuid zrythm::dsp::PortObserver::observed_port_uuid ( ) const
inline

Definition at line 48 of file port_observer.h.

Field Documentation

◆ kAudioRingSeconds

size_t zrythm::dsp::PortObserver::kAudioRingSeconds = 5
staticconstexpr

Definition at line 43 of file port_observer.h.

◆ kMidiRingSize

size_t zrythm::dsp::PortObserver::kMidiRingSize = 8192
staticconstexpr

Definition at line 44 of file port_observer.h.


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