module Synthesizer.Inference.Reader.Oscillator (
static,
freqMod,
phaseMod,
phaseFreqMod,
) where
import qualified Synthesizer.SampleRateContext.Oscillator as OsciC
import qualified Synthesizer.Basic.Wave as Wave
import qualified Synthesizer.Inference.Reader.Signal as SigR
import qualified Synthesizer.Inference.Reader.Process as Proc
import qualified Algebra.OccasionallyScalar as OccScalar
import qualified Algebra.RealField as RealField
import qualified Algebra.Field as Field
static :: (RealField.C t, Field.C t', OccScalar.C t t') =>
Wave.T t yv
-> y'
-> t
-> t'
-> Proc.T t t' (SigR.T y y' yv)
static wave amplitude phase freq =
SigR.lift (OsciC.static wave amplitude phase freq)
freqMod :: (RealField.C t, Field.C t', OccScalar.C t t') =>
Wave.T t yv
-> y'
-> t
-> Proc.T t t' (
SigR.T t t' t
-> SigR.T y y' yv)
freqMod wave amplitude phase =
SigR.lift (OsciC.freqMod wave amplitude phase)
phaseMod :: (RealField.C t, Field.C t', OccScalar.C t t') =>
Wave.T t yv
-> y'
-> t'
-> Proc.T t t' (
SigR.T t t t
-> SigR.T y y' yv)
phaseMod wave amplitude freq =
SigR.lift (OsciC.phaseMod wave amplitude freq)
phaseFreqMod :: (RealField.C t, Field.C t', OccScalar.C t t') =>
Wave.T t yv
-> y'
-> Proc.T t t' (
SigR.T t t t
-> SigR.T t t' t
-> SigR.T y y' yv)
phaseFreqMod wave amplitude =
SigR.lift (OsciC.phaseFreqMod wave amplitude)