{-# LANGUAGE DataKinds #-}

{-# LANGUAGE NoIncoherentInstances #-}
{-# LANGUAGE NoMonomorphismRestriction #-}

module Vivid.UGens.Examples where

import Vivid

import Vivid.SC.SynthDef.Types

-- | 'Dbrown' example from the SC help file
dbrown_example :: SDBody' args [Signal]
dbrown_example :: SDBody' args [Signal]
dbrown_example = do
   Signal
mx <- (UA "min" args, UA "max" args, UA "warp" args)
-> SDBody (UA "min" args, UA "max" args, UA "warp" args) Signal
forall a.
Args '[] '["min", "max", "warp", "lagSecs"] a =>
a -> SDBody a Signal
mouseX (Integer -> UA "min" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "min" as
min_ Integer
1, Integer -> UA "max" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "max" as
max_ Integer
40, Integer -> UA "warp" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "warp" as
warp_ Integer
1)
   Signal
imp <- UA "freq" args -> SDBody (UA "freq" args) Signal
forall a. Args '["freq"] '["phase"] a => a -> SDBody a Signal
impulse (Signal -> UA "freq" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "freq" as
freq_ Signal
mx) StateT ([Int], SynthDef args, VarSet args) Identity Signal
-> CalculationRate
-> StateT ([Int], SynthDef args, VarSet args) Identity Signal
forall (args :: [Symbol]).
SDBody' args Signal -> CalculationRate -> SDBody' args Signal
? CalculationRate
KR
   Signal
dbr <- (UA "lo" args, UA "hi" args, UA "step" args, UA "length" args)
-> SDBody
     (UA "lo" args, UA "hi" args, UA "step" args, UA "length" args)
     Signal
forall a.
Args '[] '["lo", "hi", "step", "length"] a =>
a -> SDBody a Signal
dbrown (Integer -> UA "lo" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "lo" as
lo_ Integer
0, Integer -> UA "hi" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "hi" as
hi_ Integer
15, Integer -> UA "step" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "step" as
step_ Integer
1, Float -> UA "length" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "length" as
length_ Float
inf)
   Signal
dem <- (UA "trigger" args, UA "reset" args, UA "ugen" args)
-> SDBody
     (UA "trigger" args, UA "reset" args, UA "ugen" args) Signal
forall a.
Args '["trigger", "reset", "ugen"] '[] a =>
a -> SDBody a Signal
demand (Signal -> UA "trigger" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "trigger" as
trig_ Signal
imp, Integer -> UA "reset" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "reset" as
reset_ Integer
0, Signal -> UA "ugen" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "ugen" as
ugen_ Signal
dbr)
   Signal
s <- Double
0.1 Double
-> StateT ([Int], SynthDef args, VarSet args) Identity Signal
-> StateT ([Int], SynthDef args, VarSet args) Identity Signal
forall i0 (a :: [Symbol]) i1.
(ToSig i0 a, ToSig i1 a) =>
i0 -> i1 -> SDBody' a Signal
~* UA "freq" args -> SDBody (UA "freq" args) Signal
forall a. Args '["freq"] '["phase"] a => a -> SDBody a Signal
sinOsc (StateT ([Int], SynthDef args, VarSet args) Identity Signal
-> UA "freq" args
forall s (as :: [Symbol]). ToSig s as => s -> UA "freq" as
freq_ (StateT ([Int], SynthDef args, VarSet args) Identity Signal
 -> UA "freq" args)
-> StateT ([Int], SynthDef args, VarSet args) Identity Signal
-> UA "freq" args
forall a b. (a -> b) -> a -> b
$ Signal
dem Signal
-> Integer
-> StateT ([Int], SynthDef args, VarSet args) Identity Signal
forall i0 (a :: [Symbol]) i1.
(ToSig i0 a, ToSig i1 a) =>
i0 -> i1 -> SDBody' a Signal
~* Integer
30 StateT ([Int], SynthDef args, VarSet args) Identity Signal
-> Integer
-> StateT ([Int], SynthDef args, VarSet args) Identity Signal
forall i0 (a :: [Symbol]) i1.
(ToSig i0 a, ToSig i1 a) =>
i0 -> i1 -> SDBody' a Signal
~+ Integer
340)
   Integer -> [Signal] -> SDBody' args [Signal]
forall i (a :: [Symbol]) busNum.
(ToSig i a, ToSig busNum a) =>
busNum -> [i] -> SDBody' a [Signal]
out Integer
0 [Signal
s,Signal
s]