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

Audio port specifics. More...

#include <src/dsp/audio_port.h>

Inheritance diagram for zrythm::dsp::AudioPort:
Collaboration diagram for zrythm::dsp::AudioPort:

Public Types

enum class  BusLayout : uint8_t {
  Unknown , Mono , Stereo , Surround ,
  Ambisonic
}
 Description of the channel layout of this port. More...
enum class  Purpose : uint8_t { Main , Sidechain }
 Purpose of this port. More...
Public Types inherited from zrythm::dsp::Port
using FullDesignationProvider

Public Member Functions

 AudioPort (utils::Utf8String label, PortFlow flow, BusLayout layout, uint8_t num_channels, Purpose purpose=Purpose::Main)
void process_block (EngineProcessTimeInfo time_nfo, const dsp::ITransport &transport) noexcept override
void clear_buffer (std::size_t offset, std::size_t nframes) override
 Clears the port buffer.
auto layout () const
auto purpose () const
auto & buffers () const
auto & audio_ring_buffers () const
auto num_channels () const
void mark_as_requires_limiting ()
auto requires_limiting () const
void add_source_rt (const AudioPort &src, EngineProcessTimeInfo time_nfo, float multiplier=1.f)
 Adds the contents of src to this port.
void copy_source_rt (const AudioPort &src, EngineProcessTimeInfo time_nfo, float multiplier=1.f)
void prepare_for_processing (const graph::GraphNode *node, units::sample_rate_t sample_rate, nframes_t max_block_length) override
 Called to allocate resources required for processing.
void release_resources () override
 Called to release resources allocated by prepare_for_processing().
Public Member Functions inherited from zrythm::dsp::Port
void set_full_designation_provider (FullDesignationProvider provider)
void set_full_designation_provider (const auto *owner)
 Convenience helper for providers that contain a get_full_designation_for_port() method.
bool is_input () const
bool is_output () const
bool is_midi () const
bool is_cv () const
bool is_audio () const
utils::Utf8String get_label () const
auto get_symbol () const
void set_symbol (const utils::Utf8String &sym)
utils::Utf8String get_node_name () const override
 Returns a human friendly name of the node.
nframes_t get_single_playback_latency () const override
 Ports have no latency.
utils::Utf8String get_full_designation () const
 Gets a full designation of the port in the format "Track/Port" or "Track/Plugin/Port".
bool has_label () const
PortType type () const
PortFlow flow () const
Public Member Functions inherited from zrythm::utils::UuidIdentifiableObject< Port >
UuidIdentifiableObject & operator= (const UuidIdentifiableObject &other)=default
auto get_uuid () const
Public Member Functions inherited from zrythm::dsp::PortConnectionsCacheMixin< AudioPort >
auto & port_sources () const
void set_port_sources (this auto &self, RangeOf< AudioPort * > auto source_ports)

Static Public Attributes

static constexpr size_t AUDIO_RING_SIZE = 65536

Friends

void init_from (AudioPort &obj, const AudioPort &other, utils::ObjectCloneType clone_type)
void to_json (nlohmann::json &j, const AudioPort &port)
void from_json (const nlohmann::json &j, AudioPort &port)

Additional Inherited Members

Data Fields inherited from zrythm::dsp::RingBufferOwningPortMixin
std::atomic< int > num_ring_buffer_readers_ { 0 }
 Number of entities that want ring buffers to be written.
Protected Member Functions inherited from zrythm::dsp::Port
 Port (utils::Utf8String label, PortType type={}, PortFlow flow={})

Detailed Description

Audio port specifics.

Definition at line 19 of file audio_port.h.

Member Enumeration Documentation

◆ BusLayout

enum class zrythm::dsp::AudioPort::BusLayout : uint8_t
strong

Description of the channel layout of this port.

Definition at line 34 of file audio_port.h.

◆ Purpose

enum class zrythm::dsp::AudioPort::Purpose : uint8_t
strong

Purpose of this port.

Definition at line 52 of file audio_port.h.

Member Function Documentation

◆ audio_ring_buffers()

auto & zrythm::dsp::AudioPort::audio_ring_buffers ( ) const
inlinenodiscard

Definition at line 76 of file audio_port.h.

◆ buffers()

auto & zrythm::dsp::AudioPort::buffers ( ) const
inlinenodiscard

Definition at line 75 of file audio_port.h.

◆ clear_buffer()

void zrythm::dsp::AudioPort::clear_buffer ( std::size_t offset,
std::size_t nframes )
overridevirtual

Clears the port buffer.

Implements zrythm::dsp::Port.

◆ layout()

auto zrythm::dsp::AudioPort::layout ( ) const
inlinenodiscard

Definition at line 73 of file audio_port.h.

◆ mark_as_requires_limiting()

void zrythm::dsp::AudioPort::mark_as_requires_limiting ( )
inline

Definition at line 79 of file audio_port.h.

◆ num_channels()

auto zrythm::dsp::AudioPort::num_channels ( ) const
inline

Definition at line 77 of file audio_port.h.

◆ prepare_for_processing()

void zrythm::dsp::AudioPort::prepare_for_processing ( const graph::GraphNode * node,
units::sample_rate_t sample_rate,
nframes_t max_block_length )
overridevirtual

Called to allocate resources required for processing.

Parameters
nodeThe node in the processing graph. Null means we are processing outside of a graph context and must be handled gracefully.
sample_rate
max_block_length

Reimplemented from zrythm::dsp::graph::IProcessable.

◆ process_block()

void zrythm::dsp::AudioPort::process_block ( EngineProcessTimeInfo time_nfo,
const dsp::ITransport & transport )
overridevirtualnoexcept

Reimplemented from zrythm::dsp::graph::IProcessable.

◆ purpose()

auto zrythm::dsp::AudioPort::purpose ( ) const
inlinenodiscard

Definition at line 74 of file audio_port.h.

◆ release_resources()

void zrythm::dsp::AudioPort::release_resources ( )
overridevirtual

Called to release resources allocated by prepare_for_processing().

This may be called multiple times.

Reimplemented from zrythm::dsp::graph::IProcessable.

◆ requires_limiting()

auto zrythm::dsp::AudioPort::requires_limiting ( ) const
inline

Definition at line 80 of file audio_port.h.

◆ from_json

void from_json ( const nlohmann::json & j,
AudioPort & port )
friend

Definition at line 117 of file audio_port.h.

◆ to_json

void to_json ( nlohmann::json & j,
const AudioPort & port )
friend

Definition at line 110 of file audio_port.h.

Field Documentation

◆ AUDIO_RING_SIZE

size_t zrythm::dsp::AudioPort::AUDIO_RING_SIZE = 65536
staticconstexpr

Definition at line 65 of file audio_port.h.


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