module Sound.Sc3.Ugen.Bindings.Hw.External.Sc3_Plugins where
import Sound.Sc3.Common.Rate
import qualified Sound.Sc3.Ugen.Bindings.Db.External as X
import qualified Sound.Sc3.Ugen.Bindings.Hw.Construct as C
import Sound.Sc3.Ugen.Types
import qualified Sound.Sc3.Ugen.Util as Util
ayFreqToTone :: Fractional a => a -> a
ayFreqToTone :: forall a. Fractional a => a -> a
ayFreqToTone a
f = a
110300 a -> a -> a
forall a. Fractional a => a -> a -> a
/ (a
f a -> a -> a
forall a. Num a => a -> a -> a
- a
0.5)
ladspa :: Int -> Rate -> Ugen -> [Ugen] -> Ugen
ladspa :: Int -> Rate -> Ugen -> [Ugen] -> Ugen
ladspa Int
nc Rate
rt Ugen
k [Ugen]
z = Rate -> String -> [Ugen] -> Int -> Ugen
C.mkOsc Rate
rt String
"LADSPA" (Int -> Ugen
forall n. Real n => n -> Ugen
constant Int
nc Ugen -> [Ugen] -> [Ugen]
forall a. a -> [a] -> [a]
: Ugen
k Ugen -> [Ugen] -> [Ugen]
forall a. a -> [a] -> [a]
: [Ugen]
z) Int
nc
stkAt :: (Num t, Enum t) => String -> t
stkAt :: forall t. (Num t, Enum t) => String -> t
stkAt String
nm =
let nm_seq :: [String]
nm_seq =
[ String
"Clarinet"
, String
"BlowHole"
, String
"Saxofony"
, String
"Flute"
, String
"Brass"
, String
"BlowBotl"
, String
"Bowed"
, String
"Plucked"
, String
"StifKarp"
, String
"Sitar"
, String
"Mandolin"
, String
"Rhodey"
, String
"Wurley"
, String
"TubeBell"
, String
"HevyMetl"
, String
"PercFlut"
, String
"BeeThree"
, String
"FMVoices"
, String
"VoicForm"
, String
"Moog"
, String
"Simple"
, String
"Drummer"
, String
"BandedWG"
, String
"Shakers"
, String
"ModalBar"
, String
"Mesh2D"
, String
"Resonate"
, String
"Whistle"
]
tbl :: [(String, t)]
tbl = [String] -> [t] -> [(String, t)]
forall a b. [a] -> [b] -> [(a, b)]
zip [String]
nm_seq [t
0 ..]
in case String -> [(String, t)] -> Maybe t
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup String
nm [(String, t)]
tbl of
Just t
ix -> t
ix
Maybe t
Nothing -> String -> t
forall a. HasCallStack => String -> a
error String
"stkAt: unknown instr"
stkBowedI :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
stkBowedI :: Rate
-> Ugen
-> Ugen
-> Ugen
-> Ugen
-> Ugen
-> Ugen
-> Ugen
-> Ugen
-> Ugen
-> Ugen
stkBowedI Rate
rt Ugen
freq Ugen
gate_ Ugen
onamp Ugen
offamp Ugen
bowpressure Ugen
bowposition Ugen
vibfreq Ugen
vibgain Ugen
loudness =
let args :: Ugen
args = [Ugen] -> Ugen
mce [Ugen
2, Ugen
bowpressure, Ugen
4, Ugen
bowposition, Ugen
11, Ugen
vibfreq, Ugen
1, Ugen
vibgain, Ugen
128, Ugen
loudness]
in Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
X.stkInst Rate
rt (String -> Ugen
forall t. (Num t, Enum t) => String -> t
stkAt String
"Bowed") Ugen
freq Ugen
gate_ Ugen
onamp Ugen
offamp Ugen
args
stkGlobals :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
stkGlobals :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
stkGlobals Rate
rate Ugen
showWarnings Ugen
printErrors Ugen
rawfilepath =
Maybe ([Sample] -> Sample)
-> [Rate]
-> Either Rate [Int]
-> String
-> [Ugen]
-> Maybe [Ugen]
-> Int
-> Special
-> UgenId
-> Ugen
mkUgen Maybe ([Sample] -> Sample)
forall a. Maybe a
Nothing [Rate
ar] (Rate -> Either Rate [Int]
forall a b. a -> Either a b
Left Rate
rate) String
"StkGlobals" ([Ugen
showWarnings, Ugen
printErrors] [Ugen] -> [Ugen] -> [Ugen]
forall a. [a] -> [a] -> [a]
++ Bool -> Ugen -> [Ugen]
Util.unpackLabel Bool
False Ugen
rawfilepath) Maybe [Ugen]
forall a. Maybe a
Nothing Int
1 (Int -> Special
Special Int
0) UgenId
NoId