Copyright | (c) Henning Thielemann 2008-2010 |
---|---|
License | GPL |
Maintainer | synthesizer@henning-thielemann.de |
Stability | provisional |
Portability | requires multi-parameter type classes |
Safe Haskell | None |
Language | Haskell2010 |
Synthesizer.Dimensional.Rate.Oscillator
Description
This module contains various oscillators that respect physical dimensions.
By using the type variable amp
we show,
that the oscillators are homogeneous functions.
But since there are even no restrictions on the sample type,
we even show that values from the waveform
go untouched to the output signal.
- static :: (C t, C u) => T t (T amp y) -> T t -> T (Recip u) t -> T s u t (Signal s amp y)
- freqMod :: (C t, C u) => T t (T amp y) -> T t -> T s u t (R s (Recip u) t t -> Signal s amp y)
- phaseMod :: (C t flat, C t, C u) => T t (T amp y) -> T (Recip u) t -> T s u t (Signal s flat t -> Signal s amp y)
- phaseFreqMod :: (C t flat, C t, C u) => T t (T amp y) -> T s u t (Signal s flat t -> R s (Recip u) t t -> Signal s amp y)
- shapeMod :: (C t, C u) => T (T cAmp c) t (T amp y) -> T t -> T (Recip u) t -> T s u t (Signal s cAmp c -> Signal s amp y)
- shapeFreqMod :: (C t, C u) => T (T cAmp c) t (T amp y) -> T t -> T s u t (Signal s cAmp c -> R s (Recip u) t t -> Signal s amp y)
- staticSample :: (C t, C u) => T t y -> T rate amp (T (T y)) -> T t -> T (Recip u) t -> T s u t (Signal s amp y)
- freqModSample :: (C t, C u) => T t y -> T rate amp (T (T y)) -> T t -> T s u t (R s (Recip u) t t -> Signal s amp y)
- shapeFreqModFromSampledTone :: (C t, C u, C t flat) => T t yv -> T t yv -> T (Recip u) t -> T (Dimensional u t) amp (T yv) -> t -> T t -> T s u t (Signal s flat t -> R s (Recip u) t t -> Signal s amp yv)
- shapePhaseFreqModFromSampledTone :: (C t, C u, C t flatS, C t flatP) => T t yv -> T t yv -> T (Recip u) t -> T (Dimensional u t) amp (T yv) -> t -> T t -> T s u t (Signal s flatS t -> Signal s flatP t -> R s (Recip u) t t -> Signal s amp yv)
Oscillators with constant waveforms
Arguments
:: (C t, C u) | |
=> T t (T amp y) | waveform |
-> T t | start phase |
-> T (Recip u) t | frequency |
-> T s u t (Signal s amp y) |
oscillator with a functional waveform with constant frequency
Arguments
:: (C t, C u) | |
=> T t (T amp y) | waveform |
-> T t | start phase |
-> T s u t (R s (Recip u) t t -> Signal s amp y) |
oscillator with a functional waveform with modulated frequency
Arguments
:: (C t flat, C t, C u) | |
=> T t (T amp y) | waveform |
-> T (Recip u) t | frequency |
-> T s u t (Signal s flat t -> Signal s amp y) |
oscillator with modulated phase
Arguments
:: (C t flat, C t, C u) | |
=> T t (T amp y) | waveform |
-> T s u t (Signal s flat t -> R s (Recip u) t t -> Signal s amp y) |
oscillator with a functional waveform with modulated phase and frequency
Arguments
:: (C t, C u) | |
=> T (T cAmp c) t (T amp y) | waveform |
-> T t | phase |
-> T (Recip u) t | frequency |
-> T s u t (Signal s cAmp c -> Signal s amp y) |
oscillator with modulated shape
Arguments
:: (C t, C u) | |
=> T (T cAmp c) t (T amp y) | waveform |
-> T t | phase |
-> T s u t (Signal s cAmp c -> R s (Recip u) t t -> Signal s amp y) |
oscillator with both shape and frequency modulation
Arguments
:: (C t, C u) | |
=> T t y | |
-> T rate amp (T (T y)) | waveform |
-> T t | start phase |
-> T (Recip u) t | frequency |
-> T s u t (Signal s amp y) |
oscillator with a sampled waveform with constant frequency
This is essentially an interpolation with cyclic padding.
You can also achieve this with a waveform constructed by sample
.
Arguments
:: (C t, C u) | |
=> T t y | |
-> T rate amp (T (T y)) | waveform |
-> T t | start phase |
-> T s u t (R s (Recip u) t t -> Signal s amp y) |
oscillator with a sampled waveform with modulated frequency Should behave homogenously for different types of interpolation.