-- | Vectorial Random Signal Generators
module CsoundExpr.Opcodes.Vectorial.Vectorialrandom
    (vrandh,
     vrandi)
where



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



-- | * opcode : vrandh
--  
--  
-- * syntax : 
--  
--  >   vrandh ifn, krange, kcps, ielements [, idstoffset] [, iseed] [, isize] [, ioffset]
--  
--  
-- * description : 
--  
--  Generates a vector of random numbers stored into a table,
-- holding the values for a period of time. Generates a sort of
-- 'vectorial band-limited noise'.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vrandh.html>
 
vrandh ::
         (K k0, K k1) => [Irate] -> Irate -> k0 -> k1 -> Irate -> SignalOut
vrandh i0init i1fn k2range k3cps i4elements
  = outOpcode "vrandh" args
  where args
          = [to i1fn, to k2range, to k3cps, to i4elements] ++ map to i0init


-- | * opcode : vrandi
--  
--  
-- * syntax : 
--  
--  >   vrandi ifn, krange, kcps, ielements [, idstoffset] [, iseed] [, isize] [, ioffset]
--  
--  
-- * description : 
--  
--  Generate a sort of 'vectorial band-limited noise'
--  
--  
-- * url : <http://www.csounds.com/manual/html/vrandi.html>
 
vrandi ::
         (K k0, K k1) => [Irate] -> Irate -> k0 -> k1 -> Irate -> SignalOut
vrandi i0init i1fn k2range k3cps i4elements
  = outOpcode "vrandi" args
  where args
          = [to i1fn, to k2range, to k3cps, to i4elements] ++ map to i0init