Class Ase::AudioProcessor
ClassList > Ase > AudioProcessor
Audio signal AudioProcessor base class, implemented by all effects and instruments.
#include <processor.hh>
Inherits the following classes: std::enable_shared_from_this< AudioProcessor >, Ase::FastMemory::NewDeleteBase
Inherited by the following classes: Ase::AudioChain::Inlet, Ase::AudioCombo, Ase::ClapAudioProcessor, Ase::EngineMidiInput, Ase::MidiLib::MidiProducerIface
Classes
Type | Name |
---|---|
struct | EventStreams |
class | FloatBuffer |
struct | IOBus |
struct | ProcessorSetup |
struct | RenderContext |
Public Types
Type | Name |
---|---|
typedef std::function< DeviceP(const String &, StaticInfo, AudioProcessorP)> | MakeDeviceP |
typedef AudioProcessorP(*)(AudioEngine &) | MakeProcessor |
typedef AudioProcessorP(*)(CString, AudioEngine &) | MakeProcessorP |
typedef std::pair< ParamId, bool > | MaybeParamId |
typedef void(*)(AudioProcessorInfo &) | StaticInfo |
Public Static Attributes
Type | Name |
---|---|
const String | GUIONLY = ":G:r:w:" ":G:r:w:" - GUI READABLE WRITABLE |
const String | STANDARD = ":G:S:r:w:" ":G:S:r:w:" - GUI STORAGE READABLE WRITABLE |
const String | STORAGEONLY = ":S:r:w:" ":S:r:w:" - STORAGE READABLE WRITABLE |
Public Functions
Type | Name |
---|---|
void | adjust_all_params () |
AtomicBits::Iter | atomic_bits_iter (size_t pos=0) const Allow iterations over the atomic bits. |
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 | check_dirty (Id32 paramid) const |
void | connect_event_input (AudioProcessor & oproc) Connect event input to event output of AudioProcessor __ oproc . |
bool | connected (OBusId obusid) const |
String | debug_name () const |
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. |
AudioEngine & | engine () const Retrieve AudioEngine handle for thisAudioProcessor . |
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. |
MaybeParamId | find_param (const String & identifier) const Return the ParamId for parameter identifier or else 0. |
DeviceP | get_device () const Gain access to the Device handle of this __AudioProcessor . |
double | get_normalized (Id32 paramid) Get param value normalized into 0…1. |
double | get_param (Id32 paramid) Fetch value of parameterid . |
bool | has_event_input () const Returns true if thisAudioProcessor has an event input stream. |
bool | has_event_output () const Returns true if thisAudioProcessor has an event output stream. |
const float * | ifloats (IBusId b, uint c) const Access readonly float buffer of input bus b , channelc , see alsoofloats() . |
double | inyquist () const Inverse Nyquist frequency, i.e. 1.0 / nyquist() . |
bool | is_initialized () const Check if AudioProcessor has been properly intiialized (so the parameter set is fixed). |
uint | n_ibuses () const Number of input buses configured for this AudioProcessor . |
uint | n_ichannels (IBusId busid) const Number of channels of input bus busid configured for thisAudioProcessor . |
uint | n_obuses () const Number of output buses configured for this AudioProcessor . |
uint | n_ochannels (OBusId busid) const Number of channels of output bus busid configured for thisAudioProcessor . |
float | note_to_freq (int note) const Convert MIDI note to Hertz according to the current MusicalTuning. |
double | nyquist () const Half the sample rate in Hz as double, used for render(). |
const float * | ofloats (OBusId b, uint c) const Access readonly float buffer of output bus b , channelc , see alsooblock() . |
MinMax | param_range (Id32 paramid) const Retrieve the minimum / maximum values for a parameter. |
virtual double | param_value_from_text (uint32_t paramid, const String & text) const |
virtual String | param_value_to_text (uint32_t paramid, double value) const |
ParameterC | parameter (Id32 paramid) const Retrieve supplemental information for parameters, usually to enhance the user interface. |
uint | sample_rate () const |
bool | send_param (Id32 paramid, double value) Set parameter id tovalue withinParamInfo.get_minmax() . |
bool | set_normalized (Id32 paramid, double normalized) Set param value normalized into 0…1. |
String | text_param_from_quark (uint32_t paramid, uint vint) Helper for temporary uint<->string conversions. |
uint | text_param_to_quark (uint32_t paramid, const String & text) Ase main-thread helper for temporary string<->uint conversions. |
const AudioTransport & | transport () const Sample rate mixing frequency in Hz as unsigned, used for render(). |
virtual double | value_from_normalized (Id32 paramid, double normalized) const |
virtual double | value_to_normalized (Id32 paramid, double value) const |
Public Static Functions
Type | Name |
---|---|
std::shared_ptr< AudioProc > | create_processor (AudioEngine & engine, const Args &... args) |
double | param_peek_mt (const AudioProcessorP proc, Id32 paramid) |
void | registry_add (CString aseid, StaticInfo static_info, MakeProcessorP makeproc) |
DeviceP | registry_create (CString aseid, AudioEngine & engine, const MakeDeviceP & makedevice) |
void | registry_foreach (const std::function< void(const String &aseid, StaticInfo)> & fun) Iterate over the known AudioProcessor types. |
uint64 | timestamp () The current timestamp in sample frames. |
Protected Types
Type | Name |
---|---|
enum | AudioProcessor |
typedef MidiEventReader< 2 > | MidiEventInput |
typedef std::pair< double, double > | MinMax |
Protected Attributes
Type | Name |
---|---|
CString | aseid_ |
AudioEngine & | engine_ |
std::atomic< uint32 > | flags_ = 0 |
Protected Functions
Type | Name |
---|---|
AudioProcessor (const ProcessorSetup & psetup) Constructor for AudioProcessor . |
|
IBusId | add_input_bus (CString uilabel, SpeakerArrangement speakerarrangement, const String & hints="", const String & blurb="") Add an input bus with uilabel and channels configured viaspeakerarrangement . |
OBusId | add_output_bus (CString uilabel, SpeakerArrangement speakerarrangement, const String & hints="", const String & blurb="") Add an output bus with uilabel and channels configured viaspeakerarrangement . |
virtual void | adjust_param (uint32_t paramid) |
void | apply_event (const MidiEvent & event) Assign MidiEvent::PARAM_VALUE event values to parameters. |
void | apply_input_events () |
void | assign_oblock (OBusId b, uint c, float val) Fill the output buffer of bus b , channelc withv . |
bool | atomic_bit_notify (size_t nth) Set the nth atomic notification bit, return if enotify_enqueue_mt() is needed. |
void | atomic_bits_resize (size_t count) Prepare count bits for atomic notifications. |
void | connect (IBusId ibus, AudioProcessor & oproc, OBusId obus) Connect input ibusid to outputobusid ofAudioProcessor __prev . |
void | disconnect (IBusId ibus) Disconnect input ibusid . |
void | disconnect_ibuses () Reset input bus buffer data. |
void | disconnect_obuses () Disconnect inputs of all Processors that are connected to outputs of this . |
void | enotify_enqueue_mt (uint32 pushmask) |
virtual void | initialize (SpeakerArrangement busses) = 0 |
void | install_params (const AudioParams::Map & params) Reset list of parameters, enqueues parameter value initializaiton events. |
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 |
MidiEventInput | midi_event_input () Access the current MidiEvent inputs during render(), needsprepare_event_input() . |
MidiEventOutput & | midi_event_output () Access the current output EventStream during render(), needs prepare_event_output() . |
float * | oblock (OBusId b, uint c) |
double | peek_param_mt (Id32 paramid) const |
void | prepare_event_input () |
void | prepare_event_output () |
void | redirect_oblock (OBusId b, uint c, const float * block) Redirect output buffer of bus b , channelc to point toblock , or zeros ifblock==nullptr . |
void | remove_all_buses () Remove existing bus configurations, useful at the start of configure(). |
void | reschedule () Request recreation of the audio engine rendering schedule. |
virtual uint | schedule_children () |
uint | schedule_processor () Schedule this node and its dependencies for engine rendering. |
virtual | ~AudioProcessor () The destructor is called when the last std::shared_ptr<> reference drops. |
Protected Static Functions
Type | Name |
---|---|
uint | schedule_processor (AudioProcessor & p) |
Public Types Documentation
typedef MakeDeviceP
using Ase::AudioProcessor::MakeDeviceP = std::function<DeviceP (const String&, StaticInfo, AudioProcessorP)>;
typedef MakeProcessor
using Ase::AudioProcessor::MakeProcessor = AudioProcessorP (*) (AudioEngine&);
typedef MakeProcessorP
using Ase::AudioProcessor::MakeProcessorP = AudioProcessorP (*) (CString,AudioEngine&);
typedef MaybeParamId
using Ase::AudioProcessor::MaybeParamId = std::pair<ParamId,bool>;
typedef StaticInfo
using Ase::AudioProcessor::StaticInfo = void (*) (AudioProcessorInfo&);
Public Static Attributes Documentation
variable GUIONLY
":G:r:w:" - GUI READABLE WRITABLE
const String Ase::AudioProcessor::GUIONLY;
GUI READABLE WRITABLE.
variable STANDARD
":G:S:r:w:" - GUI STORAGE READABLE WRITABLE
const String Ase::AudioProcessor::STANDARD;
GUI STORAGE READABLE WRITABLE.
variable STORAGEONLY
":S:r:w:" - STORAGE READABLE WRITABLE
const String Ase::AudioProcessor::STORAGEONLY;
STORAGE READABLE WRITABLE.
Public Functions Documentation
function adjust_all_params
inline void Ase::AudioProcessor::adjust_all_params ()
function atomic_bits_iter
Allow iterations over the atomic bits.
AtomicBits::Iter Ase::AudioProcessor::atomic_bits_iter (
size_t pos=0
) const
function bus_info [1/2]
Retrieve BusInfo for an input bus.
inline BusInfo Ase::AudioProcessor::bus_info (
IBusId busid
) const
function bus_info [2/2]
Retrieve BusInfo for an output bus.
inline BusInfo Ase::AudioProcessor::bus_info (
OBusId busid
) const
function check_dirty
inline bool Ase::AudioProcessor::check_dirty (
Id32 paramid
) const
Check if the parameter dirty
flag is set. Return true
if the parameter value changed during render().
function connect_event_input
Connect event input to event output of AudioProcessor __oproc
.
void Ase::AudioProcessor::connect_event_input (
AudioProcessor & oproc
)
function connected
bool Ase::AudioProcessor::connected (
OBusId obusid
) const
Indicator for connected output buses. Not connected output bus buffers do not need to be filled.
function debug_name
String Ase::AudioProcessor::debug_name () const
function disconnect_event_input
Disconnect event input if a connection is present.
void Ase::AudioProcessor::disconnect_event_input ()
function enable_engine_output
Configure if the main output of this module is mixed into the engine output.
void Ase::AudioProcessor::enable_engine_output (
bool onoff
)
function engine
Retrieve AudioEngine handle for thisAudioProcessor .
inline AudioEngine & Ase::AudioProcessor::engine () const
function find_ibus
Return the IBusId for input bus uilabel
or else 0.
IBusId Ase::AudioProcessor::find_ibus (
const String & name
) const
function find_obus
Return the OBusId for output bus uilabel
or else 0.
OBusId Ase::AudioProcessor::find_obus (
const String & name
) const
function find_param
Return the ParamId for parameter identifier
or else 0.
MaybeParamId Ase::AudioProcessor::find_param (
const String & identifier
) const
function get_device
Gain access to the Device handle ofthis
__AudioProcessor .
DeviceP Ase::AudioProcessor::get_device () const
function get_normalized
Get param value normalized into 0…1.
double Ase::AudioProcessor::get_normalized (
Id32 paramid
)
function get_param
Fetch value
of parameterid
.
inline double Ase::AudioProcessor::get_param (
Id32 paramid
)
function has_event_input
Returns true
if thisAudioProcessor has an event input stream.
inline bool Ase::AudioProcessor::has_event_input () const
function has_event_output
Returns true
if thisAudioProcessor has an event output stream.
inline bool Ase::AudioProcessor::has_event_output () const
function ifloats
Access readonly float buffer of input bus b
, channelc
, see alsoofloats() .
inline const float * Ase::AudioProcessor::ifloats (
IBusId b,
uint c
) const
function inyquist
Inverse Nyquist frequency, i.e. 1.0 / nyquist() .
inline double Ase::AudioProcessor::inyquist () const
function is_initialized
Check if AudioProcessor has been properly intiialized (so the parameter set is fixed).
bool Ase::AudioProcessor::is_initialized () const
function n_ibuses
Number of input buses configured for this AudioProcessor .
inline uint Ase::AudioProcessor::n_ibuses () const
function n_ichannels
Number of channels of input bus busid
configured for thisAudioProcessor .
inline uint Ase::AudioProcessor::n_ichannels (
IBusId busid
) const
function n_obuses
Number of output buses configured for this AudioProcessor .
inline uint Ase::AudioProcessor::n_obuses () const
function n_ochannels
Number of channels of output bus busid
configured for thisAudioProcessor .
inline uint Ase::AudioProcessor::n_ochannels (
OBusId busid
) const
function note_to_freq
Convert MIDI note to Hertz according to the current MusicalTuning.
float Ase::AudioProcessor::note_to_freq (
int note
) const
function nyquist
Half the sample rate in Hz as double, used for render().
inline double Ase::AudioProcessor::nyquist () const
function ofloats
Access readonly float buffer of output bus b
, channelc
, see alsooblock() .
inline const float * Ase::AudioProcessor::ofloats (
OBusId b,
uint c
) const
function param_range
Retrieve the minimum / maximum values for a parameter.
MinMax Ase::AudioProcessor::param_range (
Id32 paramid
) const
function param_value_from_text
virtual double Ase::AudioProcessor::param_value_from_text (
uint32_t paramid,
const String & text
) const
Extract a parameter paramid
value from a text string. The string might contain unit information or consist only of number characters. Non-recognized characters should be ignored, so a best effort conversion is always undertaken. This function may be called from any thread, so this
must be treated as const
(it might be used concurrently by a different thread).
function param_value_to_text
virtual String Ase::AudioProcessor::param_value_to_text (
uint32_t paramid,
double value
) const
Format a parameter paramid
value as text string. Currently, this function may be called from any thread, so this
must be treated as const
(it might be used concurrently by a different thread).
function parameter
Retrieve supplemental information for parameters, usually to enhance the user interface.
ParameterC Ase::AudioProcessor::parameter (
Id32 paramid
) const
function sample_rate
inline uint Ase::AudioProcessor::sample_rate () const
function send_param
Set parameter id
tovalue
withinParamInfo.get_minmax()
.
bool Ase::AudioProcessor::send_param (
Id32 paramid,
double value
)
function set_normalized
Set param value normalized into 0…1.
bool Ase::AudioProcessor::set_normalized (
Id32 paramid,
double normalized
)
function text_param_from_quark
Helper for temporary uint<->string conversions.
String Ase::AudioProcessor::text_param_from_quark (
uint32_t paramid,
uint vint
)
function text_param_to_quark
Ase main-thread helper for temporary string<->uint conversions.
uint Ase::AudioProcessor::text_param_to_quark (
uint32_t paramid,
const String & text
)
function transport
Sample rate mixing frequency in Hz as unsigned, used for render().
inline const AudioTransport & Ase::AudioProcessor::transport () const
function value_from_normalized
virtual double Ase::AudioProcessor::value_from_normalized (
Id32 paramid,
double normalized
) const
function value_to_normalized
virtual double Ase::AudioProcessor::value_to_normalized (
Id32 paramid,
double value
) const
Public Static Functions Documentation
function create_processor
template<class AudioProc, class ... Args>
static std::shared_ptr< AudioProc > Ase::AudioProcessor::create_processor (
AudioEngine & engine,
const Args &... args
)
function param_peek_mt
static double Ase::AudioProcessor::param_peek_mt (
const AudioProcessorP proc,
Id32 paramid
)
Fetch the current parameter value of a AudioProcessor from any thread. This function is MT-Safe after proper AudioProcessor initialization.
function registry_add
static void Ase::AudioProcessor::registry_add (
CString aseid,
StaticInfo static_info,
MakeProcessorP makeproc
)
Add a new type to the AudioProcessor type registry. New AudioProcessor types must have a unique URI (see query_info()
) and will be created with the factory function create()
.
function registry_create
static DeviceP Ase::AudioProcessor::registry_create (
CString aseid,
AudioEngine & engine,
const MakeDeviceP & makedevice
)
function registry_foreach
Iterate over the known AudioProcessor types.
static void Ase::AudioProcessor::registry_foreach (
const std::function< void(const String &aseid, StaticInfo)> & fun
)
function timestamp
The current timestamp in sample frames.
static inline uint64 Ase::AudioProcessor::timestamp ()
Protected Types Documentation
enum AudioProcessor
enum Ase::AudioProcessor::AudioProcessor {
INITIALIZED = 1 << 0,
SCHEDULED = 1 << 2,
PARAMCHANGE = 1 << 3,
BUSCONNECT = 1 << 4,
BUSDISCONNECT = 1 << 5,
INSERTION = 1 << 6,
REMOVAL = 1 << 7,
ENGINE_OUTPUT = 1 << 8
};
typedef MidiEventInput
using Ase::AudioProcessor::MidiEventInput = MidiEventReader<2>;
typedef MinMax
using Ase::AudioProcessor::MinMax = std::pair<double,double>;
Protected Attributes Documentation
variable aseid_
CString Ase::AudioProcessor::aseid_;
variable engine_
AudioEngine& Ase::AudioProcessor::engine_;
variable flags_
std::atomic<uint32> Ase::AudioProcessor::flags_;
Protected Functions Documentation
function AudioProcessor [2/2]
Constructor for AudioProcessor .
explicit Ase::AudioProcessor::AudioProcessor (
const ProcessorSetup & psetup
)
function add_input_bus
Add an input bus with uilabel
and channels configured viaspeakerarrangement
.
IBusId Ase::AudioProcessor::add_input_bus (
CString uilabel,
SpeakerArrangement speakerarrangement,
const String & hints="",
const String & blurb=""
)
function add_output_bus
Add an output bus with uilabel
and channels configured viaspeakerarrangement
.
OBusId Ase::AudioProcessor::add_output_bus (
CString uilabel,
SpeakerArrangement speakerarrangement,
const String & hints="",
const String & blurb=""
)
function adjust_param
inline virtual void Ase::AudioProcessor::adjust_param (
uint32_t paramid
)
function apply_event
Assign MidiEvent::PARAM_VALUE event values to parameters.
inline void Ase::AudioProcessor::apply_event (
const MidiEvent & event
)
function apply_input_events
inline void Ase::AudioProcessor::apply_input_events ()
Process all input events via apply_event() and adjust_param(). This applies all incoming parameter changes, events like NOTE_ON are not handled.
function assign_oblock
Fill the output buffer of bus b
, channelc
withv
.
void Ase::AudioProcessor::assign_oblock (
OBusId b,
uint c,
float val
)
function atomic_bit_notify
Set the nth atomic notification bit, return if enotify_enqueue_mt() is needed.
bool Ase::AudioProcessor::atomic_bit_notify (
size_t nth
)
function atomic_bits_resize
Prepare count
bits for atomic notifications.
void Ase::AudioProcessor::atomic_bits_resize (
size_t count
)
function connect
Connect input ibusid
to outputobusid
ofAudioProcessor __prev
.
void Ase::AudioProcessor::connect (
IBusId ibus,
AudioProcessor & oproc,
OBusId obus
)
function disconnect
Disconnect input ibusid
.
void Ase::AudioProcessor::disconnect (
IBusId ibus
)
function disconnect_ibuses
Reset input bus buffer data.
void Ase::AudioProcessor::disconnect_ibuses ()
function disconnect_obuses
Disconnect inputs of all Processors that are connected to outputs of this
.
void Ase::AudioProcessor::disconnect_obuses ()
function enotify_enqueue_mt
void Ase::AudioProcessor::enotify_enqueue_mt (
uint32 pushmask
)
Queue an AudioProcessor notification This function is MT-Safe after proper AudioProcessor initialization.
function initialize
virtual void Ase::AudioProcessor::initialize (
SpeakerArrangement busses
) = 0
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.
function install_params
Reset list of parameters, enqueues parameter value initializaiton events.
void Ase::AudioProcessor::install_params (
const AudioParams::Map & params
)
function iobus [1/4]
Get internal output bus handle.
IOBus & Ase::AudioProcessor::iobus (
OBusId busid
)
function iobus [2/4]
Get internal input bus handle.
IOBus & Ase::AudioProcessor::iobus (
IBusId busid
)
function iobus [3/4]
inline const IOBus & Ase::AudioProcessor::iobus (
OBusId busid
) const
function iobus [4/4]
inline const IOBus & Ase::AudioProcessor::iobus (
IBusId busid
) const
function midi_event_input
Access the current MidiEvent inputs during render(), needsprepare_event_input() .
MidiEventInput Ase::AudioProcessor::midi_event_input ()
function midi_event_output
Access the current output EventStream during render(), needs prepare_event_output() .
MidiEventOutput & Ase::AudioProcessor::midi_event_output ()
function oblock
inline float * Ase::AudioProcessor::oblock (
OBusId b,
uint c
)
Reset buffer redirections and access float buffer of output bus b
, channel c
. See also ofloats() for readonly access and redirect_oblock() for redirections.
function peek_param_mt
double Ase::AudioProcessor::peek_param_mt (
Id32 paramid
) const
Fetch the current parameter value of an AudioProcessor. This function does not modify the parameter dirty
flag. This function is MT-Safe after proper AudioProcessor initialization.
function prepare_event_input
void Ase::AudioProcessor::prepare_event_input ()
Prepare the AudioProcessor to receive Event objects during render() via get_event_input(). Note, remove_all_buses() will remove the Event input created by this function.
function prepare_event_output
void Ase::AudioProcessor::prepare_event_output ()
Prepare the AudioProcessor to produce Event objects during render() via get_event_output(). Note, remove_all_buses() will remove the Event output created by this function.
function redirect_oblock
Redirect output buffer of bus b
, channelc
to point toblock
, or zeros ifblock==nullptr
.
void Ase::AudioProcessor::redirect_oblock (
OBusId b,
uint c,
const float * block
)
function remove_all_buses
Remove existing bus configurations, useful at the start of configure().
void Ase::AudioProcessor::remove_all_buses ()
function reschedule
Request recreation of the audio engine rendering schedule.
void Ase::AudioProcessor::reschedule ()
function schedule_children
inline virtual uint Ase::AudioProcessor::schedule_children ()
function schedule_processor [1/2]
Schedule this node and its dependencies for engine rendering.
uint Ase::AudioProcessor::schedule_processor ()
function ~AudioProcessor
The destructor is called when the last std::shared_ptr<> reference drops.
virtual Ase::AudioProcessor::~AudioProcessor ()
Protected Static Functions Documentation
function schedule_processor [2/2]
static inline uint Ase::AudioProcessor::schedule_processor (
AudioProcessor & p
)
The documentation for this class was generated from the following file /__w/anklang/anklang/ase/processor.hh