-- | Tables of vectors operators
module CsoundExpr.Opcodes.Vectorial.Vectorialtables
    (vtablei,
     vtable1k,
     vtablek,
     vtablea,
     vtablewi,
     vtablewk,
     vtablewa,
     vtabi,
     vtabk,
     vtaba,
     vtabwi,
     vtabwk,
     vtabwa)
where



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



-- | * opcode : vtablei
--  
--  
-- * syntax : 
--  
--  >   vtablei indx, ifn, interp, ixmode, iout1 [, iout2, iout3,...., ioutN ]
--  
--  
-- * description : 
--  
--  This opcode reads vectors from tables.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtablei.html>
 
vtablei :: Irate -> Irate -> Irate -> Irate -> [Irate] -> SignalOut
vtablei i0ndx i1fn i2interp i3xmode i4outN
  = outOpcode "vtablei" args
  where args
          = [to i0ndx, to i1fn, to i2interp, to i3xmode] ++ map to i4outN


-- | * opcode : vtable1k
--  
--  
-- * syntax : 
--  
--  >   vtable1k kfn,kout1 [, kout2, kout3,...., koutN ]
--  
--  
-- * description : 
--  
--  This opcode reads vectors from tables at k-rate.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtable1k.html>
 
vtable1k :: (K k0, K k1) => k0 -> [k1] -> SignalOut
vtable1k k0fn k1outN = outOpcode "vtable1k" args
  where args = [to k0fn] ++ map to k1outN


-- | * opcode : vtablek
--  
--  
-- * syntax : 
--  
--  >   vtablek kndx, kfn, kinterp, ixmode, kout1 [, kout2, kout3,...., koutN ]
--  
--  
-- * description : 
--  
--  This opcode reads vectors from tables at k-rate.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtablek.html>
 
vtablek ::
          (K k0, K k1, K k2) =>
          k0 -> k1 -> k2 -> Irate -> [Irate] -> SignalOut
vtablek k0ndx k1fn k2interp i3xmode i4outN
  = outOpcode "vtablek" args
  where args
          = [to k0ndx, to k1fn, to k2interp, to i3xmode] ++ map to i4outN


-- | * opcode : vtablea
--  
--  
-- * syntax : 
--  
--  >   vtablea andx, kfn, kinterp, ixmode, aout1 [, aout2, aout3,...., aoutN ]
--  
--  
-- * description : 
--  
--  This opcode reads vectors from tables at a-rate.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtablea.html>
 
vtablea ::
          (K k0, K k1) => Arate -> k0 -> k1 -> Irate -> [Arate] -> SignalOut
vtablea a0ndx k1fn k2interp i3xmode a4outN
  = outOpcode "vtablea" args
  where args
          = [to a0ndx, to k1fn, to k2interp, to i3xmode] ++ map to a4outN


-- | * opcode : vtablewi
--  
--  
-- * syntax : 
--  
--  >   vtablewi indx, ifn, ixmode, inarg1 [, inarg2, inarg3,...., inargN ]
--  
--  
-- * description : 
--  
--  This opcode writes vectors to tables at init time.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtablewi.html>
 
vtablewi :: Irate -> Irate -> Irate -> [Irate] -> SignalOut
vtablewi i0ndx i1fn i2xmode i3arg = outOpcode "vtablewi" args
  where args = [to i0ndx, to i1fn, to i2xmode] ++ map to i3arg


-- | * opcode : vtablewk
--  
--  
-- * syntax : 
--  
--  >   vtablewk kndx, kfn, ixmode, kinarg1 [, kinarg2, kinarg3,...., kinargN ]
--  
--  
-- * description : 
--  
--  This opcode writes vectors to tables at k-rate.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtablewk.html>
 
vtablewk ::
           (K k0, K k1, K k2) => k0 -> k1 -> Irate -> [k2] -> SignalOut
vtablewk k0ndx k1fn i2xmode k3arg = outOpcode "vtablewk" args
  where args = [to k0ndx, to k1fn, to i2xmode] ++ map to k3arg


-- | * opcode : vtablewa
--  
--  
-- * syntax : 
--  
--  >   vtablewa andx, kfn, ixmode, ainarg1 [, ainarg2, ainarg3,...., ainargN ]
--  
--  
-- * description : 
--  
--  This opcode writes vectors to tables at a-rate.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtablewa.html>
 
vtablewa :: Arate -> Arate -> Irate -> [Arate] -> SignalOut
vtablewa a0ndx a1fn i2xmode a3arg = outOpcode "vtablewa" args
  where args = [to a0ndx, to a1fn, to i2xmode] ++ map to a3arg


-- | * opcode : vtabi
--  
--  
-- * syntax : 
--  
--  >   vtabi indx, ifn, iout1 [, iout2, iout3,...., ioutN ]
--  
--  
-- * description : 
--  
--  This opcode reads vectors from tables.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtabi.html>
 
vtabi :: Irate -> Irate -> [Irate] -> SignalOut
vtabi i0ndx i1fn i2outN = outOpcode "vtabi" args
  where args = [to i0ndx, to i1fn] ++ map to i2outN


-- | * opcode : vtabk
--  
--  
-- * syntax : 
--  
--  >   vtabk kndx, ifn, kout1 [, kout2, kout3,...., koutN ]
--  
--  
-- * description : 
--  
--  This opcode reads vectors from tables at k-rate.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtabk.html>
 
vtabk :: (K k0, K k1) => k0 -> Irate -> [k1] -> SignalOut
vtabk k0ndx i1fn k2outN = outOpcode "vtabk" args
  where args = [to k0ndx, to i1fn] ++ map to k2outN


-- | * opcode : vtaba
--  
--  
-- * syntax : 
--  
--  >   vtaba andx, ifn, aout1 [, aout2, aout3,...., aoutN ]
--  
--  
-- * description : 
--  
--  This opcode reads vectors from tables at a-rate.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtaba.html>
 
vtaba :: Arate -> Irate -> [Arate] -> SignalOut
vtaba a0ndx i1fn a2outN = outOpcode "vtaba" args
  where args = [to a0ndx, to i1fn] ++ map to a2outN


-- | * opcode : vtabwi
--  
--  
-- * syntax : 
--  
--  >   vtabwi indx, ifn, inarg1 [, inarg2, inarg3,...., inargN ]
--  
--  
-- * description : 
--  
--  This opcode writes vectors to tables at init time.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtabwi.html>
 
vtabwi :: Irate -> Irate -> [Irate] -> SignalOut
vtabwi i0ndx i1fn i2outN = outOpcode "vtabwi" args
  where args = [to i0ndx, to i1fn] ++ map to i2outN


-- | * opcode : vtabwk
--  
--  
-- * syntax : 
--  
--  >   vtabwk kndx, ifn, kinarg1 [, kinarg2, kinarg3,...., kinargN ]
--  
--  
-- * description : 
--  
--  This opcode writes vectors to tables at a-rate.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtabwk.html>
 
vtabwk :: (K k0, K k1) => k0 -> Irate -> [k1] -> SignalOut
vtabwk k0ndx i1fn k2outN = outOpcode "vtabwk" args
  where args = [to k0ndx, to i1fn] ++ map to k2outN


-- | * opcode : vtabwa
--  
--  
-- * syntax : 
--  
--  >   vtabwa andx, ifn, ainarg1 [, ainarg2, ainarg3,...., ainargN ]
--  
--  
-- * description : 
--  
--  This opcode writes vectors to tables at a-rate.
--  
--  
-- * url : <http://www.csounds.com/manual/html/vtabwa.html>
 
vtabwa :: Arate -> Irate -> [Arate] -> SignalOut
vtabwa a0ndx i1fn a2outN = outOpcode "vtabwa" args
  where args = [to a0ndx, to i1fn] ++ map to a2outN