-- | Vectorial Control-rate Delay Paths
module CsoundExpr.Opcodes.Vectorial.Vectorialdelay
    (vdelayk,
     vport,
     vecdelay)
where



import CsoundExpr.Base.Types
import CsoundExpr.Base.MultiOut
import CsoundExpr.Base.SideEffect
import CsoundExpr.Base.UserDefined



-- | * opcode : vdelayk
--  
--  
-- * syntax : 
--  
--  >   kout vdelayk iksig, kdel, imaxdel [, iskip, imode]
--  
--  
-- * description : 
--  
--  Variable delay applied to a k-rate signal
--  
--  
-- * url : <http://www.csounds.com/manual/html/vdelayk.html>
 
vdelayk :: (K k0) => [Irate] -> Irate -> k0 -> Irate -> Krate
vdelayk i0init i1ksig k2del i3maxdel = opcode "vdelayk" args
  where args = [to i1ksig, to k2del, to i3maxdel] ++ map to i0init


-- | * opcode : vport
--  
--  
-- * syntax : 
--  
--  >   vport ifn, khtime, ielements [, ifnInit]
--  
--  
-- * description : 
--  
--  Generate a sort of 'vectorial' portamento
--  
--  
-- * url : <http://www.csounds.com/manual/html/vport.html>
 
vport :: (K k0) => [Irate] -> Irate -> k0 -> Irate -> SignalOut
vport i0init i1fn k2htime i3elements = outOpcode "vport" args
  where args = [to i1fn, to k2htime, to i3elements] ++ map to i0init


-- | * opcode : vecdelay
--  
--  
-- * syntax : 
--  
--  >   vecdelay ifn, ifnIn, ifnDel, ielements, imaxdel [, iskip]
--  
--  
-- * description : 
--  
--  Generate a sort of 'vectorial' delay
--  
--  
-- * url : <http://www.csounds.com/manual/html/vecdelay.html>
 
vecdelay ::
           [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut
vecdelay i0init i1fn i2fnIn i3fnDel i4elements i5maxdel
  = outOpcode "vecdelay" args
  where args
          = [to i1fn, to i2fnIn, to i3fnDel, to i4elements, to i5maxdel] ++
              map to i0init