{-# OPTIONS_HADDOCK show-extensions #-}
{-# LANGUAGE NoRebindableSyntax #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE PartialTypeSignatures #-}
{-# LANGUAGE TypeFamilies, NoMonoLocalBinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE NoIncoherentInstances #-}
{-# LANGUAGE NoUndecidableInstances #-}
module Vivid.UGens.Args where
import Vivid.SC.SynthDef.Types (CalculationRate(..))
import Vivid.SynthDef
import Vivid.SynthDef.FromUA
import qualified Data.ByteString.UTF8 as UTF8 (fromString)
import qualified Data.Map as Map
a_ :: ToSig s as => s -> UA "a" as
a_ = UA . toSig
a0_ :: ToSig s as => s -> UA "a0" as
a0_ = UA . toSig
a1_ :: ToSig s as => s -> UA "a1" as
a1_ = UA . toSig
a2_ :: ToSig s as => s -> UA "a2" as
a2_ = UA . toSig
active_ :: ToSig s as => s -> UA "active" as
active_ = UA . toSig
add_ :: ToSig s as => s -> UA "add" as
add_ = UA . toSig
ampThreshold_ :: ToSig s as => s -> UA "ampThreshold" as
ampThreshold_ = UA . toSig
aReal_ :: ToSig s as => s -> UA "aReal" as
aReal_ = UA . toSig
areal_ :: ToSig s as => s -> UA "aReal" as
areal_ = aReal_
aImag_ :: ToSig s as => s -> UA "aImag" as
aImag_ = UA . toSig
aimag_ :: ToSig s as => s -> UA "aImag" as
aimag_ = aImag_
attackSecs_ :: ToSig s as => s -> UA "attackSecs" as
attackSecs_ = UA . toSig
attackTime_ :: ToSig s as => s -> UA "attackSecs" as
attackTime_ = attackSecs_
b_ :: ToSig s as => s -> UA "b" as
b_ = UA . toSig
b1_ :: ToSig s as => s -> UA "b1" as
b1_ = UA . toSig
b2_ :: ToSig s as => s -> UA "b2" as
b2_ = UA . toSig
bias_ :: ToSig s as => s -> UA "bias" as
bias_ = UA . toSig
bins_ :: ToSig s as => s -> UA "bins" as
bins_ = UA . toSig
bits_ :: ToSig s as => s -> UA "bits" as
bits_ = UA . toSig
buf_ :: ToSig s as => s -> UA "buf" as
buf_ = UA . toSig
buffer_ :: ToSig s as => s -> UA "buf" as
buffer_ = buf_
bus_ :: ToSig s as => s -> UA "bus" as
bus_ = UA . toSig
bw_ :: ToSig s as => s -> UA "bw" as
bw_ = UA . toSig
bwFreq_ :: ToSig s as => s -> UA "bwFreq" as
bwFreq_ = UA . toSig
bwr_ :: ToSig s as => s -> UA "bwr" as
bwr_ = UA . toSig
c_ :: ToSig s as => s -> UA "c" as
c_ = UA . toSig
chans_ :: ToSig s as => s -> UA "numChans" as
chans_ = numChans_
clampSecs_ :: ToSig s as => s -> UA "clampSecs" as
clampSecs_ = UA . toSig
clampTime_ :: ToSig s as => s -> UA "clampSecs" as
clampTime_ = clampSecs_
clar_ :: ToSig s as => s -> UA "clar" as
clar_ = UA . toSig
coef_ :: ToSig s as => s -> UA "coef" as
coef_ = UA . toSig
control_ :: ToSig s as => s -> UA "control" as
control_ = UA . toSig
crossFade_ :: ToSig s as => s -> UA "crossFade" as
crossFade_ = UA . toSig
crossfade_ :: ToSig s as => s -> UA "crossFade" as
crossfade_ = UA . toSig
curve_curve :: Int -> UA "curve" as
curve_curve = UA . return . Constant . realToFrac
damp_ :: ToSig s as => s -> UA "damp" as
damp_ = UA . toSig
damping_ :: ToSig s as => s -> UA "damping" as
damping_ = UA . toSig
db_ :: ToSig s as => s -> UA "db" as
db_ = UA . toSig
decaySecs_ :: ToSig s as => s -> UA "decaySecs" as
decaySecs_ = UA . toSig
decayTime_ :: ToSig s as => s -> UA "decaySecs" as
decayTime_ = decaySecs_
decaytime_ :: ToSig s as => s -> UA "decaySecs" as
decaytime_ = decaySecs_
default_ :: ToSig s as => s -> UA "default" as
default_ = UA . toSig
delay_ :: ToSig s as => s -> UA "delaySecs" as
delay_ = delaySecs_
delaySecs_ :: ToSig s as => s -> UA "delaySecs" as
delaySecs_ = UA . toSig
delayTime_ :: ToSig s as => s -> UA "delaySecs" as
delayTime_ = delaySecs_
delaytime_ :: ToSig s as => s -> UA "delaySecs" as
delaytime_ = delaySecs_
density_ :: ToSig s as => s -> UA "density" as
density_ = UA . toSig
depth_ :: ToSig s as => s -> UA "depth" as
depth_ = UA . toSig
depthVariation_ :: ToSig s as => s -> UA "depthVariation" as
depthVariation_ = UA . toSig
div_ :: ToSig s as => s -> UA "div" as
div_ = UA . toSig
dn_ :: ToSig s as => s -> UA "dn" as
dn_ = UA . toSig
doneAction_ :: ToSig s as => s -> UA "doneAction" as
doneAction_ = UA . toSig
downSample_ :: ToSig s as => s -> UA "downSample" as
downSample_ = UA . toSig
dryLevel_, drylevel_ :: ToSig s as => s -> UA "dryLevel" as
dryLevel_ = UA . toSig
drylevel_ = dryLevel_
dsthi_ :: ToSig s as => s -> UA "dsthi" as
dsthi_ = UA . toSig
dstlo_ :: ToSig s as => s -> UA "dstlo" as
dstlo_ = UA . toSig
dur_ :: ToSig s as => s -> UA "duration" as
dur_ = duration_
duration_ :: ToSig s as => s -> UA "duration" as
duration_ = UA . toSig
earlyRefLevel_, earlyreflevel_ :: ToSig s as => s -> UA "earlyRefLevel" as
earlyRefLevel_ = UA . toSig
earlyreflevel_ = earlyRefLevel_
end_ :: ToSig s as => s -> UA "end" as
end_ = UA . toSig
execFreq_ :: ToSig s as => s -> UA "execFreq" as
execFreq_ = UA . toSig
exp_ :: ToSig s as => s -> UA "exponent" as
exp_ = exponent_
exponent_ :: ToSig s as => s -> UA "exponent" as
exponent_ = UA . toSig
fftSize_ :: ToSig s as => s -> UA "fftSize" as
fftSize_ = UA . toSig
fftsize_ :: ToSig s as => s -> UA "fftSize" as
fftsize_ = fftSize_
formFreq_ :: ToSig s as => s -> UA "formFreq" as
formFreq_ = UA . toSig
frames_ :: ToSig s as => s -> UA "numFrames" as
frames_ = numFrames_
frameSize_ :: ToSig s as => s -> UA "frameSize" as
frameSize_ = UA . toSig
framesize_ :: ToSig s as => s -> UA "frameSize" as
framesize_ = frameSize_
freeze_ :: ToSig s as => s -> UA "freeze" as
freeze_ = UA . toSig
freq_ :: ToSig s as => s -> UA "freq" as
freq_ = UA . toSig
friction_ :: ToSig s as => s -> UA "friction" as
friction_ = UA . toSig
fundFreq_ :: ToSig s as => s -> UA "fundFreq" as
fundFreq_ = UA . toSig
g_ :: ToSig s as => s -> UA "g" as
g_ = UA . toSig
gain_ :: ToSig s as => s -> UA "gain" as
gain_ = UA . toSig
gate_ :: ToSig s as => s -> UA "gate" as
gate_ = UA . toSig
hi_ :: ToSig s as => s -> UA "hi" as
hi_ = UA . toSig
hop_ :: ToSig s as => s -> UA "hop" as
hop_ = UA . toSig
id_ :: ToSig s as => s -> UA "id" as
id_ = UA . toSig
in_ :: ToSig s as => s -> UA "in" as
in_ = UA . toSig
initFreq_ :: ToSig s as => s -> UA "initFreq" as
initFreq_ = UA . toSig
inputBW_, inputbw_ :: ToSig s as => s -> UA "inputBW" as
inputBW_ = UA . toSig
inputbw_ = inputBW_
integrate_ :: ToSig s as => s -> UA "integrate" as
integrate_ = UA . toSig
interp_ :: ToSig s as => s -> UA "interp" as
interp_ = UA . toSig
interpolation_ :: ToSig s as => s -> UA "interp" as
interpolation_ = interp_
iphase_ :: ToSig s as => s -> UA "iphase" as
iphase_ = UA . toSig
irBufNum_ :: ToSig s as => s -> UA "irBufNum" as
irBufNum_ = UA . toSig
irbufnum_ :: ToSig s as => s -> UA "irBufNum" as
irbufnum_ = irBufNum_
kernel_ :: ToSig s as => s -> UA "kernel" as
kernel_ = UA . toSig
lag_ :: ToSig s as => s -> UA "lagSecs" as
lag_ = UA . toSig
lagSecs_ :: ToSig s as => s -> UA "lagSecs" as
lagSecs_ = UA . toSig
lagTime_ :: ToSig s as => s -> UA "lagSecs" as
lagTime_ = lagSecs_
length_ :: ToSig s as => s -> UA "length" as
length_ = UA . toSig
level_ :: ToSig s as => s -> UA "level" as
level_ = UA . toSig
lo_ :: ToSig s as => s -> UA "lo" as
lo_ = UA . toSig
loop_ :: ToSig s as => s -> UA "loop" as
loop_ = UA . toSig
m_ :: ToSig s as => s -> UA "m" as
m_ = UA . toSig
max_ :: ToSig s as => s -> UA "max" as
max_ = UA . toSig
maxBinsPerOctave_ :: ToSig s as => s -> UA "maxBinsPerOctave" as
maxBinsPerOctave_ = UA . toSig
maxDelaySecs_ :: ToSig s as => s -> UA "maxDelaySecs" as
maxDelaySecs_ = UA . toSig
maxDelayTime_ :: ToSig s as => s -> UA "maxDelaySecs" as
maxDelayTime_ = UA . toSig
maxdelaytime_ :: ToSig s as => s -> UA "maxDelaySecs" as
maxdelaytime_ = maxDelayTime_
maxFreq_ :: ToSig s as => s -> UA "maxFreq" as
maxFreq_ = UA . toSig
maxRoomSize_, maxroomsize_ :: ToSig s as => s -> UA "maxRoomSize" as
maxRoomSize_ = UA . toSig
maxroomsize_ = maxRoomSize_
maxVal_ :: ToSig s as => s -> UA "max" as
maxVal_ = UA . toSig
median_ :: ToSig s as => s -> UA "median" as
median_ = UA . toSig
min_ :: ToSig s as => s -> UA "min" as
min_ = UA . toSig
minFreq_ :: ToSig s as => s -> UA "minFreq" as
minFreq_ = UA . toSig
minmax_ :: ToSig s as => s -> UA "minmax" as
minmax_ = UA . toSig
minVal_ :: ToSig s as => s -> UA "min" as
minVal_ = UA . toSig
mix_ :: ToSig s as => s -> UA "mix" as
mix_ = UA . toSig
mul_ :: ToSig s as => s -> UA "mul" as
mul_ = UA . toSig
numChans_ :: ToSig s as => s -> UA "numChans" as
numChans_ = UA . toSig
numFrames_ :: ToSig s as => s -> UA "numFrames" as
numFrames_ = UA . toSig
numTeeth_ :: ToSig s as => s -> UA "numTeeth" as
numTeeth_ = UA . toSig
offset_ :: ToSig s as => s -> UA "offset" as
offset_ = UA . toSig
onset_ :: ToSig s as => s -> UA "onset" as
onset_ = UA . toSig
peakLevel_ :: ToSig s as => s -> UA "peakLevel" as
peakLevel_ = UA . toSig
peakThreshold_ :: ToSig s as => s -> UA "peakThreshold" as
peakThreshold_ = UA . toSig
phase_ :: ToSig s as => s -> UA "phase" as
phase_ = UA . toSig
pitchDispersion_ :: ToSig s as => s -> UA "pitchDispersion" as
pitchDispersion_ = UA . toSig
pos_ :: ToSig s as => s -> UA "pos" as
pos_ = UA . toSig
post_ :: ToSig s as => s -> UA "post" as
post_ = UA . toSig
preLevel_ :: ToSig s as => s -> UA "preLevel" as
preLevel_ = UA . toSig
rate_ :: ToSig s as => s -> UA "rate" as
rate_ = UA . toSig
rateVariation_ :: ToSig s as => s -> UA "rateVariation" as
rateVariation_ = UA . toSig
radius_ :: ToSig s as => s -> UA "radius" as
radius_ = UA . toSig
ratio_ :: ToSig s as => s -> UA "ratio" as
ratio_ = UA . toSig
recLevel_ :: ToSig s as => s -> UA "recLevel" as
recLevel_ = UA . toSig
relaxSecs_ :: ToSig s as => s -> UA "relaxSecs" as
relaxSecs_ = UA . toSig
relaxTime_ :: ToSig s as => s -> UA "relaxSecs" as
relaxTime_ = UA . toSig
releaseSecs_ :: ToSig s as => s -> UA "releaseSecs" as
releaseSecs_ = UA . toSig
releaseTime_ :: ToSig s as => s -> UA "releaseSecs" as
releaseTime_ = releaseSecs_
repeats_ :: ToSig s as => s -> UA "repeats" as
repeats_ = UA . toSig
reps_ :: ToSig s as => s -> UA "repeats" as
reps_ = repeats_
reset_ :: ToSig s as => s -> UA "reset" as
reset_ = UA . toSig
resetPos_ :: ToSig s as => s -> UA "resetPos" as
resetPos_ = UA . toSig
revTime_, revtime_ :: ToSig s as => s -> UA "revTime" as
revTime_ = UA . toSig
revtime_ = revTime_
room_ :: ToSig s as => s -> UA "room" as
room_ = UA . toSig
roomSize_ :: ToSig s as => s -> UA "roomSize" as
roomSize_ = UA . toSig
roomsize_ :: ToSig s as => s -> UA "roomSize" as
roomsize_ = roomSize_
root_ :: ToSig s as => s -> UA "root" as
root_ = UA . toSig
rq_ :: ToSig s as => s -> UA "rq" as
rq_ = UA . toSig
rs_ :: ToSig s as => s -> UA "rs" as
rs_ = UA . toSig
run_ :: ToSig s as => s -> UA "run" as
run_ = UA . toSig
sawFreq_ :: ToSig s as => s -> UA "sawFreq" as
sawFreq_ = UA . toSig
secs_ :: ToSig s as => s -> UA "secs" as
secs_ = UA . toSig
shift_ :: ToSig s as => s -> UA "shift" as
shift_ = UA . toSig
slopeAbove_ :: ToSig s as => s -> UA "slopeAbove" as
slopeAbove_ = UA . toSig
slopeBelow_ :: ToSig s as => s -> UA "slopeBelow" as
slopeBelow_ = UA . toSig
spread_ :: ToSig s as => s -> UA "spread" as
spread_ = UA . toSig
spring_ :: ToSig s as => s -> UA "spring" as
spring_ = UA . toSig
srchi_ :: ToSig s as => s -> UA "srchi" as
srchi_ = UA . toSig
srclo_ :: ToSig s as => s -> UA "srclo" as
srclo_ = UA . toSig
startPos_ :: ToSig s as => s -> UA "startPos" as
startPos_ = UA . toSig
start_ :: ToSig s as => s -> UA "start" as
start_ = UA . toSig
step_ :: ToSig s as => s -> UA "step" as
step_ = UA . toSig
stretch_ :: ToSig s as => s -> UA "stretch" as
stretch_ = UA . toSig
susLevel_ :: ToSig s as => s -> UA "susLevel" as
susLevel_ = UA . toSig
syncFreq_ :: ToSig s as => s -> UA "syncFreq" as
syncFreq_ = UA . toSig
tailLevel_, taillevel_ :: ToSig s as => s -> UA "tailLevel" as
tailLevel_ = UA . toSig
taillevel_ = tailLevel_
threshold_ :: ToSig s as => s -> UA "threshold" as
threshold_ = UA . toSig
thresh_ :: ToSig s as => s -> UA "threshold" as
thresh_ = threshold_
timeDispersion_ :: ToSig s as => s -> UA "timeDispersion" as
timeDispersion_ = UA . toSig
trig_ :: ToSig s as => s -> UA "trigger" as
trig_ = trigger_
trigger_ :: ToSig s as => s -> UA "trigger" as
trigger_ = UA . toSig
trigid_ :: ToSig s as => s -> UA "trigid" as
trigid_ = UA . toSig
ug_ :: ToSig s as => s -> UA "ugen" as
ug_ = UA . toSig
ugen_ :: ToSig s as => s -> UA "ugen" as
ugen_ = UA . toSig
up_ :: ToSig s as => s -> UA "up" as
up_ = UA . toSig
warp_ :: ToSig s as => s -> UA "warp" as
warp_ = UA . toSig
width_ :: ToSig s as => s -> UA "width" as
width_ = UA . toSig
wipe_ :: (ToSig s as) => s -> UA "wipe" as
wipe_ = UA . toSig
winsize_ :: ToSig s as => s -> UA "windowSize" as
winsize_ = windowSize_
windowSize_ :: ToSig s as => s -> UA "windowSize" as
windowSize_ = UA . toSig
wintype_ :: ToSig s as => s -> UA "windowType" as
wintype_ = windowType_
windowType_ :: ToSig s as => s -> UA "windowType" as
windowType_ = UA . toSig
xi_ :: ToSig s as => s -> UA "xi" as
xi_ = UA . (toSig)
makeMakeUGen :: (
GetSymbolVals (Vs tags)
, FromUA optional
, FromUA userSupplied
, SDBodyArgs optional ~ SDBodyArgs userSupplied
, SDBodyArgs optional ~ args
) => (UGen -> SDBody' args x) -> Int -> String -> CalculationRate -> Vs tags -> optional -> (userSupplied -> SDBody' args x)
makeMakeUGen addUGenF numOuts sdName calcRate tagList defaultArgs = \userSupplied -> do
theArgList <- Map.fromList <$> fromUAWithDefaults (DefaultArgs defaultArgs) (OverwritingArgs userSupplied)
let signals =
map (\k -> Map.findWithDefault (error $ "that's weird (likely a ugen with a typo in 'Vs'): "++sdName++":"++k) k theArgList) $ getSymbolVals tagList
addUGenF $ UGen (UGName_S (UTF8.fromString sdName)) calcRate (signals :: [Signal]) numOuts
makeMonoUGen, makeUGen :: (
GetSymbolVals (Vs tags)
, FromUA optional
, FromUA userSupplied
, SDBodyArgs optional ~ SDBodyArgs userSupplied
, SDBodyArgs optional ~ args
) => String -> CalculationRate -> Vs tags -> optional -> (userSupplied -> SDBody' args Signal)
makeMonoUGen = makeMakeUGen addMonoUGen 1
makeUGen = makeMonoUGen
makePolyUGen :: (
GetSymbolVals (Vs tags)
, FromUA optional
, FromUA userSupplied
, SDBodyArgs optional ~ SDBodyArgs userSupplied
, SDBodyArgs optional ~ args
) => Int -> String -> CalculationRate -> Vs tags -> optional -> (userSupplied -> SDBody' args [Signal])
makePolyUGen n = makeMakeUGen addPolyUGen n