Anklang 0.3.0-460-gc4ef46ba
ASE — Anklang Sound Engine (C++)

« « « Anklang Documentation
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Ase::AudioChain Class Reference
Inheritance diagram for Ase::AudioChain:
[legend]

Classes

class  Inlet
 
struct  Probe
 

Public Types

using ProbeArray = std::array< Probe, 2 >
 
- Public Types inherited from Ase::AudioProcessor
using MakeProcessor = AudioProcessorP(*)(AudioEngine &)
 
using MaybeParamId = std::pair< ParamId, bool >
 
using StaticInfo = void(*)(AudioProcessorInfo &)
 
using MakeDeviceP = std::function< DeviceP(const String &, StaticInfo, AudioProcessorP)>
 
using MakeProcessorP = AudioProcessorP(*)(CString, AudioEngine &)
 

Public Member Functions

 AudioChain (const ProcessorSetup &, SpeakerArrangement iobuses=SpeakerArrangement::STEREO)
 
ProbeArrayrun_probes (bool enable)
 
- Public Member Functions inherited from Ase::AudioCombo
void insert (AudioProcessorP proc, ssize_t pos=~size_t(0))
 
bool remove (AudioProcessor &proc)
 Remove a previously added AudioProcessor proc from the AudioCombo.
 
AudioProcessorP at (uint nth)
 Return the AudioProcessor at position nth in the AudioCombo.
 
ssize_t find_pos (AudioProcessor &proc)
 Return the index of AudioProcessor proc in the AudioCombo.
 
size_t size ()
 Return the number of AudioProcessor instances in the AudioCombo.
 
void set_event_source (AudioProcessorP eproc)
 Assign event source for future auto-connections of chld processors.
 
AudioProcessorS list_processors () const
 Retrieve list of AudioProcessorS contained in this AudioCombo.
 
- Public Member Functions inherited from Ase::AudioProcessor
AtomicBits::Iter atomic_bits_iter (size_t pos=0) const
 Allow iterations over the atomic bits.
 
float note_to_freq (int note) const
 Convert MIDI note to Hertz according to the current MusicalTuning.
 
String debug_name () const
 
AudioEngineengine () const
 Retrieve AudioEngine handle for this AudioProcessor.
 
const AudioTransporttransport () const
 Sample rate mixing frequency in Hz as unsigned, used for render().
 
uint sample_rate () const
 
double nyquist () const
 Half the sample rate in Hz as double, used for render().
 
double inyquist () const
 Inverse Nyquist frequency, i.e. 1.0 / nyquist().
 
double get_param (Id32 paramid)
 Fetch value of parameter id.
 
bool send_param (Id32 paramid, double value)
 Set parameter id to value within ParamInfo.get_minmax().
 
ParameterC parameter (Id32 paramid) const
 Retrieve supplemental information for parameters, usually to enhance the user interface.
 
MaybeParamId find_param (const String &identifier) const
 Return the ParamId for parameter identifier or else 0.
 
MinMax param_range (Id32 paramid) const
 Retrieve the minimum / maximum values for a parameter.
 
bool check_dirty (Id32 paramid) const
 
void adjust_all_params ()
 
virtual String param_value_to_text (uint32_t paramid, double value) const
 
virtual double param_value_from_text (uint32_t paramid, const String &text) const
 
virtual double value_to_normalized (Id32 paramid, double value) const
 
virtual double value_from_normalized (Id32 paramid, double normalized) const
 
double get_normalized (Id32 paramid)
 Get param value normalized into 0…1.
 
bool set_normalized (Id32 paramid, double normalized)
 Set param value normalized into 0…1.
 
bool is_initialized () const
 Check if AudioProcessor has been properly intiialized (so the parameter set is fixed).
 
uint text_param_to_quark (uint32_t paramid, const String &text)
 Ase main-thread helper for temporary string<->uint conversions.
 
String text_param_from_quark (uint32_t paramid, uint vint)
 Helper for temporary uint<->string conversions.
 
IBusId find_ibus (const String &name) const
 Return the IBusId for input bus uilabel or else 0.
 
OBusId find_obus (const String &name) const
 Return the OBusId for output bus uilabel or else 0.
 
uint n_ibuses () const
 Number of input buses configured for this AudioProcessor.
 
uint n_obuses () const
 Number of output buses configured for this AudioProcessor.
 
uint n_ichannels (IBusId busid) const
 Number of channels of input bus busid configured for this AudioProcessor.
 
uint n_ochannels (OBusId busid) const
 Number of channels of output bus busid configured for this AudioProcessor.
 
BusInfo bus_info (IBusId busid) const
 Retrieve BusInfo for an input bus.
 
BusInfo bus_info (OBusId busid) const
 Retrieve BusInfo for an output bus.
 
bool connected (OBusId obusid) const
 
const floatifloats (IBusId b, uint c) const
 Access readonly float buffer of input bus b, channel c, see also ofloats().
 
const floatofloats (OBusId b, uint c) const
 Access readonly float buffer of output bus b, channel c, see also oblock().
 
DeviceP get_device () const
 Gain access to the Device handle of this AudioProcessor.
 
bool has_event_input () const
 Returns true if this AudioProcessor has an event input stream.
 
bool has_event_output () const
 Returns true if this AudioProcessor has an event output stream.
 
void connect_event_input (AudioProcessor &oproc)
 Connect event input to event output of AudioProcessor oproc.
 
void disconnect_event_input ()
 Disconnect event input if a connection is present.
 
void enable_engine_output (bool onoff)
 Configure if the main output of this module is mixed into the engine output.
 
- Public Member Functions inherited from std::enable_shared_from_this< AudioProcessor >
enable_shared_from_this (T... args)
 
operator= (T... args)
 
shared_from_this (T... args)
 
weak_from_this (T... args)
 
~enable_shared_from_this (T... args)
 
- Public Member Functions inherited from Ase::FastMemory::NewDeleteBase
void * operator new (std::size_t sz)
 
void * operator new[] (std::size_t sz)
 
void * operator new (std::size_t sz, std::align_val_t al)
 
void * operator new[] (std::size_t sz, std::align_val_t al)
 
void operator delete (void *ptr, std::size_t sz)
 
void operator delete[] (void *ptr, std::size_t sz)
 
void operator delete (void *ptr, std::size_t sz, std::align_val_t al)
 
void operator delete[] (void *ptr, std::size_t sz, std::align_val_t al)
 

Static Public Member Functions

static void static_info (AudioProcessorInfo &info)
 
- Static Public Member Functions inherited from Ase::AudioProcessor
static uint64 timestamp ()
 The current timestamp in sample frames.
 
static double param_peek_mt (const AudioProcessorP proc, Id32 paramid)
 
static void registry_add (CString aseid, StaticInfo, MakeProcessorP)
 
static DeviceP registry_create (CString aseid, AudioEngine &engine, const MakeDeviceP &)
 
static void registry_foreach (const std::function< void(const String &aseid, StaticInfo)> &fun)
 Iterate over the known AudioProcessor types.
 
template<class AudioProc , class ... Args>
static std::shared_ptr< AudioProc > create_processor (AudioEngine &engine, const Args &...args)
 

Protected Member Functions

void initialize (SpeakerArrangement busses) override
 
void reset (uint64 target_stamp) override
 Reset all state variables.
 
void render (uint n_frames) override
 
uint schedule_children () override
 
void reconnect (size_t index, bool insertion) override
 Reconnect AudioChain child processors at start and after.
 
uint chain_up (AudioProcessor &pfirst, AudioProcessor &psecond)
 Connect the main audio input of next to audio output of prev.
 
- Protected Member Functions inherited from Ase::AudioCombo
 AudioCombo (const ProcessorSetup &)
 
- Protected Member Functions inherited from Ase::AudioProcessor
 AudioProcessor (const ProcessorSetup &)
 Constructor for AudioProcessor.
 
virtual ~AudioProcessor ()
 The destructor is called when the last std::shared_ptr<> reference drops.
 
void enotify_enqueue_mt (uint32 pushmask)
 
uint schedule_processor ()
 Schedule this node and its dependencies for engine rendering.
 
void reschedule ()
 Request recreation of the audio engine rendering schedule.
 
void install_params (const AudioParams::Map &params)
 Reset list of parameters, enqueues parameter value initializaiton events.
 
void apply_event (const MidiEvent &event)
 Assign MidiEvent::PARAM_VALUE event values to parameters.
 
void apply_input_events ()
 
virtual void adjust_param (uint32_t paramid)
 
double peek_param_mt (Id32 paramid) const
 
IBusId add_input_bus (CString uilabel, SpeakerArrangement speakerarrangement, const String &hints="", const String &blurb="")
 Add an input bus with uilabel and channels configured via speakerarrangement.
 
OBusId add_output_bus (CString uilabel, SpeakerArrangement speakerarrangement, const String &hints="", const String &blurb="")
 Add an output bus with uilabel and channels configured via speakerarrangement.
 
void remove_all_buses ()
 Remove existing bus configurations, useful at the start of configure().
 
IOBusiobus (OBusId busid)
 Get internal output bus handle.
 
IOBusiobus (IBusId busid)
 Get internal input bus handle.
 
const IOBusiobus (OBusId busid) const
 
const IOBusiobus (IBusId busid) const
 
void disconnect_ibuses ()
 Reset input bus buffer data.
 
void disconnect_obuses ()
 Disconnect inputs of all Processors that are connected to outputs of this.
 
void disconnect (IBusId ibus)
 Disconnect input ibusid.
 
void connect (IBusId ibus, AudioProcessor &oproc, OBusId obus)
 Connect input ibusid to output obusid of AudioProcessor prev.
 
floatoblock (OBusId b, uint c)
 
void assign_oblock (OBusId b, uint c, float val)
 Fill the output buffer of bus b, channel c with v.
 
void redirect_oblock (OBusId b, uint c, const float *block)
 Redirect output buffer of bus b, channel c to point to block, or zeros if block==nullptr.
 
void prepare_event_input ()
 
void prepare_event_output ()
 
MidiEventInput midi_event_input ()
 Access the current MidiEvent inputs during render(), needs prepare_event_input().
 
MidiEventOutputmidi_event_output ()
 Access the current output EventStream during render(), needs prepare_event_output().
 
void atomic_bits_resize (size_t count)
 Prepare count bits for atomic notifications.
 
bool atomic_bit_notify (size_t nth)
 Set the nth atomic notification bit, return if enotify_enqueue_mt() is needed.
 

Additional Inherited Members

- Static Public Attributes inherited from Ase::AudioProcessor
static const String GUIONLY
 ":G:r:w:" - GUI READABLE WRITABLE
 
static const String STANDARD
 ":G:S:r:w:" - GUI STORAGE READABLE WRITABLE
 
static const String STORAGEONLY
 ":S:r:w:" - STORAGE READABLE WRITABLE
 
- Protected Types inherited from Ase::AudioProcessor
enum  {
  INITIALIZED , SCHEDULED , PARAMCHANGE , BUSCONNECT ,
  BUSDISCONNECT , INSERTION , REMOVAL , ENGINE_OUTPUT
}
 
using MinMax = std::pair< double, double >
 
using MidiEventInput = MidiEventReader< 2 >
 
- Static Protected Member Functions inherited from Ase::AudioProcessor
static uint schedule_processor (AudioProcessor &p)
 
- Static Protected Member Functions inherited from Ase::ProcessorManager
static auto pm_remove_all_buses (AudioProcessor &p)
 
static auto pm_disconnect_ibuses (AudioProcessor &p)
 
static auto pm_disconnect_obuses (AudioProcessor &p)
 
static auto pm_connect (AudioProcessor &p, IBusId i, AudioProcessor &d, OBusId o)
 
static auto pm_connect_event_input (AudioProcessor &oproc, AudioProcessor &iproc)
 
- Protected Attributes inherited from Ase::AudioCombo
AudioProcessorS processors_
 
AudioProcessorP eproc_
 
- Protected Attributes inherited from Ase::AudioProcessor
std::atomic< uint32flags_
 
AudioEngineengine_
 
CString aseid_
 

Detailed Description

Definition at line 26 of file combo.hh.


Class Documentation

◆ Ase::AudioChain::Probe

struct Ase::AudioChain::Probe

Definition at line 42 of file combo.hh.

Class Members
float dbspl

Member Typedef Documentation

◆ ProbeArray

Definition at line 43 of file combo.hh.

Constructor & Destructor Documentation

◆ AudioChain()

Ase::AudioChain::AudioChain ( const ProcessorSetup psetup,
SpeakerArrangement  iobuses = SpeakerArrangement::STEREO 
)
explicit

Definition at line 137 of file combo.cc.

◆ ~AudioChain()

Ase::AudioChain::~AudioChain ( )
virtual

Definition at line 148 of file combo.cc.

Member Function Documentation

◆ chain_up()

uint Ase::AudioChain::chain_up ( AudioProcessor pfirst,
AudioProcessor psecond 
)
protected

Connect the main audio input of next to audio output of prev.

Definition at line 238 of file combo.cc.

References assert_return, Ase::MONO, and uint64_t.

Referenced by reconnect().

◆ initialize()

void Ase::AudioChain::initialize ( SpeakerArrangement  busses)
overrideprotectedvirtual

Mandatory method to setup parameters and I/O busses. See add_param(), add_input_bus() / add_output_bus(). This method will be called once per instance after construction.

Implements Ase::AudioProcessor.

Definition at line 162 of file combo.cc.

References Ase::AudioProcessor::add_input_bus(), Ase::AudioProcessor::add_output_bus(), and assert_return.

◆ reconnect()

void Ase::AudioChain::reconnect ( size_t  index,
bool  insertion 
)
overrideprotectedvirtual

Reconnect AudioChain child processors at start and after.

Implements Ase::AudioCombo.

Definition at line 226 of file combo.cc.

References chain_up().

Referenced by Ase::AudioCombo::insert(), and Ase::AudioCombo::remove().

◆ render()

void Ase::AudioChain::render ( uint  n_frames)
overrideprotectedvirtual

Method called for every audio buffer to be processed. Each connected output bus needs to be filled with n_frames, i.e. n_frames many floating point samples per channel. Using the AudioSignal::OBusId (see add_output_bus()), the floating point sample buffers can be addressed via the BusConfig structure as: bus[obusid].channel[nth].buffer, see FloatBuffer for further details. The AudioSignal::IBusId (see add_input_bus()) can be used correspondingly to retrieve input channel values.

Implements Ase::AudioProcessor.

Definition at line 191 of file combo.cc.

References Ase::fast_log2(), ISLIKELY, std::min(), Ase::AudioProcessor::n_ochannels(), Ase::AudioProcessor::ofloats(), Ase::AudioProcessor::redirect_oblock(), Ase::square_max(), and UNLIKELY.

◆ reset()

void Ase::AudioChain::reset ( uint64  target_stamp)
overrideprotectedvirtual

Reset all state variables.

Implements Ase::AudioProcessor.

Definition at line 171 of file combo.cc.

◆ run_probes()

AudioChain::ProbeArray * Ase::AudioChain::run_probes ( bool  enable)

Definition at line 272 of file combo.cc.

◆ schedule_children()

uint Ase::AudioChain::schedule_children ( )
overrideprotectedvirtual

Reimplemented from Ase::AudioProcessor.

Definition at line 175 of file combo.cc.

◆ static_info()

void Ase::AudioChain::static_info ( AudioProcessorInfo info)
static

Definition at line 158 of file combo.cc.


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