tur/dsp
sine
(sine [freq :float phase :float])
sine-wave oscillator Signal Function.
| freq | frequency in Hz (float64) | |
| phase | initial phase offset in radians (float64) |
A Signal Function: sig -> (fn [t] sin(2*pi*freq*t + phase)).
(sine 440.0 0.0) ; => 440 Hz sine wave SF
square
(square [freq :float dutycycle :float])
square-wave oscillator Signal Function.
| freq | frequency in Hz (float64) | |
| dutycycle | duty cycle in [0,1] (float64) |
A Signal Function: sig -> (fn [t] 1.0 if phase < duty else -1.0).
(square 440.0 0.5) ; => 440 Hz square wave SF
sawtooth
(sawtooth [freq :float])
sawtooth-wave oscillator Signal Function.
| freq | frequency in Hz (float64) |
A Signal Function: sig -> (fn [t] frac(freq*t) in [0,1)).
(sawtooth 440.0) ; => 440 Hz sawtooth wave SF
low-pass
(low-pass [alpha :float])
first-order IIR low-pass filter Signal Function.
| alpha | smoothing coefficient in (0,1); lower = more smoothing. |
A Signal Function applying an exponential moving average: y[n] = a*x[n] + (1-a)*y[n-1].
(low-pass 0.5) ; => SF applying EMA with alpha=0.5
Since: Phase B1
high-pass
(high-pass [alpha :float])
first-order IIR high-pass filter Signal Function.
| alpha | filter coefficient in (0,1); higher = more high-frequency content. |
A Signal Function applying high-pass filtering: y[n] = x[n] - low_pass(x)[n].
(high-pass 0.5) ; => high-pass SF with alpha=0.5
Since: Phase B1
gain
(gain [g :float])
scale a signal by a constant factor.
| g | gain factor (float64) |
A Signal Function that multiplies each sample by g.
((gain 2.0) my-sig) ; => signal scaled by 2.0
mix
(mix [alpha :float])
weighted mix of a pair signal.
| alpha | mix coefficient in [0,1]: 0 = all first, 1 = all second. |
A Signal Function on Pair signals: out = alpha*a + (1-alpha)*b.
((mix 0.5) (pair-signals sig-a sig-b)) ; => equal mix
add
(add)
sum a pair signal sample-wise.
A Signal Function on Pair signals: out = a + b.
((add) (pair-signals sig-a sig-b)) ; => sum signal
Internal definitions
__dsp_sin-- compute sine of angle in radians.__dsp_fmod-- compute floating-point modulo.__dsp_alloc_state-- allocate a zero-initialized double-sized state cell.