module Sound.Sc3.Ugen.Envelope where
import Sound.Sc3.Common.Enum
import Sound.Sc3.Common.Envelope
import Sound.Sc3.Common.Math.Operator
import Sound.Sc3.Common.Rate
import Sound.Sc3.Ugen.Bindings
import Sound.Sc3.Ugen.Ugen
import Sound.Sc3.Ugen.Util
envTrapezoid :: OrdE t => t -> t -> t -> t -> Envelope t
envTrapezoid :: forall t. OrdE t => t -> t -> t -> t -> Envelope t
envTrapezoid = forall t.
Num t =>
(t -> t -> t, t -> t -> t) -> t -> t -> t -> t -> Envelope t
envTrapezoid_f (forall a. OrdE a => a -> a -> a
less_than_or_equal_to,forall a. OrdE a => a -> a -> a
greater_than_or_equal_to)
first_zero_then_one :: Rate -> Ugen
first_zero_then_one :: Rate -> Ugen
first_zero_then_one Rate
rt = Ugen -> Ugen -> Ugen
latch Ugen
1 (Rate -> Ugen -> Ugen -> Ugen
impulse Rate
rt Ugen
0 Ugen
0)
env_circle_u :: Ugen -> Envelope_Curve Ugen -> Envelope Ugen -> Envelope Ugen
env_circle_u :: Ugen -> Envelope_Curve Ugen -> Envelope Ugen -> Envelope Ugen
env_circle_u = forall a.
Fractional a =>
a -> a -> Envelope_Curve a -> Envelope a -> Envelope a
env_circle_z (Rate -> Ugen
first_zero_then_one Rate
ControlRate)
envGate :: Ugen -> Ugen -> Ugen -> DoneAction Ugen -> Envelope_Curve Ugen -> Ugen
envGate :: Ugen
-> Ugen -> Ugen -> DoneAction Ugen -> Envelope_Curve Ugen -> Ugen
envGate Ugen
level Ugen
gate_ Ugen
fadeTime DoneAction Ugen
doneAction Envelope_Curve Ugen
curve =
let startVal :: Ugen
startVal = Ugen
fadeTime forall a. OrdE a => a -> a -> a
`less_than_or_equal_to` Ugen
0
e :: Envelope Ugen
e = forall a.
[a]
-> [a]
-> [Envelope_Curve a]
-> Maybe Int
-> Maybe Int
-> a
-> Envelope a
Envelope [Ugen
startVal,Ugen
1,Ugen
0] [Ugen
1,Ugen
1] [Envelope_Curve Ugen
curve] (forall a. a -> Maybe a
Just Int
1) forall a. Maybe a
Nothing Ugen
0
in Rate
-> Ugen
-> Ugen
-> Ugen
-> Ugen
-> DoneAction Ugen
-> Envelope Ugen
-> Ugen
envGen Rate
ControlRate Ugen
gate_ Ugen
level Ugen
0 Ugen
fadeTime DoneAction Ugen
doneAction Envelope Ugen
e
envGate_def :: Ugen
envGate_def :: Ugen
envGate_def =
let level :: Ugen
level = Ugen
1
gate_ :: Ugen
gate_ = Rate -> String -> Double -> Control_Meta_T3 Double -> Ugen
control_m Rate
ControlRate String
"gate" Double
1 (Double
0,Double
1,String
"gate")
fadeTime :: Ugen
fadeTime = Rate -> String -> Double -> Control_Meta_T3 Double -> Ugen
control_m Rate
ControlRate String
"fadeTime" Double
0.02 (Double
0,Double
10,String
"lin")
doneAction :: DoneAction t
doneAction = forall t. DoneAction t
RemoveSynth
curve :: Envelope_Curve a
curve = forall a. Envelope_Curve a
EnvSin
in Ugen
-> Ugen -> Ugen -> DoneAction Ugen -> Envelope_Curve Ugen -> Ugen
envGate Ugen
level Ugen
gate_ Ugen
fadeTime forall t. DoneAction t
doneAction forall a. Envelope_Curve a
curve