hsc3-0.19: Sound/SC3/UGen/Bindings/Composite/External.hs
-- | Common unit generator graphs.
module Sound.SC3.UGen.Bindings.Composite.External where
import Data.List {- base -}
import Data.Maybe {- base -}
import Sound.SC3.Common.Math {- hsc3 -}
import Sound.SC3.Common.Rate {- hsc3 -}
import Sound.SC3.UGen.Type {- hsc3 -}
import Sound.SC3.UGen.UGen {- hsc3 -}
import qualified Sound.SC3.UGen.Bindings.DB.External as External
-- | FM7 variant where input matrices are not in MCE form.
fm7_mx :: [[UGen]] -> [[UGen]] -> UGen
fm7_mx ctlMatrix modMatrix = External.fm7 AR (mce (concat ctlMatrix)) (mce (concat modMatrix))
{- | greyhole re-orders parameters as well as unpacking the input signal.
in1=0.0 in2=0.0 damping=0.0 delayTime=2.0 diffusion=0.5 feedback=0.9 moddepth=0.1 modfreq=2.0 size=1.0
in delayTime=2.0 damping=0.0 size=1.0 diffusion=0.7 feedback=0.9 modDepth=0.1 modFreq=2.0
-}
greyhole :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
greyhole i delayTime damping size diffusion feedback modDepth modFreq =
let (i1,i2) = unmce2 i
in External.greyholeRaw i1 i2 damping delayTime diffusion feedback modDepth modFreq size
-- | Association list giving names for MiBraids modes.
miBraids_mode_dict :: Num n => [(n,String)]
miBraids_mode_dict =
[(0,"CSAW")
,(1,"MORPH")
,(2,"SAW_SQUARE")
,(3,"SINE_TRIANGLE")
,(4,"BUZZ")
,(5,"SQUARE_SUB")
,(6,"SAW_SUB")
,(7,"SQUARE_SYNC")
,(8,"SAW_SYNC")
,(9,"TRIPLE_SAW")
,(10,"TRIPLE_SQUARE")
,(11,"TRIPLE_TRIANGLE")
,(12,"TRIPLE_SINE")
,(13,"TRIPLE_RING_MOD")
,(14,"SAW_SWARM")
,(15,"SAW_COMB")
,(16,"TOY")
,(17,"DIGITAL_FILTER_LP")
,(18,"DIGITAL_FILTER_PK")
,(19,"DIGITAL_FILTER_BP")
,(20,"DIGITAL_FILTER_HP")
,(21,"VOSIM")
,(22,"VOWEL")
,(23,"VOWEL_FOF")
,(24,"HARMONICS")
,(25,"FM")
,(26,"FEEDBACK_FM")
,(27,"CHAOTIC_FEEDBACK_FM")
,(28,"PLUCKED")
,(29,"BOWED")
,(30,"BLOWN")
,(31,"FLUTED")
,(32,"STRUCK_BELL")
,(33,"STRUCK_DRUM")
,(34,"KICK")
,(35,"CYMBAL")
,(36,"SNARE")
,(37,"WAVETABLES")
,(38,"WAVE_MAP")
,(39,"WAVE_LINE")
,(40,"WAVE_PARAPHONIC")
,(41,"FILTERED_NOISE")
,(42,"TWIN_PEAKS_NOISE")
,(43,"CLOCKED_NOISE")
,(44,"GRANULAR_CLOUD")
,(45,"PARTICLE_NOISE")
,(46,"DIGITAL_MODULATION")
,(47,"QUESTION_MARK")]
-- | Reverse lookup of 'miBraids_mode_dict'.
miBraids_mode_maybe :: Num n => String -> Maybe n
miBraids_mode_maybe x = fmap fst (find ((== x) . snd) miBraids_mode_dict)
-- | 'error' of 'miBraids_mode_maybe'
miBraids_mode :: Num n => String -> n
miBraids_mode = fromMaybe (error "miBraids_mode?") . miBraids_mode_maybe
-- | Association list giving names for MiClouds modes.
miClouds_mode_dict :: Num n => [(n,String)]
miClouds_mode_dict =
[(0,"GRANULAR")
,(1,"STRETCH")
,(2,"LOOPING_DELAY")
,(3,"SPECTRAL")]
-- | Reverse lookup of 'miClouds_mode_dict'.
miClouds_mode_maybe :: Num n => String -> Maybe n
miClouds_mode_maybe x = fmap fst (find ((== x) . snd) miClouds_mode_dict)
-- | 'error' of 'miClouds_mode_maybe'
miClouds_mode :: Num n => String -> n
miClouds_mode = fromMaybe (error "miClouds_mode?") . miClouds_mode_maybe
-- | Association list giving names for MiPlaits modes.
miPlaits_mode_dict :: Num n => [(n,String)]
miPlaits_mode_dict =
[(0,"virtual_analog")
,(1,"waveshaping")
,(2,"fm")
,(3,"grain")
,(4,"additive")
,(5,"wavetable")
,(6,"chord")
,(7,"speech")
,(8,"swarm")
,(9,"noise")
,(10,"particle")
,(11,"string")
,(12,"modal")
,(13,"bass_drum")
,(14,"snare_drum")
,(15,"hi_hat")]
-- | Reverse lookup of 'miPlaits_mode_dict'.
miPlaits_mode_maybe :: Num n => String -> Maybe n
miPlaits_mode_maybe x = fmap fst (find ((== x) . snd) miPlaits_mode_dict)
-- | 'error' of 'miPlaits_mode_maybe'
miPlaits_mode :: Num n => String -> n
miPlaits_mode = fromMaybe (error "miPlaits_mode?") . miPlaits_mode_maybe
-- | Association list giving names for MiPlaits modes.
miRings_mode_dict :: Num n => [(n,String)]
miRings_mode_dict =
[(0,"MODAL_RESONATOR")
,(1,"SYMPATHETIC_STRING")
,(2,"MODULATED/INHARMONIC_STRING")
,(3,"2-OP_FM_VOICE")
,(4,"SYMPATHETIC_STRING_QUANTIZED")
,(5,"STRING_AND_REVERB")]
-- | Reverse lookup of 'miRings_mode_dict'.
miRings_mode_maybe :: Num n => String -> Maybe n
miRings_mode_maybe x = fmap fst (find ((== x) . snd) miRings_mode_dict)
-- | 'error' of 'miRings_mode_maybe'
miRings_mode :: Num n => String -> n
miRings_mode = fromMaybe (error "miRings_mode?") . miRings_mode_maybe
-- | pulse signal as difference of two 'sawDPW' signals.
pulseDPW :: Rate -> UGen -> UGen -> UGen
pulseDPW rt freq width =
let o1 = External.sawDPW rt freq 0
o2 = External.sawDPW rt freq (wrap_hs (-1,1) (width+width))
in o1 - o2