-- | Limiting and wrapping of vectorial control signals
module CsoundExpr.Opcodes.Vectorial.Vectorialimiting
    (vlimit,
     vwrap,
     vmirror)
where



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



-- | * opcode : vlimit
--  
--  
-- * syntax : 
--  
--  >   vlimit ifn, kmin, kmax, ielements
--  
--  
-- * description : 
--  
--  Limits elements of vectorial control signals.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vlimit.html>
 
vlimit :: (K k0, K k1) => Irate -> k0 -> k1 -> Irate -> SignalOut
vlimit i0fn k1min k2max i3elements = outOpcode "vlimit" args
  where args = [to i0fn, to k1min, to k2max, to i3elements]


-- | * opcode : vwrap
--  
--  
-- * syntax : 
--  
--  >   vwrap ifn, kmin, kmax, ielements
--  
--  
-- * description : 
--  
--  Wraps elements of vectorial control signals.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vwrap.html>
 
vwrap :: (K k0, K k1) => Irate -> k0 -> k1 -> Irate -> SignalOut
vwrap i0fn k1min k2max i3elements = outOpcode "vwrap" args
  where args = [to i0fn, to k1min, to k2max, to i3elements]


-- | * opcode : vmirror
--  
--  
-- * syntax : 
--  
--  >   vmirror ifn, kmin, kmax, ielements
--  
--  
-- * description : 
--  
--  'Reflects' elements of vectorial control signals on thresholds.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vmirror.html>
 
vmirror :: (K k0, K k1) => Irate -> k0 -> k1 -> Irate -> SignalOut
vmirror i0fn k1min k2max i3elements = outOpcode "vmirror" args
  where args = [to i0fn, to k1min, to k2max, to i3elements]