| 
|   | Feedback () | 
|   | 
| void  | process (int num_samples) override | 
|   | Processes the control input for a given number of samples (usually 1).  
  | 
|   | 
| Processor *  | clone () const override | 
|   | Clones this Processor for polyphonic expansion. Must be overridden by subclasses.  
  | 
|   | 
| void  | refreshOutput (int num_samples) override | 
|   | Updates the output with the last stored value.  
  | 
|   | 
| void  | reset (poly_mask reset_mask) override | 
|   | Resets the internal state of the feedback processor.  
  | 
|   | 
|   | Feedback (bool control_rate=false) | 
|   | Constructs a Feedback processor.  
  | 
|   | 
| virtual  | ~Feedback () | 
|   | Virtual destructor.  
  | 
|   | 
| Processor *  | clone () const override | 
|   | Clones this Processor for polyphonic expansion. Must be overridden by subclasses.  
  | 
|   | 
| force_inline void  | tick (int i) | 
|   | Processes a single sample, storing it in the internal buffer.  
  | 
|   | 
|   | 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  | 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.  
  | 
|   | 
A control-rate variant of the Feedback processor. 
This version of Feedback operates at control rate (non-audio rate), keeping track of a single last value rather than a full buffer of samples. It can be used for control signals that need to maintain a last known value for feedback-type behaviors.