SynthLab SDK
|
See also Designing Software Synthesizers in C++ 2nd Ed. by Will Pirkle. More...
#include <cmath>
#include <random>
#include <string>
#include <sstream>
#include <vector>
#include <stdint.h>
#include <memory>
#include <algorithm>
#include <map>
#include "synthstructures.h"
#include "synthlabparams.h"
Go to the source code of this file.
Classes | |
struct | SynthLab::DMConfig |
class | SynthLab::AudioBuffer |
Encapsulates the audio buffering requirements of any module that uses audio samples for input and/or output. More... | |
class | SynthLab::SynthClock |
Compact modulo counter with wrapping used as the timebase for all oscillators. More... | |
class | SynthLab::Timer |
Ultra compact timer object that is used for many different functionalities. More... | |
class | SynthLab::XFader |
Crossfades two values (from A to B) More... | |
class | SynthLab::XHoldFader |
Crossfades two values (from A to B) and then holds B for some amount of time. More... | |
class | SynthLab::SlewLimiter |
Implements a simple slew limiter using a one pole lowpass filter. More... | |
class | SynthLab::Synchronizer |
This is a very specialized object that performs the hard-sync operation using two SynthClocks. More... | |
class | SynthLab::RampModulator |
This is a tiny modulator object that produces an output that ramps up or down linearly between two values over a specified time in milliseconds. More... | |
class | SynthLab::GlideModulator |
Specialized version of the RampModulator, with nearly identically named functions to peform the portamento operation (aka glide modulation) More... | |
class | SynthLab::NoiseGenerator |
Simple object that generates white, gaussian white or pink noise. More... | |
class | SynthLab::IModulator |
Interface for modulator objects. More... | |
class | SynthLab::IWavetableSource |
Interface for wavetable sources. More... | |
class | SynthLab::IWavetableDatabase |
Interface for wavetable databases. More... | |
struct | SynthLab::PCMSampleOutput |
Holds the audio output samples from reading a PCM sample file. More... | |
class | SynthLab::IPCMSampleSource |
Interface for PCM sample sources. More... | |
class | SynthLab::IPCMSampleDatabase |
Interface for PCM sample databases. More... | |
class | SynthLab::IMidiInputData |
Interface for a MIDI input data object. More... | |
struct | SynthLab::FilterOutput |
Holds an array of filter output values; SynthLab filters can produce multiple outputs at once. For example, the 1st order VA filter produces 1st order LPF, HPF and APF output samples in the same render() function. More... | |
class | SynthLab::IFilterBase |
Simple interface for SynthLab filters. More... | |
struct | SynthLab::CoreProcData |
This structure holds all of the information needed to call functions on a ModuleCore object. This structure must contain datatypes that are basic C++ types or structures of them, and can not contain anything from the std:: library. More... | |
struct | SynthLab::SynthLabTableSet |
This structure defines a set of wavetables that are usually found in .h files and compiled into the synth. This structure is used specifically with wavetables that are made with RackAFX-TableMaker utility functions, that can encode tables in hex format for storage without needing fractional decimal representation. More... | |
struct | SynthLab::SynthLabBankSet |
This super-structure holds a set of SynthLabTableSet called a "bank" and used in the morphing wavetable core to register and install these tables with the database. More... | |
struct | SynthLab::StaticWavetable |
Structure for holding information about a static wavetable, that is read from a static location, either compiled into the synth as a resource, or from a binary data file at startup time. More... | |
struct | SynthLab::DynamicWavetable |
Structure for holding information about a static wavetable, that is read from a static location, either compiled into the synth as a resource, or from a binary data file at startup time. More... | |
struct | SynthLab::WavetableDatabase |
Object that acts as the wavetable database, as shared synth-wide resource. You should study this especially if you want to implement your own database with your own wavetable formats, etc... More... | |
struct | SynthLab::PCMSampleDatabase |
Object that acts as the PCM sample database, as shared synth-wide resource. You should study this especially if you want to implement your own database with your own PCM sample formats, etc... More... | |
class | SynthLab::SynthProcessInfo |
This structure holds all of the information needed to for the plugin framework to send MIDI information into the engine, and receive rendered audio samples that result. More... | |
class | SynthLab::MidiInputData |
Holds all MIDI input data values. More... | |
class | SynthLab::Modulators |
Implements a modulator object. More... | |
class | SynthLab::ModuleCore |
Abstract base class that encapsulates functionality of a module core; used with the Module-Core paradigm. More... | |
class | SynthLab::SynthModule |
Abstract base class that encapsulates functionality of a module; used with the Module-Core paradigm. More... | |
class | SynthLab::CircularBuffer< T > |
The CircularBuffer object implements a simple circular buffer. It uses a wrap mask to wrap the read or write index quickly. More... | |
class | SynthLab::DelayLine |
struct | SynthLab::BQCoeffs |
Structure to hold the seven coeffieicents used in the AudioFilter object from Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle. More... | |
class | SynthLab::BQAudioFilter |
Simple version of the AudioFilter object from Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle that impelments a biquad audio filter. More... | |
class | SynthLab::FracDelayAPF |
Implements a first order APF that is used to generate a fractional delay for the physcial model of a string. More... | |
class | SynthLab::ResLoopFilter |
Implements a first order feedforward LPF with coefficients a0 = a1 = 0.5. More... | |
class | SynthLab::DCRemovalFilter |
Implements a first order HPF with fc = 2.0Hz. More... | |
class | SynthLab::TinyBPF |
Implements a simple 2nd order BPF. More... | |
class | SynthLab::LP2Filter |
Implements a simple 2nd order LPF. More... | |
class | SynthLab::HP2Filter |
Implements a simple 2nd order HPF. More... | |
class | SynthLab::TinyReson |
Minute implementation of a 2nd order resonator filter. More... | |
class | SynthLab::LowShelfFilter |
Implementation of a low shelving filter. More... | |
class | SynthLab::HighShelfFilter |
Implementation of a high shelving filter. More... | |
class | SynthLab::ParametricFilter |
Implementation of a constant-Q parametric EQ filter. More... | |
class | SynthLab::LP1PFilter |
Implementation of a one-pole LPF. More... | |
class | SynthLab::PluckPosFilter |
Comnination of three filters in one; note that the figure in the book does not show the variety of connection combinations and filter bypassing possible, nor the multiple output points. More... | |
Enumerations | |
enum | SynthLab::SampleLoopMode { loop, sustain, oneShot } |
enum | { LPF1, LPF2, LPF3, LPF4, HPF1, HPF2, HPF3, HPF4, BPF2, BPF4, BSF2, BSF4, APF1, APF2, ANM_LPF1, ANM_LPF2, ANM_LPF3, ANM_LPF4, NUM_FILTER_OUTPUTS } |
enum | SynthLab::PluckFilterType { kPluck, kPluckAndBridge, kPickup, kPluckAndPickup, kBridge, kPluckPickupBridge } |
Functions | |
double | SynthLab::doLinearInterp (double y1, double y2, double fractional_X) |
performs linear interpolation of fractional x distance between two adjacent (x,y) points; returns interpolated value More... | |
Variables | |
const uint32_t | SynthLab::kDefaultWaveTableLength = 256 |
const double | SynthLab::GUI_Q_MIN = 1.0 |
const double | SynthLab::GUI_Q_MAX = 10.0 |
const double | SynthLab::SVF_Q_SLOPE = (25.0 - 0.707) / (GUI_Q_MAX - GUI_Q_MIN) |
const double | SynthLab::KORG35_Q_SLOPE = (2.0 - 0.707) / (GUI_Q_MAX - GUI_Q_MIN) |
const double | SynthLab::MOOG_Q_SLOPE = (4.0 - 0.0) / (GUI_Q_MAX - GUI_Q_MIN) |
const double | SynthLab::DIODE_Q_SLOPE = (17.0 - 0.0) / (GUI_Q_MAX - GUI_Q_MIN) |
const double | SynthLab::HSYNC_MOD_SLOPE = 3.0 |
See also Designing Software Synthesizers in C++ 2nd Ed. by Will Pirkle.