Anklang 0.3.0-460-gc4ef46ba
ASE — Anklang Sound Engine (C++)
« « « Anklang Documentation |
Classes | |
class | Inlet |
struct | Probe |
Public Types | |
using | ProbeArray = std::array< Probe, 2 > |
![]() | |
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) | |
ProbeArray * | run_probes (bool enable) |
![]() | |
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. | |
![]() | |
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 |
AudioEngine & | engine () const |
Retrieve AudioEngine handle for this AudioProcessor. | |
const AudioTransport & | transport () 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 float * | ifloats (IBusId b, uint c) const |
Access readonly float buffer of input bus b , channel c , see also ofloats(). | |
const float * | ofloats (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. | |
![]() | |
T | enable_shared_from_this (T... args) |
T | operator= (T... args) |
T | shared_from_this (T... args) |
T | weak_from_this (T... args) |
T | ~enable_shared_from_this (T... args) |
![]() | |
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 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 . | |
![]() | |
AudioCombo (const ProcessorSetup &) | |
![]() | |
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 ¶ms) |
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(). | |
IOBus & | iobus (OBusId busid) |
Get internal output bus handle. | |
IOBus & | iobus (IBusId busid) |
Get internal input bus handle. | |
const IOBus & | iobus (OBusId busid) const |
const IOBus & | iobus (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 . | |
float * | oblock (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(). | |
MidiEventOutput & | midi_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 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 | |
![]() | |
enum | { INITIALIZED , SCHEDULED , PARAMCHANGE , BUSCONNECT , BUSDISCONNECT , INSERTION , REMOVAL , ENGINE_OUTPUT } |
using | MinMax = std::pair< double, double > |
using | MidiEventInput = MidiEventReader< 2 > |
![]() | |
static uint | schedule_processor (AudioProcessor &p) |
![]() | |
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) |
![]() | |
AudioProcessorS | processors_ |
AudioProcessorP | eproc_ |
![]() | |
std::atomic< uint32 > | flags_ |
AudioEngine & | engine_ |
CString | aseid_ |
using Ase::AudioChain::ProbeArray = std::array<Probe,2> |
|
explicit |
|
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().
|
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 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().
|
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.
|
overrideprotectedvirtual |
AudioChain::ProbeArray * Ase::AudioChain::run_probes | ( | bool | enable | ) |
|
overrideprotectedvirtual |
Reimplemented from Ase::AudioProcessor.
|
static |