|
| FormantManager (int num_formants=4) |
| Constructs a FormantManager to hold a given number of DigitalSvf formants.
|
|
virtual | ~FormantManager () |
| Virtual destructor.
|
|
virtual void | init () override |
| Initializes the internal routing of formant filters, creating the summing processor.
|
|
void | reset (poly_mask reset_mask) override |
| Resets stateful data (e.g., filter history) in each DigitalSvf for voices indicated by the reset_mask.
|
|
void | hardReset () override |
| Fully resets all formants (for all voices).
|
|
virtual Processor * | clone () const override |
| Clones (deep copies) this FormantManager.
|
|
DigitalSvf * | getFormant (int index=0) |
| Returns a pointer to the requested formant filter (DigitalSvf).
|
|
int | numFormants () |
| Gets the total number of formants managed by this object.
|
|
| ProcessorRouter (int num_inputs=0, int num_outputs=0, bool control_rate=false) |
| Constructs a ProcessorRouter with a specified number of inputs and outputs.
|
|
| ProcessorRouter (const ProcessorRouter &original) |
| Copy constructor. Creates a new ProcessorRouter from an existing one.
|
|
virtual | ~ProcessorRouter () |
| Destructor.
|
|
virtual void | process (int num_samples) override |
| Processes audio through all Processors managed by this router.
|
|
virtual void | setSampleRate (int sample_rate) override |
| Sets the sample rate for all Processors in this router.
|
|
virtual void | setOversampleAmount (int oversample) override |
| Sets the oversampling amount for all Processors in this router.
|
|
virtual void | addProcessor (Processor *processor) |
| Adds a Processor to be managed by this router.
|
|
virtual void | addProcessorRealTime (Processor *processor) |
| Adds a Processor to the router in real-time (no memory allocations).
|
|
virtual void | addIdleProcessor (Processor *processor) |
| Adds a Processor that should remain idle (not processed) in the router.
|
|
virtual void | removeProcessor (Processor *processor) |
| Removes a Processor from this router.
|
|
void | connect (Processor *destination, const Output *source, int index) |
| Connects a source Output to a destination Processor input by index.
|
|
void | disconnect (const Processor *destination, const Output *source) |
| Disconnects a source Output from a destination Processor.
|
|
bool | isDownstream (const Processor *first, const Processor *second) const |
| Checks if one Processor is downstream from another, i.e., if there's a path from the second to the first.
|
|
bool | areOrdered (const Processor *first, const Processor *second) const |
| Checks if the order of two Processors is fixed in the router's processing sequence.
|
|
virtual bool | isPolyphonic (const Processor *processor) const |
| Determines if a given Processor is polyphonic within this router.
|
|
virtual ProcessorRouter * | getMonoRouter () |
| Gets the mono router that corresponds to this ProcessorRouter.
|
|
virtual ProcessorRouter * | getPolyRouter () |
| Gets the polyphonic router that corresponds to this ProcessorRouter.
|
|
virtual void | resetFeedbacks (poly_mask reset_mask) |
| Resets all Feedback nodes within this router using a reset mask.
|
|
| Processor (int num_inputs, int num_outputs, bool control_rate=false, int max_oversample=1) |
| Constructs a Processor with a given number of inputs/outputs and oversampling.
|
|
virtual | ~Processor () |
| Virtual destructor.
|
|
virtual bool | hasState () const |
| Indicates whether this Processor requires per-voice state.
|
|
virtual void | processWithInput (const poly_float *audio_in, int num_samples) |
| An optional processing function taking explicit input buffer. Fallback is an assertion failure (not supported).
|
|
bool | initialized () |
| Returns whether this Processor has been initialized.
|
|
force_inline bool | enabled () const |
| Checks if this Processor is enabled.
|
|
virtual void | enable (bool enable) |
| Enables or disables this Processor.
|
|
force_inline int | getSampleRate () const |
| Retrieves the current (effective) sample rate.
|
|
force_inline int | getOversampleAmount () const |
| Retrieves the current oversampling factor.
|
|
force_inline bool | isControlRate () const |
| Checks if this Processor is running at control rate (buffer_size == 1).
|
|
virtual void | setControlRate (bool control_rate) |
| Sets whether this Processor runs at control rate.
|
|
force_inline poly_mask | getResetMask (int input_index) const |
| Retrieves a mask indicating which voices triggered a note-on event. Compares the input's trigger_value to kVoiceOn.
|
|
force_inline void | clearOutputBufferForReset (poly_mask reset_mask, int input_index, int output_index) const |
| Clears output samples for voices that are about to be reset, based on the trigger offset.
|
|
bool | inputMatchesBufferSize (int input=0) |
| Checks whether the buffer size of a particular input matches the size needed by this Processor.
|
|
bool | checkInputAndOutputSize (int num_samples) |
| Checks if all inputs and outputs have buffers big enough for num_samples .
|
|
virtual bool | isPolyphonic () const |
| Checks if this Processor is polyphonic by querying its ProcessorRouter.
|
|
void | plug (const Output *source) |
| Connects an external Output to this Processor's first input.
|
|
void | plug (const Output *source, unsigned int input_index) |
| Connects an external Output to a specified input index.
|
|
void | plug (const Processor *source) |
| Connects the first output of a Processor to this Processor's first input.
|
|
void | plug (const Processor *source, unsigned int input_index) |
| Connects the first output of a Processor to a specified input index.
|
|
void | plugNext (const Output *source) |
| Connects an external Output to the first available (unplugged) input.
|
|
void | plugNext (const Processor *source) |
| Connects the first output of a Processor to the first available (unplugged) input.
|
|
void | useInput (Input *input) |
| Uses an existing Input object as this Processor's first input.
|
|
void | useInput (Input *input, int index) |
| Uses an existing Input object at a specified input index.
|
|
void | useOutput (Output *output) |
| Uses an existing Output object as this Processor's first output.
|
|
void | useOutput (Output *output, int index) |
| Uses an existing Output object at a specified output index.
|
|
int | connectedInputs () |
| Counts how many inputs are connected to a real source (not null_source_).
|
|
virtual void | unplugIndex (unsigned int input_index) |
| Removes the connection at a specified input index, if any.
|
|
virtual void | unplug (const Output *source) |
| Removes a connection to a given Output from all inputs.
|
|
virtual void | unplug (const Processor *source) |
| Removes connections to all outputs from a given Processor.
|
|
virtual void | numInputsChanged () |
| Called when the number of inputs changes (e.g., new connections). Subclasses may override for dynamic behavior.
|
|
force_inline void | router (ProcessorRouter *router) |
| Sets the ProcessorRouter that owns or manages this Processor.
|
|
force_inline ProcessorRouter * | router () const |
| Returns the ProcessorRouter that currently owns this Processor.
|
|
ProcessorRouter * | getTopLevelRouter () const |
| Gets the topmost (root) ProcessorRouter by traversing parent routers.
|
|
virtual void | registerInput (Input *input, int index) |
| Registers a new input, appending it to the input list.
|
|
virtual Output * | registerOutput (Output *output, int index) |
| Registers a new Output in the output list at a specified index.
|
|
virtual void | registerInput (Input *input) |
| Registers a new Input by appending it to the end of the input list.
|
|
virtual Output * | registerOutput (Output *output) |
| Registers a new Output by appending it to the end of the output list.
|
|
force_inline int | numInputs () const |
| Returns the total number of Input pointers (owned or otherwise).
|
|
force_inline int | numOutputs () const |
| Returns the total number of Output pointers (owned or otherwise).
|
|
force_inline int | numOwnedInputs () const |
| Returns how many Input objects this Processor owns.
|
|
force_inline int | numOwnedOutputs () const |
| Returns how many Output objects this Processor owns.
|
|
force_inline Input * | input (unsigned int index=0) const |
| Retrieves the Input pointer at a given index.
|
|
force_inline bool | isInputSourcePolyphonic (int index=0) |
| Checks if the input source at a given index is polyphonic.
|
|
force_inline Input * | ownedInput (unsigned int index=0) const |
| Retrieves an owned Input pointer at a given index.
|
|
force_inline Output * | output (unsigned int index=0) const |
| Retrieves the Output pointer at a given index.
|
|
force_inline Output * | ownedOutput (unsigned int index=0) const |
| Retrieves an owned Output pointer at a given index.
|
|
void | setPluggingStart (int start) |
| Sets the position at which plugNext starts searching for an open input.
|
|
|
std::vector< DigitalSvf * > | formants_ |
| A list of DigitalSvf pointers, each representing a vowel formant or similar resonant filter.
|
|
std::shared_ptr< CircularQueue< Processor * > > | global_order_ |
| Global processing order reference.
|
|
std::shared_ptr< CircularQueue< Processor * > > | global_reorder_ |
| Temporary storage for reorder operations.
|
|
CircularQueue< Processor * > | local_order_ |
| Local ordering of Processors.
|
|
std::map< const Processor *, std::pair< int, std::unique_ptr< Processor > > > | processors_ |
| Map of global to local Processors.
|
|
std::map< const Processor *, std::unique_ptr< Processor > > | idle_processors_ |
| Idle Processors that are not active in the graph.
|
|
std::shared_ptr< std::vector< const Feedback * > > | global_feedback_order_ |
| Global order of Feedback nodes.
|
|
std::vector< Feedback * > | local_feedback_order_ |
| Local copies of Feedback nodes.
|
|
std::map< const Processor *, std::pair< int, std::unique_ptr< Feedback > > > | feedback_processors_ |
| Map of global to local Feedback processors.
|
|
std::shared_ptr< int > | global_changes_ |
| Global change counter.
|
|
int | local_changes_ |
| Local change counter to track synchronization with global changes.
|
|
std::shared_ptr< CircularQueue< const Processor * > > | dependencies_ |
| Queue for dependencies calculations.
|
|
std::shared_ptr< CircularQueue< const Processor * > > | dependencies_visited_ |
| Queue of visited processors for dependencies calc.
|
|
std::shared_ptr< CircularQueue< const Processor * > > | dependency_inputs_ |
| Queue of processors to check inputs for dependencies.
|
|
std::shared_ptr< ProcessorState > | state_ |
| Shared state (sample rate, oversample, etc.)
|
|
int | plugging_start_ |
| The index at which plugNext starts searching for an unplugged input.
|
|
std::vector< std::shared_ptr< Input > > | owned_inputs_ |
| Inputs owned by this Processor.
|
|
std::vector< std::shared_ptr< Output > > | owned_outputs_ |
| Outputs owned by this Processor.
|
|
std::shared_ptr< std::vector< Input * > > | inputs_ |
| All inputs, owned or external.
|
|
std::shared_ptr< std::vector< Output * > > | outputs_ |
| All outputs, owned or external.
|
|
ProcessorRouter * | router_ |
| The ProcessorRouter that manages this Processor.
|
|
Manages a collection of DigitalSvf instances for formant filtering.
The FormantManager class holds multiple DigitalSvf objects, each of which can be set to represent a different vowel formant or resonance characteristic. It sums the outputs of these formants to produce a single audio output.