A versatile Low-Frequency Oscillator (LFO) for audio synthesis, supporting multiple sync modes and smoothing options.
More...
|
force_inline poly_float | getValueAtPhase (mono_float *buffer, poly_float resolution, poly_int max_index, poly_float phase) |
| Retrieves the LFO value at a given phase using a cubic interpolation on the line generator data.
|
|
force_inline poly_float | getValueAtPhase (poly_float phase) |
| Retrieves the LFO value at a given phase using the internal line generator source.
|
|
| SynthLfo (LineGenerator *source) |
| Constructs a SynthLfo processor with a given LineGenerator source.
|
|
force_inline poly_mask | getReleaseMask () |
| Determines which voices are in the release state based on note triggers.
|
|
virtual Processor * | clone () const override |
| Clones the SynthLfo processor, creating a new instance with the same settings.
|
|
void | process (int num_samples) override |
| Processes a block of samples, updating the LFO output.
|
|
void | correctToTime (double seconds) |
| Updates the LFO to align with a given time in seconds, enabling synchronization with an external clock.
|
|
| 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 | init () |
| Called after constructor, used for any additional initialization. Subclasses can override. Sets the initialized flag.
|
|
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.
|
|
virtual void | setSampleRate (int sample_rate) |
| Updates the sample rate of this Processor (scaled by oversampling).
|
|
virtual void | setOversampleAmount (int oversample) |
| Sets the oversampling amount and updates the effective sample rate.
|
|
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.
|
|
|
void | processTrigger () |
| Handles trigger events (note on/off), resets, and updates masks for held states.
|
|
void | processControlRate (int num_samples) |
| Processes the LFO at control rate (e.g., once per block) instead of every sample.
|
|
poly_float | processAudioRateEnvelope (int num_samples, poly_float current_phase, poly_float current_offset, poly_float delta_offset) |
| Processes the LFO in "Envelope" sync mode at audio rate.
|
|
poly_float | processAudioRateSustainEnvelope (int num_samples, poly_float current_phase, poly_float current_offset, poly_float delta_offset) |
| Processes the LFO in "Sustain Envelope" mode at audio rate.
|
|
poly_float | processAudioRateLfo (int num_samples, poly_float current_phase, poly_float current_offset, poly_float delta_offset) |
| Processes the LFO in regular LFO mode (Trigger or Sync) at audio rate.
|
|
poly_float | processAudioRateLoopPoint (int num_samples, poly_float current_phase, poly_float current_offset, poly_float delta_offset) |
| Processes the LFO in "LoopPoint" mode at audio rate.
|
|
poly_float | processAudioRateLoopHold (int num_samples, poly_float current_phase, poly_float current_offset, poly_float delta_offset) |
| Processes the LFO in "LoopHold" mode at audio rate.
|
|
void | processAudioRate (int num_samples) |
| Processes the LFO at audio rate (per sample).
|
|
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_.
|
|
A versatile Low-Frequency Oscillator (LFO) for audio synthesis, supporting multiple sync modes and smoothing options.
The SynthLfo class generates low-frequency modulation signals from a LineGenerator source. It supports:
- Various sync types (triggered, synced to host/tempo, envelope-like, looping)
- Phase offset adjustments, stereo offsets, delay times, fade-in times, and smoothing.
- Both control-rate and audio-rate processing, adapting seamlessly between them.