Gin
Loading...
Searching...
No Matches
AudioEquationParser Class Reference

Equation parser with audio-specific functions for DSP processing. More...

#include <gin_audioequationparser.h>

Inheritance diagram for AudioEquationParser:

Public Member Functions

 AudioEquationParser ()=default
void addConstants ()
 Adds audio constants like pi, sampleRate, e, etc.
void addUtilities ()
 Adds utility functions like clamp, wrap, fold, abs, etc.
void addOscillatorFunctions ()
 Adds oscillator functions: sine, saw, square, triangle, noise, etc.
void addSynthFilterFunctions ()
 Adds synthesis filters: lp12, lp24, hp12, hp24, bp12, bp24, notch12, notch24.
void addEffectFilterFunctions ()
 Adds effect-style filters with resonance control for creative processing.
Public Member Functions inherited from EquationParser
 EquationParser ()
 EquationParser (const juce::String &equation)
 ~EquationParser ()
void defineNameChars (const juce::String &chars)
void setEquation (const juce::String &equation)
void clearVariables ()
void addVariable (const juce::String &name, double *value)
void setVarFactory (std::function< double *(const char *)> fun)
juce::StringArray getUsedVariables ()
void clearConstants ()
void addConstant (const juce::String &name, double value)
void addFunction (const juce::String &name, std::function< double(int id, const juce::String &)> fun)
void addFunction (const juce::String &name, std::function< double(int id)> fun)
void addFunction (const juce::String &name, std::function< double(int id, double)> fun)
void addFunction (const juce::String &name, std::function< double(int id, double, double)> fun)
void addFunction (const juce::String &name, std::function< double(int id, double, double, double)> fun)
void addFunction (const juce::String &name, std::function< double(int id, double, double, double, double)> fun)
double evaluate ()
bool hasError () const
juce::String getError () const
Public Member Functions inherited from AudioFunctionHost
void setSampleRate (double sr)
double getSampleRate ()
void reset ()
void setPhase (float p)
void addConstants (gin::EquationParser &)
void addUtilities (gin::EquationParser &)
void addOscillatorFunctions (gin::EquationParser &)
void addSynthFilterFunctions (gin::EquationParser &)
void addEffectFilterFunctions (gin::EquationParser &)
template<class T>
T * getFuncParams (int i, double sr)

Additional Inherited Members

Public Attributes inherited from AudioFunctionHost
gin::BandLimitedLookupTables * lookupTables = nullptr
Protected Attributes inherited from AudioFunctionHost
std::map< int, std::unique_ptr< FuncState > > funcStates
double sampleRate = 44100.0

Detailed Description

Equation parser with audio-specific functions for DSP processing.

AudioEquationParser extends EquationParser with audio and synthesis functions, allowing users to create custom audio processing algorithms using mathematical expressions. It provides oscillators, filters, utilities, and audio constants that can be evaluated in real-time for creative sound design.

Key Features:

  • Standard oscillators (sine, saw, square, triangle)
  • Synthesis filters (lowpass, highpass, bandpass, notch)
  • Effect filters with resonance control
  • Audio constants (sample rate, pi, e, etc.)
  • Utility functions (clamp, wrap, fold, etc.)
  • Real-time expression evaluation
  • Stateful audio functions (filters maintain state)

The parser is particularly useful for:

  • Custom waveshaping algorithms
  • User-programmable oscillators
  • Dynamic filter equations
  • Mathematical modulation sources
  • Educational audio programming tools

Usage:

parser.addConstants();
parser.addUtilities();
// Parse a custom oscillator equation
parser.setEquation("sin(phase * 2 * pi) * 0.5 + saw(phase) * 0.5");
// Evaluate for each sample
for (int i = 0; i < numSamples; i++)
{
float phase = (float)i / sampleRate;
parser.setVariable("phase", phase);
float output = parser.evaluate();
buffer[i] = output;
}
// Create a filtered oscillator
parser.setEquation("lp24(saw(phase), cutoff, resonance)");
parser.setVariable("cutoff", 1000.0f);
parser.setVariable("resonance", 0.7f);
void addSynthFilterFunctions()
Adds synthesis filters: lp12, lp24, hp12, hp24, bp12, bp24, notch12, notch24.
void addUtilities()
Adds utility functions like clamp, wrap, fold, abs, etc.
void addConstants()
Adds audio constants like pi, sampleRate, e, etc.
void addOscillatorFunctions()
Adds oscillator functions: sine, saw, square, triangle, noise, etc.
AudioEquationParser()=default
double sampleRate
Definition gin_audiofunctions.h:448
void setEquation(const juce::String &equation)
double evaluate()
See also
EquationParser, AudioFunctionHost

Constructor & Destructor Documentation

◆ AudioEquationParser()

AudioEquationParser::AudioEquationParser ( )
default

Member Function Documentation

◆ addConstants()

void AudioEquationParser::addConstants ( )

Adds audio constants like pi, sampleRate, e, etc.

◆ addUtilities()

void AudioEquationParser::addUtilities ( )

Adds utility functions like clamp, wrap, fold, abs, etc.

◆ addOscillatorFunctions()

void AudioEquationParser::addOscillatorFunctions ( )

Adds oscillator functions: sine, saw, square, triangle, noise, etc.

◆ addSynthFilterFunctions()

void AudioEquationParser::addSynthFilterFunctions ( )

Adds synthesis filters: lp12, lp24, hp12, hp24, bp12, bp24, notch12, notch24.

◆ addEffectFilterFunctions()

void AudioEquationParser::addEffectFilterFunctions ( )

Adds effect-style filters with resonance control for creative processing.


The documentation for this class was generated from the following file: