-- | Hyper Vectorial Synthesis
module CsoundExpr.Opcodes.Siggen.Hvs
    (vphaseseg,
     hvs1,
     hvs2,
     hvs3)
where



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



-- | * opcode : vphaseseg
--  
--  
-- * syntax : 
--  
--  >   vphaseseg kphase, ioutab, ielems, itab1,idist1,itab2 
--  >       [,idist2,itab3,...,idistN-1,itabN]
--  
--  
-- * description : 
--  
--  vphaseseg allows one-dimensional HVS (Hyper-Vectorial
-- Synthesis).
--  
--  
-- * url : <http://www.csounds.com/manual/html/vphaseseg.html>
 
vphaseseg :: (K k0) => k0 -> Irate -> Irate -> [Irate] -> SignalOut
vphaseseg k0phase i1outab i2elems i3tabDist
  = outOpcode "vphaseseg" args
  where args
          = [to k0phase, to i1outab, to i2elems] ++ map to i3tabDist


-- | * opcode : hvs1
--  
--  
-- * syntax : 
--  
--  >   hvs1 kx, inumParms, inumPointsX, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--  
--  
-- * description : 
--  
--  hvs1 allows one-dimensional Hyper Vectorial Synthesis (HVS)
-- controlled by externally-updated k-variables.
--  
--  
-- * url : <http://www.csounds.com/manual/html/hvs1.html>
 
hvs1 ::
       (K k0) =>
       [Irate] ->
         k0 -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut
hvs1 i0init k1x i2numParms i3numPointsX i4OutTab i5PositionsTab
  i6SnapTab = outOpcode "hvs1" args
  where args
          = [to k1x, to i2numParms, to i3numPointsX, to i4OutTab,
             to i5PositionsTab, to i6SnapTab]
              ++ map to i0init


-- | * opcode : hvs2
--  
--  
-- * syntax : 
--  
--  >   hvs2 kx, ky, inumParms, inumPointsX, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--  
--  
-- * description : 
--  
--  hvs2 allows two-dimensional Hyper Vectorial Synthesis (HVS)
-- controlled by externally-updated k-variables.
--  
--  
-- * url : <http://www.csounds.com/manual/html/hvs2.html>
 
hvs2 ::
       (K k0, K k1) =>
       [Irate] ->
         k0 -> k1 -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut
hvs2 i0init k1x k2y i3numParms i4numPointsX i5OutTab i6PositionsTab
  i7SnapTab = outOpcode "hvs2" args
  where args
          = [to k1x, to k2y, to i3numParms, to i4numPointsX, to i5OutTab,
             to i6PositionsTab, to i7SnapTab]
              ++ map to i0init


-- | * opcode : hvs3
--  
--  
-- * syntax : 
--  
--  >   hvs3 kx, ky, kz, inumParms, inumPointsX, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--  
--  
-- * description : 
--  
--  hvs3 allows three-dimensional Hyper Vectorial Synthesis (HVS)
-- controlled by externally-updated k-variables.
--  
--  
-- * url : <http://www.csounds.com/manual/html/hvs3.html>
 
hvs3 ::
       (K k0, K k1, K k2) =>
       [Irate] ->
         k0 ->
           k1 -> k2 -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut
hvs3 i0init k1x k2y k3z i4numParms i5numPointsX i6OutTab
  i7PositionsTab i8SnapTab = outOpcode "hvs3" args
  where args
          = [to k1x, to k2y, to k3z, to i4numParms, to i5numPointsX,
             to i6OutTab, to i7PositionsTab, to i8SnapTab]
              ++ map to i0init