vivid-0.5.0.0: Vivid/UGens/Args.hs
-- | UGen argument labels
--
-- These are usually named the same as their sclang counterparts.
{-# OPTIONS_HADDOCK show-extensions #-}
{-# LANGUAGE NoRebindableSyntax #-}
{-# LANGUAGE
ConstraintKinds
, DataKinds
, ExistentialQuantification
, NoMonomorphismRestriction
, FlexibleContexts
, FlexibleInstances
, KindSignatures
, PartialTypeSignatures
, TypeFamilies, NoMonoLocalBinds
, TypeOperators
#-}
{-# LANGUAGE NoIncoherentInstances #-}
{-# LANGUAGE NoUndecidableInstances #-}
module Vivid.UGens.Args where
import Vivid.SC.SynthDef.Types (CalculationRate(..))
import Vivid.SynthDef
import Vivid.SynthDef.FromUA
-- import Vivid.SynthDef.TypesafeArgs (getSymbolVals)
import qualified Data.ByteString.UTF8 as UTF8 (fromString)
import qualified Data.Map as Map
-- import Data.Monoid
-- import GHC.TypeLits
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
-- | SC compatibility
areal_ :: ToSig s as => s -> UA "aReal" as
areal_ = aReal_
aImag_ :: ToSig s as => s -> UA "aImag" as
aImag_ = UA . toSig
-- | SC compatibility
aimag_ :: ToSig s as => s -> UA "aImag" as
aimag_ = aImag_
attackSecs_ :: ToSig s as => s -> UA "attackSecs" as
attackSecs_ = UA . toSig
-- | Alias of 'attackSecs_', for SC compatibility
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
-- | For SC compatibility -- alias of 'buf_'
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
-- Maybe should actually just be "bw"?:
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
-- | Alias of 'numChans_'
chans_ :: ToSig s as => s -> UA "numChans" as
chans_ = numChans_
clampSecs_ :: ToSig s as => s -> UA "clampSecs" as
clampSecs_ = UA . toSig
-- | Alias of 'clampSecs_', for SC compatibility
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
-- | For SC compatibility -- alias of 'crossFade_'
crossfade_ :: ToSig s as => s -> UA "crossFade" as
crossfade_ = UA . toSig
-- | **This may change in the future**
curve_curve :: Int -> UA "curve" as
curve_curve = UA . return . Constant . realToFrac
{-
curve_step = 0
curve_linear = 1
curve_lin = 1
curve_exponential = 2
curve_exp = 2
curve_sine = 3
curve_sin = 3
curve_welch = 4
curve_wel = 4
curve_squared = 6
curve_sqr = 6
curve_cubed = 7
curve_cub = 7
envCurveNumber (Curve_Curve _) = 5
-}
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
-- | Alias of 'decaySecs_' for SC compatibility
decayTime_ :: ToSig s as => s -> UA "decaySecs" as
decayTime_ = decaySecs_
decayScale_ :: ToSig s as => s -> UA "decayScale" as
decayScale_ = UA . toSig
-- | SC compatibility
decayscale_ :: ToSig s as => s -> UA "decayScale" as
decayscale_ = decayScale_
-- | Alias of 'decaySecs_' for SC compatibility
decaytime_ :: ToSig s as => s -> UA "decaySecs" as
decaytime_ = decaySecs_
default_ :: ToSig s as => s -> UA "default" as
default_ = UA . toSig
-- | Alias of 'delaySecs_' for SC compatibility
delay_ :: ToSig s as => s -> UA "delaySecs" as
delay_ = delaySecs_
delaySecs_ :: ToSig s as => s -> UA "delaySecs" as
delaySecs_ = UA . toSig
-- | Alias of 'delaySecs_' for SC compatibility
delayTime_ :: ToSig s as => s -> UA "delaySecs" as
delayTime_ = delaySecs_
-- | Alias of 'delaySecs_' for SC compatibility
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
-- | Alias of 'duration_'
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
-- | Alias of 'exponent_'
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
-- | For SC compatibility -- alias of 'fftSize_'
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
-- | For SC compatibility -- alias of 'frameSize_'
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
freqOffset_ :: ToSig s as => s -> UA "freqOffset" as
freqOffset_ = UA . toSig
-- | SC compatibility:
freqoffset_ :: ToSig s as => s -> UA "freqOffset" as
freqoffset_ = freqOffset_
freqScale_ :: ToSig s as => s -> UA "freqScale" as
freqScale_ = UA . toSig
-- | SC compatibility:
freqscale_ :: ToSig s as => s -> UA "freqScale" as
freqscale_ = freqScale_
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
-- | Interpolation
interp_ :: ToSig s as => s -> UA "interp" as
interp_ = UA . toSig
-- | For SC compatibility -- alias of 'interp_'
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
-- | For SC compatibility -- alias of 'irBufSize_'
irbufnum_ :: ToSig s as => s -> UA "irBufNum" as
irbufnum_ = irBufNum_
kernel_ :: ToSig s as => s -> UA "kernel" as
kernel_ = UA . toSig
-- | Alias, for SC compatibility
lag_ :: ToSig s as => s -> UA "lagSecs" as
lag_ = UA . toSig
lagSecs_ :: ToSig s as => s -> UA "lagSecs" as
lagSecs_ = UA . toSig
-- | For SC compatibility:
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
-- | Alias of 'maxDelaySecs_' for SC compatibility
maxDelayTime_ :: ToSig s as => s -> UA "maxDelaySecs" as
maxDelayTime_ = UA . toSig
-- | Alias of 'maxDelaySecs_' for SC compatibility
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_
-- | Alias of 'max_', for SC compatibility
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
-- | Alias of 'min_', for SC compatibility
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
-- | Alias of 'relaxSecs_' for SC compatibility
relaxTime_ :: ToSig s as => s -> UA "relaxSecs" as
relaxTime_ = UA . toSig
releaseSecs_ :: ToSig s as => s -> UA "releaseSecs" as
releaseSecs_ = UA . toSig
-- | Alias of 'releaseSecs_', for SC compatibility
releaseTime_ :: ToSig s as => s -> UA "releaseSecs" as
releaseTime_ = releaseSecs_
repeats_ :: ToSig s as => s -> UA "repeats" as
repeats_ = UA . toSig
-- | Shorter alias for 'repeats_'
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
-- | Alias, for compatibility
revtime_ = revTime_
room_ :: ToSig s as => s -> UA "room" as
room_ = UA . toSig
roomSize_ :: ToSig s as => s -> UA "roomSize" as
roomSize_ = UA . toSig
-- | Alias, for compatibility
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
-- | Alias for "threshold_"
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_
-- | You can use "trig_" instead
trigger_ :: ToSig s as => s -> UA "trigger" as
trigger_ = UA . toSig
trigid_ :: ToSig s as => s -> UA "trigid" as
trigid_ = UA . toSig
-- | Short alias for 'ugen_'
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
-- | Alias of 'windowSize_'
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)
-- this one gives you:
-- (same as above but "args" at the end there)
-- Could not deduce (FromUA (UA "phase" args0))
-- (this is the same arg as if you have no type sig)
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 ugenName 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'): "++ugenName++":"++k) k theArgList) $ getSymbolVals tagList
addUGenF $ UGen (UGName_S (UTF8.fromString ugenName)) 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