A processor that applies a modulation signal to a parameter, performing mapping, scaling, and morphing.
More...
|
| | ModulationConnectionProcessor (int index) |
| | Constructs a ModulationConnectionProcessor with a given index.
|
| |
| virtual | ~ModulationConnectionProcessor () |
| |
| void | init () override |
| | Initializes the processor, creating and connecting parameter controls (e.g., bipolar, stereo, bypass).
|
| |
| void | process (int num_samples) override |
| | Processes a block of samples, handling both control-rate and audio-rate modulation.
|
| |
| void | processAudioRate (int num_samples, const Output *source) |
| | Processes the modulation at audio-rate using the provided source output.
|
| |
| void | processAudioRateLinear (int num_samples, const Output *source) |
| | Audio-rate processing with a linear transform (no remap, no morph).
|
| |
| void | processAudioRateRemapped (int num_samples, const Output *source) |
| | Audio-rate processing with remapping via LineGenerator, but no morphing power.
|
| |
| void | processAudioRateMorphed (int num_samples, const Output *source, poly_float power) |
| | Audio-rate processing with morphing power applied (no remapping).
|
| |
| void | processAudioRateRemappedAndMorphed (int num_samples, const Output *source, poly_float power) |
| | Audio-rate processing with both remapping and morphing power applied.
|
| |
| void | processControlRate (const Output *source) |
| | Processes the modulation at control-rate (once per block), when modulation or source is not audio-rate.
|
| |
| virtual Processor * | clone () const override |
| | Creates a clone of this processor.
|
| |
| void | initializeBaseValue (Value *base_value) |
| | Initializes a base value for this modulation connection, used as a starting point.
|
| |
| void | initializeMapping () |
| | Sets the mapping function to a linear mapping in the internal LineGenerator.
|
| |
| mono_float | currentBaseValue () const |
| | Retrieves the current base value of the modulation connection.
|
| |
| void | setBaseValue (mono_float value) |
| | Sets the base value of the modulation connection.
|
| |
| bool | isPolyphonicModulation () const |
| | Checks if the modulation is polyphonic (per-voice).
|
| |
| void | setPolyphonicModulation (bool polyphonic) |
| | Sets whether the modulation should be treated as polyphonic.
|
| |
| bool | isBipolar () const |
| | Checks if the modulation is bipolar (range -1 to 1).
|
| |
| void | setBipolar (bool bipolar) |
| | Sets whether the modulation should be bipolar.
|
| |
| bool | isStereo () const |
| | Checks if the modulation is stereo, applying a different scale factor to the right channel.
|
| |
| void | setStereo (bool stereo) |
| | Sets whether the modulation should be stereo.
|
| |
| bool | isBypassed () const |
| | Checks if the modulation connection is bypassed.
|
| |
| force_inline void | setDestinationScale (mono_float scale) |
| | Sets the scaling factor for the destination parameter.
|
| |
| force_inline int | index () const |
| | Gets the index identifier of this modulation connection.
|
| |
| LineGenerator * | lineMapGenerator () |
| | Retrieves the LineGenerator (map_generator_) used for remapping the modulation.
|
| |
| | SynthModule (int num_inputs, int num_outputs, bool control_rate=false) |
| | Constructs a SynthModule with specified I/O and control rate.
|
| |
| virtual | ~SynthModule () |
| | Destructor.
|
| |
| control_map | getControls () |
| | Returns a map of all controls from this module and its submodules.
|
| |
| Output * | getModulationSource (std::string name) |
| | Retrieves a modulation source output by name.
|
| |
| const StatusOutput * | getStatusOutput (std::string name) const |
| | Retrieves a StatusOutput by name.
|
| |
| Processor * | getModulationDestination (std::string name, bool poly) |
| | Retrieves a modulation destination Processor by name and poly mode.
|
| |
| Processor * | getMonoModulationDestination (std::string name) |
| | Retrieves a mono modulation destination by name.
|
| |
| Processor * | getPolyModulationDestination (std::string name) |
| | Retrieves a poly modulation destination by name.
|
| |
| ValueSwitch * | getModulationSwitch (std::string name, bool poly) |
| | Retrieves a modulation switch by name and poly mode.
|
| |
| ValueSwitch * | getMonoModulationSwitch (std::string name) |
| | Retrieves a mono modulation switch by name.
|
| |
| ValueSwitch * | getPolyModulationSwitch (std::string name) |
| | Retrieves a poly modulation switch by name.
|
| |
| void | updateAllModulationSwitches () |
| | Updates all modulation switches based on whether their destinations have inputs.
|
| |
| output_map & | getModulationSources () |
| | Returns a reference to the map of modulation sources.
|
| |
| input_map & | getMonoModulationDestinations () |
| | Returns a reference to the map of mono modulation destinations.
|
| |
| input_map & | getPolyModulationDestinations () |
| | Returns a reference to the map of poly modulation destinations.
|
| |
| virtual output_map & | getMonoModulations () |
| | Returns a reference to the map of mono modulation readouts.
|
| |
| virtual output_map & | getPolyModulations () |
| | Returns a reference to the map of poly modulation readouts.
|
| |
| virtual void | correctToTime (double seconds) |
| | Allows correction of module state to a given time (if needed).
|
| |
| void | enableOwnedProcessors (bool enable) |
| | Enables or disables all owned processors.
|
| |
| virtual void | enable (bool enable) override |
| | Enables or disables this SynthModule and its owned processors.
|
| |
| void | addMonoProcessor (Processor *processor, bool own=true) |
| | Adds a mono processor to this module.
|
| |
| void | addIdleMonoProcessor (Processor *processor) |
| | Adds a mono processor that is considered idle (not part of main processing chain).
|
| |
| void | addSubmodule (SynthModule *module) |
| | Adds a submodule to this SynthModule.
|
| |
| | 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 | 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).
|
| |
| virtual void | reset (poly_mask reset_mask) |
| | Called to reset the Processor's per-voice state (e.g., on note-on).
|
| |
| virtual void | hardReset () |
| | Called to perform a "hard" reset for all voices.
|
| |
| bool | initialized () |
| | Returns whether this Processor has been initialized.
|
| |
| force_inline bool | enabled () const |
| | Checks if this Processor is enabled.
|
| |
| 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.
|
| |
|
| Value * | createBaseControl (std::string name, bool audio_rate=false, bool smooth_value=false) |
| | Creates a simple control processor for a given parameter name.
|
| |
| Output * | createBaseModControl (std::string name, bool audio_rate=false, bool smooth_value=false, Output *internal_modulation=nullptr) |
| | Creates a base mod control, which is a control combined with a modulation input.
|
| |
| Output * | createMonoModControl (std::string name, bool audio_rate=false, bool smooth_value=false, Output *internal_modulation=nullptr) |
| | Creates a monophonic mod control, including applying parameter scaling.
|
| |
| Output * | createPolyModControl (std::string name, bool audio_rate=false, bool smooth_value=false, Output *internal_modulation=nullptr, Input *reset=nullptr) |
| | Creates a polyphonic mod control, including applying parameter scaling.
|
| |
| Output * | createTempoSyncSwitch (std::string name, Processor *frequency, const Output *beats_per_second, bool poly, Input *midi=nullptr) |
| | Creates a tempo sync switch that toggles between tempo-based frequency and free-running frequency.
|
| |
| void | createStatusOutput (std::string name, Output *source) |
| | Creates a status output associated with a given Output.
|
| |
| virtual void | addFeedback (Feedback *feedback) |
| | Adds a Feedback node to handle a feedback loop introduced by a connection.
|
| |
| virtual void | removeFeedback (Feedback *feedback) |
| | Removes a previously added Feedback node.
|
| |
| void | reorder (Processor *processor) |
| | Reorders the internal processing sequence to account for a Processor's dependencies.
|
| |
| virtual void | updateAllProcessors () |
| | Updates all processors to match the global order. Called when changes occur.
|
| |
| force_inline bool | shouldUpdate () |
| | Checks if local changes need to be synchronized with global changes.
|
| |
| virtual void | createAddedProcessors () |
| | Creates any processors that were added at the global level but not yet replicated locally.
|
| |
| virtual void | deleteRemovedProcessors () |
| | Deletes any processors that were removed at the global level but not yet removed locally.
|
| |
| const Processor * | getContext (const Processor *processor) const |
| | Gets the processor context within this router for a global Processor reference.
|
| |
| void | getDependencies (const Processor *processor) const |
| | Populates the internal dependencies structure for a given Processor.
|
| |
| Processor * | getLocalProcessor (const Processor *global_processor) |
| | Retrieves the local instance of a globally defined Processor.
|
| |
| Output * | addOutput (int oversample=1) |
| | Creates and registers a new Output. Handles control rate vs. audio rate.
|
| |
| Input * | addInput () |
| | Creates and registers a new Input, initially connected to null_source_.
|
| |
| static const Output | null_source_ |
| | A null (dummy) source used for unconnected inputs.
|
| |
A processor that applies a modulation signal to a parameter, performing mapping, scaling, and morphing.
The ModulationConnectionProcessor takes a modulation input (e.g., from an LFO or envelope), applies transformations such as bipolar shifting, remapping via a LineGenerator, applying power curves, and scaling by a destination amount. It can handle both control-rate and audio-rate modulation, and supports polyphonic and stereo modulation. The output is a transformed modulation signal ready to be applied to a parameter in the synth.