module Sound.SC3.UGen.Bindings.HW.Construct where
import Sound.SC3.UGen.Rate
import Sound.SC3.UGen.Type
mk_osc :: [Rate] -> UGenId -> Rate -> String -> [UGen] -> Int -> UGen
mk_osc rs z r c i o =
if r `elem` rs
then mkUGen Nothing rs (Left r) c i Nothing o (Special 0) z
else error ("mk_osc: rate restricted: " ++ show (r, rs, c))
mkOsc :: Rate -> String -> [UGen] -> Int -> UGen
mkOsc = mk_osc all_rates no_id
mkOscR :: [Rate] -> Rate -> String -> [UGen] -> Int -> UGen
mkOscR rs = mk_osc rs no_id
mkOscIdR :: [Rate] -> UGenId -> Rate -> String -> [UGen] -> Int -> UGen
mkOscIdR rr z = mk_osc rr z
mkOscId :: UGenId -> Rate -> String -> [UGen] -> Int -> UGen
mkOscId z = mk_osc all_rates z
mk_osc_mce :: UGenId -> Rate -> String -> [UGen] -> UGen -> Int -> UGen
mk_osc_mce z r c i j =
let i' = i ++ mceChannels j
in mk_osc all_rates z r c i'
mkOscMCE :: Rate -> String -> [UGen] -> UGen -> Int -> UGen
mkOscMCE = mk_osc_mce no_id
mkOscMCEId :: UGenId -> Rate -> String -> [UGen] -> UGen -> Int -> UGen
mkOscMCEId z = mk_osc_mce z
mk_filter :: [Rate] -> [Int] -> UGenId -> String -> [UGen] -> Int -> UGen
mk_filter rs ix z c i o = mkUGen Nothing rs (Right ix) c i Nothing o (Special 0) z
mkFilterIdR :: [Rate] -> UGenId -> String -> [UGen] -> Int -> UGen
mkFilterIdR rs z nm i o = mk_filter rs [0 .. length i 1] z nm i o
mkFilterR :: [Rate] -> String -> [UGen] -> Int -> UGen
mkFilterR rs = mkFilterIdR rs no_id
mkFilter :: String -> [UGen] -> Int -> UGen
mkFilter = mkFilterR all_rates
mkFilterId :: UGenId -> String -> [UGen] -> Int -> UGen
mkFilterId = mkFilterIdR all_rates
mk_filter_mce :: [Rate] -> UGenId -> String -> [UGen] -> UGen -> Int -> UGen
mk_filter_mce rs z c i j = mkFilterIdR rs z c (i ++ mceChannels j)
mkFilterMCER :: [Rate] -> String -> [UGen] -> UGen -> Int -> UGen
mkFilterMCER rs = mk_filter_mce rs no_id
mkFilterMCE :: String -> [UGen] -> UGen -> Int -> UGen
mkFilterMCE = mk_filter_mce all_rates no_id
mkFilterMCEId :: UGenId -> String -> [UGen] -> UGen -> Int -> UGen
mkFilterMCEId z = mk_filter_mce all_rates z
mkInfo :: String -> UGen
mkInfo name = mkOsc IR name [] 1