Skip to content

Namespace daisysp

Namespace List > daisysp

FIR Filter implementation, generic and ARM CMSIS DSP based. More...

Classes

Type Name
class ATone
class AdEnv
class Adsr
class Allpass
class AnalogBassDrum
808 bass drum model, revisited.
class AnalogSnareDrum
808 snare drum model, revisited.
class Autowah
class Balance
class Biquad
class Bitcrush
class BlOsc
class Chorus
Chorus Effect.
class ChorusEngine
Single Chorus engine. Used inChorus .
class ClockedNoise
class Comb
class Compressor
class CrossFade
class DcBlock
class Decimator
class DelayLine <typename T, max_size>
class Drip
class Dust
Dust Module.
class FIRFilterImplGeneric <max_size, max_block>
struct FIRMemory <max_size, max_block>
struct FIRMemory< 0, 0 > <>
class Flanger
Flanging Audio Effect.
class Fm2
class Fold
class FormantOscillator
Formant Oscillator Module.
class FractalRandomGenerator <typename T, order>
Fractal Noise, stacks octaves of a noise source.
class GrainletOscillator
Granular Oscillator Module.
class GranularPlayer
class HarmonicOscillator <num_harmonics>
Harmonic Oscillator Module based on Chebyshev polynomials.
class HiHat <typename MetallicNoiseSource, typename VCA, resonance>
808 HH, with a few extra parameters to push things to the CY territory...
class Jitter
class LadderFilter
class Limiter
class Line
class LinearVCA
Linear type VCA.
class Looper
class Maytrig
class Metro
class ModalVoice
Simple modal synthesis voice with a mallet exciter: click -> LPF -> resonator.
class Mode
class MoogLadder
class NlFilt
class OnePole
One Pole Lowpass / Highpass Filter.
class Oscillator
class OscillatorBank
Oscillator Bank module.
class Overdrive
Distortion / Overdrive Module.
class Particle
Random impulse train processed by a resonant filter.
class Phaser
Phaser Effect.
class PhaserEngine
Single Phaser engine. Used inPhaser .
class Phasor
class PitchShifter
class Pluck
class PolyPluck <num_voices>
class Port
class Resonator
Resonant Body Simulation.
class ResonatorSvf <batch_size>
SVF for use in the Resonator Class .
class ReverbSc
struct ReverbScDl
class RingModNoise
Ring mod style metallic noise generator.
class SampleHold
class SampleRateReducer
Sample rate reducer.
class SmoothRandomGenerator
Smooth random generator for internal modulation. .
class Soap
class SquareNoise
808 style "metallic noise" with 6 square oscillators.
class String
Comb filter / KS string.
class StringVoice
Extended Karplus-Strong, with all the niceties from Rings.
class Svf
class SwingVCA
Swing type VCA.
class SyntheticBassDrum
Naive bass drum model (modulated oscillator with FM + envelope).
class SyntheticBassDrumAttackNoise
Attack Noise generator for SyntheticBassDrum .
class SyntheticBassDrumClick
Click noise for SyntheticBassDrum .
class SyntheticSnareDrum
Naive snare drum model (two modulated oscillators + filtered noise).
class Tone
class Tremolo
Tremolo effect.
class VariableSawOscillator
Variable Saw Oscillator .
class VariableShapeOscillator
Variable Waveshape Oscillator .
class VosimOscillator
Vosim Oscillator Module .
class Wavefolder
class WhiteNoise
class ZOscillator
ZOscillator Module .

Public Types

Type Name
enum AdEnvSegment
typedef FIRFilterImplGeneric< max_size, max_block > FIR
enum Mapping
enum daisysp
enum daisysp
enum daisysp

Public Static Attributes

Type Name
constexpr float kOneTwelfth = 1.[**f**](classdaisysp_1_1DelayLine.md) / 12.[**f**](classdaisysp_1_1DelayLine.md)
constexpr float kRandFrac = 1.[**f**](classdaisysp_1_1DelayLine.md) / ([**float**](classdaisysp_1_1DelayLine.md))[**RAND\_MAX**](classdaisysp_1_1DelayLine.md)

Public Functions

Type Name
float NextBlepSample (float t)
float NextIntegratedBlepSample (float t)
float SoftClip (float x)
float SoftLimit (float x)
void TestFloat (float & x, float y=0.f)
float ThisBlepSample (float t)
float ThisIntegratedBlepSample (float t)
float fastlog10f (float f)
float fastlog2f (float f)
float fastmod1f (float x)
float fastpower (float f, int n)
float fastroot (float f, int n)
float fclamp (float in, float min, float max)
float fmap (float in, float min, float max, Mapping curve=Mapping::LINEAR)
float fmax (float a, float b)
float fmin (float a, float b)
void fonepole (float & out, float in, float coeff)
uint32_t get_next_power2 (uint32_t x)
constexpr bool is_power2 (uint32_t x)
T median (T a, T b, T c)
float mtof (float m)
uint32_t myrand ()
float pow10f (float f)
float soft_saturate (float in, float thresh)

Public Static Functions

Type Name
uint32_t hash_xs32 (uint32_t x)

Detailed Description

Author:

Alexander Petrov-Savchenko ([email protected])

Date:

February 2021

Public Types Documentation

enum AdEnvSegment

enum daisysp::AdEnvSegment {
    ADENV_SEG_IDLE,
    ADENV_SEG_ATTACK,
    ADENV_SEG_DECAY,
    ADENV_SEG_LAST
};

Distinct stages that the phase of the envelope can be located in.

See also: AdEnv


typedef FIR

using daisysp::FIR = typedef FIRFilterImplGeneric<max_size, max_block>;

enum Mapping

enum daisysp::Mapping {
    LINEAR,
    EXP,
    LOG
};

Curves to use with the fmap function


enum @

This enum is anonymous

enum {
    ADSR_SEG_IDLE** = 0,
    ADSR_SEG_ATTACK** = 1,
    ADSR_SEG_DECAY** = 2,
    ADSR_SEG_RELEASE** = 4,
};

Distinct stages that the phase of the envelope can be located in. * IDLE = located at phase location 0, and not currently running * ATTACK = First segment of envelope where phase moves from 0 to 1 * DECAY = Second segment of envelope where phase moves from 1 to SUSTAIN value * RELEASE = Fourth segment of envelop where phase moves from SUSTAIN to 0


enum @

This enum is anonymous

enum {
    CROSSFADE_LIN,
    CROSSFADE_CPOW,
    CROSSFADE_LOG,
    CROSSFADE_EXP,
    CROSSFADE_LAST,
};

Curve applied to the CrossFade * LIN = linear * CPOW = constant power * LOG = logarithmic * EXP exponential * LAST = end of enum (used for array indexing)


enum @

This enum is anonymous

enum {
    PLUCK_MODE_RECURSIVE,
    PLUCK_MODE_WEIGHTED_AVERAGE,
    PLUCK_LAST,
};

The method of natural decay that the algorithm will use. * RECURSIVE: 1st order recursive filter, with coefs .5. * WEIGHTED_AVERAGE: weighted averaging.


Public Static Attributes Documentation

variable kOneTwelfth

constexpr float daisysp::kOneTwelfth;

variable kRandFrac

constexpr float daisysp::kRandFrac;

Public Functions Documentation

function NextBlepSample

inline float daisysp::NextBlepSample (
    float t
) 

Ported from pichenettes/eurorack/plaits/dsp/oscillator/oscillator.h


function NextIntegratedBlepSample

inline float daisysp::NextIntegratedBlepSample (
    float t
) 

Ported from pichenettes/eurorack/plaits/dsp/oscillator/oscillator.h


function SoftClip

inline float daisysp::SoftClip (
    float x
) 

Soft Clipping function extracted from pichenettes/stmlib


function SoftLimit

inline float daisysp::SoftLimit (
    float x
) 

Soft Limiting function ported extracted from pichenettes/stmlib


function TestFloat

inline void daisysp::TestFloat (
    float & x,
    float y=0. f
) 

Quick check for Invalid float values (NaN, Inf, out of range)

Parameters:

  • x value passed by reference, replaced by y if invalid.
  • y value to replace x if invalidity is found.

When DEBUG is true in the build, this will halt execution for tracing the reason for the invalidity.


function ThisBlepSample

inline float daisysp::ThisBlepSample (
    float t
) 

Ported from pichenettes/eurorack/plaits/dsp/oscillator/oscillator.h


function ThisIntegratedBlepSample

inline float daisysp::ThisIntegratedBlepSample (
    float t
) 

Ported from pichenettes/eurorack/plaits/dsp/oscillator/oscillator.h


function fastlog10f

inline float daisysp::fastlog10f (
    float f
) 

function fastlog2f

inline float daisysp::fastlog2f (
    float f
) 

function fastmod1f

inline float daisysp::fastmod1f (
    float x
) 

Significantly more efficient than fmodf(x, 1.0f) for calculating the decimal part of a floating point value.


function fastpower

inline float daisysp::fastpower (
    float f,
    int n
) 

From Musicdsp.org "Fast power and root estimates for 32bit floats) Original code by Stefan Stenzel These are approximations


function fastroot

inline float daisysp::fastroot (
    float f,
    int n
) 

function fclamp

inline float daisysp::fclamp (
    float in,
    float min,
    float max
) 

quick fp clamp


function fmap

inline float daisysp::fmap (
    float in,
    float min,
    float max,
    Mapping curve=Mapping::LINEAR
) 

Maps a float between a specified range, using a specified curve.

Parameters:

  • in a value between 0 to 1 that will be mapped to the new range.
  • min the new minimum value
  • max the new maxmimum value
  • curve a Mapping Value to adjust the response curve of the transformation defaults to Linear.

See also: Mapping When using the log curve min and max, must be greater than zero.

Return value:

  • returns the transformed float within the new range.

function fmax

inline float daisysp::fmax (
    float a,
    float b
) 

efficient floating point min/max ℅ stephen mccaul


function fmin

inline float daisysp::fmin (
    float a,
    float b
) 

function fonepole

inline void daisysp::fonepole (
    float & out,
    float in,
    float coeff
) 

one pole lpf out is passed by reference, and must be retained between calls to properly filter the signal coeff can be calculated: coeff = 1.0 / (time * sample_rate) ; where time is in seconds


function get_next_power2

inline uint32_t daisysp::get_next_power2 (
    uint32_t x
) 

Prior to C++14 constexpr functions were required to be a single return statement. So this clause guards against that behavior to allow the library, and this function to continue to work with C++11. The function itself is not currently (12 May 2021) used within the library itself.


function is_power2

constexpr  bool daisysp::is_power2 (
    uint32_t x
) 

function median

template<typename T>
T daisysp::median (
    T a,
    T b,
    T c
) 

Simple 3-point median filter ℅ stephen mccaul


function mtof

inline float daisysp::mtof (
    float m
) 

Midi to frequency helper


function myrand

inline uint32_t daisysp::myrand () 

function pow10f

inline float daisysp::pow10f (
    float f
) 

From http://openaudio.blogspot.com/2017/02/faster-log10-and-pow.html No approximation, pow10f(x) gives a 90% speed increase over powf(10.f, x)


function soft_saturate

inline float daisysp::soft_saturate (
    float in,
    float thresh
) 

Based on soft saturate from: musicdsp.org Bram de Jong (2002-01-17) This still needs to be tested/fixed. Definitely does some weird stuff described as: x < a: f(x) = x x > a: f(x) = a + (x-a)/(1+((x-a)/(1-a))^2) x > 1: f(x) = (a + 1)/2


Public Static Functions Documentation

function hash_xs32

static inline uint32_t daisysp::hash_xs32 (
    uint32_t x
) 


The documentation for this class was generated from the following file external-docs/DaisySP/Source/Control/adenv.h