-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Csound combinator library -- -- Csound code generator. See root module CsoundExpr for -- introduction guides. Score module is no longer available inside -- 'csound-expression' package, consider using 'temporal-media' or -- 'temporal-music-notation' packages. See source directory for examples. @package csound-expression @version 0.3.1 -- | Functions to add your own opcodes or operations -- -- Constructor takes in String and list of CsTree's. String -- represnts name of opcode/operation for rendering to csd file. -- CsTree is an inner type of csound expression. Any type -- a that belongs to IM CsTree a can be -- converted to CsTree with to method. module CsoundExpr.Base.UserDefined class IM a b from :: IM a b => a -> b to :: IM a b => b -> a -- | Opr2 a b - defines output type of binary -- arithmetic operator -- --
--   type instance Opr2 Irate Irate = Irate
--   type instance Opr2 Irate Krate = Krate
--   type instance Opr2 Irate Arate = Arate
--   
-- --
--   type instance Opr2 Krate Irate = Krate
--   type instance Opr2 Krate Krate = Krate
--   type instance Opr2 Krate Arate = Arate
--   
-- --
--   type instance Opr2 Arate Irate = Arate
--   type instance Opr2 Arate Krate = Arate
--   type instance Opr2 Arate Arate = Arate
--   
-- | Opcode constructor -- -- Example : -- --
--   ares oscil xamp, xcps, ift, [iphs]
--   kres oscil kamp, kcps, ift, [iphs]
--   
-- --
--   oscilA :: (X a0, X a1) => [Irate] -> a0 -> a1 -> Irate -> Arate
--   oscilA inits xamp xcps ift = opcode "oscil" args 
--       where args = [to xamp, to xcps, to ift] ++ map to inits
--   
-- --
--   oscilK :: (K a0, K a1) => [Irate] -> a0 -> a1 -> Irate -> Krate
--   oscilK inits kamp kcps ift = opcode "oscil" args 
--       where args = [to kamp, to kcps, to ift] ++ map to inits
--   
-- --
--   ares noise xamp, kbeta
--   
-- --
--   noise :: (X a, K b) => a -> b -> SideEffect Ares
--   noise xamp kbeta = opcode "noise" args
--      where args = [to xamp, to kbeta]
--   
opcode :: IM CsTree a => String -> [CsTree] -> a -- | Constructor for opcode that doesn't produce any value -- -- Example : -- --
--   outs asig1, asig2
--   
-- --
--   outs :: Arate -> Arate -> SignalOut
--   outs asig1 asig2 = outOpcode "outs" args
--       where args = [to asig1, to asig2]
--   
outOpcode :: String -> [CsTree] -> SignalOut -- | operation constructor -- -- names can be anywhere between arguments -- --
--   operation names args 
--   
-- -- in csound code becomes -- --
--   names !! 0 ++ show (args !! 0) ++ names !! 1 ++ show (args !! 1) ++ ... 
--   
operation :: IM CsTree a => [String] -> [CsTree] -> a -- | Infix operation constructor -- -- Example : -- --
--   xres = xsig1 + xsig2
--   
-- --
--   add :: (X a, X b, X (Opr2 a b)) => a -> b -> Opr2 a b
--   add a b = infixOperation "+" [to a, to b]
--   
infixOperation :: IM CsTree a => String -> [CsTree] -> a -- | Prefix operation constructor -- -- Example : -- --
--   xres = sin(xsig)
--   
-- --
--   csSin :: X a => a -> a
--   csSin a = prefixOperation "sin" [to a]
--   
prefixOperation :: IM CsTree a => String -> [CsTree] -> a unaryInfixOperation :: IM CsTree a => String -> CsTree -> a -- | Functions to write imperative style csound code module CsoundExpr.Base.Imperative -- | Join several output opcodes -- -- Example : -- --
--          instr q
--   a1     upsamp   1
--          out      a1
--   gaSig  =        a1
--          endin
--   
-- --
--   q = outList [out x, gar "Sig" <=> x]
--           where x = upsamp $ num 1
--   
outList :: [SignalOut] -> SignalOut ar :: Name -> Arate kr :: Name -> Krate ir :: Name -> Irate gar :: Name -> Arate gkr :: Name -> Krate gir :: Name -> Irate class Assign a (<=>) :: Assign a => a -> a -> SignalOut instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7) => Assign (a0, a1, a2, a3, a4, a5, a6, a7) instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6) => Assign (a0, a1, a2, a3, a4, a5, a6) instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5) => Assign (a0, a1, a2, a3, a4, a5) instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4) => Assign (a0, a1, a2, a3, a4) instance (Assign a0, Assign a1, Assign a2, Assign a3) => Assign (a0, a1, a2, a3) instance (Assign a0, Assign a1, Assign a2) => Assign (a0, a1, a2) instance (Assign a0, Assign a1) => Assign (a0, a1) instance Assign a => Assign [a] instance Assign Irate instance Assign Krate instance Assign Arate -- | replica of Data.Boolean module. Booleans for csound signals module CsoundExpr.Base.Boolean -- | boolean signal. Type for comparison of control or init rate signals. data BoolRate true :: BoolRate false :: BoolRate notB :: BoolRate -> BoolRate (&&*) :: BoolRate -> BoolRate -> BoolRate (||*) :: BoolRate -> BoolRate -> BoolRate (==*) :: (K a, K b) => a -> b -> BoolRate (/=*) :: (K a, K b) => a -> b -> BoolRate (<*) :: (K a, K b) => a -> b -> BoolRate (>*) :: (K a, K b) => a -> b -> BoolRate (<=*) :: (K a, K b) => a -> b -> BoolRate (>=*) :: (K a, K b) => a -> b -> BoolRate ifB :: X a => BoolRate -> a -> a -> a minB :: K a => a -> a -> a maxB :: K a => a -> a -> a cond :: (Applicative f, K a) => f BoolRate -> f a -> f a -> f a crop :: (Applicative f, Monoid (f a), K a) => f BoolRate -> f a -> f a module CsoundExpr.Base.Types -- | X = Arate | Krate | Irate class (IM CsTree a, MO a) => X a arate :: X a => a -> Arate krate :: X a => a -> Krate irate :: X a => a -> Irate -- | K = Krate | Irate class X a => K a -- | audio signal data Arate -- | control signal data Krate -- | init variable data Irate -- | Output of opcodes that produce no value in csound code (out, outs, -- xtratim, etc.) data SignalOut -- | p2 p-field itime :: Irate -- | p3 p-field idur :: Irate -- | auxiliary function, to write (num n) instead of (n :: Irate) num :: Irate -> Irate -- | Lift Double to Irate double :: Double -> Irate -- | Lift String to Irate string :: String -> Irate instance Show SignalOut instance Show Irate instance Show Krate instance Show Arate -- | Multiple Out module CsoundExpr.Base.MultiOut data MultiOut -- | extracts list of values mo :: X a => Int -> MultiOut -> [a] moA :: Int -> MultiOut -> [Arate] moK :: Int -> MultiOut -> [Krate] moI :: Int -> MultiOut -> [Irate] mo1 :: X a0 => MultiOut -> (a0) mo2 :: (X a0, X a1) => MultiOut -> (a0, a1) mo3 :: (X a0, X a1, X a2) => MultiOut -> (a0, a1, a2) mo4 :: (X a0, X a1, X a2, X a3) => MultiOut -> (a0, a1, a2, a3) mo5 :: (X a0, X a1, X a2, X a3, X a4) => MultiOut -> (a0, a1, a2, a3, a4) mo6 :: (X a0, X a1, X a2, X a3, X a4, X a5) => MultiOut -> (a0, a1, a2, a3, a4, a5) mo7 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6) mo8 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7) moA1 :: MultiOut -> (Arate) moA2 :: MultiOut -> (Arate, Arate) moA3 :: MultiOut -> (Arate, Arate, Arate) moA4 :: MultiOut -> (Arate, Arate, Arate, Arate) moA6 :: MultiOut -> (Arate, Arate, Arate, Arate, Arate, Arate) moA8 :: MultiOut -> (Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate) moK1 :: MultiOut -> (Krate) moK2 :: MultiOut -> (Krate, Krate) moK3 :: MultiOut -> (Krate, Krate, Krate) moK4 :: MultiOut -> (Krate, Krate, Krate, Krate) moK6 :: MultiOut -> (Krate, Krate, Krate, Krate, Krate, Krate) moK8 :: MultiOut -> (Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate) moI1 :: MultiOut -> (Irate) moI2 :: MultiOut -> (Irate, Irate) moI3 :: MultiOut -> (Irate, Irate, Irate) moI4 :: MultiOut -> (Irate, Irate, Irate, Irate) moI6 :: MultiOut -> (Irate, Irate, Irate, Irate, Irate, Irate) moI8 :: MultiOut -> (Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate) instance IM CsTree MultiOut -- | Arithmetic operators module CsoundExpr.Base.Arithmetic -- | Opr2 a b - defines output type of binary -- arithmetic operator -- --
--   type instance Opr2 Irate Irate = Irate
--   type instance Opr2 Irate Krate = Krate
--   type instance Opr2 Irate Arate = Arate
--   
-- --
--   type instance Opr2 Krate Irate = Krate
--   type instance Opr2 Krate Krate = Krate
--   type instance Opr2 Krate Arate = Arate
--   
-- --
--   type instance Opr2 Arate Irate = Arate
--   type instance Opr2 Arate Krate = Arate
--   type instance Opr2 Arate Arate = Arate
--   
(<+>) :: (X a, X b, X (Opr2 a b)) => a -> b -> Opr2 a b -- | negation neg :: X a => a -> a (<->) :: (X a, X b, X (Opr2 a b)) => a -> b -> Opr2 a b (<*>) :: (X a, X b, X (Opr2 a b)) => a -> b -> Opr2 a b () :: (X a, X b, X (Opr2 a b)) => a -> b -> Opr2 a b -- | "power of" operator (<^>) :: (X a, X b, X (Opr2 a b)) => a -> b -> Opr2 a b -- | modulus operator (<%>) :: (X a, X b, X (Opr2 a b)) => a -> b -> Opr2 a b -- | scaling (^*) :: X a => Irate -> a -> a -- | shifting (^+) :: X a => Irate -> a -> a instance Fractional Irate instance Num Irate instance Fractional Krate instance Num Krate instance Fractional Arate instance Num Arate instance Eq Irate instance Eq Krate instance Eq Arate -- | Header section module CsoundExpr.Base.Header -- | Header section type Header = [SignalInit] data SignalInit gSr :: Irate gKr :: Irate gKsmps :: Irate gNchnls :: Irate g0dbfs :: Irate massign :: [Int] -> Int -> SignalOut -> SignalInit pgmassign :: [Int] -> Int -> SignalOut -> SignalInit -- | instrOrder defines relative order of instruments in orchestra -- -- Instrument is a mapping from note-interface to SignalOut. If -- two SignalOut's have equal expression-tree structure they are rendered -- to the same instrument. Value in list refers to expresion-tree -- structure of instrument. -- -- Example : -- --
--   header = [
--      instr0 [ 
--          gSr     <=>     44100,
--          gKr     <=>     4410,        
--          gKsmps  <=>       10,
--          gNchnls <=>        1],
--      instrOrder [instr1 (0, 0), instr2 ""]
--   ]
--   
-- --
--   instr1 :: (Irate, Irate) -> SignalOut
--   instr1 (amp, cps) = out $ oscilA [] amp cps 
--   
-- --
--   instr2 :: String -> SignalOut
--   instr2 file  = out $ moA1 $ diskin2 [] file (num 1) 
--   
instrOrder :: [SignalOut] -> SignalInit -- | header's initialization statements, like global variables -- initialization, seed, ctrlinit, fltk, etc. -- -- Example : -- --
--   instr0 [
--       gar "sig0"  <=> initA 0,
--       gar "sig1"  <=> initA 0,
--       gir "fn"    <=> ftgen 0 16384 10 [1],
--       seed 0
--   ]    
--   
instr0 :: [SignalOut] -> SignalInit -- | Puts the value of the i-time expression into a a-rate variable. initA :: Irate -> Arate -- | Puts the value of the i-time expression into a k-rate variable. initK :: Irate -> Krate -- | Puts the value of the i-time expression into a i-rate variable. initI :: Irate -> Irate -- | Sets the global seed value for all x-class noise generators, as well -- as other opcodes that use a random call, such as grain. -- --
--   seed ival
--   
seed :: Irate -> SignalOut -- | Sets the initial values for a set of MIDI controllers. -- --
--   ctrlinit ichnl, ictlno1, ival1 [, ictlno2] [, ival2] [, ictlno3] \
--        [, ival3] [,...ival32]
--   
ctrlinit :: Irate -> [Irate] -> SignalOut -- | Generate a score function table from within the orchestra. -- --
--   gir ftgen ifn, itime, isize, igen, iarga [, iargb ] [...] 
--   
-- -- ifn - is set to zero -- --
--   ftgen itime isize igen [iargs]
--   
ftgen :: Irate -> Irate -> Irate -> [Irate] -> Irate headerMono :: Header headerStereo :: Header module CsoundExpr.Base.Pretty -- | csound code data CsoundFile -- | csound flags type Flags = String type Player = String type FileName = String -- | Generate csound code -- -- Csound code consists of flags, header section, instruments, ftables -- and score. Flags are represeted by String. See -- CsoundExpr.Base.Header for more details on header section. -- Instruments, ftables and score are generated from EventList -- Dur SignalOut. From list of SignalOut notes list -- of instruments is derived. Expression-tree structures of instruments -- are different from one another. An instrument can't be transformed -- into another one only with substitution of values in lists of -- expression-tree. -- -- Example (d minor) : -- --
--   import Temporal.Music.Notation.Score
--   
--   import CsoundExpr
--   import CsoundExpr.Opcodes
--   import CsoundExpr.Base.Pitch
--    
--   flags  = "-o dm.wav"
--   
--   setup = instr0 [
--           gSr     <=> 44100,
--           gKr     <=> 4410,
--           gKsmps  <=> 10,
--           gNchnls <=> 1]
--   
--   header = [setup]
--   
--   sinWave = gen10 4096 [1]
--   
--   instr :: Irate -> SignalOut
--   instr x = out $ oscilA [] (num 1000) (cpspch x) sinWave
--   
--   sco = fmap instr $ line $ map (note 1) [d, f, a, high d]
--   
--   main = print $ csd flags header $ renderScore sco
--   
csd :: Flags -> Header -> EventList Dur SignalOut -> CsoundFile -- | play writes CsoundFile to file in temporal direcory, -- executes csound on it, saves to .wav file, and invokes player -- --
--   play "totem" "./temp" "song" $ csd flags header $ toList scores
--   
play :: Player -> FilePath -> FileName -> CsoundFile -> IO ExitCode -- | playDac writes CsoundFile to in temporal direcory, -- executes csound on it, and plays online -- --
--   playDac "./temp" "song" $ csd flags header $ toList scores
--   
playDac :: FilePath -> FileName -> CsoundFile -> IO ExitCode -- | Side Effects -- -- SideEffect a means output value a of opcode -- is not determined completely by arguments and opcode itself. -- a relies on number of appearences in body of instrument. Way -- out from SideEffect is provided by selectors. Selector gives -- value and updated SideEffect -- -- Example a : -- --
--   q = let (a1, a2) = fst $ se2 $ unirandA (1 :: Irate)
--       in  outs a1 a2
--   
-- -- generates : -- --
--   a1  unirand  1
--   a2  unirand  1
--       outs     a1, a2
--   
-- -- Example b : -- --
--   q = let a1 = fst $ se1 $ unirandA (1 :: Irate)
--           a2 = fst $ se1 $ unirandA (1 :: Irate)
--       in  outs a1 a2
--   
-- -- generates : -- --
--   a1  unirand  1
--       outs     a1, a1
--   
-- -- Example c : -- --
--   q = let v0 = unirandA (1 :: Irate)
--           (a1, v1) = se1 v0
--           (a2,  _) = se1 v1
--       in  outs a1 a2
--   
-- -- generates : -- --
--   a1  unirand  1
--   a2  unirand  1
--       outs     a1, a2
--   
module CsoundExpr.Base.SideEffect data SideEffect a se :: IM CsTree a => Int -> SideEffect a -> ([a], SideEffect a) se1 :: IM CsTree a => SideEffect a -> (a, SideEffect a) se2 :: IM CsTree a => SideEffect a -> ((a, a), SideEffect a) se3 :: IM CsTree a => SideEffect a -> ((a, a, a), SideEffect a) se4 :: IM CsTree a => SideEffect a -> ((a, a, a, a), SideEffect a) instance IM CsTree a => IM CsTree (SideEffect a) -- | Gen routines. First argument is ftable's size, load time is set to -- zero. -- -- http://www.csounds.com/manual/html/ScoreGenRef.html module CsoundExpr.Base.Gens -- | skip normalization skipNorm :: Irate -> Irate -- | ftempty value is rendered to 0 ftempty :: Irate -- | GEN09 - Composite waveforms made up of weighted sums of simple -- sinusoids. -- -- url : http://www.csounds.com/manual/html/GEN09.html gen09 :: Int -> [Double] -> Irate -- | GEN10 - Composite waveforms made up of weighted sums of simple -- sinusoids. -- -- url : http://www.csounds.com/manual/html/GEN10.html gen10 :: Int -> [Double] -> Irate -- | GEN11 - Additive set of cosine partials. -- -- url : http://www.csounds.com/manual/html/GEN11.html gen11 :: Int -> [Double] -> Irate -- | GEN19 - Composite waveforms made up of weighted sums of simple -- sinusoids. -- -- url : http://www.csounds.com/manual/html/GEN19.html gen19 :: Int -> [Double] -> Irate -- | GEN30 - Generates harmonic partials by analyzing an existing table. -- -- url : http://www.csounds.com/manual/html/GEN30.html gen30 :: Int -> Irate -> [Double] -> Irate -- | GEN33 - Generate composite waveforms by mixing simple sinusoids. -- -- url : http://www.csounds.com/manual/html/GEN33.html gen33 :: Int -> Irate -> [Double] -> Irate -- | GEN34 - Generate composite waveforms by mixing simple sinusoids. -- -- url : http://www.csounds.com/manual/html/GEN34.html gen34 :: Int -> Irate -> [Double] -> Irate -- | GEN05 - Constructs functions from segments of exponential curves. -- -- url : http://www.csounds.com/manual/html/GEN05.html gen05 :: Int -> [Double] -> Irate -- | GEN06 - Generates a function comprised of segments of cubic -- polynomials. -- -- url : http://www.csounds.com/manual/html/GEN06.html gen06 :: Int -> [Double] -> Irate -- | GEN07 - Constructs functions from segments of straight lines. -- -- url : http://www.csounds.com/manual/html/GEN07.html gen07 :: Int -> [Double] -> Irate -- | GEN08 - Generate a piecewise cubic spline curve. -- -- url : http://www.csounds.com/manual/html/GEN08.html gen08 :: Int -> [Double] -> Irate -- | GEN16 - Creates a table from a starting value to an ending value. -- -- url : http://www.csounds.com/manual/html/GEN16.html gen16 :: Int -> [Double] -> Irate -- | GEN25 - Construct functions from segments of exponential curves in -- breakpoint fashion. -- -- url : http://www.csounds.com/manual/html/GEN25.html gen25 :: Int -> [Double] -> Irate -- | GEN27 - Construct functions from segments of straight lines in -- breakpoint fashion. -- -- url : http://www.csounds.com/manual/html/GEN27.html gen27 :: Int -> [Double] -> Irate -- | GEN01 - Transfers data from a soundfile into a function table. -- -- url : http://www.csounds.com/manual/html/GEN01.html gen01 :: Int -> String -> [Double] -> Irate -- | GEN23 - Reads numeric values from a text file. -- -- url : http://www.csounds.com/manual/html/GEN23.html gen23 :: Int -> String -> Irate -- | GEN28 - Reads a text file which contains a time-tagged trajectory. -- -- url : http://www.csounds.com/manual/html/GEN28.html gen28 :: Int -> String -> Irate -- | GEN02 - Transfers data from immediate pfields into a function table. -- -- url : http://www.csounds.com/manual/html/GEN02.html gen02 :: Int -> [Double] -> Irate -- | GEN17 - Creates a step function from given x-y pairs. -- -- url : http://www.csounds.com/manual/html/GEN17.html gen17 :: Int -> [Double] -> Irate -- | GEN20 - Generates functions of different windows. -- -- url : http://www.csounds.com/manual/html/GEN20.html gen20 :: Int -> [Double] -> Irate -- | GEN21 - Generates tables of different random distributions. -- -- url : http://www.csounds.com/manual/html/GEN21.html gen21 :: Int -> [Double] -> SideEffect Irate -- | GEN40 - Generates a random distribution using a distribution -- histogram. -- -- url : http://www.csounds.com/manual/html/GEN40.html gen40 :: Int -> Irate -> SideEffect Irate -- | GEN41 - Generates a random list of numerical pairs. -- -- url : http://www.csounds.com/manual/html/GEN41.html gen41 :: Int -> [Double] -> SideEffect Irate -- | GEN42 - Generates a random distribution of discrete ranges of values. -- -- url : http://www.csounds.com/manual/html/GEN42.html gen42 :: Int -> [Double] -> SideEffect Irate -- | GEN43 - Loads a PVOCEX file containing a PV analysis. -- -- url : http://www.csounds.com/manual/html/GEN43.html gen43 :: Int -> String -> [Double] -> Irate -- | GEN03 - Generates a stored function table by evaluating a polynomial. -- -- url : http://www.csounds.com/manual/html/GEN03.html gen03 :: Int -> [Double] -> Irate -- | GEN13 - Stores a polynomial whose coefficients derive from the -- Chebyshev polynomials of the first kind. -- -- url : http://www.csounds.com/manual/html/GEN13.html gen13 :: Int -> [Double] -> Irate -- | GEN14 - Stores a polynomial whose coefficients derive from Chebyshevs -- of the second kind. -- -- url : http://www.csounds.com/manual/html/GEN14.html gen14 :: Int -> [Double] -> Irate -- | GEN15 - Creates two tables of stored polynomial functions. -- -- url : http://www.csounds.com/manual/html/GEN15.html gen15 :: Int -> [Double] -> Irate -- | GEN04 - Generates a normalizing function. -- -- url : http://www.csounds.com/manual/html/GEN04.html gen04 :: Int -> Irate -> [Double] -> Irate -- | GEN12 - Generates the log of a modified Bessel function of the second -- kind. -- -- url : http://www.csounds.com/manual/html/GEN12.html gen12 :: Int -> [Double] -> Irate -- | GEN24 - Reads numeric values from another allocated function-table and -- rescales them. -- -- url : http://www.csounds.com/manual/html/GEN24.html gen24 :: Int -> Irate -> [Double] -> Irate -- | GEN18 - Writes composite waveforms made up of pre-existing waveforms. -- -- url : http://www.csounds.com/manual/html/GEN18.html gen18 :: Int -> [(Irate, Double, Int, Int)] -> Irate -- | GEN31 - Mixes any waveform specified in an existing table. -- -- url : http://www.csounds.com/manual/html/GEN31.html gen31 :: Int -> Irate -> [Double] -> Irate -- | GEN32 - Mixes any waveform, resampled with either FFT or linear -- interpolation. -- -- url : http://www.csounds.com/manual/html/GEN32.html gen32 :: Int -> [(Irate, Int, Double, Double)] -> Irate gen09'2 :: Integer -> [Double] -> Irate gen10'2 :: Integer -> [Double] -> Irate gen11'2 :: Integer -> [Double] -> Irate gen19'2 :: Integer -> [Double] -> Irate gen30'2 :: Integer -> Irate -> [Double] -> Irate gen33'2 :: Integer -> Irate -> [Double] -> Irate gen34'2 :: Integer -> Irate -> [Double] -> Irate gen05'2 :: Integer -> [Double] -> Irate gen06'2 :: Integer -> [Double] -> Irate gen07'2 :: Integer -> [Double] -> Irate gen08'2 :: Integer -> [Double] -> Irate gen16'2 :: Integer -> [Double] -> Irate gen25'2 :: Integer -> [Double] -> Irate gen27'2 :: Integer -> [Double] -> Irate gen01'2 :: Integer -> String -> [Double] -> Irate gen23'2 :: Integer -> String -> Irate gen28'2 :: Integer -> String -> Irate gen02'2 :: Integer -> [Double] -> Irate gen17'2 :: Integer -> [Double] -> Irate gen20'2 :: Integer -> [Double] -> Irate gen21'2 :: Integer -> [Double] -> SideEffect Irate gen40'2 :: Integer -> Irate -> SideEffect Irate gen41'2 :: Integer -> [Double] -> SideEffect Irate gen42'2 :: Integer -> [Double] -> SideEffect Irate gen43'2 :: Integer -> String -> [Double] -> Irate gen03'2 :: Integer -> [Double] -> Irate gen13'2 :: Integer -> [Double] -> Irate gen14'2 :: Integer -> [Double] -> Irate gen15'2 :: Integer -> [Double] -> Irate gen04'2 :: Integer -> Irate -> [Double] -> Irate gen12'2 :: Integer -> [Double] -> Irate gen24'2 :: Integer -> Irate -> [Double] -> Irate gen18'2 :: Integer -> [(Irate, Double, Int, Int)] -> Irate gen31'2 :: Integer -> Irate -> [Double] -> Irate gen32'2 :: Integer -> [(Irate, Int, Double, Double)] -> Irate gen09'12 :: Integer -> [Double] -> Irate gen10'12 :: Integer -> [Double] -> Irate gen11'12 :: Integer -> [Double] -> Irate gen19'12 :: Integer -> [Double] -> Irate gen30'12 :: Integer -> Irate -> [Double] -> Irate gen33'12 :: Integer -> Irate -> [Double] -> Irate gen34'12 :: Integer -> Irate -> [Double] -> Irate gen05'12 :: Integer -> [Double] -> Irate gen06'12 :: Integer -> [Double] -> Irate gen07'12 :: Integer -> [Double] -> Irate gen08'12 :: Integer -> [Double] -> Irate gen16'12 :: Integer -> [Double] -> Irate gen25'12 :: Integer -> [Double] -> Irate gen27'12 :: Integer -> [Double] -> Irate gen01'12 :: Integer -> String -> [Double] -> Irate gen23'12 :: Integer -> String -> Irate gen28'12 :: Integer -> String -> Irate gen02'12 :: Integer -> [Double] -> Irate gen17'12 :: Integer -> [Double] -> Irate gen20'12 :: Integer -> [Double] -> Irate gen21'12 :: Integer -> [Double] -> SideEffect Irate gen40'12 :: Integer -> Irate -> SideEffect Irate gen41'12 :: Integer -> [Double] -> SideEffect Irate gen42'12 :: Integer -> [Double] -> SideEffect Irate gen43'12 :: Integer -> String -> [Double] -> Irate gen03'12 :: Integer -> [Double] -> Irate gen13'12 :: Integer -> [Double] -> Irate gen14'12 :: Integer -> [Double] -> Irate gen15'12 :: Integer -> [Double] -> Irate gen04'12 :: Integer -> Irate -> [Double] -> Irate gen12'12 :: Integer -> [Double] -> Irate gen24'12 :: Integer -> Irate -> [Double] -> Irate gen18'12 :: Integer -> [(Irate, Double, Int, Int)] -> Irate gen31'12 :: Integer -> Irate -> [Double] -> Irate gen32'12 :: Integer -> [(Irate, Int, Double, Double)] -> Irate -- | Additive Synthesis/Resynthesis module CsoundExpr.Opcodes.Siggen.Additive -- | -- --
--   ares adsyn kamod, kfmod, ksmod, ifilcod
--   
-- -- -- -- Output is an additive set of individually controlled sinusoids, using -- an oscillator bank. -- -- adsyn :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> String -> Arate -- | -- --
--   ares adsynt kamp, kcps, iwfn, ifreqfn, iampfn, icnt [, iphs]
--   
-- -- -- -- Performs additive synthesis with an arbitrary number of partials, not -- necessarily harmonic. -- -- adsynt :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ar adsynt2 kamp, kcps, iwfn, ifreqfn, iampfn, icnt [, iphs]
--   
-- -- -- -- Performs additive synthesis with an arbitrary number of partials, not -- necessarily harmonic. (see adsynt for detailed manual) -- -- adsynt2 :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares hsboscil kamp, ktone, kbrite, ibasfreq, iwfn, ioctfn 
--       [, ioctcnt] [, iphs]
--   
-- -- -- -- An oscillator which takes tonality and brightness as arguments, -- relative to a base frequency. -- -- hsboscil :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> Irate -> Irate -> Irate -> Arate -- | Basic Oscillators module CsoundExpr.Opcodes.Siggen.Basic -- | -- --
--   ares oscbnk kcps, kamd, kfmd, kpmd, iovrlap, iseed, kl1minf, kl1maxf, 
--       kl2minf, kl2maxf, ilfomode, keqminf, keqmaxf, keqminl, keqmaxl, 
--       keqminq, keqmaxq, ieqmode, kfn [, il1fn] [, il2fn] [, ieqffn] 
--       [, ieqlfn] [, ieqqfn] [, itabl] [, ioutfn]
--   
-- -- -- -- This unit generator mixes the output of any number of oscillators. The -- frequency, phase, and amplitude of each oscillator can be modulated by -- two LFOs (all oscillators have a separate set of LFOs, with different -- phase and frequency); additionally, the output of each oscillator can -- be filtered through an optional parametric equalizer (also controlled -- by the LFOs). This opcode is most useful for rendering ensemble -- (strings, choir, etc.) instruments. -- -- oscbnk :: (K k0, K k1, K k2, K k3, K k4, K k5, K k6, K k7, K k8, K k9, K k10, K k11, K k12, K k13, K k14) => [Irate] -> k0 -> k1 -> k2 -> k3 -> Irate -> Irate -> k4 -> k5 -> k6 -> k7 -> Irate -> k8 -> k9 -> k10 -> k11 -> k12 -> k13 -> Irate -> k14 -> Arate -- | -- --
--   ares oscil xamp, xcps, ifn [, iphs]
--   kres oscil kamp, kcps, ifn [, iphs]
--   
-- -- -- -- oscil reads table ifn sequentially and repeatedly at a frequency xcps. -- The amplitude is scaled by xamp. -- -- oscilA :: (X x0, X x1) => [Irate] -> x0 -> x1 -> Irate -> Arate -- | -- --
--   ares oscil xamp, xcps, ifn [, iphs]
--   kres oscil kamp, kcps, ifn [, iphs]
--   
-- -- -- -- oscil reads table ifn sequentially and repeatedly at a frequency xcps. -- The amplitude is scaled by xamp. -- -- oscilK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Krate -- | -- --
--   ares oscil3 xamp, xcps, ifn [, iphs]
--   kres oscil3 kamp, kcps, ifn [, iphs]
--   
-- -- -- -- oscil3 reads table ifn sequentially and repeatedly at a frequency -- xcps. The amplitude is scaled by xamp. Cubic interpolation is applied -- for table look up from internal phase values. -- -- oscil3A :: (X x0, X x1) => [Irate] -> x0 -> x1 -> Irate -> Arate -- | -- --
--   ares oscil3 xamp, xcps, ifn [, iphs]
--   kres oscil3 kamp, kcps, ifn [, iphs]
--   
-- -- -- -- oscil3 reads table ifn sequentially and repeatedly at a frequency -- xcps. The amplitude is scaled by xamp. Cubic interpolation is applied -- for table look up from internal phase values. -- -- oscil3K :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Krate -- | -- --
--   ares oscili xamp, xcps, ifn [, iphs]
--   kres oscili kamp, kcps, ifn [, iphs]
--   
-- -- -- -- oscili reads table ifn sequentially and repeatedly at a frequency -- xcps. The amplitude is scaled by xamp. Linear interpolation is applied -- for table look up from internal phase values. -- -- osciliA :: (X x0, X x1) => [Irate] -> x0 -> x1 -> Irate -> Arate -- | -- --
--   ares oscili xamp, xcps, ifn [, iphs]
--   kres oscili kamp, kcps, ifn [, iphs]
--   
-- -- -- -- oscili reads table ifn sequentially and repeatedly at a frequency -- xcps. The amplitude is scaled by xamp. Linear interpolation is applied -- for table look up from internal phase values. -- -- osciliK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Krate -- | -- --
--   ares oscils iamp, icps, iphs [, iflg]
--   
-- -- -- -- Simple, fast sine oscillator, that uses only one multiply, and two add -- operations to generate one sample of output, and does not require a -- function table. -- -- oscils :: [Irate] -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares poscil aamp, acps, ifn [, iphs]
--   ares poscil aamp, kcps, ifn [, iphs]
--   ares poscil kamp, acps, ifn [, iphs]
--   ares poscil kamp, kcps, ifn [, iphs]
--   ires poscil kamp, kcps, ifn [, iphs]
--   kres poscil kamp, kcps, ifn [, iphs]
--   
-- -- -- -- High precision oscillator. -- -- poscilAAA :: [Irate] -> Arate -> Arate -> Irate -> Arate -- | -- --
--   ares poscil aamp, acps, ifn [, iphs]
--   ares poscil aamp, kcps, ifn [, iphs]
--   ares poscil kamp, acps, ifn [, iphs]
--   ares poscil kamp, kcps, ifn [, iphs]
--   ires poscil kamp, kcps, ifn [, iphs]
--   kres poscil kamp, kcps, ifn [, iphs]
--   
-- -- -- -- High precision oscillator. -- -- poscilAAK :: K k0 => [Irate] -> Arate -> k0 -> Irate -> Arate -- | -- --
--   ares poscil aamp, acps, ifn [, iphs]
--   ares poscil aamp, kcps, ifn [, iphs]
--   ares poscil kamp, acps, ifn [, iphs]
--   ares poscil kamp, kcps, ifn [, iphs]
--   ires poscil kamp, kcps, ifn [, iphs]
--   kres poscil kamp, kcps, ifn [, iphs]
--   
-- -- -- -- High precision oscillator. -- -- poscilAKA :: K k0 => [Irate] -> k0 -> Arate -> Irate -> Arate -- | -- --
--   ares poscil aamp, acps, ifn [, iphs]
--   ares poscil aamp, kcps, ifn [, iphs]
--   ares poscil kamp, acps, ifn [, iphs]
--   ares poscil kamp, kcps, ifn [, iphs]
--   ires poscil kamp, kcps, ifn [, iphs]
--   kres poscil kamp, kcps, ifn [, iphs]
--   
-- -- -- -- High precision oscillator. -- -- poscilAKK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Arate -- | -- --
--   ares poscil aamp, acps, ifn [, iphs]
--   ares poscil aamp, kcps, ifn [, iphs]
--   ares poscil kamp, acps, ifn [, iphs]
--   ares poscil kamp, kcps, ifn [, iphs]
--   ires poscil kamp, kcps, ifn [, iphs]
--   kres poscil kamp, kcps, ifn [, iphs]
--   
-- -- -- -- High precision oscillator. -- -- poscilI :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -- | -- --
--   ares poscil aamp, acps, ifn [, iphs]
--   ares poscil aamp, kcps, ifn [, iphs]
--   ares poscil kamp, acps, ifn [, iphs]
--   ares poscil kamp, kcps, ifn [, iphs]
--   ires poscil kamp, kcps, ifn [, iphs]
--   kres poscil kamp, kcps, ifn [, iphs]
--   
-- -- -- -- High precision oscillator. -- -- poscilK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Krate -- | -- --
--   ares poscil3 kamp, kcps, ifn [, iphs]
--   kres poscil3 kamp, kcps, ifn [, iphs]
--   
-- -- -- -- High precision oscillator with cubic interpolation. -- -- poscil3A :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Arate -- | -- --
--   ares poscil3 kamp, kcps, ifn [, iphs]
--   kres poscil3 kamp, kcps, ifn [, iphs]
--   
-- -- -- -- High precision oscillator with cubic interpolation. -- -- poscil3K :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Krate -- | -- --
--   ares oscilikt xamp, xcps, kfn [, iphs] [, istor]
--   kres oscilikt kamp, kcps, kfn [, iphs] [, istor]
--   
-- -- -- -- oscilikt is very similar to oscili, but allows changing the table -- number at k-rate. It is slightly slower than oscili (especially with -- high control rate), although also more accurate as it uses a 31-bit -- phase accumulator, as opposed to the 24-bit one used by oscili. -- -- osciliktA :: (X x0, X x1, K k0) => [Irate] -> x0 -> x1 -> k0 -> Arate -- | -- --
--   ares oscilikt xamp, xcps, kfn [, iphs] [, istor]
--   kres oscilikt kamp, kcps, kfn [, iphs] [, istor]
--   
-- -- -- -- oscilikt is very similar to oscili, but allows changing the table -- number at k-rate. It is slightly slower than oscili (especially with -- high control rate), although also more accurate as it uses a 31-bit -- phase accumulator, as opposed to the 24-bit one used by oscili. -- -- osciliktK :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> Krate -- | -- --
--   ares osciliktp kcps, kfn, kphs [, istor]
--   
-- -- -- -- osciliktp allows phase modulation (which is actually implemented as -- k-rate frequency modulation, by differentiating phase input). The -- disadvantage is that there is no amplitude control, and frequency can -- be varied only at the control-rate. This opcode can be faster or -- slower than oscilikt, depending on the control-rate. -- -- osciliktp :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> Arate -- | -- --
--   ares oscilikts xamp, xcps, kfn, async, kphs [, istor]
--   
-- -- -- -- oscilikts is the same as oscilikt. Except it has a sync input that can -- be used to re-initialize the oscillator to a k-rate phase value. It is -- slower than oscilikt and osciliktp. -- -- oscilikts :: (X x0, X x1, K k0, K k1) => [Irate] -> x0 -> x1 -> k0 -> Arate -> k1 -> Arate -- | -- --
--   ares osciln kamp, ifrq, ifn, itimes
--   
-- -- -- -- Accesses table values at a user-defined frequency. This opcode can -- also be written as oscilx. -- -- osciln :: K k0 => k0 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   kres lfo kamp, kcps [, itype]
--   ares lfo kamp, kcps [, itype]
--   
-- -- -- -- A low frequency oscillator of various shapes. -- -- lfoA :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Arate -- | -- --
--   kres lfo kamp, kcps [, itype]
--   ares lfo kamp, kcps [, itype]
--   
-- -- -- -- A low frequency oscillator of various shapes. -- -- lfoK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | -- --
--   kout vibr kAverageAmp, kAverageFreq, ifn
--   
-- -- -- -- Easier-to-use user-controllable vibrato. -- -- vibr :: (K k0, K k1) => k0 -> k1 -> Irate -> Krate -- | -- --
--   kout vibrato kAverageAmp, kAverageFreq, kRandAmountAmp, 
--       kRandAmountFreq, kAmpMinRate, kAmpMaxRate, kcpsMinRate, 
--       kcpsMaxRate, ifn [, iphs]
--   
-- -- -- -- Generates a natural-sounding user-controllable vibrato. -- -- vibrato :: (K k0, K k1, K k2, K k3, K k4, K k5, K k6, K k7) => [Irate] -> k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> k7 -> Irate -> Krate -- | Dynamic Spectrum Oscillators module CsoundExpr.Opcodes.Siggen.Dynamic -- | -- --
--   ares buzz xamp, xcps, knh, ifn [, iphs]
--   
-- -- -- -- Output is a set of harmonically related sine partials. -- -- buzz :: (X x0, X x1, K k0) => [Irate] -> x0 -> x1 -> k0 -> Irate -> Arate -- | -- --
--   ares gbuzz xamp, xcps, knh, klh, kmul, ifn [, iphs]
--   
-- -- -- -- Output is a set of harmonically related cosine partials. -- -- gbuzz :: (X x0, X x1, K k0, K k1, K k2) => [Irate] -> x0 -> x1 -> k0 -> k1 -> k2 -> Irate -> Arate -- | -- --
--   ares mpulse kamp, kintvl [, ioffset]
--   
-- -- -- -- Generates a set of impulses of amplitude kamp separated by kintvl -- seconds (or samples if kintvl is negative). The first impulse is -- generated after a delay of ioffset seconds. -- -- mpulse :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Arate -- | -- --
--   ares vco xamp, xcps, iwave, kpw [, ifn] [, imaxd] [, ileak] [, inyx] 
--       [, iphs] [, iskip]
--   
-- -- -- -- Implementation of a band limited, analog modeled oscillator, based on -- integration of band limited impulses. vco can be used to simulate a -- variety of analog wave forms. -- -- vco :: (X x0, X x1, K k0) => [Irate] -> x0 -> x1 -> Irate -> k0 -> Arate -- | -- --
--   ares vco2 kamp, kcps [, imode] [, kpw] [, kphs] [, inyx]
--   
-- -- -- -- vco2 is similar to vco. But the implementation uses pre-calculated -- tables of band-limited waveforms (see also GEN30) rather than -- integrating impulses. This opcode can be faster than vco (especially -- if a low control-rate is used) and also allows better sound quality. -- Additionally, there are more waveforms and oscillator phase can be -- modulated at k-rate. The disadvantage is increased memory usage. For -- more details about vco2 tables, see also vco2init and vco2ft. -- -- vco2 :: (K k0, K k1, K k2) => [Irate] -> [k0] -> [Irate] -> k1 -> k2 -> Arate -- | -- --
--   ifn vco2init iwave [, ibasfn] [, ipmul] [, iminsiz] [, imaxsiz] [, isrcft]
--   
-- -- -- -- vco2init calculates tables for use by vco2 opcode. Optionally, it is -- also possible to access these tables as standard Csound function -- tables. In this case, vco2ft can be used to find the correct table -- number for a given oscillator frequency. -- -- vco2init :: [Irate] -> Irate -> Irate -- | -- --
--   kfn vco2ft kcps, iwave [, inyx]
--   
-- -- -- -- vco2ft returns the function table number to be used for generating the -- specified waveform at a given frequency. This function table number -- can be used by any Csound opcode that generates a signal by reading -- function tables (like oscilikt). The tables must be calculated by -- vco2init before vco2ft is called and shared as Csound ftables -- (ibasfn). -- -- vco2ft :: K k0 => [Irate] -> k0 -> Irate -> Krate -- | -- --
--   ifn vco2ift icps, iwave [, inyx]
--   
-- -- -- -- vco2ift is the same as vco2ft, but works at i-time. It is suitable for -- use with opcodes that expect an i-rate table number (for example, -- oscili). -- -- vco2ift :: [Irate] -> Irate -> Irate -> Irate -- | FM Synthesis module CsoundExpr.Opcodes.Siggen.Fmsynth -- | -- --
--   ares foscil xamp, kcps, xcar, xmod, kndx, ifn [, iphs]
--   
-- -- -- -- A basic frequency modulated oscillator. -- -- foscil :: (X x0, K k0, X x1, X x2, K k1) => [Irate] -> x0 -> k0 -> x1 -> x2 -> k1 -> Irate -> Arate -- | -- --
--   ares foscili xamp, kcps, xcar, xmod, kndx, ifn [, iphs]
--   
-- -- -- -- Basic frequency modulated oscillator with linear interpolation. -- -- foscili :: (X x0, K k0, X x1, X x2, K k1) => [Irate] -> x0 -> k0 -> x1 -> x2 -> k1 -> Irate -> Arate -- | -- --
--   a1, a2 crossfm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- -- crossfm :: (X x0, X x1, X x2, X x3, K k0) => [Irate] -> x0 -> x1 -> x2 -> x3 -> k0 -> Irate -> Irate -> MultiOut -- | -- --
--   a1, a2 crossfm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- -- crossfmi :: (X x0, X x1, X x2, X x3, K k0) => [Irate] -> x0 -> x1 -> x2 -> x3 -> k0 -> Irate -> Irate -> MultiOut -- | -- --
--   a1, a2 crossfm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- -- crosspm :: (X x0, X x1, X x2, X x3, K k0) => [Irate] -> x0 -> x1 -> x2 -> x3 -> k0 -> Irate -> Irate -> MultiOut -- | -- --
--   a1, a2 crossfm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- -- crosspmi :: (X x0, X x1, X x2, X x3, K k0) => [Irate] -> x0 -> x1 -> x2 -> x3 -> k0 -> Irate -> Irate -> MultiOut -- | -- --
--   a1, a2 crossfm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- -- crossfmpm :: (X x0, X x1, X x2, X x3, K k0) => [Irate] -> x0 -> x1 -> x2 -> x3 -> k0 -> Irate -> Irate -> MultiOut -- | -- --
--   a1, a2 crossfm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crosspmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   a1, a2 crossfmpmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- -- crossfmpmi :: (X x0, X x1, X x2, X x3, K k0) => [Irate] -> x0 -> x1 -> x2 -> x3 -> k0 -> Irate -> Irate -> MultiOut -- | -- --
--   ares fmb3 kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, 
--       ifn4, ivfn
--   
-- -- -- -- Uses FM synthesis to create a Hammond B3 organ sound. It comes from a -- family of FM sounds, all using 4 basic oscillators and various -- architectures, as used in the TX81Z synthesizer. -- -- fmb3 :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares fmbell kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, 
--       ifn4, ivfn
--   
-- -- -- -- Uses FM synthesis to create a tublar bell sound. It comes from a -- family of FM sounds, all using 4 basic oscillators and various -- architectures, as used in the TX81Z synthesizer. -- -- fmbell :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares fmmetal kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, 
--       ifn4, ivfn
--   
-- -- -- -- Uses FM synthesis to create a Heavy Metal sound. It comes from a -- family of FM sounds, all using 4 basic oscillators and various -- architectures, as used in the TX81Z synthesizer. -- -- fmmetal :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares fmpercfl kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, 
--       ifn3, ifn4, ivfn
--   
-- -- -- -- Uses FM synthesis to create a percussive flute sound. It comes from a -- family of FM sounds, all using 4 basic oscillators and various -- architectures, as used in the TX81Z synthesizer. -- -- fmpercfl :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares fmrhode kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, 
--       ifn3, ifn4, ivfn
--   
-- -- -- -- Uses FM synthesis to create a Fender Rhodes electric piano sound. It -- comes from a family of FM sounds, all using 4 basic oscillators and -- various architectures, as used in the TX81Z synthesizer. -- -- fmrhode :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares fmvoice kamp, kfreq, kvowel, ktilt, kvibamt, kvibrate, ifn1, 
--       ifn2, ifn3, ifn4, ivibfn
--   
-- -- -- -- FM Singing Voice Synthesis -- -- fmvoice :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares fmwurlie kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, 
--       ifn4, ivfn
--   
-- -- -- -- Uses FM synthesis to create a Wurlitzer electric piano sound. It comes -- from a family of FM sounds, all using 4 basic oscillators and various -- architectures, as used in the TX81Z synthesizer. -- -- fmwurlie :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | Granular Synthesis module CsoundExpr.Opcodes.Siggen.Granular -- | -- --
--   asig diskgrain Sfname, kamp, kfreq, kpitch, kgrsize, kprate, 
--       ifun, iolaps [,imaxgrsize, ioffset]
--   
-- -- -- -- diskgrain implements synchronous granular synthesis. The source sound -- for the grains is obtained by reading a soundfile containing the -- samples of the source waveform. -- -- diskgrain :: (K k0, K k1, K k2, K k3, K k4) => [Irate] -> String -> k0 -> k1 -> k2 -> k3 -> k4 -> Irate -> Irate -> Arate -- | -- --
--   ares fof xamp, xfund, xform, koct, kband, kris, kdur, kdec, iolaps, 
--       ifna, ifnb, itotdur [, iphs] [, ifmode] [, iskip]
--   
-- -- -- -- Audio output is a succession of sinusoid bursts initiated at frequency -- xfund with a spectral peak at xform. For xfund above 25 Hz these -- bursts produce a speech-like formant with spectral characteristics -- determined by the k-input parameters. For lower fundamentals this -- generator provides a special form of granular synthesis. -- -- fof :: (X x0, X x1, X x2, K k0, K k1, K k2, K k3, K k4) => [Irate] -> x0 -> x1 -> x2 -> k0 -> k1 -> k2 -> k3 -> k4 -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares fof2 xamp, xfund, xform, koct, kband, kris, kdur, kdec, iolaps, 
--       ifna, ifnb, itotdur, kphs, kgliss [, iskip]
--   
-- -- -- -- Audio output is a succession of sinusoid bursts initiated at frequency -- xfund with a spectral peak at xform. For xfund above 25 Hz these -- bursts produce a speech-like formant with spectral characteristics -- determined by the k-input parameters. For lower fundamentals this -- generator provides a special form of granular synthesis. -- -- fof2 :: (X x0, X x1, X x2, K k0, K k1, K k2, K k3, K k4, K k5, K k6) => [Irate] -> x0 -> x1 -> x2 -> k0 -> k1 -> k2 -> k3 -> k4 -> Irate -> Irate -> Irate -> Irate -> k5 -> k6 -> Arate -- | -- --
--   ares fog xamp, xdens, xtrans, aspd, koct, kband, kris, kdur, kdec, 
--       iolaps, ifna, ifnb, itotdur [, iphs] [, itmode] [, iskip]
--   
-- -- -- -- Audio output is a succession of grains derived from data in a stored -- function table ifna. The local envelope of these grains and their -- timing is based on the model of fof synthesis and permits detailed -- control of the granular synthesis. -- -- fog :: (X x0, X x1, X x2, K k0, K k1, K k2, K k3, K k4) => [Irate] -> x0 -> x1 -> x2 -> Arate -> k0 -> k1 -> k2 -> k3 -> k4 -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares grain xamp, xpitch, xdens, kampoff, kpitchoff, kgdur, igfn, 
--       iwfn, imgdur [, igrnd]
--   
-- -- -- -- Generates granular synthesis textures. -- -- grain :: (X x0, X x1, X x2, K k0, K k1, K k2) => [Irate] -> x0 -> x1 -> x2 -> k0 -> k1 -> k2 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares grain2 kcps, kfmd, kgdur, iovrlp, kfn, iwfn [, irpow] 
--       [, iseed] [, imode]
--   
-- -- -- -- Generate granular synthesis textures. grain2 is simpler to use, but -- grain3 offers more control. -- -- grain2 :: (K k0, K k1, K k2, K k3) => [Irate] -> k0 -> k1 -> k2 -> Irate -> k3 -> Irate -> Arate -- | -- --
--   ares grain3 kcps, kphs, kfmd, kpmd, kgdur, kdens, imaxovr, kfn, iwfn, 
--       kfrpow, kprpow [, iseed] [, imode]
--   
-- -- -- -- Generate granular synthesis textures. grain2 is simpler to use but -- grain3 offers more control. -- -- grain3 :: (K k0, K k1, K k2, K k3, K k4, K k5, K k6, K k7, K k8) => [Irate] -> k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> k6 -> Irate -> k7 -> k8 -> Arate -- | -- --
--   ares granule xamp, ivoice, iratio, imode, ithd, ifn, ipshift, igskip, 
--       igskip_os, ilength, kgap, igap_os, kgsize, igsize_os, iatt, idec 
--       [, iseed] [, ipitch1] [, ipitch2] [, ipitch3] [, ipitch4] [, ifnenv]
--   
-- -- -- -- The granule unit generator is more complex than grain, but does add -- new possibilities. -- -- granule :: (X x0, K k0, K k1) => [Irate] -> x0 -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> k0 -> Irate -> k1 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   a1 [, a2, a3, a4, a5, a6, a7, a8] partikkel agrainfreq, 
--       kdistribution, idisttab, async, kenv2amt, ienv2tab, ienv_attack, 
--       ienv_decay, ksustain_amount, ka_d_ratio, kduration, kamp, igainmasks, 
--       kwavfreq, ksweepshape, iwavfreqstarttab, iwavfreqendtab, awavfm, 
--       ifmamptab, kfmenv, icosine, ktraincps, knumpartials, kchroma, 
--       ichannelmasks, krandommask, kwaveform1, kwaveform2, kwaveform3, 
--       kwaveform4, iwaveamptab, asamplepos1, asamplepos2, asamplepos3, 
--       asamplepos4, kwavekey1, kwavekey2, kwavekey3, kwavekey4, imax_grains 
--       [, iopcode_id]
--   
-- -- -- -- partikkel was conceived after reading Curtis Roads' book -- Microsound, and the goal was to create an opcode that was -- capable of all time-domain varieties of granular synthesis described -- in this book. The idea being that most of the techniques only differ -- in parameter values, and by having a single opcode that can do all -- varieties of granular synthesis makes it possible to interpolate -- between techniques. Granular synthesis is sometimes dubbed particle -- synthesis, and it was thought apt to name the opcode partikkel to -- distinguish it from other granular opcodes. -- -- partikkel :: (K k0, K k1, K k2, K k3, K k4, K k5, K k6, K k7, K k8, K k9, K k10, K k11, K k12, K k13, K k14, K k15, K k16, K k17, K k18, K k19, K k20) => [Irate] -> Arate -> k0 -> Irate -> Arate -> k1 -> Irate -> Irate -> Irate -> k2 -> k3 -> k4 -> k5 -> Irate -> k6 -> k7 -> Irate -> Irate -> Arate -> Irate -> k8 -> Irate -> k9 -> k10 -> k11 -> Irate -> k12 -> k13 -> k14 -> k15 -> k16 -> Irate -> Arate -> Arate -> Arate -> Arate -> k17 -> k18 -> k19 -> k20 -> Irate -> MultiOut -- | -- --
--   async [,aphase] partikkelsync iopcode_id
--   
-- -- -- -- partikkelsync is an opcode for outputting partikkel's grain scheduler -- clock pulse and phase. partikkelsync's output can be used to -- synchronize other instances of the partikkel opcode to the same clock. -- -- partikkelsync :: Irate -> MultiOut -- | -- --
--   ares [, ac] sndwarp xamp, xtimewarp, xresample, ifn1, ibeg, iwsize, 
--       irandw, ioverlap, ifn2, itimemode
--   
-- -- -- -- sndwarp reads sound samples from a table and applies time-stretching -- and/or pitch modification. Time and frequency modification are -- independent from one another. For example, a sound can be stretched in -- time while raising the pitch! -- -- sndwarp :: (X x0, X x1, X x2) => x0 -> x1 -> x2 -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   ar1, ar2 [,ac1] [, ac2] sndwarpst xamp, xtimewarp, xresample, ifn1, 
--       ibeg, iwsize, irandw, ioverlap, ifn2, itimemode
--   
-- -- -- -- sndwarpst reads stereo sound samples from a table and applies -- time-stretching and/or pitch modification. Time and frequency -- modification are independent from one another. For example, a sound -- can be stretched in time while raising the pitch! -- -- sndwarpst :: (X x0, X x1, X x2) => x0 -> x1 -> x2 -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   asig syncgrain kamp, kfreq, kpitch, kgrsize, kprate, ifun1, 
--       ifun2, iolaps
--   
-- -- -- -- syncgrain implements synchronous granular synthesis. The source sound -- for the grains is obtained by reading a function table containing the -- samples of the source waveform. For sampled-sound sources, GEN01 is -- used. syncgrain will accept deferred allocation tables. -- -- syncgrain :: (K k0, K k1, K k2, K k3, K k4) => k0 -> k1 -> k2 -> k3 -> k4 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   asig syncloop kamp, kfreq, kpitch, kgrsize, kprate, klstart, 
--       klend, ifun1, ifun2, iolaps[,istart, iskip]
--   
-- -- -- -- syncloop is a variation on syncgrain, which implements synchronous -- granular synthesis. syncloop adds loop start and end points and an -- optional start position. Loop start and end control grain start -- positions, so the actual grains can go beyond the loop points (if the -- loop points are not at the extremes of the table), enabling seamless -- crossfading. For more information on the granular synthesis process, -- check the syncgrain manual page. -- -- syncloop :: (K k0, K k1, K k2, K k3, K k4, K k5, K k6) => [Irate] -> k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ar vosim kamp, kFund, kForm, kDecay, kPulseCount, kPulseFactor, ifn [, iskip]
--   
-- -- -- -- This opcode produces a simple vocal simulation based on glottal pulses -- with formant characteristics. Output is a series of sound events, -- where each event is composed of a burst of squared sine pulses -- followed by silence. The VOSIM (VOcal SIMulation) synthesis method was -- developed by Kaegi and Tempelaars in the 1970's. -- -- vosim :: (K k0, K k1, K k2, K k3, K k4, K k5) => [Irate] -> k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Arate -- | Hyper Vectorial Synthesis module CsoundExpr.Opcodes.Siggen.Hvs -- | -- --
--   vphaseseg kphase, ioutab, ielems, itab1,idist1,itab2 
--       [,idist2,itab3,...,idistN-1,itabN]
--   
-- -- -- -- vphaseseg allows one-dimensional HVS (Hyper-Vectorial Synthesis). -- -- vphaseseg :: K k0 => k0 -> Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   hvs1 kx, inumParms, inumPointsX, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--   
-- -- -- -- hvs1 allows one-dimensional Hyper Vectorial Synthesis (HVS) controlled -- by externally-updated k-variables. -- -- hvs1 :: K k0 => [Irate] -> k0 -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   hvs2 kx, ky, inumParms, inumPointsX, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--   
-- -- -- -- hvs2 allows two-dimensional Hyper Vectorial Synthesis (HVS) controlled -- by externally-updated k-variables. -- -- hvs2 :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   hvs3 kx, ky, kz, inumParms, inumPointsX, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--   
-- -- -- -- hvs3 allows three-dimensional Hyper Vectorial Synthesis (HVS) -- controlled by externally-updated k-variables. -- -- hvs3 :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | Linear and Exponential Generators module CsoundExpr.Opcodes.Siggen.Lineexp -- | -- --
--   ares expon ia, idur, ib
--   kres expon ia, idur, ib
--   
-- -- -- -- Trace an exponential curve between specified points. -- -- exponA :: Irate -> Irate -> Irate -> Arate -- | -- --
--   ares expon ia, idur, ib
--   kres expon ia, idur, ib
--   
-- -- -- -- Trace an exponential curve between specified points. -- -- exponK :: Irate -> Irate -> Irate -> Krate -- | -- --
--   kout expcurve kindex, ksteepness
--   
-- -- -- -- Generates an exponential curve in range 0 to 1 of arbitrary steepness. -- Steepness index equal to or lower than 1.0 will result in Not-a-Number -- errors and cause unstable behavior. -- -- expcurve :: (K k0, K k1) => k0 -> k1 -> Krate -- | -- --
--   ares expseg ia, idur1, ib [, idur2] [, ic] [...]
--   kres expseg ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- -- -- Trace a series of exponential segments between specified points. -- -- expsegA :: [Irate] -> Arate -- | -- --
--   ares expseg ia, idur1, ib [, idur2] [, ic] [...]
--   kres expseg ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- -- -- Trace a series of exponential segments between specified points. -- -- expsegK :: [Irate] -> Krate -- | -- --
--   ares expsega ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- -- -- An exponential segment generator operating at a-rate. This unit is -- almost identical to expseg, but more precise when defining segments -- with very short durations (i.e., in a percussive attack phase) at -- audio rate. -- -- expsega :: [Irate] -> Arate -- | -- --
--   ares expsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   kres expsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   
-- -- -- -- Trace a series of exponential segments between specified points -- including a release segment. -- -- expsegrA :: [Irate] -> Irate -> Irate -> Arate -- | -- --
--   ares expsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   kres expsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   
-- -- -- -- Trace a series of exponential segments between specified points -- including a release segment. -- -- expsegrK :: [Irate] -> Irate -> Irate -> Krate -- | -- --
--   kout gainslider kindex
--   
-- -- -- -- This opcode is intended for use to multiply by an audio signal to give -- a console mixer like feel. There is no bounds in the source code so -- you can for example give higher than 127 values for extra amplitude -- but possibly clipped audio. -- -- gainslider :: K k0 => k0 -> Krate -- | -- --
--   ares jspline xamp, kcpsMin, kcpsMax
--   kres jspline kamp, kcpsMin, kcpsMax
--   
-- -- -- -- A jitter-spline generator. -- -- jsplineA :: (X x0, K k0, K k1) => x0 -> k0 -> k1 -> Arate -- | -- --
--   ares jspline xamp, kcpsMin, kcpsMax
--   kres jspline kamp, kcpsMin, kcpsMax
--   
-- -- -- -- A jitter-spline generator. -- -- jsplineK :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   ares line ia, idur, ib
--   kres line ia, idur, ib
--   
-- -- -- -- Trace a straight line between specified points. -- -- lineA :: Irate -> Irate -> Irate -> Arate -- | -- --
--   ares line ia, idur, ib
--   kres line ia, idur, ib
--   
-- -- -- -- Trace a straight line between specified points. -- -- lineK :: Irate -> Irate -> Irate -> Krate -- | -- --
--   ares linseg ia, idur1, ib [, idur2] [, ic] [...]
--   kres linseg ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- -- -- Trace a series of line segments between specified points. -- -- linsegA :: [Irate] -> Arate -- | -- --
--   ares linseg ia, idur1, ib [, idur2] [, ic] [...]
--   kres linseg ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- -- -- Trace a series of line segments between specified points. -- -- linsegK :: [Irate] -> Krate -- | -- --
--   ares linsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   kres linsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   
-- -- -- -- Trace a series of line segments between specified points including a -- release segment. -- -- linsegrA :: [Irate] -> Irate -> Irate -> Arate -- | -- --
--   ares linsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   kres linsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   
-- -- -- -- Trace a series of line segments between specified points including a -- release segment. -- -- linsegrK :: [Irate] -> Irate -> Irate -> Krate -- | -- --
--   kout logcurve kindex, ksteepness
--   
-- -- -- -- Generates a logarithmic curve in range 0 to 1 of arbitrary steepness. -- Steepness index equal to or lower than 1.0 will result in Not-a-Number -- errors and cause unstable behavior. -- -- logcurve :: (K k0, K k1) => k0 -> k1 -> Krate -- | -- --
--   ksig loopseg kfreq, ktrig, ktime0, kvalue0 [, ktime1] [, kvalue1] 
--       [, ktime2] [, kvalue2] [...]
--   
-- -- -- -- Generate control signal consisting of linear segments delimited by two -- or more specified points. The entire envelope is looped at kfreq rate. -- Each parameter can be varied at k-rate. -- -- loopseg :: (K k0, K k1, K k2) => k0 -> k1 -> [k2] -> Krate -- | -- --
--   ksig loopsegp kphase, kvalue0, kdur0, kvalue1 
--       [, kdur1,..., kdurN-1, kvalueN]
--   
-- -- -- -- Generate control signal consisiting of linear segments delimited by -- two or more specified points. The entire envelope can be looped at -- time-variant rate. Each segment coordinate can also be varied at -- k-rate. -- -- loopsegp :: (K k0, K k1) => k0 -> [k1] -> Krate -- | -- --
--   ksig lpshold kfreq, ktrig, ktime0, kvalue0 [, ktime1] [, kvalue1] 
--       [, ktime2] [, kvalue2] [...]
--   
-- -- -- -- Generate control signal consisting of held segments delimited by two -- or more specified points. The entire envelope is looped at kfreq rate. -- Each parameter can be varied at k-rate. -- -- lpshold :: (K k0, K k1, K k2) => k0 -> k1 -> [k2] -> Krate -- | -- --
--   ksig lpsholdp kphase, ktrig, ktime0, kvalue0 [, ktime1] [, kvalue1] 
--       [, ktime2] [, kvalue2] [...]
--   
-- -- -- -- Generate control signal consisiting of held segments delimited by two -- or more specified points. The entire envelope can be looped at -- time-variant rate. Each segment coordinate can also be varied at -- k-rate. -- -- lpsholdp :: (K k0, K k1) => k0 -> [k1] -> Krate -- | -- --
--   ares rspline xrangeMin, xrangeMax, kcpsMin, kcpsMax
--   kres rspline krangeMin, krangeMax, kcpsMin, kcpsMax
--   
-- -- -- -- Generate random spline curves. -- -- rsplineA :: (X x0, X x1, K k0, K k1) => x0 -> x1 -> k0 -> k1 -> Arate -- | -- --
--   ares rspline xrangeMin, xrangeMax, kcpsMin, kcpsMax
--   kres rspline krangeMin, krangeMax, kcpsMin, kcpsMax
--   
-- -- -- -- Generate random spline curves. -- -- rsplineK :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> k3 -> Krate -- | -- --
--   kscl scale kinput, kmax, kmin
--   
-- -- -- -- Scales incoming value to user-definable range. Similar to scale object -- found in popular dataflow languages. -- -- scale :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   ares transeg ia, idur, itype, ib [, idur2] [, itype] [, ic]...
--   kres transeg ia, idur, itype, ib [, idur2] [, itype] [, ic]...
--   
-- -- -- -- Constructs a user-definable envelope. -- -- transegA :: [Irate] -> Arate -- | -- --
--   ares transeg ia, idur, itype, ib [, idur2] [, itype] [, ic]...
--   kres transeg ia, idur, itype, ib [, idur2] [, itype] [, ic]...
--   
-- -- -- -- Constructs a user-definable envelope. -- -- transegK :: [Irate] -> Krate -- | Envelope Generators module CsoundExpr.Opcodes.Siggen.Envelope -- | -- --
--   ares adsr iatt, idec, islev, irel [, idel]
--   kres adsr iatt, idec, islev, irel [, idel]
--   
-- -- -- -- Calculates the classical ADSR envelope using linear segments. -- -- adsrA :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares adsr iatt, idec, islev, irel [, idel]
--   kres adsr iatt, idec, islev, irel [, idel]
--   
-- -- -- -- Calculates the classical ADSR envelope using linear segments. -- -- adsrK :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Krate -- | -- --
--   ares madsr iatt, idec, islev, irel [, idel] [, ireltim]
--   kres madsr iatt, idec, islev, irel [, idel] [, ireltim]
--   
-- -- -- -- Calculates the classical ADSR envelope using the linsegr mechanism. -- -- madsrA :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares madsr iatt, idec, islev, irel [, idel] [, ireltim]
--   kres madsr iatt, idec, islev, irel [, idel] [, ireltim]
--   
-- -- -- -- Calculates the classical ADSR envelope using the linsegr mechanism. -- -- madsrK :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Krate -- | -- --
--   ares mxadsr iatt, idec, islev, irel [, idel] [, ireltim]
--   kres mxadsr iatt, idec, islev, irel [, idel] [, ireltim]
--   
-- -- -- -- Calculates the classical ADSR envelope using the expsegr mechanism. -- -- mxadsrA :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares mxadsr iatt, idec, islev, irel [, idel] [, ireltim]
--   kres mxadsr iatt, idec, islev, irel [, idel] [, ireltim]
--   
-- -- -- -- Calculates the classical ADSR envelope using the expsegr mechanism. -- -- mxadsrK :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Krate -- | -- --
--   ares xadsr iatt, idec, islev, irel [, idel]
--   kres xadsr iatt, idec, islev, irel [, idel]
--   
-- -- -- -- Calculates the classical ADSR envelope -- -- xadsrA :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares xadsr iatt, idec, islev, irel [, idel]
--   kres xadsr iatt, idec, islev, irel [, idel]
--   
-- -- -- -- Calculates the classical ADSR envelope -- -- xadsrK :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Krate -- | -- --
--   ares linen xamp, irise, idur, idec
--   kres linen kamp, irise, idur, idec
--   
-- -- -- -- linen -- apply a straight line rise and decay pattern to an input amp -- signal. -- -- linenA :: X x0 => x0 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares linen xamp, irise, idur, idec
--   kres linen kamp, irise, idur, idec
--   
-- -- -- -- linen -- apply a straight line rise and decay pattern to an input amp -- signal. -- -- linenK :: K k0 => k0 -> Irate -> Irate -> Irate -> Krate -- | -- --
--   ares linenr xamp, irise, idec, iatdec
--   kres linenr kamp, irise, idec, iatdec
--   
-- -- -- -- linenr -- same as linen except that the final segment is entered only -- on sensing a MIDI note release. The note is then extended by the decay -- time. -- -- linenrA :: X x0 => x0 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares linenr xamp, irise, idec, iatdec
--   kres linenr kamp, irise, idec, iatdec
--   
-- -- -- -- linenr -- same as linen except that the final segment is entered only -- on sensing a MIDI note release. The note is then extended by the decay -- time. -- -- linenrK :: K k0 => k0 -> Irate -> Irate -> Irate -> Krate -- | -- --
--   ares envlpx xamp, irise, idur, idec, ifn, iatss, iatdec [, ixmod]
--   kres envlpx kamp, irise, idur, idec, ifn, iatss, iatdec [, ixmod]
--   
-- -- -- -- envlpx -- apply an envelope consisting of 3 segments: -- -- envlpxA :: X x0 => [Irate] -> x0 -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares envlpx xamp, irise, idur, idec, ifn, iatss, iatdec [, ixmod]
--   kres envlpx kamp, irise, idur, idec, ifn, iatss, iatdec [, ixmod]
--   
-- -- -- -- envlpx -- apply an envelope consisting of 3 segments: -- -- envlpxK :: K k0 => [Irate] -> k0 -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Krate -- | -- --
--   ares envlpxr xamp, irise, idec, ifn, iatss, iatdec [, ixmod] [,irind]
--   kres envlpxr kamp, irise, idec, ifn, iatss, iatdec [, ixmod] [,irind]
--   
-- -- -- -- envlpxr is the same as envlpx except that the final segment is entered -- only on sensing a MIDI note release. The note is then extended by the -- decay time. -- -- envlpxrA :: X x0 => [Irate] -> x0 -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares envlpxr xamp, irise, idec, ifn, iatss, iatdec [, ixmod] [,irind]
--   kres envlpxr kamp, irise, idec, ifn, iatss, iatdec [, ixmod] [,irind]
--   
-- -- -- -- envlpxr is the same as envlpx except that the final segment is entered -- only on sensing a MIDI note release. The note is then extended by the -- decay time. -- -- envlpxrK :: K k0 => [Irate] -> k0 -> Irate -> Irate -> Irate -> Irate -> Irate -> Krate -- | Models and Emulations module CsoundExpr.Opcodes.Siggen.Models -- | -- --
--   ares bamboo kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] 
--       [, ifreq1] [, ifreq2]
--   
-- -- -- -- bamboo is a semi-physical model of a bamboo sound. It is one of the -- PhISEM percussion opcodes. PhISEM (Physically Informed Stochastic -- Event Modeling) is an algorithmic approach for simulating collisions -- of multiple independent sound producing objects. -- -- bamboo :: K k0 => [Irate] -> k0 -> Irate -> Arate -- | -- --
--   ares barmodel kbcL, kbcR, iK, ib, kscan, iT30, ipos, ivel, iwid
--   
-- -- -- -- Audio output is a tone similar to a struck metal bar, using a physical -- model developed from solving the partial differential equation. There -- are controls over the boundary conditions as well as the bar -- characteristics. -- -- barmodel :: (K k0, K k1, K k2) => k0 -> k1 -> Irate -> Irate -> k2 -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares cabasa iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- -- -- cabasa is a semi-physical model of a cabasa sound. It is one of the -- PhISEM percussion opcodes. PhISEM (Physically Informed Stochastic -- Event Modeling) is an algorithmic approach for simulating collisions -- of multiple independent sound producing objects. -- -- cabasa :: [Irate] -> Irate -> Irate -> Arate -- | -- --
--   ares crunch iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- -- -- crunch is a semi-physical model of a crunch sound. It is one of the -- PhISEM percussion opcodes. PhISEM (Physically Informed Stochastic -- Event Modeling) is an algorithmic approach for simulating collisions -- of multiple independent sound producing objects. -- -- crunch :: [Irate] -> Irate -> Irate -> Arate -- | -- --
--   ares dripwater kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] 
--       [, ifreq1] [, ifreq2]
--   
-- -- -- -- dripwater is a semi-physical model of a water drop. It is one of the -- PhISEM percussion opcodes. PhISEM (Physically Informed Stochastic -- Event Modeling) is an algorithmic approach for simulating collisions -- of multiple independent sound producing objects. -- -- dripwater :: K k0 => [Irate] -> k0 -> Irate -> Arate -- | -- --
--   ares gogobel kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivfn
--   
-- -- -- -- Audio output is a tone related to the striking of a cow bell or -- similar. The method is a physical model developed from Perry Cook, but -- re-coded for Csound. -- -- gogobel :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> Irate -> Irate -> Irate -> k2 -> k3 -> Irate -> Arate -- | -- --
--   ares guiro kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] [, ifreq1]
--   
-- -- -- -- guiro is a semi-physical model of a guiro sound. It is one of the -- PhISEM percussion opcodes. PhISEM (Physically Informed Stochastic -- Event Modeling) is an algorithmic approach for simulating collisions -- of multiple independent sound producing objects. -- -- guiro :: K k0 => [Irate] -> k0 -> Irate -> Arate -- | -- --
--   ares mandol kamp, kfreq, kpluck, kdetune, kgain, ksize, ifn [, iminfreq]
--   
-- -- -- -- An emulation of a mandolin. -- -- mandol :: (K k0, K k1, K k2, K k3, K k4, K k5) => [Irate] -> k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Arate -- | -- --
--   ares marimba kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivibfn, idec 
--       [, idoubles] [, itriples]
--   
-- -- -- -- Audio output is a tone related to the striking of a wooden block as -- found in a marimba. The method is a physical model developed from -- Perry Cook but re-coded for Csound. -- -- marimba :: (K k0, K k1, K k2, K k3) => [Irate] -> k0 -> k1 -> Irate -> Irate -> Irate -> k2 -> k3 -> Irate -> Irate -> Arate -- | -- --
--   ares moog kamp, kfreq, kfiltq, kfiltrate, kvibf, kvamp, iafn, iwfn, ivfn
--   
-- -- -- -- An emulation of a mini-Moog synthesizer. -- -- moog :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares sandpaper iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- -- -- sandpaper is a semi-physical model of a sandpaper sound. It is one of -- the PhISEM percussion opcodes. PhISEM (Physically Informed Stochastic -- Event Modeling) is an algorithmic approach for simulating collisions -- of multiple independent sound producing objects. -- -- sandpaper :: [Irate] -> Irate -> Irate -> Arate -- | -- --
--   ares sekere iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- -- -- sekere is a semi-physical model of a sekere sound. It is one of the -- PhISEM percussion opcodes. PhISEM (Physically Informed Stochastic -- Event Modeling) is an algorithmic approach for simulating collisions -- of multiple independent sound producing objects. -- -- sekere :: [Irate] -> Irate -> Irate -> Arate -- | -- --
--   ares shaker kamp, kfreq, kbeans, kdamp, ktimes [, idecay]
--   
-- -- -- -- Audio output is a tone related to the shaking of a maraca or similar -- gourd instrument. The method is a physically inspired model developed -- from Perry Cook, but re-coded for Csound. -- -- shaker :: (K k0, K k1, K k2, K k3, K k4) => [Irate] -> k0 -> k1 -> k2 -> k3 -> k4 -> Arate -- | -- --
--   ares sleighbells kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] 
--       [, ifreq1] [, ifreq2]
--   
-- -- -- -- sleighbells is a semi-physical model of a sleighbell sound. It is one -- of the PhISEM percussion opcodes. PhISEM (Physically Informed -- Stochastic Event Modeling) is an algorithmic approach for simulating -- collisions of multiple independent sound producing objects. -- -- sleighbells :: K k0 => [Irate] -> k0 -> Irate -> Arate -- | -- --
--   ares stix iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- -- -- stix is a semi-physical model of a stick sound. It is one of the -- PhISEM percussion opcodes. PhISEM (Physically Informed Stochastic -- Event Modeling) is an algorithmic approach for simulating collisions -- of multiple independent sound producing objects. -- -- stix :: [Irate] -> Irate -> Irate -> Arate -- | -- --
--   ares tambourine kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] 
--       [, ifreq1] [, ifreq2]
--   
-- -- -- -- tambourine is a semi-physical model of a tambourine sound. It is one -- of the PhISEM percussion opcodes. PhISEM (Physically Informed -- Stochastic Event Modeling) is an algorithmic approach for simulating -- collisions of multiple independent sound producing objects. -- -- tambourine :: K k0 => [Irate] -> k0 -> Irate -> Arate -- | -- --
--   ares vibes kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivibfn, idec
--   
-- -- -- -- Audio output is a tone related to the striking of a metal block as -- found in a vibraphone. The method is a physical model developed from -- Perry Cook, but re-coded for Csound. -- -- vibes :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> Irate -> Irate -> Irate -> k2 -> k3 -> Irate -> Irate -> Arate -- | -- --
--   ares voice kamp, kfreq, kphoneme, kform, kvibf, kvamp, ifn, ivfn
--   
-- -- -- -- An emulation of a human voice. -- -- voice :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Irate -> Arate -- | -- --
--   ax, ay, az lorenz ksv, krv, kbv, kh, ix, iy, iz, iskip [, iskipinit]
--   
-- -- -- -- Implements the Lorenz system of equations. The Lorenz system is a -- chaotic-dynamic system which was originally used to simulate the -- motion of a particle in convection currents and simplified weather -- systems. Small differences in initial conditions rapidly lead to -- diverging values. This is sometimes expressed as the butterfly effect. -- If a butterfly flaps its wings in Australia, it will have an effect on -- the weather in Alaska. This system is one of the milestones in the -- development of chaos theory. It is useful as a chaotic audio source or -- as a low frequency modulation source. -- -- lorenz :: (K k0, K k1, K k2, K k3) => [Irate] -> k0 -> k1 -> k2 -> k3 -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   ax, ay, az planet kmass1, kmass2, ksep, ix, iy, iz, ivx, ivy, ivz, idelta 
--       [, ifriction] [, iskip]
--   
-- -- -- -- planet simulates a planet orbiting in a binary star system. The -- outputs are the x, y and z coordinates of the orbiting planet. It is -- possible for the planet to achieve escape velocity by a close -- encounter with a star. This makes this system somewhat unstable. -- -- planet :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   ares prepiano ifreq, iNS, iD, iK, 
--       iT30,iB, kbcl, kbcr, imass, ifreq, iinit, ipos, ivel, isfreq, 
--       isspread[, irattles, irubbers]
--   al,ar prepiano ifreq, iNS, iD, iK, 
--       iT30,iB, kbcl, kbcr, imass, ifreq, iinit, ipos, ivel, isfreq, 
--       isspread[, irattles, irubbers]
--   
-- -- -- -- Audio output is a tone similar to a piano string, prepared with a -- number of rubbers and rattles. The method uses a physical model -- developed from solving the partial differential equation. -- -- prepiano :: (K k0, K k1) => [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> k0 -> k1 -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   ares prepiano ifreq, iNS, iD, iK, 
--       iT30,iB, kbcl, kbcr, imass, ifreq, iinit, ipos, ivel, isfreq, 
--       isspread[, irattles, irubbers]
--   al,ar prepiano ifreq, iNS, iD, iK, 
--       iT30,iB, kbcl, kbcr, imass, ifreq, iinit, ipos, ivel, isfreq, 
--       isspread[, irattles, irubbers]
--   
-- -- -- -- Audio output is a tone similar to a piano string, prepared with a -- number of rubbers and rattles. The method uses a physical model -- developed from solving the partial differential equation. -- -- prepianoA :: (K k0, K k1) => [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> k0 -> k1 -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   kiter, koutrig mandel ktrig, kx, ky, kmaxIter
--   
-- -- -- -- Returns the number of iterations corresponding to a given point of -- complex plane by applying the Mandelbrot set formula. -- -- mandel :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> k3 -> MultiOut -- | -- --
--   aI3, aV2, aV1 chuap kL, kR0, kC1, kG, kGa, kGb, kE, kC2, iI3, iV2, iV1, ktime_step
--   
-- -- -- -- Simulates Chua's oscillator, an LRC oscillator with an active -- resistor, proved capable of bifurcation and chaotic attractors, with -- k-rate control of circuit elements. -- -- chuap :: (K k0, K k1, K k2, K k3, K k4, K k5, K k6, K k7, K k8) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> k7 -> Irate -> Irate -> Irate -> k8 -> MultiOut -- | Phasors module CsoundExpr.Opcodes.Siggen.Phasors -- | -- --
--   ares phasor xcps [, iphs]
--   kres phasor kcps [, iphs]
--   
-- -- -- -- Produce a normalized moving phase value. -- -- phasorA :: X x0 => [Irate] -> x0 -> Arate -- | -- --
--   ares phasor xcps [, iphs]
--   kres phasor kcps [, iphs]
--   
-- -- -- -- Produce a normalized moving phase value. -- -- phasorK :: K k0 => [Irate] -> k0 -> Krate -- | -- --
--   ares phasorbnk xcps, kndx, icnt [, iphs]
--   kres phasorbnk kcps, kndx, icnt [, iphs]
--   
-- -- -- -- Produce an arbitrary number of normalized moving phase values, -- accessable by an index. -- -- phasorbnkA :: (X x0, K k0) => [Irate] -> x0 -> k0 -> Irate -> Arate -- | -- --
--   ares phasorbnk xcps, kndx, icnt [, iphs]
--   kres phasorbnk kcps, kndx, icnt [, iphs]
--   
-- -- -- -- Produce an arbitrary number of normalized moving phase values, -- accessable by an index. -- -- phasorbnkK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Krate -- | -- --
--   aphase, asyncout syncphasor xcps, asyncin, [, iphs]
--   
-- -- -- -- Produces a moving phase value between zero and one and an extra -- impulse output (sync out) whenever its phase value crosses or -- is reset to zero. The phase can be reset at any time by an impulse on -- the sync in parameter. -- -- syncphasor :: X x0 => [Irate] -> x0 -> Arate -> MultiOut -- | Random (Noise) Generators module CsoundExpr.Opcodes.Siggen.Noise -- | -- --
--   ares bexprnd krange
--   ires bexprnd krange
--   kres bexprnd krange
--   
-- -- -- -- Exponential distribution random number generator. This is an x-class -- noise generator. -- -- bexprndA' :: K k0 => k0 -> Arate -- | -- --
--   ares bexprnd krange
--   ires bexprnd krange
--   kres bexprnd krange
--   
-- -- -- -- Exponential distribution random number generator. This is an x-class -- noise generator. -- -- bexprndA :: K k0 => k0 -> SideEffect Arate -- | -- --
--   ares bexprnd krange
--   ires bexprnd krange
--   kres bexprnd krange
--   
-- -- -- -- Exponential distribution random number generator. This is an x-class -- noise generator. -- -- bexprndI' :: K k0 => k0 -> Irate -- | -- --
--   ares bexprnd krange
--   ires bexprnd krange
--   kres bexprnd krange
--   
-- -- -- -- Exponential distribution random number generator. This is an x-class -- noise generator. -- -- bexprndI :: K k0 => k0 -> SideEffect Irate -- | -- --
--   ares bexprnd krange
--   ires bexprnd krange
--   kres bexprnd krange
--   
-- -- -- -- Exponential distribution random number generator. This is an x-class -- noise generator. -- -- bexprndK' :: K k0 => k0 -> Krate -- | -- --
--   ares bexprnd krange
--   ires bexprnd krange
--   kres bexprnd krange
--   
-- -- -- -- Exponential distribution random number generator. This is an x-class -- noise generator. -- -- bexprndK :: K k0 => k0 -> SideEffect Krate -- | -- --
--   ares cauchy kalpha
--   ires cauchy kalpha
--   kres cauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator. This is an x-class noise -- generator. -- -- cauchyA' :: K k0 => k0 -> Arate -- | -- --
--   ares cauchy kalpha
--   ires cauchy kalpha
--   kres cauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator. This is an x-class noise -- generator. -- -- cauchyA :: K k0 => k0 -> SideEffect Arate -- | -- --
--   ares cauchy kalpha
--   ires cauchy kalpha
--   kres cauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator. This is an x-class noise -- generator. -- -- cauchyI' :: K k0 => k0 -> Irate -- | -- --
--   ares cauchy kalpha
--   ires cauchy kalpha
--   kres cauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator. This is an x-class noise -- generator. -- -- cauchyI :: K k0 => k0 -> SideEffect Irate -- | -- --
--   ares cauchy kalpha
--   ires cauchy kalpha
--   kres cauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator. This is an x-class noise -- generator. -- -- cauchyK' :: K k0 => k0 -> Krate -- | -- --
--   ares cauchy kalpha
--   ires cauchy kalpha
--   kres cauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator. This is an x-class noise -- generator. -- -- cauchyK :: K k0 => k0 -> SideEffect Krate -- | -- --
--   aout cuserrnd kmin, kmax, ktableNum
--   iout cuserrnd imin, imax, itableNum
--   kout cuserrnd kmin, kmax, ktableNum
--   
-- -- -- -- Continuous USER-defined-distribution RaNDom generator. -- -- cuserrndA' :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Arate -- | -- --
--   aout cuserrnd kmin, kmax, ktableNum
--   iout cuserrnd imin, imax, itableNum
--   kout cuserrnd kmin, kmax, ktableNum
--   
-- -- -- -- Continuous USER-defined-distribution RaNDom generator. -- -- cuserrndA :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> SideEffect Arate -- | -- --
--   aout cuserrnd kmin, kmax, ktableNum
--   iout cuserrnd imin, imax, itableNum
--   kout cuserrnd kmin, kmax, ktableNum
--   
-- -- -- -- Continuous USER-defined-distribution RaNDom generator. -- -- cuserrndI' :: Irate -> Irate -> Irate -> Irate -- | -- --
--   aout cuserrnd kmin, kmax, ktableNum
--   iout cuserrnd imin, imax, itableNum
--   kout cuserrnd kmin, kmax, ktableNum
--   
-- -- -- -- Continuous USER-defined-distribution RaNDom generator. -- -- cuserrndI :: Irate -> Irate -> Irate -> SideEffect Irate -- | -- --
--   aout cuserrnd kmin, kmax, ktableNum
--   iout cuserrnd imin, imax, itableNum
--   kout cuserrnd kmin, kmax, ktableNum
--   
-- -- -- -- Continuous USER-defined-distribution RaNDom generator. -- -- cuserrndK' :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   aout cuserrnd kmin, kmax, ktableNum
--   iout cuserrnd imin, imax, itableNum
--   kout cuserrnd kmin, kmax, ktableNum
--   
-- -- -- -- Continuous USER-defined-distribution RaNDom generator. -- -- cuserrndK :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> SideEffect Krate -- | -- --
--   aout duserrnd ktableNum
--   iout duserrnd itableNum
--   kout duserrnd ktableNum
--   
-- -- -- -- Discrete USER-defined-distribution RaNDom generator. -- -- duserrndA' :: K k0 => k0 -> Arate -- | -- --
--   aout duserrnd ktableNum
--   iout duserrnd itableNum
--   kout duserrnd ktableNum
--   
-- -- -- -- Discrete USER-defined-distribution RaNDom generator. -- -- duserrndA :: K k0 => k0 -> SideEffect Arate -- | -- --
--   aout duserrnd ktableNum
--   iout duserrnd itableNum
--   kout duserrnd ktableNum
--   
-- -- -- -- Discrete USER-defined-distribution RaNDom generator. -- -- duserrndI' :: Irate -> Irate -- | -- --
--   aout duserrnd ktableNum
--   iout duserrnd itableNum
--   kout duserrnd ktableNum
--   
-- -- -- -- Discrete USER-defined-distribution RaNDom generator. -- -- duserrndI :: Irate -> SideEffect Irate -- | -- --
--   aout duserrnd ktableNum
--   iout duserrnd itableNum
--   kout duserrnd ktableNum
--   
-- -- -- -- Discrete USER-defined-distribution RaNDom generator. -- -- duserrndK' :: K k0 => k0 -> Krate -- | -- --
--   aout duserrnd ktableNum
--   iout duserrnd itableNum
--   kout duserrnd ktableNum
--   
-- -- -- -- Discrete USER-defined-distribution RaNDom generator. -- -- duserrndK :: K k0 => k0 -> SideEffect Krate -- | -- --
--   ares exprand klambda
--   ires exprand klambda
--   kres exprand klambda
--   
-- -- -- -- Exponential distribution random number generator (positive values -- only). This is an x-class noise generator. -- -- exprandA' :: K k0 => k0 -> Arate -- | -- --
--   ares exprand klambda
--   ires exprand klambda
--   kres exprand klambda
--   
-- -- -- -- Exponential distribution random number generator (positive values -- only). This is an x-class noise generator. -- -- exprandA :: K k0 => k0 -> SideEffect Arate -- | -- --
--   ares exprand klambda
--   ires exprand klambda
--   kres exprand klambda
--   
-- -- -- -- Exponential distribution random number generator (positive values -- only). This is an x-class noise generator. -- -- exprandI' :: K k0 => k0 -> Irate -- | -- --
--   ares exprand klambda
--   ires exprand klambda
--   kres exprand klambda
--   
-- -- -- -- Exponential distribution random number generator (positive values -- only). This is an x-class noise generator. -- -- exprandI :: K k0 => k0 -> SideEffect Irate -- | -- --
--   ares exprand klambda
--   ires exprand klambda
--   kres exprand klambda
--   
-- -- -- -- Exponential distribution random number generator (positive values -- only). This is an x-class noise generator. -- -- exprandK' :: K k0 => k0 -> Krate -- | -- --
--   ares exprand klambda
--   ires exprand klambda
--   kres exprand klambda
--   
-- -- -- -- Exponential distribution random number generator (positive values -- only). This is an x-class noise generator. -- -- exprandK :: K k0 => k0 -> SideEffect Krate -- | -- --
--   ares gauss krange
--   ires gauss krange
--   kres gauss krange
--   
-- -- -- -- Gaussian distribution random number generator. This is an x-class -- noise generator. -- -- gaussA' :: K k0 => k0 -> Arate -- | -- --
--   ares gauss krange
--   ires gauss krange
--   kres gauss krange
--   
-- -- -- -- Gaussian distribution random number generator. This is an x-class -- noise generator. -- -- gaussA :: K k0 => k0 -> SideEffect Arate -- | -- --
--   ares gauss krange
--   ires gauss krange
--   kres gauss krange
--   
-- -- -- -- Gaussian distribution random number generator. This is an x-class -- noise generator. -- -- gaussI' :: K k0 => k0 -> Irate -- | -- --
--   ares gauss krange
--   ires gauss krange
--   kres gauss krange
--   
-- -- -- -- Gaussian distribution random number generator. This is an x-class -- noise generator. -- -- gaussI :: K k0 => k0 -> SideEffect Irate -- | -- --
--   ares gauss krange
--   ires gauss krange
--   kres gauss krange
--   
-- -- -- -- Gaussian distribution random number generator. This is an x-class -- noise generator. -- -- gaussK' :: K k0 => k0 -> Krate -- | -- --
--   ares gauss krange
--   ires gauss krange
--   kres gauss krange
--   
-- -- -- -- Gaussian distribution random number generator. This is an x-class -- noise generator. -- -- gaussK :: K k0 => k0 -> SideEffect Krate -- | -- --
--   ares linrand krange
--   ires linrand krange
--   kres linrand krange
--   
-- -- -- -- Linear distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- linrandA' :: K k0 => k0 -> Arate -- | -- --
--   ares linrand krange
--   ires linrand krange
--   kres linrand krange
--   
-- -- -- -- Linear distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- linrandA :: K k0 => k0 -> SideEffect Arate -- | -- --
--   ares linrand krange
--   ires linrand krange
--   kres linrand krange
--   
-- -- -- -- Linear distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- linrandI' :: K k0 => k0 -> Irate -- | -- --
--   ares linrand krange
--   ires linrand krange
--   kres linrand krange
--   
-- -- -- -- Linear distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- linrandI :: K k0 => k0 -> SideEffect Irate -- | -- --
--   ares linrand krange
--   ires linrand krange
--   kres linrand krange
--   
-- -- -- -- Linear distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- linrandK' :: K k0 => k0 -> Krate -- | -- --
--   ares linrand krange
--   ires linrand krange
--   kres linrand krange
--   
-- -- -- -- Linear distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- linrandK :: K k0 => k0 -> SideEffect Krate -- | -- --
--   ares noise xamp, kbeta
--   
-- -- -- -- A white noise generator with an IIR lowpass filter. -- -- noise' :: (X x0, K k0) => x0 -> k0 -> Arate -- | -- --
--   ares noise xamp, kbeta
--   
-- -- -- -- A white noise generator with an IIR lowpass filter. -- -- noise :: (X x0, K k0) => x0 -> k0 -> SideEffect Arate -- | -- --
--   ares pcauchy kalpha
--   ires pcauchy kalpha
--   kres pcauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- pcauchyA' :: K k0 => k0 -> Arate -- | -- --
--   ares pcauchy kalpha
--   ires pcauchy kalpha
--   kres pcauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- pcauchyA :: K k0 => k0 -> SideEffect Arate -- | -- --
--   ares pcauchy kalpha
--   ires pcauchy kalpha
--   kres pcauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- pcauchyI' :: K k0 => k0 -> Irate -- | -- --
--   ares pcauchy kalpha
--   ires pcauchy kalpha
--   kres pcauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- pcauchyI :: K k0 => k0 -> SideEffect Irate -- | -- --
--   ares pcauchy kalpha
--   ires pcauchy kalpha
--   kres pcauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- pcauchyK' :: K k0 => k0 -> Krate -- | -- --
--   ares pcauchy kalpha
--   ires pcauchy kalpha
--   kres pcauchy kalpha
--   
-- -- -- -- Cauchy distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- pcauchyK :: K k0 => k0 -> SideEffect Krate -- | -- --
--   ares pinkish xin [, imethod] [, inumbands] [, iseed] [, iskip]
--   
-- -- -- -- Generates approximate pink noise (-3dB/oct response) by one of two -- different methods: -- -- pinkish' :: X x0 => [Irate] -> x0 -> Arate -- | -- --
--   ares pinkish xin [, imethod] [, inumbands] [, iseed] [, iskip]
--   
-- -- -- -- Generates approximate pink noise (-3dB/oct response) by one of two -- different methods: -- -- pinkish :: X x0 => [Irate] -> x0 -> SideEffect Arate -- | -- --
--   ares poisson klambda
--   ires poisson klambda
--   kres poisson klambda
--   
-- -- -- -- Poisson distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- poissonA' :: K k0 => k0 -> Arate -- | -- --
--   ares poisson klambda
--   ires poisson klambda
--   kres poisson klambda
--   
-- -- -- -- Poisson distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- poissonA :: K k0 => k0 -> SideEffect Arate -- | -- --
--   ares poisson klambda
--   ires poisson klambda
--   kres poisson klambda
--   
-- -- -- -- Poisson distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- poissonI' :: K k0 => k0 -> Irate -- | -- --
--   ares poisson klambda
--   ires poisson klambda
--   kres poisson klambda
--   
-- -- -- -- Poisson distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- poissonI :: K k0 => k0 -> SideEffect Irate -- | -- --
--   ares poisson klambda
--   ires poisson klambda
--   kres poisson klambda
--   
-- -- -- -- Poisson distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- poissonK' :: K k0 => k0 -> Krate -- | -- --
--   ares poisson klambda
--   ires poisson klambda
--   kres poisson klambda
--   
-- -- -- -- Poisson distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- poissonK :: K k0 => k0 -> SideEffect Krate -- | -- --
--   ares rand xamp [, iseed] [, isel] [, ioffset]
--   kres rand xamp [, iseed] [, isel] [, ioffset]
--   
-- -- -- -- Output is a controlled random number series between -amp and +amp -- -- randA :: X x0 => [Irate] -> x0 -> Arate -- | -- --
--   ares rand xamp [, iseed] [, isel] [, ioffset]
--   kres rand xamp [, iseed] [, isel] [, ioffset]
--   
-- -- -- -- Output is a controlled random number series between -amp and +amp -- -- randK :: X x0 => [Irate] -> x0 -> Krate -- | -- --
--   ares randh xamp, xcps [, iseed] [, isize] [, ioffset]
--   kres randh kamp, kcps [, iseed] [, isize] [, ioffset]
--   
-- -- -- -- Generates random numbers and holds them for a period of time. -- -- randhA :: (X x0, X x1) => [Irate] -> x0 -> x1 -> Arate -- | -- --
--   ares randh xamp, xcps [, iseed] [, isize] [, ioffset]
--   kres randh kamp, kcps [, iseed] [, isize] [, ioffset]
--   
-- -- -- -- Generates random numbers and holds them for a period of time. -- -- randhK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | -- --
--   ares randi xamp, xcps [, iseed] [, isize] [, ioffset]
--   kres randi kamp, kcps [, iseed] [, isize] [, ioffset]
--   
-- -- -- -- Generates a controlled random number series with interpolation between -- each new number. -- -- randiA :: (X x0, X x1) => [Irate] -> x0 -> x1 -> Arate -- | -- --
--   ares randi xamp, xcps [, iseed] [, isize] [, ioffset]
--   kres randi kamp, kcps [, iseed] [, isize] [, ioffset]
--   
-- -- -- -- Generates a controlled random number series with interpolation between -- each new number. -- -- randiK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | -- --
--   ax rnd31 kscl, krpow [, iseed]
--   ix rnd31 iscl, irpow [, iseed]
--   kx rnd31 kscl, krpow [, iseed]
--   
-- -- -- -- 31-bit bipolar random opcodes with controllable distribution. These -- units are portable, i.e. using the same seed value will generate the -- same random sequence on all systems. The distribution of generated -- random numbers can be varied at k-rate. -- -- rnd31A' :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Arate -- | -- --
--   ax rnd31 kscl, krpow [, iseed]
--   ix rnd31 iscl, irpow [, iseed]
--   kx rnd31 kscl, krpow [, iseed]
--   
-- -- -- -- 31-bit bipolar random opcodes with controllable distribution. These -- units are portable, i.e. using the same seed value will generate the -- same random sequence on all systems. The distribution of generated -- random numbers can be varied at k-rate. -- -- rnd31A :: (K k0, K k1) => [Irate] -> k0 -> k1 -> SideEffect Arate -- | -- --
--   ax rnd31 kscl, krpow [, iseed]
--   ix rnd31 iscl, irpow [, iseed]
--   kx rnd31 kscl, krpow [, iseed]
--   
-- -- -- -- 31-bit bipolar random opcodes with controllable distribution. These -- units are portable, i.e. using the same seed value will generate the -- same random sequence on all systems. The distribution of generated -- random numbers can be varied at k-rate. -- -- rnd31I' :: [Irate] -> Irate -> Irate -> Irate -- | -- --
--   ax rnd31 kscl, krpow [, iseed]
--   ix rnd31 iscl, irpow [, iseed]
--   kx rnd31 kscl, krpow [, iseed]
--   
-- -- -- -- 31-bit bipolar random opcodes with controllable distribution. These -- units are portable, i.e. using the same seed value will generate the -- same random sequence on all systems. The distribution of generated -- random numbers can be varied at k-rate. -- -- rnd31I :: [Irate] -> Irate -> Irate -> SideEffect Irate -- | -- --
--   ax rnd31 kscl, krpow [, iseed]
--   ix rnd31 iscl, irpow [, iseed]
--   kx rnd31 kscl, krpow [, iseed]
--   
-- -- -- -- 31-bit bipolar random opcodes with controllable distribution. These -- units are portable, i.e. using the same seed value will generate the -- same random sequence on all systems. The distribution of generated -- random numbers can be varied at k-rate. -- -- rnd31K' :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | -- --
--   ax rnd31 kscl, krpow [, iseed]
--   ix rnd31 iscl, irpow [, iseed]
--   kx rnd31 kscl, krpow [, iseed]
--   
-- -- -- -- 31-bit bipolar random opcodes with controllable distribution. These -- units are portable, i.e. using the same seed value will generate the -- same random sequence on all systems. The distribution of generated -- random numbers can be varied at k-rate. -- -- rnd31K :: (K k0, K k1) => [Irate] -> k0 -> k1 -> SideEffect Krate -- | -- --
--   ares random kmin, kmax
--   ires random imin, imax
--   kres random kmin, kmax
--   
-- -- -- -- Generates is a controlled pseudo-random number series between min and -- max values. -- -- randomA' :: (K k0, K k1) => k0 -> k1 -> Arate -- | -- --
--   ares random kmin, kmax
--   ires random imin, imax
--   kres random kmin, kmax
--   
-- -- -- -- Generates is a controlled pseudo-random number series between min and -- max values. -- -- randomA :: (K k0, K k1) => k0 -> k1 -> SideEffect Arate -- | -- --
--   ares random kmin, kmax
--   ires random imin, imax
--   kres random kmin, kmax
--   
-- -- -- -- Generates is a controlled pseudo-random number series between min and -- max values. -- -- randomI' :: Irate -> Irate -> Irate -- | -- --
--   ares random kmin, kmax
--   ires random imin, imax
--   kres random kmin, kmax
--   
-- -- -- -- Generates is a controlled pseudo-random number series between min and -- max values. -- -- randomI :: Irate -> Irate -> SideEffect Irate -- | -- --
--   ares random kmin, kmax
--   ires random imin, imax
--   kres random kmin, kmax
--   
-- -- -- -- Generates is a controlled pseudo-random number series between min and -- max values. -- -- randomK' :: (K k0, K k1) => k0 -> k1 -> Krate -- | -- --
--   ares random kmin, kmax
--   ires random imin, imax
--   kres random kmin, kmax
--   
-- -- -- -- Generates is a controlled pseudo-random number series between min and -- max values. -- -- randomK :: (K k0, K k1) => k0 -> k1 -> SideEffect Krate -- | -- --
--   ares randomh kmin, kmax, acps
--   kres randomh kmin, kmax, kcps
--   
-- -- -- -- Generates random numbers with a user-defined limit and holds them for -- a period of time. -- -- randomhA' :: (K k0, K k1) => k0 -> k1 -> Arate -> Arate -- | -- --
--   ares randomh kmin, kmax, acps
--   kres randomh kmin, kmax, kcps
--   
-- -- -- -- Generates random numbers with a user-defined limit and holds them for -- a period of time. -- -- randomhA :: (K k0, K k1) => k0 -> k1 -> Arate -> SideEffect Arate -- | -- --
--   ares randomh kmin, kmax, acps
--   kres randomh kmin, kmax, kcps
--   
-- -- -- -- Generates random numbers with a user-defined limit and holds them for -- a period of time. -- -- randomhK' :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   ares randomh kmin, kmax, acps
--   kres randomh kmin, kmax, kcps
--   
-- -- -- -- Generates random numbers with a user-defined limit and holds them for -- a period of time. -- -- randomhK :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> SideEffect Krate -- | -- --
--   ares randomi kmin, kmax, acps
--   kres randomi kmin, kmax, kcps
--   
-- -- -- -- Generates a user-controlled random number series with interpolation -- between each new number. -- -- randomiA' :: (K k0, K k1) => k0 -> k1 -> Arate -> Arate -- | -- --
--   ares randomi kmin, kmax, acps
--   kres randomi kmin, kmax, kcps
--   
-- -- -- -- Generates a user-controlled random number series with interpolation -- between each new number. -- -- randomiA :: (K k0, K k1) => k0 -> k1 -> Arate -> SideEffect Arate -- | -- --
--   ares randomi kmin, kmax, acps
--   kres randomi kmin, kmax, kcps
--   
-- -- -- -- Generates a user-controlled random number series with interpolation -- between each new number. -- -- randomiK' :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   ares randomi kmin, kmax, acps
--   kres randomi kmin, kmax, kcps
--   
-- -- -- -- Generates a user-controlled random number series with interpolation -- between each new number. -- -- randomiK :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> SideEffect Krate -- | -- --
--   ares trirand krange
--   ires trirand krange
--   kres trirand krange
--   
-- -- -- -- Triangular distribution random number generator. This is an x-class -- noise generator. -- -- trirandA' :: K k0 => k0 -> Arate -- | -- --
--   ares trirand krange
--   ires trirand krange
--   kres trirand krange
--   
-- -- -- -- Triangular distribution random number generator. This is an x-class -- noise generator. -- -- trirandA :: K k0 => k0 -> SideEffect Arate -- | -- --
--   ares trirand krange
--   ires trirand krange
--   kres trirand krange
--   
-- -- -- -- Triangular distribution random number generator. This is an x-class -- noise generator. -- -- trirandI' :: K k0 => k0 -> Irate -- | -- --
--   ares trirand krange
--   ires trirand krange
--   kres trirand krange
--   
-- -- -- -- Triangular distribution random number generator. This is an x-class -- noise generator. -- -- trirandI :: K k0 => k0 -> SideEffect Irate -- | -- --
--   ares trirand krange
--   ires trirand krange
--   kres trirand krange
--   
-- -- -- -- Triangular distribution random number generator. This is an x-class -- noise generator. -- -- trirandK' :: K k0 => k0 -> Krate -- | -- --
--   ares trirand krange
--   ires trirand krange
--   kres trirand krange
--   
-- -- -- -- Triangular distribution random number generator. This is an x-class -- noise generator. -- -- trirandK :: K k0 => k0 -> SideEffect Krate -- | -- --
--   ares unirand krange
--   ires unirand krange
--   kres unirand krange
--   
-- -- -- -- Uniform distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- unirandA' :: K k0 => k0 -> Arate -- | -- --
--   ares unirand krange
--   ires unirand krange
--   kres unirand krange
--   
-- -- -- -- Uniform distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- unirandA :: K k0 => k0 -> SideEffect Arate -- | -- --
--   ares unirand krange
--   ires unirand krange
--   kres unirand krange
--   
-- -- -- -- Uniform distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- unirandI' :: K k0 => k0 -> Irate -- | -- --
--   ares unirand krange
--   ires unirand krange
--   kres unirand krange
--   
-- -- -- -- Uniform distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- unirandI :: K k0 => k0 -> SideEffect Irate -- | -- --
--   ares unirand krange
--   ires unirand krange
--   kres unirand krange
--   
-- -- -- -- Uniform distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- unirandK' :: K k0 => k0 -> Krate -- | -- --
--   ares unirand krange
--   ires unirand krange
--   kres unirand krange
--   
-- -- -- -- Uniform distribution random number generator (positive values only). -- This is an x-class noise generator. -- -- unirandK :: K k0 => k0 -> SideEffect Krate -- | -- --
--   aout = urd(ktableNum)
--   iout = urd(itableNum)
--   kout = urd(ktableNum)
--   
-- -- -- -- A discrete user-defined-distribution random generator that can be used -- as a function. -- -- urdA' :: X x0 => x0 -> x0 -- | -- --
--   aout = urd(ktableNum)
--   iout = urd(itableNum)
--   kout = urd(ktableNum)
--   
-- -- -- -- A discrete user-defined-distribution random generator that can be used -- as a function. -- -- urdA :: X x0 => x0 -> x0 -- | -- --
--   aout = urd(ktableNum)
--   iout = urd(itableNum)
--   kout = urd(ktableNum)
--   
-- -- -- -- A discrete user-defined-distribution random generator that can be used -- as a function. -- -- urdI' :: X x0 => x0 -> x0 -- | -- --
--   aout = urd(ktableNum)
--   iout = urd(itableNum)
--   kout = urd(ktableNum)
--   
-- -- -- -- A discrete user-defined-distribution random generator that can be used -- as a function. -- -- urdI :: X x0 => x0 -> x0 -- | -- --
--   aout = urd(ktableNum)
--   iout = urd(itableNum)
--   kout = urd(ktableNum)
--   
-- -- -- -- A discrete user-defined-distribution random generator that can be used -- as a function. -- -- urdK' :: X x0 => x0 -> x0 -- | -- --
--   aout = urd(ktableNum)
--   iout = urd(itableNum)
--   kout = urd(ktableNum)
--   
-- -- -- -- A discrete user-defined-distribution random generator that can be used -- as a function. -- -- urdK :: X x0 => x0 -> x0 -- | -- --
--   ares weibull ksigma, ktau
--   ires weibull ksigma, ktau
--   kres weibull ksigma, ktau
--   
-- -- -- -- Weibull distribution random number generator (positive values only). -- This is an x-class noise generator -- -- weibullA' :: (K k0, K k1) => k0 -> k1 -> Arate -- | -- --
--   ares weibull ksigma, ktau
--   ires weibull ksigma, ktau
--   kres weibull ksigma, ktau
--   
-- -- -- -- Weibull distribution random number generator (positive values only). -- This is an x-class noise generator -- -- weibullA :: (K k0, K k1) => k0 -> k1 -> SideEffect Arate -- | -- --
--   ares weibull ksigma, ktau
--   ires weibull ksigma, ktau
--   kres weibull ksigma, ktau
--   
-- -- -- -- Weibull distribution random number generator (positive values only). -- This is an x-class noise generator -- -- weibullI' :: (K k0, K k1) => k0 -> k1 -> Irate -- | -- --
--   ares weibull ksigma, ktau
--   ires weibull ksigma, ktau
--   kres weibull ksigma, ktau
--   
-- -- -- -- Weibull distribution random number generator (positive values only). -- This is an x-class noise generator -- -- weibullI :: (K k0, K k1) => k0 -> k1 -> SideEffect Irate -- | -- --
--   ares weibull ksigma, ktau
--   ires weibull ksigma, ktau
--   kres weibull ksigma, ktau
--   
-- -- -- -- Weibull distribution random number generator (positive values only). -- This is an x-class noise generator -- -- weibullK' :: (K k0, K k1) => k0 -> k1 -> Krate -- | -- --
--   ares weibull ksigma, ktau
--   ires weibull ksigma, ktau
--   kres weibull ksigma, ktau
--   
-- -- -- -- Weibull distribution random number generator (positive values only). -- This is an x-class noise generator -- -- weibullK :: (K k0, K k1) => k0 -> k1 -> SideEffect Krate -- | -- --
--   kout jitter kamp, kcpsMin, kcpsMax
--   
-- -- -- -- Generates a segmented line whose segments are randomly generated. -- -- jitter' :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   kout jitter kamp, kcpsMin, kcpsMax
--   
-- -- -- -- Generates a segmented line whose segments are randomly generated. -- -- jitter :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> SideEffect Krate -- | -- --
--   kout jitter2 ktotamp, kamp1, kcps1, kamp2, kcps2, kamp3, kcps3
--   
-- -- -- -- Generates a segmented line with user-controllable random segments. -- -- jitter2' :: (K k0, K k1, K k2, K k3, K k4, K k5, K k6) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> Krate -- | -- --
--   kout jitter2 ktotamp, kamp1, kcps1, kamp2, kcps2, kamp3, kcps3
--   
-- -- -- -- Generates a segmented line with user-controllable random segments. -- -- jitter2 :: (K k0, K k1, K k2, K k3, K k4, K k5, K k6) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> SideEffect Krate -- | -- --
--   kout trandom ktrig, kmin, kmax
--   
-- -- -- -- Generates a controlled pseudo-random number series between min and max -- values at k-rate whenever the trigger parameter is different to 0. -- -- trandom' :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   kout trandom ktrig, kmin, kmax
--   
-- -- -- -- Generates a controlled pseudo-random number series between min and max -- values at k-rate whenever the trigger parameter is different to 0. -- -- trandom :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> SideEffect Krate -- | Sample Playback module CsoundExpr.Opcodes.Siggen.Sample -- | -- --
--   a1 bbcutm asource, ibps, isubdiv, ibarlength, iphrasebars, inumrepeats 
--       [, istutterspeed] [, istutterchance] [, ienvchoice ]
--   
-- -- -- -- The BreakBeat Cutter automatically generates cut-ups of a source audio -- stream in the style of drum and bass/jungle breakbeat manipulations. -- There are two versions, for mono (bbcutm) or stereo (bbcuts) sources. -- Whilst originally based on breakbeat cutting, the opcode can be -- applied to any type of source audio. -- -- bbcutm :: [Irate] -> Arate -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   a1,a2 bbcuts asource1, asource2, ibps, isubdiv, ibarlength, iphrasebars, 
--       inumrepeats [, istutterspeed] [, istutterchance] [, ienvchoice]
--   
-- -- -- -- The BreakBeat Cutter automatically generates cut-ups of a source audio -- stream in the style of drum and bass/jungle breakbeat manipulations. -- There are two versions, for mono (bbcutm) or stereo (bbcuts) sources. -- Whilst originally based on breakbeat cutting, the opcode can be -- applied to any type of source audio. -- -- bbcuts :: [Irate] -> Arate -> Arate -> Irate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   asig flooper kamp, kpitch, istart, idur, ifad, ifn
--   
-- -- -- -- This opcode reads audio from a function table and plays it back in a -- loop with user-defined start time, duration and crossfade time. It -- also allows the pitch of the loop to be controlled, including reversed -- playback. It accepts non-power-of-two tables, such as -- deferred-allocation GEN01 tables. -- -- flooper :: (K k0, K k1) => k0 -> k1 -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   asig flooper2 kamp, kpitch, kloopstart, kloopend, kcrossfade, ifn 
--       [, istart, imode, ifenv, iskip]
--   
-- -- -- -- This opcode implements a crossfading looper with variable loop -- parameters and three looping modes, optionally using a table for its -- crossfade shape. It accepts non-power-of-two tables for its source -- sounds, such as deferred-allocation GEN01 tables. -- -- flooper2 :: (K k0, K k1, K k2, K k3, K k4) => [Irate] -> k0 -> k1 -> k2 -> k3 -> k4 -> Irate -> Arate -- | -- --
--   ar1 [,ar2] loscil xamp, kcps, ifn [, ibas] [, imod1] [, ibeg1] [, iend1] 
--       [, imod2] [, ibeg2] [, iend2]
--   
-- -- -- -- Read sampled sound (mono or stereo) from a table, with optional -- sustain and release looping. -- -- loscil :: (X x0, K k0) => [Irate] -> x0 -> k0 -> Irate -> MultiOut -- | -- --
--   ar1 [,ar2] loscil3 xamp, kcps, ifn [, ibas] [, imod1] [, ibeg1] [, iend1] 
--       [, imod2] [, ibeg2] [, iend2]
--   
-- -- -- -- Read sampled sound (mono or stereo) from a table, with optional -- sustain and release looping, using cubic interpolation. -- -- loscil3 :: (X x0, K k0) => [Irate] -> x0 -> k0 -> Irate -> MultiOut -- | -- --
--   ar1 [, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9, ar10, ar11, ar12, ar13, ar14, 
--       ar15, ar16] loscilx xamp, kcps, ifn 
--       [, iwsize, ibas, istrt, imod1, ibeg1, iend1]
--   
-- -- -- -- This file is currently a stub, but the syntax should be correct. -- -- loscilx :: (X x0, K k0) => [Irate] -> x0 -> k0 -> Irate -> MultiOut -- | -- --
--   ares lphasor xtrns [, ilps] [, ilpe] [, imode] [, istrt] [, istor]
--   
-- -- -- -- This opcode can be used to generate table index for sample playback -- (e.g. tablexkt). -- -- lphasor :: X x0 => [Irate] -> x0 -> Arate -- | -- --
--   ares lposcil kamp, kfreqratio, kloop, kend, ifn [, iphs]
--   
-- -- -- -- Read sampled sound (mono or stereo) from a table, with optional -- sustain and release looping, and high precision. -- -- lposcil :: (K k0, K k1, K k2, K k3) => [Irate] -> k0 -> k1 -> k2 -> k3 -> Irate -> Arate -- | -- --
--   ares lposcil3 kamp, kfreqratio, kloop, kend, ifn [, iphs]
--   
-- -- -- -- Read sampled sound (mono or stereo) from a table, with optional -- sustain and release looping, and high precision. lposcil3 uses cubic -- interpolation. -- -- lposcil3 :: (K k0, K k1, K k2, K k3) => [Irate] -> k0 -> k1 -> k2 -> k3 -> Irate -> Arate -- | -- --
--   ar lposcila aamp, kfreqratio, kloop, kend, ift [,iphs]
--   
-- -- -- -- lposcila reads sampled sound from a table with optional looping and -- high precision. -- -- lposcila :: (K k0, K k1, K k2) => [Irate] -> Arate -> k0 -> k1 -> k2 -> Irate -> Arate -- | -- --
--   ar1, ar2 lposcilsa aamp, kfreqratio, kloop, kend, ift [,iphs]
--   
-- -- -- -- lposcilsa reads stereo sampled sound from a table with optional -- looping and high precision. -- -- lposcilsa :: (K k0, K k1, K k2) => [Irate] -> Arate -> k0 -> k1 -> k2 -> Irate -> MultiOut -- | -- --
--   ar1, ar2 lposcilsa2 aamp, kfreqratio, kloop, kend, ift [,iphs]
--   
-- -- -- -- lposcilsa2 reads stereo sampled sound from a table with optional -- looping and high precision. -- -- lposcilsa2 :: (K k0, K k1, K k2) => [Irate] -> Arate -> k0 -> k1 -> k2 -> Irate -> MultiOut -- | -- --
--   asig, krec sndloop ain, kpitch, ktrig, idur, ifad
--   
-- -- -- -- This opcode records input audio and plays it back in a loop with -- user-defined duration and crossfade time. It also allows the pitch of -- the loop to be controlled, including reversed playback. -- -- sndloop :: (K k0, K k1) => Arate -> k0 -> k1 -> Irate -> Irate -> (Arate, Krate) -- | -- --
--   ares waveset ain, krep [, ilen]
--   
-- -- -- -- A simple time stretch by repeating cycles. -- -- waveset :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   aleft, aright fluidAllOut
--   
-- -- -- -- Collects all audio from all Fluidsynth engines in a performance -- -- fluidAllOut :: MultiOut -- | -- --
--   fluidCCi iEngineNumber, iChannelNumber, iControllerNumber, iValue
--   
-- -- -- -- Sends a MIDI controller data (MIDI controller number and value to use) -- message to a fluid engine by number on the user specified MIDI channel -- number. -- -- fluidCCi :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   fluidCCk iEngineNumber, iChannelNumber, iControllerNumber, kValue
--   
-- -- -- -- Sends a MIDI controller data (MIDI controller number and value to use) -- message to a fluid engine by number on the user specified MIDI channel -- number. -- -- fluidCCk :: K k0 => Irate -> Irate -> Irate -> k0 -> SignalOut -- | -- --
--   fluidControl ienginenum, kstatus, kchannel, kdata1, kdata2
--   
-- -- -- -- The fluid opcodes provide a simple Csound opcode wrapper around Peter -- Hanappe's Fluidsynth SoundFont2 synthesizer. This implementation -- accepts any MIDI note on, note off, controller, pitch bend, or program -- change message at k-rate. Maximum polyphony is 4096 simultaneously -- sounding voices. Any number of SoundFonts may be loaded and played -- simultaneously. -- -- fluidControl :: (K k0, K k1, K k2, K k3) => Irate -> k0 -> k1 -> k2 -> k3 -> SignalOut -- | -- --
--   ienginenum fluidEngine [iReverbEnabled] [, iChorusEnabled] [,iNumChannels] [, iPolyphony]
--   
-- -- -- -- Instantiates a fluidsynth engine, and returns ienginenum to identify -- the engine. ienginenum is passed to other other opcodes for loading -- and playing SoundFonts and gathering the generated sound. -- -- fluidEngine :: [Irate] -> Irate -- | -- --
--   isfnum fluidLoad soundfont, ienginenum[, ilistpresets]
--   
-- -- -- -- Loads a SoundFont into an instance of a fluidEngine, optionally -- listing banks and presets for SoundFont. -- -- fluidLoad :: [Irate] -> String -> Irate -> Irate -- | -- --
--   fluidNote ienginenum, ichannelnum, imidikey, imidivel
--   
-- -- -- -- Plays a note at imidikey pitch and imidivel velocity on ichannelnum -- channel of number ienginenum fluidEngine. -- -- fluidNote :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   aleft, aright fluidOut ienginenum
--   
-- -- -- -- Outputs the sound from a fluidEngine. -- -- fluidOut :: Irate -> MultiOut -- | -- --
--   fluidProgramSelect ienginenum, ichannelnum, isfnum, ibanknum, ipresetnum
--   
-- -- -- -- Assigns a preset from a SoundFont to a channel on a fluidEngine. -- -- fluidProgramSelect :: Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   fluidSetInterpMethod ienginenum, ichannelnum, iInterpMethod
--   
-- -- -- -- Set interpolation method for channel in Fluid Engine. Lower order -- interpolation methods will render faster at lower fidelity while -- higher order interpolation methods will render slower at higher -- fidelity. Default interpolation for a channel is 4th order -- interpolation. -- -- fluidSetInterpMethod :: Irate -> Irate -> Irate -> SignalOut -- | -- --
--   sfilist ifilhandle
--   
-- -- -- -- Prints a list of all instruments of a previously loaded SoundFont2 -- (SF2) sample file. These opcodes allow management the sample-structure -- of SF2 files. In order to understand the usage of these opcodes, the -- user must have some knowledge of the SF2 format, so a brief -- description of this format can be found in the SoundFont2 File Format -- Appendix. -- -- sfilist :: Irate -> SignalOut -- | -- --
--   ar1, ar2 sfinstr ivel, inotenum, xamp, xfreq, instrnum, ifilhandle 
--       [, iflag] [, ioffset]
--   
-- -- -- -- Plays a SoundFont2 (SF2) sample instrument, generating a stereo sound. -- These opcodes allow management the sample-structure of SF2 files. In -- order to understand the usage of these opcodes, the user must have -- some knowledge of the SF2 format, so a brief description of this -- format can be found in the SoundFont2 File Format Appendix. -- -- sfinstr :: (X x0, X x1) => [Irate] -> Irate -> Irate -> x0 -> x1 -> Irate -> Irate -> MultiOut -- | -- --
--   ar1, ar2 sfinstr3 ivel, inotenum, xamp, xfreq, instrnum, ifilhandle 
--       [, iflag] [, ioffset]
--   
-- -- -- -- Plays a SoundFont2 (SF2) sample instrument, generating a stereo sound -- with cubic interpolation. These opcodes allow management the -- sample-structure of SF2 files. In order to understand the usage of -- these opcodes, the user must have some knowledge of the SF2 format, so -- a brief description of this format can be found in the SoundFont2 File -- Format Appendix. -- -- sfinstr3 :: (X x0, X x1) => [Irate] -> Irate -> Irate -> x0 -> x1 -> Irate -> Irate -> MultiOut -- | -- --
--   ares sfinstr3m ivel, inotenum, xamp, xfreq, instrnum, ifilhandle 
--       [, iflag] [, ioffset]
--   
-- -- -- -- Plays a SoundFont2 (SF2) sample instrument, generating a mono sound -- with cubic interpolation. These opcodes allow management the -- sample-structure of SF2 files. In order to understand the usage of -- these opcodes, the user must have some knowledge of the SF2 format, so -- a brief description of this format can be found in the SoundFont2 File -- Format Appendix. -- -- sfinstr3m :: (X x0, X x1) => [Irate] -> Irate -> Irate -> x0 -> x1 -> Irate -> Irate -> Arate -- | -- --
--   ares sfinstrm ivel, inotenum, xamp, xfreq, instrnum, ifilhandle 
--       [, iflag] [, ioffset]
--   
-- -- -- -- Plays a SoundFont2 (SF2) sample instrument, generating a mono sound. -- These opcodes allow management the sample-structure of SF2 files. In -- order to understand the usage of these opcodes, the user must have -- some knowledge of the SF2 format, so a brief description of this -- format can be found in the SoundFont2 File Format Appendix. -- -- sfinstrm :: (X x0, X x1) => [Irate] -> Irate -> Irate -> x0 -> x1 -> Irate -> Irate -> Arate -- | -- --
--   ir sfload "filename"
--   
-- -- -- -- Loads an entire SoundFont2 (SF2) sample file into memory. These -- opcodes allow management the sample-structure of SF2 files. In order -- to understand the usage of these opcodes, the user must have some -- knowledge of the SF2 format, so a brief description of this format can -- be found in the SoundFont2 File Format Appendix. -- -- sfload :: String -> Irate -- | -- --
--   sfpassign istartindex, ifilhandle[, imsgs]
--   
-- -- -- -- Assigns all presets of a previously loaded SoundFont2 (SF2) sample -- file to a sequence of progressive index numbers. These opcodes allow -- management the sample-structure of SF2 files. In order to understand -- the usage of these opcodes, the user must have some knowledge of the -- SF2 format, so a brief description of this format can be found in the -- SoundFont2 File Format Appendix. -- -- sfpassign :: [Irate] -> Irate -> Irate -> SignalOut -- | -- --
--   ar1, ar2 sfplay ivel, inotenum, xamp, xfreq, ipreindex [, iflag] [, ioffset] [, ienv]
--   
-- -- -- -- Plays a SoundFont2 (SF2) sample preset, generating a stereo sound. -- These opcodes allow management the sample-structure of SF2 files. In -- order to understand the usage of these opcodes, the user must have -- some knowledge of the SF2 format, so a brief description of this -- format can be found in the SoundFont2 File Format Appendix. -- -- sfplay :: (X x0, X x1) => [Irate] -> Irate -> Irate -> x0 -> x1 -> Irate -> MultiOut -- | -- --
--   ar1, ar2 sfplay3 ivel, inotenum, xamp, xfreq, ipreindex [, iflag] [, ioffset] [, ienv]
--   
-- -- -- -- Plays a SoundFont2 (SF2) sample preset, generating a stereo sound with -- cubic interpolation. These opcodes allow management the -- sample-structure of SF2 files. In order to understand the usage of -- these opcodes, the user must have some knowledge of the SF2 format, so -- a brief description of this format can be found in the SoundFont2 File -- Format Appendix. -- -- sfplay3 :: (X x0, X x1) => [Irate] -> Irate -> Irate -> x0 -> x1 -> Irate -> MultiOut -- | -- --
--   ares sfplay3m ivel, inotenum, xamp, xfreq, ipreindex [, iflag] [, ioffset] [, ienv]
--   
-- -- -- -- Plays a SoundFont2 (SF2) sample preset, generating a mono sound with -- cubic interpolation. These opcodes allow management the -- sample-structure of SF2 files. In order to understand the usage of -- these opcodes, the user must have some knowledge of the SF2 format, so -- a brief description of this format can be found in the SoundFont2 File -- Format Appendix. -- -- sfplay3m :: (X x0, X x1) => [Irate] -> Irate -> Irate -> x0 -> x1 -> Irate -> Arate -- | -- --
--   ares sfplaym ivel, inotenum, xamp, xfreq, ipreindex [, iflag] [, ioffset] [, ienv]
--   
-- -- -- -- Plays a SoundFont2 (SF2) sample preset, generating a mono sound. These -- opcodes allow management the sample-structure of SF2 files. In order -- to understand the usage of these opcodes, the user must have some -- knowledge of the SF2 format, so a brief description of this format can -- be found in the SoundFont2 File Format Appendix. -- -- sfplaym :: (X x0, X x1) => [Irate] -> Irate -> Irate -> x0 -> x1 -> Irate -> Arate -- | -- --
--   ar1, ar2 sflooper ivel, inotenum, kamp, kpitch, ipreindex, kloopstart, kloopend, kcrossfade, ifn 
--       [, istart, imode, ifenv, iskip]
--   
-- -- -- -- Plays a SoundFont2 (SF2) sample preset, generating a stereo sound, -- similarly to sfplay. Unlike that opcode, though, it ignores the -- looping points set in the SF2 file and substitutes them for a -- user-defined crossfade loop. It is a cross between sfplay and -- flooper2. -- -- sflooper :: (K k0, K k1, K k2, K k3, K k4) => [Irate] -> Irate -> Irate -> k0 -> k1 -> Irate -> k2 -> k3 -> k4 -> Irate -> MultiOut -- | -- --
--   sfplist ifilhandle
--   
-- -- -- -- Prints a list of all presets of a previously loaded SoundFont2 (SF2) -- sample file. These opcodes allow management the sample-structure of -- SF2 files. In order to understand the usage of these opcodes, the user -- must have some knowledge of the SF2 format, so a brief description of -- this format can be found in the SoundFont2 File Format Appendix. -- -- sfplist :: Irate -> SignalOut -- | -- --
--   ir sfpreset iprog, ibank, ifilhandle, ipreindex
--   
-- -- -- -- Assigns an existing preset of a previously loaded SoundFont2 (SF2) -- sample file to an index number. These opcodes allow management the -- sample-structure of SF2 files. In order to understand the usage of -- these opcodes, the user must have some knowledge of the SF2 format, so -- a brief description of this format can be found in the SoundFont2 File -- Format Appendix. -- -- sfpreset :: Irate -> Irate -> Irate -> Irate -> Irate -- | Scanned Synthesis module CsoundExpr.Opcodes.Siggen.ScanTop -- | -- --
--   scanhammer isrc, idst, ipos, imult
--   
-- -- -- -- This is is a variant of tablecopy, copying from one table to another, -- starting at ipos, and with a gain control. The number of points copied -- is determined by the length of the source. Other points are not -- changed. This opcode can be used to hit a string in the scanned -- synthesis code. -- -- scanhammer :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   ares scans kamp, kfreq, ifn, id [, iorder]
--   
-- -- -- -- Generate audio output using scanned synthesis. -- -- scans :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -> Arate -- | -- --
--   aout scantable kamp, kpch, ipos, imass, istiff, idamp, ivel
--   
-- -- -- -- A simpler scanned synthesis implementation. This is an implementation -- of a circular string scanned using external tables. This opcode will -- allow direct modification and reading of values with the table -- opcodes. -- -- scantable :: (K k0, K k1) => k0 -> k1 -> Irate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   scanu init, irate, ifnvel, ifnmass, ifnstif, ifncentr, ifndamp, kmass, 
--       kstif, kcentr, kdamp, ileft, iright, kpos, kstrngth, ain, idisp, id
--   
-- -- -- -- Compute the waveform and the wavetable for use in scanned synthesis. -- -- scanu :: (K k0, K k1, K k2, K k3, K k4, K k5) => Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> k0 -> k1 -> k2 -> k3 -> Irate -> Irate -> k4 -> k5 -> Arate -> Irate -> Irate -> SignalOut -- | -- --
--   kpos, kvel xscanmap iscan, kamp, kvamp [, iwhich]
--   
-- -- -- -- Allows the position and velocity of a node in a scanned process to be -- read. -- -- xscanmap :: (K k0, K k1) => [Irate] -> Irate -> k0 -> k1 -> MultiOut -- | -- --
--   ares xscans kamp, kfreq, ifntraj, id [, iorder]
--   
-- -- -- -- Experimental version of scans. Allows much larger matrices and is -- faster and smaller but removes some (unused?) flexibility. If liked, -- it will replace the older opcode as it is syntax compatible but -- extended. -- -- xscans :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -> Arate -- | -- --
--   xscansmap kpos, kvel, iscan, kamp, kvamp [, iwhich]
--   
-- -- -- -- Allows the position and velocity of a node in a scanned process to be -- read. -- -- xscansmap :: (K k0, K k1, K k2, K k3) => [Irate] -> k0 -> k1 -> Irate -> k2 -> k3 -> SignalOut -- | -- --
--   xscanu init, irate, ifnvel, ifnmass, ifnstif, ifncentr, ifndamp, kmass, 
--       kstif, kcentr, kdamp, ileft, iright, kpos, kstrngth, ain, idisp, id
--   
-- -- -- -- Experimental version of scanu. Allows much larger matrices and is -- faster and smaller but removes some (unused?) flexibility. If liked, -- it will replace the older opcode as it is syntax compatible but -- extended. -- -- xscanu :: (K k0, K k1, K k2, K k3, K k4, K k5) => Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> k0 -> k1 -> k2 -> k3 -> Irate -> Irate -> k4 -> k5 -> Arate -> Irate -> Irate -> SignalOut -- | Table Access module CsoundExpr.Opcodes.Siggen.Tableacc -- | -- --
--   kres oscil1 idel, kamp, idur, ifn
--   
-- -- -- -- Accesses table values by incremental sampling. -- -- oscil1 :: K k0 => Irate -> k0 -> Irate -> Irate -> Krate -- | -- --
--   kres oscil1i idel, kamp, idur, ifn
--   
-- -- -- -- Accesses table values by incremental sampling with linear -- interpolation. -- -- oscil1i :: K k0 => Irate -> k0 -> Irate -> Irate -> Krate -- | -- --
--   ares table andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires table indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres table kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- Accesses table values by direct indexing. -- -- tableA :: [Irate] -> Arate -> Irate -> Arate -- | -- --
--   ares table andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires table indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres table kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- Accesses table values by direct indexing. -- -- tableI :: [Irate] -> Irate -> Irate -> Irate -- | -- --
--   ares table andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires table indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres table kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- Accesses table values by direct indexing. -- -- tableK :: K k0 => [Irate] -> k0 -> Irate -> Krate -- | -- --
--   ares table3 andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires table3 indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres table3 kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- Accesses table values by direct indexing with cubic interpolation. -- -- table3A :: [Irate] -> Arate -> Irate -> Arate -- | -- --
--   ares table3 andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires table3 indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres table3 kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- Accesses table values by direct indexing with cubic interpolation. -- -- table3I :: [Irate] -> Irate -> Irate -> Irate -- | -- --
--   ares table3 andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires table3 indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres table3 kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- Accesses table values by direct indexing with cubic interpolation. -- -- table3K :: K k0 => [Irate] -> k0 -> Irate -> Krate -- | -- --
--   ares tablei andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires tablei indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres tablei kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- Accesses table values by direct indexing with linear interpolation. -- -- tableiA :: [Irate] -> Arate -> Irate -> Arate -- | -- --
--   ares tablei andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires tablei indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres tablei kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- Accesses table values by direct indexing with linear interpolation. -- -- tableiI :: [Irate] -> Irate -> Irate -> Irate -- | -- --
--   ares tablei andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires tablei indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres tablei kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- Accesses table values by direct indexing with linear interpolation. -- -- tableiK :: K k0 => [Irate] -> k0 -> Irate -> Krate -- | -- --
--   ir tab_i indx, ifn[, ixmode]
--   kr tab kndx, ifn[, ixmode]
--   ar tab xndx, ifn[, ixmode]
--   tabw_i isig, indx, ifn [,ixmode]
--   tabw ksig, kndx, ifn [,ixmode]
--   tabw asig, andx, ifn [,ixmode]
--   
-- -- -- -- Fast table opcodes. Faster than table and tablew because don't allow -- wrap-around and limit and don't check index validity. Have been -- implemented in order to provide fast access to arrays. Support -- non-power of two tables (can be generated by any GEN function by -- giving a negative length value). -- -- tabA :: X x0 => [Irate] -> x0 -> Irate -> Arate -- | -- --
--   ir tab_i indx, ifn[, ixmode]
--   kr tab kndx, ifn[, ixmode]
--   ar tab xndx, ifn[, ixmode]
--   tabw_i isig, indx, ifn [,ixmode]
--   tabw ksig, kndx, ifn [,ixmode]
--   tabw asig, andx, ifn [,ixmode]
--   
-- -- -- -- Fast table opcodes. Faster than table and tablew because don't allow -- wrap-around and limit and don't check index validity. Have been -- implemented in order to provide fast access to arrays. Support -- non-power of two tables (can be generated by any GEN function by -- giving a negative length value). -- -- tabK :: K k0 => [Irate] -> k0 -> Irate -> Krate -- | -- --
--   ir tab_i indx, ifn[, ixmode]
--   kr tab kndx, ifn[, ixmode]
--   ar tab xndx, ifn[, ixmode]
--   tabw_i isig, indx, ifn [,ixmode]
--   tabw ksig, kndx, ifn [,ixmode]
--   tabw asig, andx, ifn [,ixmode]
--   
-- -- -- -- Fast table opcodes. Faster than table and tablew because don't allow -- wrap-around and limit and don't check index validity. Have been -- implemented in order to provide fast access to arrays. Support -- non-power of two tables (can be generated by any GEN function by -- giving a negative length value). -- -- tab_i :: [Irate] -> Irate -> Irate -> Irate -- | -- --
--   ir tab_i indx, ifn[, ixmode]
--   kr tab kndx, ifn[, ixmode]
--   ar tab xndx, ifn[, ixmode]
--   tabw_i isig, indx, ifn [,ixmode]
--   tabw ksig, kndx, ifn [,ixmode]
--   tabw asig, andx, ifn [,ixmode]
--   
-- -- -- -- Fast table opcodes. Faster than table and tablew because don't allow -- wrap-around and limit and don't check index validity. Have been -- implemented in order to provide fast access to arrays. Support -- non-power of two tables (can be generated by any GEN function by -- giving a negative length value). -- -- tabwA :: [Irate] -> Arate -> Arate -> Irate -> SignalOut -- | -- --
--   ir tab_i indx, ifn[, ixmode]
--   kr tab kndx, ifn[, ixmode]
--   ar tab xndx, ifn[, ixmode]
--   tabw_i isig, indx, ifn [,ixmode]
--   tabw ksig, kndx, ifn [,ixmode]
--   tabw asig, andx, ifn [,ixmode]
--   
-- -- -- -- Fast table opcodes. Faster than table and tablew because don't allow -- wrap-around and limit and don't check index validity. Have been -- implemented in order to provide fast access to arrays. Support -- non-power of two tables (can be generated by any GEN function by -- giving a negative length value). -- -- tabwK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> SignalOut -- | -- --
--   ir tab_i indx, ifn[, ixmode]
--   kr tab kndx, ifn[, ixmode]
--   ar tab xndx, ifn[, ixmode]
--   tabw_i isig, indx, ifn [,ixmode]
--   tabw ksig, kndx, ifn [,ixmode]
--   tabw asig, andx, ifn [,ixmode]
--   
-- -- -- -- Fast table opcodes. Faster than table and tablew because don't allow -- wrap-around and limit and don't check index validity. Have been -- implemented in order to provide fast access to arrays. Support -- non-power of two tables (can be generated by any GEN function by -- giving a negative length value). -- -- tabw_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | Wave Terrain Synthesis module CsoundExpr.Opcodes.Siggen.Waveterr -- | -- --
--   aout wterrain kamp, kpch, k_xcenter, k_ycenter, k_xradius, k_yradius, 
--       itabx, itaby
--   
-- -- -- -- A simple wave-terrain synthesis opcode. -- -- wterrain :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Irate -> Arate -- | Waveguide Physical Modeling module CsoundExpr.Opcodes.Siggen.Wavguide -- | -- --
--   ares pluck kamp, kcps, icps, ifn, imeth [, iparm1] [, iparm2]
--   
-- -- -- -- Audio output is a naturally decaying plucked string or drum sound -- based on the Karplus-Strong algorithms. -- -- pluck :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares repluck iplk, kamp, icps, kpick, krefl, axcite
--   
-- -- -- -- repluck is an implementation of the physical model of the plucked -- string. A user can control the pluck point, the pickup point, the -- filter, and an additional audio signal, axcite. axcite is used to -- excite the string. Based on the Karplus-Strong algorithm. -- -- repluck :: (K k0, K k1, K k2) => Irate -> k0 -> Irate -> k1 -> k2 -> Arate -> Arate -- | -- --
--   ares wgbow kamp, kfreq, kpres, krat, kvibf, kvamp, ifn [, iminfreq]
--   
-- -- -- -- Audio output is a tone similar to a bowed string, using a physical -- model developed from Perry Cook, but re-coded for Csound. -- -- wgbow :: (K k0, K k1, K k2, K k3, K k4, K k5) => [Irate] -> k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Arate -- | -- --
--   ares wgbowedbar kamp, kfreq, kpos, kbowpres, kgain [, iconst] [, itvel] 
--       [, ibowpos] [, ilow]
--   
-- -- -- -- A physical model of a bowed bar, belonging to the Perry Cook family of -- waveguide instruments. -- -- wgbowedbar :: (K k0, K k1, K k2, K k3, K k4) => [Irate] -> k0 -> k1 -> k2 -> k3 -> k4 -> Arate -- | -- --
--   ares wgbrass kamp, kfreq, ktens, iatt, kvibf, kvamp, ifn [, iminfreq]
--   
-- -- -- -- Audio output is a tone related to a brass instrument, using a physical -- model developed from Perry Cook, but re-coded for Csound. -- -- wgbrass :: (K k0, K k1, K k2, K k3, K k4) => [Irate] -> k0 -> k1 -> k2 -> Irate -> k3 -> k4 -> Irate -> Arate -- | -- --
--   ares wgclar kamp, kfreq, kstiff, iatt, idetk, kngain, kvibf, kvamp, ifn 
--       [, iminfreq]
--   
-- -- -- -- Audio output is a tone similar to a clarinet, using a physical model -- developed from Perry Cook, but re-coded for Csound. -- -- wgclar :: (K k0, K k1, K k2, K k3, K k4, K k5) => [Irate] -> k0 -> k1 -> k2 -> Irate -> Irate -> k3 -> k4 -> k5 -> Irate -> Arate -- | -- --
--   ares wgflute kamp, kfreq, kjet, iatt, idetk, kngain, kvibf, kvamp, ifn 
--       [, iminfreq] [, ijetrf] [, iendrf]
--   
-- -- -- -- Audio output is a tone similar to a flute, using a physical model -- developed from Perry Cook, but re-coded for Csound. -- -- wgflute :: (K k0, K k1, K k2, K k3, K k4, K k5) => [Irate] -> k0 -> k1 -> k2 -> Irate -> Irate -> k3 -> k4 -> k5 -> Irate -> Arate -- | -- --
--   ares wgpluck icps, iamp, kpick, iplk, idamp, ifilt, axcite
--   
-- -- -- -- A high fidelity simulation of a plucked string, using interpolating -- delay-lines. -- -- wgpluck :: K k0 => Irate -> Irate -> k0 -> Irate -> Irate -> Irate -> Arate -> Arate -- | -- --
--   ares wgpluck2 iplk, kamp, icps, kpick, krefl
--   
-- -- -- -- wgpluck2 is an implementation of the physical model of the plucked -- string, with control over the pluck point, the pickup point and the -- filter. Based on the Karplus-Strong algorithm. -- -- wgpluck2 :: (K k0, K k1, K k2) => Irate -> k0 -> Irate -> k1 -> k2 -> Arate -- | -- --
--   ares wguide1 asig, xfreq, kcutoff, kfeedback
--   
-- -- -- -- A simple waveguide model consisting of one delay-line and one -- first-order lowpass filter. -- -- wguide1 :: (X x0, K k0, K k1) => Arate -> x0 -> k0 -> k1 -> Arate -- | -- --
--   ares wguide2 asig, xfreq1, xfreq2, kcutoff1, kcutoff2, 
--       kfeedback1, kfeedback2
--   
-- -- -- -- A model of beaten plate consisting of two parallel delay-lines and two -- first-order lowpass filters. -- -- wguide2 :: (X x0, X x1, K k0, K k1, K k2, K k3) => Arate -> x0 -> x1 -> k0 -> k1 -> k2 -> k3 -> Arate -- | Signal Generators module CsoundExpr.Opcodes.Siggen -- | File Input and Output module CsoundExpr.Opcodes.Sigio.FileIO -- | -- --
--   ihandle fiopen ifilename, imode
--   
-- -- -- -- fiopen can be used to open a file in one of the specified modes. -- -- fiopen :: Irate -> Irate -> Irate -- | -- --
--   ficlose ihandle
--   ficlose Sfilename
--   
-- -- -- -- ficlose can be used to close a file which was opened with fiopen. -- -- ficloseI :: Irate -> SignalOut -- | -- --
--   ficlose ihandle
--   ficlose Sfilename
--   
-- -- -- -- ficlose can be used to close a file which was opened with fiopen. -- -- ficloseS :: String -> SignalOut -- | -- --
--   dumpk ksig, ifilname, iformat, iprd
--   
-- -- -- -- Periodically writes an orchestra control-signal value to a named -- external file in a specific format. -- -- dumpk :: K k0 => k0 -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   dumpk2 ksig1, ksig2, ifilname, iformat, iprd
--   
-- -- -- -- Periodically writes two orchestra control-signal values to a named -- external file in a specific format. -- -- dumpk2 :: (K k0, K k1) => k0 -> k1 -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   dumpk3 ksig1, ksig2, ksig3, ifilname, iformat, iprd
--   
-- -- -- -- Periodically writes three orchestra control-signal values to a named -- external file in a specific format. -- -- dumpk3 :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   dumpk4 ksig1, ksig2, ksig3, ksig4, ifilname, iformat, iprd
--   
-- -- -- -- Periodically writes four orchestra control-signal values to a named -- external file in a specific format. -- -- dumpk4 :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> k3 -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   fout ifilename, iformat, aout1 [, aout2, aout3,...,aoutN]
--   
-- -- -- -- fout outputs N a-rate signals to a specified file of N channels. -- -- fout :: String -> Irate -> [Arate] -> SignalOut -- | -- --
--   fouti ihandle, iformat, iflag, iout1 [, iout2, iout3,....,ioutN]
--   
-- -- -- -- fouti output N i-rate signals to a specified file of N channels. -- -- fouti :: Irate -> Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   foutir ihandle, iformat, iflag, iout1 [, iout2, iout3,....,ioutN]
--   
-- -- -- -- foutir output N i-rate signals to a specified file of N channels. -- -- foutir :: Irate -> Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   foutk ifilename, iformat, kout1 [, kout2, kout3,....,koutN]
--   
-- -- -- -- foutk outputs N k-rate signals to a specified file of N channels. -- -- foutk :: K k0 => String -> Irate -> [k0] -> SignalOut -- | -- --
--   kres readk ifilname, iformat, iprd
--   
-- -- -- -- Periodically reads an orchestra control-signal value from a named -- external file in a specific format. -- -- readk :: Irate -> Irate -> Irate -> Krate -- | -- --
--   kr1, kr2 readk2 ifilname, iformat, iprd
--   
-- -- -- -- Periodically reads two orchestra control-signal values from an -- external file. -- -- readk2 :: Irate -> Irate -> Irate -> MultiOut -- | -- --
--   kr1, kr2, kr3 readk3 ifilname, iformat, iprd
--   
-- -- -- -- Periodically reads three orchestra control-signal values from an -- external file. -- -- readk3 :: Irate -> Irate -> Irate -> MultiOut -- | -- --
--   kr1, kr2, kr3, kr4 readk4 ifilname, iformat, iprd
--   
-- -- -- -- Periodically reads four orchestra control-signal values from an -- external file. -- -- readk4 :: Irate -> Irate -> Irate -> MultiOut -- | -- --
--   fin ifilename, iskipframes, iformat, ain1 [, ain2] [, ain3] [,...]
--   
-- -- -- -- Read signals from a file at a-rate. -- -- fin :: String -> Irate -> Irate -> [Arate] -> SignalOut -- | -- --
--   fini ifilename, iskipframes, iformat, in1 [, in2] [, in3] [,...]
--   
-- -- -- -- Read signals from a file at i-rate. -- -- fini :: String -> Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   fink ifilename, iskipframes, iformat, kin1 [, kin2] [, kin3] [,...]
--   
-- -- -- -- Read signals from a file at k-rate. -- -- fink :: K k0 => String -> Irate -> Irate -> [k0] -> SignalOut -- | -- --
--   clear avar1 [, avar2] [, avar3] [...]
--   
-- -- -- -- clear zeroes a list of audio signals. -- -- clear :: [Arate] -> SignalOut -- | -- --
--   vincr accum, aincr
--   
-- -- -- -- vincr increments one audio variable with another signal, i.e. it -- accumulates output. -- -- vincr :: Arate -> Arate -> SignalOut -- | -- --
--   fprints "filename", "string" [, ival1] [, ival2] [...]
--   
-- -- -- -- Similar to prints but prints to a file. -- -- fprints :: String -> String -> [Irate] -> SignalOut -- | -- --
--   fprintks "filename", "string", [, kval1] [, kval2] [...]
--   
-- -- -- -- Similar to printks but prints to a file. -- -- fprintks :: K k0 => String -> String -> [k0] -> SignalOut -- | Signal Input module CsoundExpr.Opcodes.Sigio.Input -- | -- --
--   ar1 in
--   
-- -- -- -- Reads mono audio data from an external device or stream. -- -- in' :: Arate -- | -- --
--   ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9, ar10, ar11, ar12, ar13, ar14, 
--       ar15, ar16, ar17, ar18, ar19, ar20, ar21, ar22, ar23, ar24, ar25, ar26, 
--       ar27, ar28, ar29, ar30, ar31, ar32 in32
--   
-- -- -- -- Reads a 32-channel audio signal from an external device or stream. -- -- in32 :: MultiOut -- | -- --
--   ain inch kchan
--   
-- -- -- -- Reads from a numbered channel in an external audio signal or stream. -- -- inch :: K k0 => k0 -> Arate -- | -- --
--   ar1, ar2, ar3, ar4, ar5, ar6 inh
--   
-- -- -- -- Reads six-channel audio data from an external device or stream. -- -- inh :: MultiOut -- | -- --
--   ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8 ino
--   
-- -- -- -- Reads eight-channel audio data from an external device or stream. -- -- ino :: MultiOut -- | -- --
--   ar1, ar2, ar3, a4 inq
--   
-- -- -- -- Reads quad audio data from an external device or stream. -- -- inq :: MultiOut -- | -- --
--   inrg kstart, ain1 [,ain2, ain3,..., ainN]
--   
-- -- -- -- inrg reads audio from a range of adjacent audio channels from the -- audio input device. -- -- inrg :: K k0 => k0 -> [Arate] -> SignalOut -- | -- --
--   ar1, ar2 ins
--   
-- -- -- -- Reads stereo audio data from an external device or stream. -- -- ins :: MultiOut -- | -- --
--   ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9, ar10, ar11, ar12, 
--       ar13, ar14, ar15, ar16 inx
--   
-- -- -- -- Reads a 16-channel audio signal from an external device or stream. -- -- inx :: MultiOut -- | -- --
--   ar1 [, ar2 [, ar3 [,... ar24]]] diskin ifilcod, kpitch [, iskiptim] 
--       [, iwraparound] [, iformat] [, iskipinit]
--   
-- -- -- -- Deprecated. Reads audio data from an external device or stream and can -- alter its pitch. -- -- diskin :: K k0 => [Irate] -> String -> k0 -> MultiOut -- | -- --
--   a1[, a2[,... a24]] diskin2 ifilcod, kpitch[, iskiptim 
--       [, iwrap[, iformat [, iwsize[, ibufsize[, iskipinit]]]]]]
--   
-- -- -- -- Reads audio data from a file, and can alter its pitch using one of -- several available interpolation types, as well as convert the sample -- rate to match the orchestra sr setting. diskin2 can also read -- multichannel files with any number of channels in the range 1 to 24. -- diskin2 allows more control and higher sound quality than diskin, but -- there is also the disadvantage of higher CPU usage. -- -- diskin2 :: K k0 => [Irate] -> String -> k0 -> MultiOut -- | -- --
--   ar1[, ar2[, ar3[,... a24]]] soundin ifilcod [, iskptim] [, iformat] 
--       [, iskipinit] [, ibufsize]
--   
-- -- -- -- Reads audio data from an external device or stream. Up to 24 channels -- may be read. -- -- soundin :: [Irate] -> String -> MultiOut -- | -- --
--   kvalue invalue "channel name"
--   Sname invalue "channel name"
--   
-- -- -- -- Reads a k-rate signal or string from a user-defined channel. -- -- invalueK :: String -> Krate -- | -- --
--   kvalue invalue "channel name"
--   Sname invalue "channel name"
--   
-- -- -- -- Reads a k-rate signal or string from a user-defined channel. -- -- invalueS :: String -> String -- | -- --
--   inz ksig1
--   
-- -- -- -- Reads multi-channel audio samples into a ZAK array from an external -- device or stream. -- -- inz :: K k0 => k0 -> SignalOut -- | Signal Output module CsoundExpr.Opcodes.Sigio.Output -- | -- --
--   out asig
--   
-- -- -- -- Writes mono audio data to an external device or stream. -- -- out :: Arate -> SignalOut -- | -- --
--   out32 asig1, asig2, asig3, asig4, asig5, asig6, asig7, asig8, asig10, 
--       asig11, asig12, asig13, asig14, asig15, asig16, asig17, asig18, 
--       asig19, asig20, asig21, asig22, asig23, asig24, asig25, asig26, 
--       asig27, asig28, asig29, asig30, asig31, asig32
--   
-- -- -- -- Writes 32-channel audio data to an external device or stream. -- -- out32 :: Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> SignalOut -- | -- --
--   outc asig1 [, asig2] [...]
--   
-- -- -- -- Writes audio data with an arbitrary number of channels to an external -- device or stream. -- -- outc :: K k0 => k0 -> [Arate] -> SignalOut -- | -- --
--   outch kchan1, asig1 [, kchan2] [, asig2] [...]
--   
-- -- -- -- Writes multi-channel audio data, with user-controllable channels, to -- an external device or stream. -- -- outch :: K k0 => k0 -> [Arate] -> SignalOut -- | -- --
--   outh asig1, asig2, asig3, asig4, asig5, asig6
--   
-- -- -- -- Writes 6-channel audio data to an external device or stream. -- -- outh :: Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> SignalOut -- | -- --
--   outo asig1, asig2, asig3, asig4, asig5, asig6, asig7, asig8
--   
-- -- -- -- Writes 8-channel audio data to an external device or stream. -- -- outo :: Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> SignalOut -- | -- --
--   outrg kstart, aout1 [,aout2, aout3,..., aoutN]
--   
-- -- -- -- outrg outputs audio to a range of adjacent audio channels on the audio -- output device. -- -- outrg :: K k0 => k0 -> [Arate] -> SignalOut -- | -- --
--   outq asig1, asig2, asig3, asig4
--   
-- -- -- -- Writes 4-channel audio data to an external device or stream. -- -- outq :: Arate -> Arate -> Arate -> Arate -> SignalOut -- | -- --
--   outq1 asig
--   
-- -- -- -- Writes samples to quad channel 1 of an external device or stream. -- -- outq1 :: Arate -> SignalOut -- | -- --
--   outq2 asig
--   
-- -- -- -- Writes samples to quad channel 2 of an external device or stream. -- -- outq2 :: Arate -> SignalOut -- | -- --
--   outq3 asig
--   
-- -- -- -- Writes samples to quad channel 3 of an external device or stream. -- -- outq3 :: Arate -> SignalOut -- | -- --
--   outq4 asig
--   
-- -- -- -- Writes samples to quad channel 4 of an external device or stream. -- -- outq4 :: Arate -> SignalOut -- | -- --
--   outs asig1, asig2
--   
-- -- -- -- Writes stereo audio data to an external device or stream. -- -- outs :: Arate -> Arate -> SignalOut -- | -- --
--   outs1 asig
--   
-- -- -- -- Writes samples to stereo channel 1 of an external device or stream. -- -- outs1 :: Arate -> SignalOut -- | -- --
--   outs2 asig
--   
-- -- -- -- Writes samples to stereo channel 2 of an external device or stream. -- -- outs2 :: Arate -> SignalOut -- | -- --
--   outx asig1, asig2, asig3, asig4, asig5, asig6, asig7, asig8, 
--       asig9, asig10, asig11, asig12, asig13, asig14, asig15, asig16
--   
-- -- -- -- Writes 16-channel audio data to an external device or stream. -- -- outx :: Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> SignalOut -- | -- --
--   soundout asig1, ifilcod [, iformat]
--   
-- -- -- -- The usage of soundout is discouraged. Please use fout instead. -- -- soundout :: [Irate] -> Arate -> String -> SignalOut -- | -- --
--   soundouts asigl, asigr, ifilcod [, iformat]
--   
-- -- -- -- The usage of soundouts is discouraged. Please use fout instead. -- -- soundouts :: [Irate] -> Arate -> Arate -> String -> SignalOut -- | -- --
--   outvalue "channel name", kvalue
--   outvalue "channel name", "string"
--   
-- -- -- -- Sends a k-rate signal or string to a user-defined channel. -- -- outvalueK :: K k0 => String -> k0 -> SignalOut -- | -- --
--   outvalue "channel name", kvalue
--   outvalue "channel name", "string"
--   
-- -- -- -- Sends a k-rate signal or string to a user-defined channel. -- -- outvalueS :: String -> String -> SignalOut -- | -- --
--   outz ksig1
--   
-- -- -- -- Writes multi-channel audio data from a ZAK array to an external device -- or stream. -- -- outz :: K k0 => k0 -> SignalOut -- | Software Bus module CsoundExpr.Opcodes.Sigio.SoftwareBus -- | -- --
--   chn_k Sname, imode[, itype, idflt, imin, imax]
--   chn_a Sname, imode
--   chn_S Sname, imode
--   
-- -- -- -- Declare a channel of the named software bus, with setting optional -- parameters in the case of a control channel. If the channel does not -- exist yet, it is created, with an inital value of zero or empty -- string. Otherwise, the type (control, audio, or string) of the -- existing channel must match the declaration, or an init error occurs. -- The input/output mode of an existing channel is updated so that it -- becomes the bitwise OR of the previous and the newly specified value. -- -- chn_k :: [Irate] -> String -> Irate -> SignalOut -- | -- --
--   chn_k Sname, imode[, itype, idflt, imin, imax]
--   chn_a Sname, imode
--   chn_S Sname, imode
--   
-- -- -- -- Declare a channel of the named software bus, with setting optional -- parameters in the case of a control channel. If the channel does not -- exist yet, it is created, with an inital value of zero or empty -- string. Otherwise, the type (control, audio, or string) of the -- existing channel must match the declaration, or an init error occurs. -- The input/output mode of an existing channel is updated so that it -- becomes the bitwise OR of the previous and the newly specified value. -- -- chn_a :: String -> Irate -> SignalOut -- | -- --
--   chn_k Sname, imode[, itype, idflt, imin, imax]
--   chn_a Sname, imode
--   chn_S Sname, imode
--   
-- -- -- -- Declare a channel of the named software bus, with setting optional -- parameters in the case of a control channel. If the channel does not -- exist yet, it is created, with an inital value of zero or empty -- string. Otherwise, the type (control, audio, or string) of the -- existing channel must match the declaration, or an init error occurs. -- The input/output mode of an existing channel is updated so that it -- becomes the bitwise OR of the previous and the newly specified value. -- -- chn_S :: String -> Irate -> SignalOut -- | -- --
--   ival chnget Sname
--   kval chnget Sname
--   aval chnget Sname
--   Sval chnget Sname
--   
-- -- -- -- Reads data from a channel of the inward named software bus. Implies -- declaring the channel with imode=1 (see also chn_k, chn_a, and chn_S). -- -- chngetA :: String -> Arate -- | -- --
--   ival chnget Sname
--   kval chnget Sname
--   aval chnget Sname
--   Sval chnget Sname
--   
-- -- -- -- Reads data from a channel of the inward named software bus. Implies -- declaring the channel with imode=1 (see also chn_k, chn_a, and chn_S). -- -- chngetI :: String -> Irate -- | -- --
--   ival chnget Sname
--   kval chnget Sname
--   aval chnget Sname
--   Sval chnget Sname
--   
-- -- -- -- Reads data from a channel of the inward named software bus. Implies -- declaring the channel with imode=1 (see also chn_k, chn_a, and chn_S). -- -- chngetK :: String -> Krate -- | -- --
--   ival chnget Sname
--   kval chnget Sname
--   aval chnget Sname
--   Sval chnget Sname
--   
-- -- -- -- Reads data from a channel of the inward named software bus. Implies -- declaring the channel with imode=1 (see also chn_k, chn_a, and chn_S). -- -- chngetS :: String -> String -- | -- --
--   chnset ival, Sname
--   chnset kval, Sname
--   chnset aval, Sname
--   chnset Sval, Sname
--   
-- -- -- -- Write to a channel of the named software bus. Implies declaring the -- channel with imod=2 (see also chn_k, chn_a, and chn_S). -- -- chnsetA :: Arate -> String -> SignalOut -- | -- --
--   chnset ival, Sname
--   chnset kval, Sname
--   chnset aval, Sname
--   chnset Sval, Sname
--   
-- -- -- -- Write to a channel of the named software bus. Implies declaring the -- channel with imod=2 (see also chn_k, chn_a, and chn_S). -- -- chnsetI :: Irate -> String -> SignalOut -- | -- --
--   chnset ival, Sname
--   chnset kval, Sname
--   chnset aval, Sname
--   chnset Sval, Sname
--   
-- -- -- -- Write to a channel of the named software bus. Implies declaring the -- channel with imod=2 (see also chn_k, chn_a, and chn_S). -- -- chnsetK :: K k0 => k0 -> String -> SignalOut -- | -- --
--   chnset ival, Sname
--   chnset kval, Sname
--   chnset aval, Sname
--   chnset Sval, Sname
--   
-- -- -- -- Write to a channel of the named software bus. Implies declaring the -- channel with imod=2 (see also chn_k, chn_a, and chn_S). -- -- chnsetS :: String -> String -> SignalOut -- | -- --
--   chnsend ival, Sname
--   chnsend kval, Sname
--   chnsend aval, Sname
--   chnsend Sval, Sname
--   
-- -- -- -- Send to a channel of the named software bus. Implies declaring the -- channel with imode=2 (see also chn_k, chn_a, and chn_S). -- -- chnsendA :: Arate -> String -> SignalOut -- | -- --
--   chnsend ival, Sname
--   chnsend kval, Sname
--   chnsend aval, Sname
--   chnsend Sval, Sname
--   
-- -- -- -- Send to a channel of the named software bus. Implies declaring the -- channel with imode=2 (see also chn_k, chn_a, and chn_S). -- -- chnsendI :: Irate -> String -> SignalOut -- | -- --
--   chnsend ival, Sname
--   chnsend kval, Sname
--   chnsend aval, Sname
--   chnsend Sval, Sname
--   
-- -- -- -- Send to a channel of the named software bus. Implies declaring the -- channel with imode=2 (see also chn_k, chn_a, and chn_S). -- -- chnsendK :: K k0 => k0 -> String -> SignalOut -- | -- --
--   chnsend ival, Sname
--   chnsend kval, Sname
--   chnsend aval, Sname
--   chnsend Sval, Sname
--   
-- -- -- -- Send to a channel of the named software bus. Implies declaring the -- channel with imode=2 (see also chn_k, chn_a, and chn_S). -- -- chnsendS :: String -> String -> SignalOut -- | -- --
--   ival chnrecv Sname
--   kval chnrecv Sname
--   aval chnrecv Sname
--   Sval chnrecv Sname
--   
-- -- -- -- Receives data from a channel of the inward named software bus. Implies -- declaring the channel with imode=1 (see also chn_k, chn_a, and chn_S). -- -- chnrecvA :: String -> Arate -- | -- --
--   ival chnrecv Sname
--   kval chnrecv Sname
--   aval chnrecv Sname
--   Sval chnrecv Sname
--   
-- -- -- -- Receives data from a channel of the inward named software bus. Implies -- declaring the channel with imode=1 (see also chn_k, chn_a, and chn_S). -- -- chnrecvI :: String -> Irate -- | -- --
--   ival chnrecv Sname
--   kval chnrecv Sname
--   aval chnrecv Sname
--   Sval chnrecv Sname
--   
-- -- -- -- Receives data from a channel of the inward named software bus. Implies -- declaring the channel with imode=1 (see also chn_k, chn_a, and chn_S). -- -- chnrecvK :: String -> Krate -- | -- --
--   ival chnrecv Sname
--   kval chnrecv Sname
--   aval chnrecv Sname
--   Sval chnrecv Sname
--   
-- -- -- -- Receives data from a channel of the inward named software bus. Implies -- declaring the channel with imode=1 (see also chn_k, chn_a, and chn_S). -- -- chnrecvS :: String -> String -- | -- --
--   chnclear Sname
--   
-- -- -- -- Clears an audio channel of the named software bus to zero. Implies -- declaring the channel with imode=2 (see also chn_a). -- -- chnclear :: String -> SignalOut -- | -- --
--   chnmix aval, Sname
--   
-- -- -- -- Adds an audio signal to a channel of the named software bus. Implies -- declaring the channel with imode=2 (see also chn_a). -- -- chnmix :: Arate -> String -> SignalOut -- | -- --
--   itype, imode, ictltype, idflt, imin, imax chnparams
--   
-- -- -- -- Query parameters of a channel (if it does not exist, all returned -- values are zero). -- -- chnparams :: MultiOut -- | Printing and Display module CsoundExpr.Opcodes.Sigio.Pdisplay -- | -- --
--   dispfft xsig, iprd, iwsiz [, iwtyp] [, idbout] [, iwtflg]
--   
-- -- -- -- These units will print orchestra init-values, or produce graphic -- display of orchestra control signals and audio signals. Uses X11 -- windows if enabled, else (or if -g flag is set) displays are -- approximated in ASCII characters. -- -- dispfft :: X x0 => [Irate] -> x0 -> Irate -> Irate -> SignalOut -- | -- --
--   display xsig, iprd [, inprds] [, iwtflg]
--   
-- -- -- -- These units will print orchestra init-values, or produce graphic -- display of orchestra control signals and audio signals. Uses X11 -- windows if enabled, else (or if -g flag is set) displays are -- approximated in ASCII characters. -- -- display :: X x0 => [Irate] -> x0 -> Irate -> SignalOut -- | -- --
--   flashtxt iwhich, String
--   
-- -- -- -- Allows text to be displayed from instruments like sliders etc. (only -- on Unix and Windows at present) -- -- flashtxt :: Irate -> String -> SignalOut -- | -- --
--   print iarg [, iarg1] [, iarg2] [...]
--   
-- -- -- -- These units will print orchestra init-values. -- -- print' :: [Irate] -> SignalOut -- | -- --
--   printf_i Sfmt, itrig, [iarg1[, iarg2[,... ]]]
--   printf Sfmt, ktrig, [xarg1[, xarg2[,... ]]]
--   
-- -- -- -- printf and printf_i write formatted output, similarly to the C -- function printf(). printf_i runs at i-time only, while printf runs -- both at initialization and performance time. -- -- printf :: (K k0, X x0) => String -> k0 -> [x0] -> SignalOut -- | -- --
--   printf_i Sfmt, itrig, [iarg1[, iarg2[,... ]]]
--   printf Sfmt, ktrig, [xarg1[, xarg2[,... ]]]
--   
-- -- -- -- printf and printf_i write formatted output, similarly to the C -- function printf(). printf_i runs at i-time only, while printf runs -- both at initialization and performance time. -- -- printf_i :: String -> Irate -> [Irate] -> SignalOut -- | -- --
--   printk itime, kval [, ispace]
--   
-- -- -- -- Prints one k-rate value at specified intervals. -- -- printk :: K k0 => [Irate] -> Irate -> k0 -> SignalOut -- | -- --
--   printk2 kvar [, inumspaces]
--   
-- -- -- -- Prints a new value every time a control variable changes. -- -- printk2 :: K k0 => [Irate] -> k0 -> SignalOut -- | -- --
--   printks "string", itime [, kval1] [, kval2] [...]
--   
-- -- -- -- Prints at k-rate using a printf() style syntax. -- -- printks :: K k0 => String -> Irate -> [k0] -> SignalOut -- | -- --
--   prints "string" [, kval1] [, kval2] [...]
--   
-- -- -- -- Prints at init-time using a printf() style syntax. -- -- prints :: K k0 => String -> [k0] -> SignalOut -- | Sound File Queries module CsoundExpr.Opcodes.Sigio.Queries -- | -- --
--   ir filelen ifilcod, [iallowraw]
--   
-- -- -- -- Returns the length of a sound file. -- -- filelen :: [Irate] -> String -> Irate -- | -- --
--   ir filenchnls ifilcod [, iallowraw]
--   
-- -- -- -- Returns the number of channels in a sound file. -- -- filenchnls :: [Irate] -> String -> Irate -- | -- --
--   ir filepeak ifilcod [, ichnl]
--   
-- -- -- -- Returns the peak absolute value of a sound file. -- -- filepeak :: [Irate] -> String -> Irate -- | -- --
--   ir filesr ifilcod [, iallowraw]
--   
-- -- -- -- Returns the sample rate of a sound file. -- -- filesr :: [Irate] -> String -> Irate -- | Signal Input and Output module CsoundExpr.Opcodes.Sigio -- | Amplitude Modifiers and Dynamic processing module CsoundExpr.Opcodes.Sigmod.SigProcAmpMod -- | -- --
--   ares balance asig, acomp [, ihp] [, iskip]
--   
-- -- -- -- The rms power of asig can be interrogated, set, or adjusted to match -- that of a comparator signal. -- -- balance :: [Irate] -> Arate -> Arate -> Arate -- | -- --
--   ar compress aasig, acsig, kthresh, kloknee, khiknee, kratio, katt, krel, ilook
--   
-- -- -- -- This unit functions as an audio compressor, limiter, expander, or -- noise gate, using either soft-knee or hard-knee mapping, and with -- dynamically variable performance characteristics. It takes two audio -- input signals, aasig and acsig, the first of which is modified by a -- running analysis of the second. Both signals can be the same, or the -- first can be modified by a different controlling signal. -- -- compress :: (K k0, K k1, K k2, K k3, K k4, K k5) => Arate -> Arate -> k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Irate -> Arate -- | -- --
--   ares clip asig, imeth, ilimit [, iarg]
--   
-- -- -- -- Clips an a-rate signal to a predefined limit, in a soft manner, using -- one of three methods. -- -- clip :: [Irate] -> Arate -> Irate -> Irate -> Arate -- | -- --
--   ares dam asig, kthreshold, icomp1, icomp2, irtime, iftime
--   
-- -- -- -- This opcode dynamically modifies a gain value applied to the input -- sound ain by comparing its power level to a given threshold level. The -- signal will be compressed/expanded with different factors regarding -- that it is over or under the threshold. -- -- dam :: K k0 => Arate -> k0 -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares gain asig, krms [, ihp] [, iskip]
--   
-- -- -- -- Adjusts the amplitude audio signal according to a root-mean-square -- value. -- -- gain :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | Convolution and Morphing module CsoundExpr.Opcodes.Sigmod.SigProcConmorph -- | -- --
--   ar1 [, ar2] [, ar3] [, ar4] convolve ain, ifilcod [, ichannel]
--   
-- -- -- -- Output is the convolution of signal ain and the impulse response -- contained in ifilcod. If more than one output signal is supplied, each -- will be convolved with the same impulse response. Note that it is -- considerably more efficient to use one instance of the operator when -- processing a mono input to create stereo, or quad, outputs. -- -- convolve :: [Irate] -> Arate -> String -> MultiOut -- | -- --
--   ares cross2 ain1, ain2, isize, ioverlap, iwin, kbias
--   
-- -- -- -- This is an implementation of cross synthesis using FFT's. -- -- cross2 :: K k0 => Arate -> Arate -> Irate -> Irate -> Irate -> k0 -> Arate -- | -- --
--   ares dconv asig, isize, ifn
--   
-- -- -- -- A direct convolution opcode. -- -- dconv :: Arate -> Irate -> Irate -> Arate -- | -- --
--   a1[, a2[, a3[,... a8]]] ftconv ain, ift, iplen[, iskipsamples 
--       [, iirlen[, iskipinit]]]
--   
-- -- -- -- Low latency multichannel convolution, using a function table as -- impulse response source. The algorithm is to split the impulse -- response to partitions of length determined by the iplen parameter, -- and delay and mix partitions so that the original, full length impulse -- response is reconstructed without gaps. The output delay (latency) is -- iplen samples, and does not depend on the control rate, unlike in the -- case of other convolve opcodes. -- -- ftconv :: [Irate] -> Arate -> Irate -> Irate -> MultiOut -- | -- --
--   ftmorf kftndx, iftfn, iresfn
--   
-- -- -- -- Uses an index into a table of ftable numbers to morph between adjacent -- tables in the list.This morphed function is written into the table -- referenced by iresfn on every k-cycle. -- -- ftmorf :: K k0 => k0 -> Irate -> Irate -> SignalOut -- | -- --
--   ar1 [, ar2] [, ar3] [, ar4] pconvolve ain, ifilcod [, ipartitionsize, ichannel]
--   
-- -- -- -- Convolution based on a uniformly partitioned overlap-save algorithm. -- Compared to the convolve opcode, pconvolve has these benefits: -- -- pconvolve :: [Irate] -> Arate -> String -> MultiOut -- | Delay module CsoundExpr.Opcodes.Sigmod.Delay -- | -- --
--   ares delay asig, idlt [, iskip]
--   
-- -- -- -- A signal can be read from or written into a delay path, or it can be -- automatically delayed by some time interval. -- -- delay :: [Irate] -> Arate -> Irate -> Arate -- | -- --
--   ares delay1 asig [, iskip]
--   
-- -- -- -- Delays an input signal by one sample. -- -- delay1 :: [Irate] -> Arate -> Arate -- | -- --
--   kr delayk ksig, idel[, imode]
--   kr vdel_k ksig, kdel, imdel[, imode]
--   
-- -- -- -- k-rate delay opcodes -- -- delayk :: K k0 => [Irate] -> k0 -> Irate -> Krate -- | -- --
--   ares delayr idlt [, iskip]
--   
-- -- -- -- Reads from an automatically established digital delay line. -- -- delayr :: [Irate] -> Irate -> Arate -- | -- --
--   delayw asig
--   
-- -- -- -- Writes the audio signal to a digital delay line. -- -- delayw :: Arate -> SignalOut -- | -- --
--   ares deltap kdlt
--   
-- -- -- -- Tap a delay line at variable offset times. -- -- deltap :: K k0 => k0 -> Arate -- | -- --
--   ares deltap3 xdlt
--   
-- -- -- -- Taps a delay line at variable offset times, uses cubic interpolation. -- -- deltap3 :: X x0 => x0 -> Arate -- | -- --
--   ares deltapi xdlt
--   
-- -- -- -- Taps a delay line at variable offset times, uses interpolation. -- -- deltapi :: X x0 => x0 -> Arate -- | -- --
--   ares deltapn xnumsamps
--   
-- -- -- -- Tap a delay line at variable offset times. -- -- deltapn :: X x0 => x0 -> Arate -- | -- --
--   aout deltapx adel, iwsize
--   
-- -- -- -- deltapx is similar to deltapi or deltap3. However, it allows higher -- quality interpolation. This opcode can read from and write to a -- delayr/delayw delay line with interpolation. -- -- deltapx :: Arate -> Irate -> Arate -- | -- --
--   deltapxw ain, adel, iwsize
--   
-- -- -- -- deltapxw mixes the input signal to a delay line. This opcode can be -- mixed with reading units (deltap, deltapn, deltapi, deltap3, and -- deltapx) in any order; the actual delay time is the difference of the -- read and write time. This opcode can read from and write to a -- delayr/delayw delay line with interpolation. -- -- deltapxw :: Arate -> Arate -> Irate -> SignalOut -- | -- --
--   ares vdelay asig, adel, imaxdel [, iskip]
--   
-- -- -- -- This is an interpolating variable time delay, it is not very different -- from the existing implementation (deltapi), it is only easier to use. -- -- vdelay :: [Irate] -> Arate -> Arate -> Irate -> Arate -- | -- --
--   ares vdelay3 asig, adel, imaxdel [, iskip]
--   
-- -- -- -- vdelay3 is experimental. It is the same as vdelay except that it uses -- cubic interpolation. (New in Version 3.50.) -- -- vdelay3 :: [Irate] -> Arate -> Arate -> Irate -> Arate -- | -- --
--   aout vdelayx ain, adl, imd, iws [, ist]
--   
-- -- -- -- A variable delay opcode with high quality interpolation. -- -- vdelayx :: [Irate] -> Arate -> Arate -> Irate -> Irate -> Arate -- | -- --
--   aout1, aout2 vdelayxs ain1, ain2, adl, imd, iws [, ist]
--   
-- -- -- -- A stereo variable delay opcode with high quality interpolation. -- -- vdelayxs :: [Irate] -> Arate -> Arate -> Arate -> Irate -> Irate -> MultiOut -- | -- --
--   aout1, aout2, aout3, aout4 vdelayxq ain1, ain2, ain3, ain4, adl, imd, iws [, ist]
--   
-- -- -- -- A 4-channel variable delay opcode with high quality interpolation. -- -- vdelayxq :: [Irate] -> Arate -> Arate -> Arate -> Arate -> Arate -> Irate -> Irate -> MultiOut -- | -- --
--   aout vdelayxw ain, adl, imd, iws [, ist]
--   
-- -- -- -- Variable delay opcodes with high quality interpolation. -- -- vdelayxw :: [Irate] -> Arate -> Arate -> Irate -> Irate -> Arate -- | -- --
--   aout1, aout2, aout3, aout4 vdelayxwq ain1, ain2, ain3, ain4, adl, 
--       imd, iws [, ist]
--   
-- -- -- -- Variable delay opcodes with high quality interpolation. -- -- vdelayxwq :: [Irate] -> Arate -> Arate -> Arate -> Arate -> Arate -> Irate -> Irate -> MultiOut -- | -- --
--   aout1, aout2 vdelayxws ain1, ain2, adl, imd, iws [, ist]
--   
-- -- -- -- Variable delay opcodes with high quality interpolation. -- -- vdelayxws :: [Irate] -> Arate -> Arate -> Arate -> Irate -> Irate -> MultiOut -- | -- --
--   ares multitap asig [, itime1] [, igain1] [, itime2] [, igain2] [...]
--   
-- -- -- -- Multitap delay line implementation. -- -- multitap :: Arate -> [Irate] -> Arate -- | Panning and Spatialization module CsoundExpr.Opcodes.Sigmod.Panspatl -- | -- --
--   a1, a2 locsend
--   a1, a2, a3, a4 locsend
--   
-- -- -- -- locsend depends upon the existence of a previously defined locsig. The -- number of output signals must match the number in the previous locsig. -- The output signals from locsend are derived from the values given for -- distance and reverb in the locsig and are ready to be sent to local or -- global reverb units (see example below). The reverb amount and the -- balance between the 2 or 4 channels are calculated in the same way as -- described in the Dodge book (an essential text!). -- -- locsend :: MultiOut -- | -- --
--   a1, a2 locsig asig, kdegree, kdistance, kreverbsend
--   a1, a2, a3, a4 locsig asig, kdegree, kdistance, kreverbsend
--   
-- -- -- -- locsig takes an input signal and distributes it among 2 or 4 channels -- using values in degrees to calculate the balance between adjacent -- channels. It also takes arguments for distance (used to attenuate -- signals that are to sound as if they are some distance further than -- the loudspeaker itself), and for the amount the signal that will be -- sent to reverberators. This unit is based upon the example in the -- Charles Dodge/Thomas Jerse book, Computer Music, page 320. -- -- locsig :: (K k0, K k1, K k2) => Arate -> k0 -> k1 -> k2 -> MultiOut -- | -- --
--   a1, a2, a3, a4 pan asig, kx, ky, ifn [, imode] [, ioffset]
--   
-- -- -- -- Distribute an audio signal amongst four channels with localization -- control. -- -- pan :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Irate -> MultiOut -- | -- --
--   a1, a2 pan2 asig, xp [, imode]
--   
-- -- -- -- Distribute an audio signal across two channels with a choice of -- methods. -- -- pan2 :: X x0 => [Irate] -> Arate -> x0 -> MultiOut -- | -- --
--   a1, a2, a3, a4 space asig, ifn, ktime, kreverbsend, kx, ky
--   
-- -- -- -- space takes an input signal and distributes it among 4 channels using -- Cartesian xy coordinates to calculate the balance of the outputs. The -- xy coordinates can be defined in a separate text file and accessed -- through a Function statement in the score using Gen28, or they can be -- specified using the optional kx, ky arguments. The advantages to the -- former are: -- -- space :: (K k0, K k1, K k2, K k3) => Arate -> Irate -> k0 -> k1 -> k2 -> k3 -> MultiOut -- | -- --
--   k1 spdist ifn, ktime, kx, ky
--   
-- -- -- -- spdist uses the same xy data as space, also either from a text file -- using Gen28 or from x and y arguments given to the unit directly. The -- purpose of this unit is to make available the values for distance that -- are calculated from the xy coordinates. -- -- spdist :: (K k0, K k1, K k2) => Irate -> k0 -> k1 -> k2 -> Krate -- | -- --
--   a1, a2, a3, a4 spsend
--   
-- -- -- -- spsend depends upon the existence of a previously defined space. The -- output signals from spsend are derived from the values given for xy -- and reverb in the space and are ready to be sent to local or global -- reverb units (see example below). -- -- spsend :: MultiOut -- | -- --
--   aW, aX, aY, aZ spat3d ain, kX, kY, kZ, idist, ift, imode, imdel, iovr [, istor]
--   
-- -- -- -- This opcode positions the input sound in a 3D space, with optional -- simulation of room acoustics, in various output formats. spat3d allows -- moving the sound at k-rate (this movement is interpolated internally -- to eliminate zipper noise if sr not equal to kr). -- -- spat3d :: (K k0, K k1, K k2) => [Irate] -> Arate -> k0 -> k1 -> k2 -> Irate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   aW, aX, aY, aZ spat3di ain, iX, iY, iZ, idist, ift, imode [, istor]
--   
-- -- -- -- This opcode positions the input sound in a 3D space, with optional -- simulation of room acoustics, in various output formats. With spat3di, -- sound source position is set at i-time. -- -- spat3di :: [Irate] -> Arate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   spat3dt ioutft, iX, iY, iZ, idist, ift, imode, irlen [, iftnocl]
--   
-- -- -- -- This opcode positions the input sound in a 3D space, with optional -- simulation of room acoustics, in various output formats. spat3dt can -- be used to render the impulse response at i-time, storing output in a -- function table, suitable for convolution. -- -- spat3dt :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   ar1,..., ar16 vbap16 asig, kazim [, kelev] [, kspread]
--   
-- -- -- -- Distributes an audio signal among 16 channels. -- -- vbap16 :: (K k0, K k1) => [k0] -> Arate -> k1 -> MultiOut -- | -- --
--   ar1,..., ar16 vbap16move asig, idur, ispread, ifldnum, ifld1 
--       [, ifld2] [...]
--   
-- -- -- -- Distribute an audio signal among 16 channels with moving virtual -- sources. -- -- vbap16move :: Arate -> Irate -> Irate -> Irate -> [Irate] -> MultiOut -- | -- --
--   ar1, ar2, ar3, ar4 vbap4 asig, kazim [, kelev] [, kspread]
--   
-- -- -- -- Distributes an audio signal among 4 channels. -- -- vbap4 :: (K k0, K k1) => [k0] -> Arate -> k1 -> MultiOut -- | -- --
--   ar1, ar2, ar3, ar4 vbap4move asig, idur, ispread, ifldnum, ifld1 
--       [, ifld2] [...]
--   
-- -- -- -- Distributes an audio signal among 4 channels with moving virtual -- sources. -- -- vbap4move :: Arate -> Irate -> Irate -> Irate -> [Irate] -> MultiOut -- | -- --
--   ar1,..., ar8 vbap8 asig, kazim [, kelev] [, kspread]
--   
-- -- -- -- Distributes an audio signal among 8 channels. -- -- vbap8 :: (K k0, K k1) => [k0] -> Arate -> k1 -> MultiOut -- | -- --
--   ar1,..., ar8 vbap8move asig, idur, ispread, ifldnum, ifld1 
--       [, ifld2] [...]
--   
-- -- -- -- Distributes an audio signal among 8 channels with moving virtual -- sources. -- -- vbap8move :: Arate -> Irate -> Irate -> Irate -> [Irate] -> MultiOut -- | -- --
--   vbaplsinit idim, ilsnum [, idir1] [, idir2] [...] [, idir32]
--   
-- -- -- -- Configures VBAP output according to loudspeaker parameters. -- -- vbaplsinit :: Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   vbapz inumchnls, istartndx, asig, kazim [, kelev] [, kspread]
--   
-- -- -- -- Writes a multi-channel audio signal to a ZAK array. -- -- vbapz :: (K k0, K k1) => [k0] -> Irate -> Irate -> Arate -> k1 -> SignalOut -- | -- --
--   vbapzmove inumchnls, istartndx, asig, idur, ispread, ifldnum, ifld1, 
--       ifld2, [...]
--   
-- -- -- -- Writes a multi-channel audio signal to a ZAK array with moving virtual -- sources. -- -- vbapzmove :: Irate -> Irate -> Arate -> Irate -> Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   aleft, aright hrtfer asig, kaz, kelev, HRTFcompact
--   
-- -- -- -- Output is binaural (headphone) 3D audio. -- -- hrtfer :: (K k0, K k1) => Arate -> k0 -> k1 -> MultiOut -- | -- --
--   aleft, aright hrtfmove asrc, kAz, kElev, ifilel, ifiler [, imode, ifade, isr]
--   
-- -- -- -- This opcode takes a source signal and spatialises it in the 3 -- dimensional space around a listener by convolving the source with -- stored head related transfer function (HRTF) based filters. -- -- hrtfmove :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Irate -> Irate -> MultiOut -- | -- --
--   aleft, aright hrtfmove2 asrc, kAz, kElev, ifilel, ifiler [,ioverlap, iradius, isr]
--   
-- -- -- -- This opcode takes a source signal and spatialises it in the 3 -- dimensional space around a listener using head related transfer -- function (HRTF) based filters. -- -- hrtfmove2 :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Irate -> Irate -> MultiOut -- | -- --
--   aleft, aright hrtfstat asrc, iAz, iElev, ifilel, ifiler [,iradius, isr]
--   
-- -- -- -- This opcode takes a source signal and spatialises it in the 3 -- dimensional space around a listener using head related transfer -- function (HRTF) based filters. It produces a static output (azimuth -- and elevation parameters are i-rate), because a static source allows -- much more efficient processing than hrtfmove and hrtfmove2,. -- -- hrtfstat :: [Irate] -> Arate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   ao1, ao2 bformdec isetup, aw, ax, ay, az [, ar, as, at, au, av 
--       [, abk, al, am, an, ao, ap, aq]]
--   ao1, ao2, ao3, ao4 bformdec isetup, aw, ax, ay, az [, ar, as, at, 
--       au, av [, abk, al, am, an, ao, ap, aq]]
--   ao1, ao2, ao3, ao4, ao5 bformdec isetup, aw, ax, ay, az [, ar, as, 
--       at, au, av [, abk, al, am, an, ao, ap, aq]]
--   ao1, ao2, ao3, ao4, ao5, ao6, ao7, ao8 bformdec isetup, aw, ax, ay, az 
--       [, ar, as, at, au, av [, abk, al, am, an, ao, ap, aq]]]
--   
-- -- -- -- Decodes an ambisonic B format signal into loudspeaker specific -- signals. Note that this opcode is deprecated as it is inaccurate, and -- is replaced by the much better opcode bformdec1 which replicates all -- the important features. -- -- bformdec :: [Arate] -> Irate -> Arate -> Arate -> Arate -> Arate -> MultiOut -- | -- --
--   aw, ax, ay, az bformenc asig, kalpha, kbeta, kord0, kord1
--   aw, ax, ay, az, ar, as, at, au, av bformenc asig, kalpha, kbeta, 
--       kord0, kord1, kord2
--   aw, ax, ay, az, ar, as, at, au, av, ak, al, am, an, ao, ap, aq bformenc 
--       asig, kalpha, kbeta, kord0, kord1, kord2, kord3
--   
-- -- -- -- Codes a signal into the ambisonic B format. Note that this opcode is -- deprecated as it is inaccurate, and is replaced by the much better -- opcode bformenc1 which replicates all the important features; also -- note that the gain arguments are not available in bformenc1. -- -- bformenc :: (K k0, K k1, K k2, K k3) => Arate -> k0 -> k1 -> k2 -> k3 -> MultiOut -- | -- --
--   aw, ax, ay, az bformenc asig, kalpha, kbeta, kord0, kord1
--   aw, ax, ay, az, ar, as, at, au, av bformenc asig, kalpha, kbeta, 
--       kord0, kord1, kord2
--   aw, ax, ay, az, ar, as, at, au, av, ak, al, am, an, ao, ap, aq bformenc 
--       asig, kalpha, kbeta, kord0, kord1, kord2, kord3
--   
-- -- -- -- Codes a signal into the ambisonic B format. Note that this opcode is -- deprecated as it is inaccurate, and is replaced by the much better -- opcode bformenc1 which replicates all the important features; also -- note that the gain arguments are not available in bformenc1. -- -- bformencK :: (K k0, K k1, K k2, K k3, K k4) => Arate -> k0 -> k1 -> k2 -> k3 -> k4 -> MultiOut -- | Reverberation module CsoundExpr.Opcodes.Sigmod.Reverbtn -- | -- --
--   ares alpass asig, krvt, ilpt [, iskip] [, insmps]
--   
-- -- -- -- Reverberates an input signal with a flat frequency response. -- -- alpass :: K k0 => [Irate] -> Arate -> k0 -> Irate -> Arate -- | -- --
--   a1, a2 babo asig, ksrcx, ksrcy, ksrcz, irx, iry, irz [, idiff] [, ifno]
--   
-- -- -- -- babo stands for ball-within-the-box. It is a physical model -- reverberator based on the paper by Davide Rocchesso The Ball within -- the Box: a sound-processing metaphor, Computer Music Journal, Vol -- 19, N.4, pp.45-47, Winter 1995. -- -- babo :: (K k0, K k1, K k2) => [Irate] -> Arate -> k0 -> k1 -> k2 -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   ares comb asig, krvt, ilpt [, iskip] [, insmps]
--   
-- -- -- -- Reverberates an input signal with a colored frequency response. -- -- comb :: K k0 => [Irate] -> Arate -> k0 -> Irate -> Arate -- | -- --
--   aoutL, aoutR freeverb ainL, ainR, kRoomSize, kHFDamp[, iSRate[, iSkip]]
--   
-- -- -- -- freeverb is a stereo reverb unit based on Jezar's public domain C++ -- sources, composed of eight parallel comb filters on both channels, -- followed by four allpass units in series. The filters on the right -- channel are slightly detuned compared to the left channel in order to -- create a stereo effect. -- -- freeverb :: (K k0, K k1) => [Irate] -> Arate -> Arate -> k0 -> k1 -> MultiOut -- | -- --
--   ares nestedap asig, imode, imaxdel, idel1, igain1 [, idel2] [, igain2] 
--       [, idel3] [, igain3] [, istor]
--   
-- -- -- -- Three different nested all-pass filters, useful for implementing -- reverbs. -- -- nestedap :: [Irate] -> Arate -> Irate -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares nreverb asig, ktime, khdif [, iskip] [,inumCombs] [, ifnCombs] 
--       [, inumAlpas] [, ifnAlpas]
--   
-- -- -- -- This is a reverberator consisting of 6 parallel comb-lowpass filters -- being fed into a series of 5 allpass filters. nreverb replaces reverb2 -- (version 3.48) and so both opcodes are identical. -- -- nreverb :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares reverb2 asig, ktime, khdif [, iskip] [,inumCombs] 
--       [, ifnCombs] [, inumAlpas] [, ifnAlpas]
--   
-- -- -- -- Same as the nreverb opcode. -- -- reverb2 :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares reverb asig, krvt [, iskip]
--   
-- -- -- -- Reverberates an input signal with a natural room frequency response. -- -- reverb :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   aoutL, aoutR reverbsc ainL, ainR, kfblvl, kfco[, israte[, ipitchm[, iskip]]]
--   
-- -- -- -- 8 delay line stereo FDN reverb, with feedback matrix based upon -- physical modeling scattering junction of 8 lossless waveguides of -- equal characteristic impedance. Based on Csound orchestra version by -- Sean Costello. -- -- reverbsc :: (K k0, K k1) => [Irate] -> Arate -> Arate -> k0 -> k1 -> MultiOut -- | -- --
--   ares valpass asig, krvt, xlpt, imaxlpt [, iskip] [, insmps]
--   
-- -- -- -- Variably reverberates an input signal with a flat frequency response. -- -- valpass :: (K k0, X x0) => [Irate] -> Arate -> k0 -> x0 -> Irate -> Arate -- | -- --
--   ares vcomb asig, krvt, xlpt, imaxlpt [, iskip] [, insmps]
--   
-- -- -- -- Variably reverberates an input signal with a colored frequency -- response. -- -- vcomb :: (K k0, X x0) => [Irate] -> Arate -> k0 -> x0 -> Irate -> Arate -- | Sample Level Operators module CsoundExpr.Opcodes.Sigmod.Sample -- | -- --
--   denorm a1[, a2[, a3[,... ]]]
--   
-- -- -- -- Mixes low level (~1e-20 for floats, and ~1e-56 for doubles) noise to a -- list of a-rate signals. Can be used before IIR filters and reverbs to -- avoid denormalized numbers which may otherwise result in significantly -- increased CPU usage. -- -- denorm :: [Arate] -> SignalOut -- | -- --
--   ares diff asig [, iskip]
--   kres diff ksig [, iskip]
--   
-- -- -- -- Modify a signal by differentiation. -- -- diffA :: [Irate] -> Arate -> Arate -- | -- --
--   ares diff asig [, iskip]
--   kres diff ksig [, iskip]
--   
-- -- -- -- Modify a signal by differentiation. -- -- diffK :: K k0 => [Irate] -> k0 -> Krate -- | -- --
--   kres downsamp asig [, iwlen]
--   
-- -- -- -- Modify a signal by down-sampling. -- -- downsamp :: [Irate] -> Arate -> Krate -- | -- --
--   ares fold asig, kincr
--   
-- -- -- -- Adds artificial foldover to an audio signal. -- -- fold :: K k0 => Arate -> k0 -> Arate -- | -- --
--   ares integ asig [, iskip]
--   kres integ ksig [, iskip]
--   
-- -- -- -- Modify a signal by integration. -- -- integA :: [Irate] -> Arate -> Arate -- | -- --
--   ares integ asig [, iskip]
--   kres integ ksig [, iskip]
--   
-- -- -- -- Modify a signal by integration. -- -- integK :: K k0 => [Irate] -> k0 -> Krate -- | -- --
--   ares interp ksig [, iskip] [, imode]
--   
-- -- -- -- Converts a control signal to an audio signal using linear -- interpolation. -- -- interp :: K k0 => [Irate] -> k0 -> Arate -- | -- --
--   ares ntrpol asig1, asig2, kpoint [, imin] [, imax]
--   ires ntrpol isig1, isig2, ipoint [, imin] [, imax]
--   kres ntrpol ksig1, ksig2, kpoint [, imin] [, imax]
--   
-- -- -- -- Calculates the weighted mean value (i.e. linear interpolation) of two -- input signals -- -- ntrpolA :: K k0 => [Irate] -> Arate -> Arate -> k0 -> Arate -- | -- --
--   ares ntrpol asig1, asig2, kpoint [, imin] [, imax]
--   ires ntrpol isig1, isig2, ipoint [, imin] [, imax]
--   kres ntrpol ksig1, ksig2, kpoint [, imin] [, imax]
--   
-- -- -- -- Calculates the weighted mean value (i.e. linear interpolation) of two -- input signals -- -- ntrpolI :: [Irate] -> Irate -> Irate -> Irate -> Irate -- | -- --
--   ares ntrpol asig1, asig2, kpoint [, imin] [, imax]
--   ires ntrpol isig1, isig2, ipoint [, imin] [, imax]
--   kres ntrpol ksig1, ksig2, kpoint [, imin] [, imax]
--   
-- -- -- -- Calculates the weighted mean value (i.e. linear interpolation) of two -- input signals -- -- ntrpolK :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> Krate -- | -- --
--   ares samphold asig, agate [, ival] [, ivstor]
--   kres samphold ksig, kgate [, ival] [, ivstor]
--   
-- -- -- -- Performs a sample-and-hold operation on its input. -- -- sampholdA :: [Irate] -> Arate -> Arate -> Arate -- | -- --
--   ares samphold asig, agate [, ival] [, ivstor]
--   kres samphold ksig, kgate [, ival] [, ivstor]
--   
-- -- -- -- Performs a sample-and-hold operation on its input. -- -- sampholdK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | -- --
--   ares upsamp ksig
--   
-- -- -- -- Modify a signal by up-sampling. -- -- upsamp :: K k0 => k0 -> Arate -- | -- --
--   kval vaget kndx, avar
--   
-- -- -- -- Access values of the current buffer of an a-rate variable by indexing. -- Useful for doing sample-by-sample manipulation at k-rate without using -- setksmps 1. -- -- vaget :: K k0 => k0 -> Arate -> Krate -- | -- --
--   vaset kval, kndx, avar
--   
-- -- -- -- Write values into the current buffer of an a-rate variable at the -- given index. Useful for doing sample-by-sample manipulation at k-rate -- without using setksmps 1. -- -- vaset :: (K k0, K k1) => k0 -> k1 -> Arate -> SignalOut -- | Signal Limiters module CsoundExpr.Opcodes.Sigmod.Siglimit -- | -- --
--   ares limit asig, klow, khigh
--   ires limit isig, ilow, ihigh
--   kres limit ksig, klow, khigh
--   
-- -- -- -- Sets the lower and upper limits of the value it processes. -- -- limitA :: (K k0, K k1) => Arate -> k0 -> k1 -> Arate -- | -- --
--   ares limit asig, klow, khigh
--   ires limit isig, ilow, ihigh
--   kres limit ksig, klow, khigh
--   
-- -- -- -- Sets the lower and upper limits of the value it processes. -- -- limitI :: Irate -> Irate -> Irate -> Irate -- | -- --
--   ares limit asig, klow, khigh
--   ires limit isig, ilow, ihigh
--   kres limit ksig, klow, khigh
--   
-- -- -- -- Sets the lower and upper limits of the value it processes. -- -- limitK :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   ares mirror asig, klow, khigh
--   ires mirror isig, ilow, ihigh
--   kres mirror ksig, klow, khigh
--   
-- -- -- -- Reflects the signal that exceeds the low and high thresholds. -- -- mirrorA :: (K k0, K k1) => Arate -> k0 -> k1 -> Arate -- | -- --
--   ares mirror asig, klow, khigh
--   ires mirror isig, ilow, ihigh
--   kres mirror ksig, klow, khigh
--   
-- -- -- -- Reflects the signal that exceeds the low and high thresholds. -- -- mirrorI :: Irate -> Irate -> Irate -> Irate -- | -- --
--   ares mirror asig, klow, khigh
--   ires mirror isig, ilow, ihigh
--   kres mirror ksig, klow, khigh
--   
-- -- -- -- Reflects the signal that exceeds the low and high thresholds. -- -- mirrorK :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   ares wrap asig, klow, khigh
--   ires wrap isig, ilow, ihigh
--   kres wrap ksig, klow, khigh
--   
-- -- -- -- Wraps-around the signal that exceeds the low and high thresholds. -- -- wrapA :: (K k0, K k1) => Arate -> k0 -> k1 -> Arate -- | -- --
--   ares wrap asig, klow, khigh
--   ires wrap isig, ilow, ihigh
--   kres wrap ksig, klow, khigh
--   
-- -- -- -- Wraps-around the signal that exceeds the low and high thresholds. -- -- wrapI :: Irate -> Irate -> Irate -> Irate -- | -- --
--   ares wrap asig, klow, khigh
--   ires wrap isig, ilow, ihigh
--   kres wrap ksig, klow, khigh
--   
-- -- -- -- Wraps-around the signal that exceeds the low and high thresholds. -- -- wrapK :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | Special Effects module CsoundExpr.Opcodes.Sigmod.Speciale -- | -- --
--   ar distort asig, kdist, ifn[, ihp, istor]
--   
-- -- distort :: K k0 => [Irate] -> Arate -> k0 -> Irate -> Arate -- | -- --
--   ares distort1 asig, kpregain, kpostgain, kshape1, kshape2[, imode]
--   
-- -- -- -- Implementation of modified hyperbolic tangent distortion. distort1 can -- be used to generate wave shaping distortion based on a modification of -- the tanh function. -- -- distort1 :: (K k0, K k1, K k2, K k3) => [Irate] -> Arate -> k0 -> k1 -> k2 -> k3 -> Arate -- | -- --
--   ares flanger asig, adel, kfeedback [, imaxd]
--   
-- -- -- -- A user controlled flanger. -- -- flanger :: K k0 => [Irate] -> Arate -> Arate -> k0 -> Arate -- | -- --
--   ares harmon asig, kestfrq, kmaxvar, kgenfreq1, kgenfreq2, imode, 
--       iminfrq, iprd
--   
-- -- -- -- Analyze an audio input and generate harmonizing voices in synchrony. -- -- harmon :: (K k0, K k1, K k2, K k3) => Arate -> k0 -> k1 -> k2 -> k3 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ares phaser1 asig, kfreq, kord, kfeedback [, iskip]
--   
-- -- -- -- An implementation of iord number of first-order allpass filters in -- series. -- -- phaser1 :: (K k0, K k1, K k2) => [Irate] -> Arate -> k0 -> k1 -> k2 -> Arate -- | -- --
--   ares phaser2 asig, kfreq, kq, kord, kmode, ksep, kfeedback
--   
-- -- -- -- An implementation of iord number of second-order allpass filters in -- series. -- -- phaser2 :: (K k0, K k1, K k2, K k3, K k4, K k5) => Arate -> k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Arate -- | Standard Filters module CsoundExpr.Opcodes.Sigmod.Standard -- | -- --
--   ares areson asig, kcf, kbw [, iscl] [, iskip]
--   
-- -- -- -- A notch filter whose transfer functions are the complements of the -- reson opcode. -- -- areson :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares lowpass2 asig, kcf, kq [, iskip]
--   
-- -- -- -- Implementation of a resonant second-order lowpass filter. -- -- lowpass2 :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares lowres asig, kcutoff, kresonance [, iskip]
--   
-- -- -- -- lowres is a resonant lowpass filter. -- -- lowres :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares lowresx asig, kcutoff, kresonance [, inumlayer] [, iskip]
--   
-- -- -- -- lowresx is equivalent to more layers of lowres with the same arguments -- serially connected. -- -- lowresx :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares lpf18 asig, kfco, kres, kdist
--   
-- -- -- -- Implementation of a 3 pole sweepable resonant lowpass filter. -- -- lpf18 :: (K k0, K k1, K k2) => Arate -> k0 -> k1 -> k2 -> Arate -- | -- --
--   ares moogvcf asig, xfco, xres [,iscale, iskip]
--   
-- -- -- -- A digital emulation of the Moog diode ladder filter configuration. -- -- moogvcf :: (X x0, X x1) => [Irate] -> Arate -> x0 -> x1 -> Arate -- | -- --
--   asig moogladder ain, kcf, kres[, istor]
--   
-- -- -- -- Moogladder is an new digital implementation of the Moog ladder filter -- based on the work of Antti Huovilainen, described in the paper -- Non-Linear Digital Implementation of the Moog Ladder Filter -- (Proceedings of DaFX04, Univ of Napoli). This implementation is -- probably a more accurate digital representation of the original -- analogue filter. -- -- moogladder :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares reson asig, kcf, kbw [, iscl] [, iskip]
--   
-- -- -- -- A second-order resonant filter. -- -- reson :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares resonr asig, kcf, kbw [, iscl] [, iskip]
--   
-- -- -- -- Implementations of a second-order, two-pole two-zero bandpass filter -- with variable frequency response. -- -- resonr :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares resonx asig, kcf, kbw [, inumlayer] [, iscl] [, iskip]
--   
-- -- -- -- resonx is equivalent to a filters consisting of more layers of reson -- with the same arguments, serially connected. Using a stack of a larger -- number of filters allows a sharper cutoff. They are faster than using -- a larger number instances in a Csound orchestra of the old opcodes, -- because only one initialization and k- cycle are needed at time and -- the audio loop falls entirely inside the cache memory of processor. -- -- resonx :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares resony asig, kbf, kbw, inum, ksep [, isepmode] [, iscl] [, iskip]
--   
-- -- -- -- A bank of second-order bandpass filters, connected in parallel. -- -- resony :: (K k0, K k1, K k2) => [Irate] -> Arate -> k0 -> k1 -> Irate -> k2 -> Arate -- | -- --
--   ares resonz asig, kcf, kbw [, iscl] [, iskip]
--   
-- -- -- -- Implementations of a second-order, two-pole two-zero bandpass filter -- with variable frequency response. -- -- resonz :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares rezzy asig, xfco, xres [, imode, iskip]
--   
-- -- -- -- A resonant low-pass filter. -- -- rezzy :: (X x0, X x1) => [Irate] -> Arate -> x0 -> x1 -> Arate -- | -- --
--   ahp,alp,abp,abr statevar ain, kcf, kq [, iosamps, istor]
--   
-- -- -- -- Statevar is a new digital implementation of the analogue -- state-variable filter. This filter has four simultaneous outputs: -- high-pass, low-pass, band-pass and band-reject. This filter uses -- oversampling for sharper resonance (default: 3 times oversampling). It -- includes a resonance limiter that prevents the filter from getting -- unstable. -- -- statevar :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> MultiOut -- | -- --
--   alow, ahigh, aband svfilter asig, kcf, kq [, iscl]
--   
-- -- -- -- Implementation of a resonant second order filter, with simultaneous -- lowpass, highpass and bandpass outputs. -- -- svfilter :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> MultiOut -- | -- --
--   ares tbvcf asig, xfco, xres, kdist, kasym [, iskip]
--   
-- -- -- -- This opcode attempts to model some of the filter characteristics of a -- Roland TB303 voltage-controlled filter. Euler's method is used to -- approximate the system, rather than traditional filter methods. Cutoff -- frequency, Q, and distortion are all coupled. Empirical methods were -- used to try to unentwine, but frequency is only approximate as a -- result. Future fixes for some problems with this opcode may break -- existing orchestras relying on this version of tbvcf. -- -- tbvcf :: (X x0, X x1, K k0, K k1) => [Irate] -> Arate -> x0 -> x1 -> k0 -> k1 -> Arate -- | -- --
--   ares vlowres asig, kfco, kres, iord, ksep
--   
-- -- -- -- A bank of filters in which the cutoff frequency can be separated under -- user control -- -- vlowres :: (K k0, K k1, K k2) => Arate -> k0 -> k1 -> Irate -> k2 -> Arate -- | -- --
--   ares bqrez asig, xfco, xres [, imode] [, iskip]
--   
-- -- -- -- A second-order multi-mode filter. -- -- bqrez :: (X x0, X x1) => [Irate] -> Arate -> x0 -> x1 -> Arate -- | -- --
--   ares atone asig, khp [, iskip]
--   
-- -- -- -- A hi-pass filter whose transfer functions are the complements of the -- tone opcode. -- -- atone :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   ares atonex asig, khp [, inumlayer] [, iskip]
--   
-- -- -- -- atonex is equivalent to a filter consisting of more layers of atone -- with the same arguments, serially connected. Using a stack of a larger -- number of filters allows a sharper cutoff. They are faster than using -- a larger number instances in a Csound orchestra of the old opcodes, -- because only one initialization and k- cycle are needed at time and -- the audio loop falls entirely inside the cache memory of processor. -- -- atonex :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   ares tone asig, khp [, iskip]
--   
-- -- -- -- A first-order recursive low-pass filter with variable frequency -- response. -- -- tone :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   ares tonex asig, khp [, inumlayer] [, iskip]
--   
-- -- -- -- tonex is equivalent to a filter consisting of more layers of tone with -- the same arguments, serially connected. Using a stack of a larger -- number of filters allows a sharper cutoff. They are faster than using -- a larger number instances in a Csound orchestra of the old opcodes, -- because only one initialization and k- cycle are needed at time and -- the audio loop falls entirely inside the cache memory of processor. -- -- tonex :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   ares biquad asig, kb0, kb1, kb2, ka0, ka1, ka2 [, iskip]
--   
-- -- -- -- A sweepable general purpose biquadratic digital filter. -- -- biquad :: (K k0, K k1, K k2, K k3, K k4, K k5) => [Irate] -> Arate -> k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Arate -- | -- --
--   ares biquada asig, ab0, ab1, ab2, aa0, aa1, aa2 [, iskip]
--   
-- -- -- -- A sweepable general purpose biquadratic digital filter. -- -- biquada :: [Irate] -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -> Arate -- | -- --
--   ares butterbp asig, kfreq, kband [, iskip]
--   
-- -- -- -- Implementation of a second-order band-pass Butterworth filter. This -- opcode can also be written as butbp. -- -- butterbp :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares butterbr asig, kfreq, kband [, iskip]
--   
-- -- -- -- Implementation of a second-order band-reject Butterworth filter. This -- opcode can also be written as butbr. -- -- butterbr :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares butterhp asig, kfreq [, iskip]
--   
-- -- -- -- Implementation of second-order high-pass Butterworth filter. This -- opcode can also be written as buthp. -- -- butterhp :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   ares butterlp asig, kfreq [, iskip]
--   
-- -- -- -- Implementation of a second-order low-pass Butterworth filter. This -- opcode can also be written as butlp. -- -- butterlp :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   ares butbp asig, kfreq, kband [, iskip]
--   
-- -- -- -- Same as the butterbp opcode. -- -- butbp :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares butbr asig, kfreq, kband [, iskip]
--   
-- -- -- -- Same as the butterbr opcode. -- -- butbr :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   ares buthp asig, kfreq [, iskip]
--   
-- -- -- -- Same as the butterhp opcode. -- -- buthp :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   ares butlp asig, kfreq [, iskip]
--   
-- -- -- -- Same as the butterlp opcode. -- -- butlp :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   ares clfilt asig, kfreq, itype, inpol [, ikind] [, ipbr] [, isba] [, iskip]
--   
-- -- -- -- Implements the classical standard analog filter types: low-pass and -- high-pass. They are implemented with the four classical kinds of -- filters: Butterworth, Chebyshev Type I, Chebyshev Type II, and -- Elliptical. The number of poles may be any even number from 2 to 80. -- -- clfilt :: K k0 => [Irate] -> Arate -> k0 -> Irate -> Irate -> Arate -- | -- --
--   kres aresonk ksig, kcf, kbw [, iscl] [, iskip]
--   
-- -- -- -- A notch filter whose transfer functions are the complements of the -- reson opcode. -- -- aresonk :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> Krate -- | -- --
--   kres atonek ksig, khp [, iskip]
--   
-- -- -- -- A hi-pass filter whose transfer functions are the complements of the -- tonek opcode. -- -- atonek :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | -- --
--   kres lineto ksig, ktime
--   
-- -- -- -- Generate glissandos starting from a control signal. -- -- lineto :: (K k0, K k1) => k0 -> k1 -> Krate -- | -- --
--   kres port ksig, ihtim [, isig]
--   
-- -- -- -- Applies portamento to a step-valued control signal. -- -- port :: K k0 => [Irate] -> k0 -> Irate -> Krate -- | -- --
--   kres portk ksig, khtim [, isig]
--   
-- -- -- -- Applies portamento to a step-valued control signal. -- -- portk :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | -- --
--   kres resonk ksig, kcf, kbw [, iscl] [, iskip]
--   
-- -- -- -- A second-order resonant filter. -- -- resonk :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> Krate -- | -- --
--   kres resonxk ksig, kcf, kbw[, inumlayer, iscl, istor]
--   
-- -- -- -- resonxk is equivalent to a group of resonk filters, with the same -- arguments, serially connected. Using a stack of a larger number of -- filters allows a sharper cutoff. -- -- resonxk :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> Krate -- | -- --
--   kres tlineto ksig, ktime, ktrig
--   
-- -- -- -- Generate glissandos starting from a control signal with a trigger. -- -- tlineto :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   kres tonek ksig, khp [, iskip]
--   
-- -- -- -- A first-order recursive low-pass filter with variable frequency -- response. -- -- tonek :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | Specialized Filters module CsoundExpr.Opcodes.Sigmod.Speciali -- | -- --
--   ares dcblock ain [, igain]
--   
-- -- -- -- Implements the DC blocking filter -- -- dcblock :: [Irate] -> Arate -> Arate -- | -- --
--   ares dcblock2 ain [, iorder] [, iskip]
--   
-- -- -- -- Implements a DC blocking filter with improved DC attenuation. -- -- dcblock2 :: [Irate] -> Arate -> Arate -- | -- --
--   ares pareq asig, kc, kv, kq [, imode] [, iskip]
--   
-- -- -- -- Implementation of Zoelzer's parametric equalizer filters, with some -- modifications by the author. -- -- pareq :: (K k0, K k1, K k2) => [Irate] -> Arate -> k0 -> k1 -> k2 -> Arate -- | -- --
--   ar rbjeq asig, kfco, klvl, kQ, kS[, imode]
--   
-- -- -- -- Parametric equalizer and filter opcode with 7 filter types, based on -- algorithm by Robert Bristow-Johnson. -- -- rbjeq :: (K k0, K k1, K k2, K k3) => [Irate] -> Arate -> k0 -> k1 -> k2 -> k3 -> Arate -- | -- --
--   asig eqfil ain, kcf, kbw, kgain[, istor]
--   
-- -- -- -- The opcode eqfil is a 2nd order tunable equalisation filter based on -- Regalia and Mitra design (Tunable Digital Frequency Response -- Equalization Filters, IEEE Trans. on Ac., Sp. and Sig Proc., 35 -- (1), 1987). It provides a peak/notch filter for building -- parametric/graphic equalisers. -- -- eqfil :: (K k0, K k1, K k2) => [Irate] -> Arate -> k0 -> k1 -> k2 -> Arate -- | -- --
--   ares nlfilt ain, ka, kb, kd, kC, kL
--   
-- -- -- -- Implements the filter: -- -- nlfilt :: (K k0, K k1, K k2, K k3, K k4) => Arate -> k0 -> k1 -> k2 -> k3 -> k4 -> Arate -- | -- --
--   ares filter2 asig, iM, iN, ib0, ib1,..., ibM, ia1, ia2,..., iaN
--   kres filter2 ksig, iM, iN, ib0, ib1,..., ibM, ia1, ia2,..., iaN
--   
-- -- -- -- General purpose custom filter with time-varying pole control. The -- filter coefficients implement the following difference equation: -- -- filter2A :: Arate -> Irate -> Irate -> [Irate] -> [Irate] -> Arate -- | -- --
--   ares filter2 asig, iM, iN, ib0, ib1,..., ibM, ia1, ia2,..., iaN
--   kres filter2 ksig, iM, iN, ib0, ib1,..., ibM, ia1, ia2,..., iaN
--   
-- -- -- -- General purpose custom filter with time-varying pole control. The -- filter coefficients implement the following difference equation: -- -- filter2K :: K k0 => k0 -> Irate -> Irate -> [Irate] -> [Irate] -> Krate -- | -- --
--   asig fofilter ain, kcf, kris, kdec[, istor]
--   
-- -- -- -- Fofilter generates a stream of overlapping sinewave grains, when fed -- with a pulse train. Each grain is the impulse response of a -- combination of two BP filters. The grains are defined by their attack -- time (determining the skirtwidth of the formant region at -60dB) and -- decay time (-6dB bandwidth). Overlapping will occur when 1/freq < -- decay, but, unlike FOF, there is no upper limit on the number of -- overlaps. The original idea for this opcode came from J McCartney's -- formlet class in SuperCollider, but this is possibly implemented -- differently(?). -- -- fofilter :: (K k0, K k1, K k2) => [Irate] -> Arate -> k0 -> k1 -> k2 -> Arate -- | -- --
--   ar1, ar2 hilbert asig
--   
-- -- -- -- An IIR implementation of a Hilbert transformer. -- -- hilbert :: Arate -> MultiOut -- | -- --
--   ares zfilter2 asig, kdamp, kfreq, iM, iN, ib0, ib1,..., ibM, 
--       ia1,ia2,..., iaN
--   
-- -- -- -- General purpose custom filter with time-varying pole control. The -- filter coefficients implement the following difference equation: -- -- zfilter2 :: (K k0, K k1) => Arate -> k0 -> k1 -> Irate -> Irate -> [Irate] -> [Irate] -> Arate -- | Waveguides module CsoundExpr.Opcodes.Sigmod.Wavguide -- | -- --
--   ares streson asig, kfr, ifdbgain
--   
-- -- -- -- An audio signal is modified by a string resonator with variable -- fundamental frequency. -- -- streson :: K k0 => Arate -> k0 -> Irate -> Arate -- | Waveshaping and Phase Distortion module CsoundExpr.Opcodes.Sigmod.Wavshape -- | -- --
--   aout chebyshevpoly ain, k0 [, k1 [, k2 [...]]]
--   
-- -- -- -- The chebyshevpoly opcode calculates the value of a polynomial -- expression with a single a-rate input variable that is made up of a -- linear combination of the first N Chebyshev polynomials of the first -- kind. Each Chebyshev polynomial, Tn(x), is weighted by a k-rate -- coefficient, kn, so that the opcode is calculating a sum of any number -- of terms in the form kn*Tn(x). Thus, the chebyshevpoly opcode allows -- for the waveshaping of an audio signal with a dynamic transfer -- function that gives precise control over the harmonic content of the -- output. -- -- chebyshevpoly :: K k0 => Arate -> [k0] -> Arate -- | -- --
--   aout polynomial ain, k0 [, k1 [, k2 [...]]]
--   
-- -- -- -- The polynomial opcode calculates a polynomial with a single a-rate -- input variable. The polynomial is a sum of any number of terms in the -- form kn*x^n where kn is the nth coefficient of the expression. These -- coefficients are k-rate values. -- -- polynomial :: K k0 => Arate -> [k0] -> Arate -- | -- --
--   aout powershape ain, kShapeAmount [, ifullscale]
--   
-- -- -- -- The powershape opcode raises an input signal to a power with pre- and -- post-scaling of the signal so that the output will be in a predictable -- range. It also processes negative inputs in a symmetrical way to -- positive inputs, calculating a dynamic transfer function that is -- useful for waveshaping. -- -- powershape :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   aout pdclip ain, kWidth, kCenter [, ibipolar [, ifullscale]]
--   
-- -- -- -- The pdclip opcode allows a percentage of the input range of a signal -- to be clipped to fullscale. It is similar to simply multiplying the -- signal and limiting the range of the result, but pdclip allows you to -- think about how much of the signal range is being distorted instead of -- the scalar factor and has a offset parameter for assymetric clipping -- of the signal range. pdclip is also useful for remapping phasors for -- phase distortion synthesis. -- -- pdclip :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate -- | -- --
--   aout pdhalf ain, kShapeAmount [, ibipolar [, ifullscale]]
--   
-- -- -- -- The pdhalf opcode is designed to emulate the classic phase -- distortion synthesis method of the Casio CZ-series of synthesizers -- from the mid-1980's. This technique reads the first and second halves -- of a function table at different rates in order to warp the waveform. -- For example, pdhalf can smoothly transform a sine wave into something -- approximating the shape of a saw wave. -- -- pdhalf :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   aout pdhalfy ain, kShapeAmount [, ibipolar [, ifullscale]]
--   
-- -- -- -- The pdhalfy opcode is a variation on the phase distortion synthesis -- method of the pdhalf opcode. It is useful for distorting a phasor in -- order to read two unequal portions of a table in the same number of -- samples. -- -- pdhalfy :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | Signal Modifiers module CsoundExpr.Opcodes.Sigmod -- | Clock Control module CsoundExpr.Opcodes.Control.Clockctl -- | -- --
--   clockoff inum
--   
-- -- -- -- Stops one of a number of internal clocks. -- -- clockoff :: Irate -> SignalOut -- | -- --
--   clockon inum
--   
-- -- -- -- Starts one of a number of internal clocks. -- -- clockon :: Irate -> SignalOut -- | Duration Control Statements module CsoundExpr.Opcodes.Control.Durctl -- | -- --
--   ihold
--   
-- -- -- -- Causes a finite-duration note to become a held note -- -- ihold :: SignalOut -- | -- --
--   turnoff
--   
-- -- -- -- Enables an instrument to turn itself off. -- -- turnoff :: SignalOut -- | -- --
--   turnoff2 kinsno, kmode, krelease
--   
-- -- -- -- Turn off instance(s) of other instruments at performance time. -- -- turnoff2 :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> SignalOut -- | -- --
--   turnon insnum [, itime]
--   
-- -- -- -- Activate an instrument for an indefinite time. -- -- turnon :: [Irate] -> Irate -> SignalOut -- | FLTK Widgets and GUI controllers module CsoundExpr.Opcodes.Control.FltkIntro -- | -- --
--   FLrun
--   
-- -- -- -- Starts the FLTK widget thread. -- -- flRun :: SignalOut -- | -- --
--   inumsnap FLgetsnap index [, igroup]
--   
-- -- -- -- Retrieves a previously stored snapshot (in memory), i.e. sets all -- valuator to the corresponding values stored in that snaphot. -- -- flGetsnap :: [Irate] -> Irate -> Irate -- | -- --
--   FLloadsnap "filename" [, igroup]
--   
-- -- -- -- FLloadsnap loads all the snapshots contained in a file into the memory -- bank of the current orchestra. -- -- flLoadsnap :: [Irate] -> String -> SignalOut -- | -- --
--   FLsavesnap "filename" [, igroup]
--   
-- -- -- -- FLsavesnap saves all snapshots currently created (i.e. the entire -- memory bank) into a file. -- -- flSavesnap :: [Irate] -> String -> SignalOut -- | -- --
--   inumsnap, inumval FLsetsnap index [, ifn, igroup]
--   
-- -- -- -- FLsetsnap stores the current status of all valuators present in the -- orchestra into a snapshot location (in memory). -- -- flSetsnap :: [Irate] -> Irate -> MultiOut -- | -- --
--   FLsetSnapGroup igroup
--   
-- -- -- -- FLsetSnapGroup determines the snapshot group of valuators declared -- after it. -- -- flSetSnapGroup :: Irate -> SignalOut -- | -- --
--   FLgroup "label", iwidth, iheight, ix, iy [, iborder] [, image]
--   
-- -- -- -- A FLTK container opcode that groups child widgets. -- -- flGroup :: [Irate] -> String -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLgroupEnd
--   
-- -- -- -- Marks the end of a group of FLTK child widgets. -- -- flGroupEnd :: SignalOut -- | -- --
--   FLpack iwidth, iheight, ix, iy, itype, ispace, iborder
--   
-- -- -- -- FLpack provides the functionality of compressing and aligning widgets. -- -- flPack :: Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLpackEnd
--   
-- -- -- -- Marks the end of a group of compressed or aligned FLTK widgets. -- -- flPackEnd :: SignalOut -- | -- --
--   FLpanel "label", iwidth, iheight [, ix] [, iy] [, iborder] [, ikbdcapture] [, iclose]
--   
-- -- -- -- Creates a window that contains FLTK widgets. -- -- flPanel :: [Irate] -> String -> Irate -> Irate -> SignalOut -- | -- --
--   FLpanelEnd
--   
-- -- -- -- Marks the end of a group of FLTK widgets contained inside of a window -- (panel). -- -- flPanelEnd :: SignalOut -- | -- --
--   FLscroll iwidth, iheight [, ix] [, iy]
--   
-- -- -- -- FLscroll adds scroll bars to an area. -- -- flScroll :: [Irate] -> Irate -> Irate -> SignalOut -- | -- --
--   FLscrollEnd
--   
-- -- -- -- A FLTK opcode that marks the end of an area with scrollbars. -- -- flScrollEnd :: SignalOut -- | -- --
--   FLtabs iwidth, iheight, ix, iy
--   
-- -- -- -- FLtabs is a file card tabs interface that is useful to display several -- areas containing widgets in the same windows, alternatively. It must -- be used together with FLgroup, another container that groups child -- widgets. -- -- flTabs :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLtabsEnd
--   
-- -- -- -- Marks the end of a tabbed FLTK interface. -- -- flTabsEnd :: SignalOut -- | FLTK Valuators module CsoundExpr.Opcodes.Control.FltkValuators -- | -- --
--   kout, ihandle FLcount "label", imin, imax, istep1, istep2, itype, 
--       iwidth, iheight, ix, iy, iopcode [, kp1] [, kp2] [, kp3] [...] [, kpN]
--   
-- -- -- -- Allows the user to increase/decrease a value with mouse clicks on a -- corresponding arrow button. -- -- flCount :: K k0 => String -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> [k0] -> (Krate, Irate) -- | -- --
--   koutx, kouty, ihandlex, ihandley FLjoy "label", iminx, imaxx, iminy, 
--       imaxy, iexpx, iexpy, idispx, idispy, iwidth, iheight, ix, iy
--   
-- -- -- -- FLjoy is a squared area that allows the user to modify two output -- values at the same time. It acts like a joystick. -- -- flJoy :: String -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> (Krate, Krate, Irate, Irate) -- | -- --
--   kout, ihandle FLknob "label", imin, imax, iexp, itype, idisp, iwidth, 
--       ix, iy [, icursorsize]
--   
-- -- -- -- A FLTK widget opcode that creates a knob. -- -- flKnob :: [Irate] -> String -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> (Krate, Irate) -- | -- --
--   kout, ihandle FLroller "label", imin, imax, istep, iexp, itype, idisp, 
--       iwidth, iheight, ix, iy
--   
-- -- -- -- FLroller is a sort of knob, but put transversally. -- -- flRoller :: String -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> (Krate, Irate) -- | -- --
--   kout, ihandle FLslider "label", imin, imax, iexp, itype, idisp, iwidth, 
--       iheight, ix, iy
--   
-- -- -- -- FLslider puts a slider into the corresponding container. -- -- flSlider :: String -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> (Krate, Irate) -- | -- --
--   kout, ihandle FLtext "label", imin, imax, istep, itype, iwidth, 
--       iheight, ix, iy
--   
-- -- -- -- FLtext allows the user to modify a parameter value by directly typing -- it into a text field. -- -- flText :: String -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> (Krate, Irate) -- | Other FLTK Widgets module CsoundExpr.Opcodes.Control.FltkOther -- | -- --
--   ihandle FLbox "label", itype, ifont, isize, iwidth, iheight, ix, iy [, image]
--   
-- -- -- -- A FLTK widget that displays text inside of a box. -- -- flBox :: [Irate] -> String -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -- | -- --
--   kout, ihandle FLbutBank itype, inumx, inumy, iwidth, iheight, ix, iy, 
--       iopcode [, kp1] [, kp2] [, kp3] [, kp4] [, kp5] [....] [, kpN]
--   
-- -- -- -- A FLTK widget opcode that creates a bank of buttons. -- -- flButBank :: K k0 => Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> [k0] -> (Krate, Irate) -- | -- --
--   kout, ihandle FLbutton "label", ion, ioff, itype, iwidth, iheight, ix, 
--       iy, iopcode [, kp1] [, kp2] [, kp3] [, kp4] [, kp5] [....] [, kpN]
--   
-- -- -- -- A FLTK widget opcode that creates a button. -- -- flButton :: K k0 => String -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> [k0] -> (Krate, Irate) -- | -- --
--   kascii FLkeyIn [ifn]
--   
-- -- -- -- FLkeyIn informs about the status of a key pressed by the user on the -- alphanumeric keyboard when an FLTK panel has got the focus. -- -- flKeyIn :: [Irate] -> Krate -- | -- --
--   ihandle FLhvsBox inumlinesX, inumlinesY, iwidth, iheight, ix, iy [, image]
--   
-- -- -- -- FLhvsBox displays a box with a grid useful for visualizing -- two-dimensional Hyper Vectorial Synthesis. -- -- flHvsBox :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -- | -- --
--   kx, ky, kb1, kb2, kb3 FLmouse [imode]
--   
-- -- -- -- FLmouse returns the coordinates of the mouse position within an FLTK -- panel and the state of the three mouse buttons. -- -- flMouse :: [Irate] -> MultiOut -- | -- --
--   FLprintk itime, kval, idisp
--   
-- -- -- -- FLprintk is similar to printk but shows values of a k-rate signal in a -- text field instead of on the console. -- -- flPrintk :: K k0 => Irate -> k0 -> Irate -> SignalOut -- | -- --
--   FLprintk2 kval, idisp
--   
-- -- -- -- FLprintk2 is similar to FLprintk but shows a k-rate variable's value -- only when it changes. -- -- flPrintk2 :: K k0 => k0 -> Irate -> SignalOut -- | -- --
--   FLslidBnk "names", inumsliders [, ioutable] [, iwidth] [, iheight] [, ix] 
--       [, iy] [, itypetable] [, iexptable] [, istart_index] [, iminmaxtable]
--   
-- -- -- -- FLslidBnk is a widget containing a bank of horizontal sliders. -- -- flSlidBnk :: [Irate] -> String -> Irate -> SignalOut -- | -- --
--   FLslidBnk2 "names", inumsliders, ioutable, iconfigtable [,iwidth, iheight, ix, iy, istart_index]
--   
-- -- -- -- FLslidBnk2 is a widget containing a bank of horizontal sliders. -- -- flSlidBnk2 :: [Irate] -> String -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   ihandle FLslidBnkGetHandle
--   
-- -- -- -- FLslidBnkGetHandle gets the handle of last slider bank created. -- -- flSlidBnkGetHandle :: Irate -- | -- --
--   FLslidBnkSet ihandle, ifn [, istartIndex, istartSlid, inumSlid]
--   
-- -- -- -- FLslidBnkSet modifies the values of a slider bank according to an -- array of values stored in a table. -- -- flSlidBnkSet :: [Irate] -> Irate -> Irate -> SignalOut -- | -- --
--   FLslidBnk2Set ihandle, ifn [, istartIndex, istartSlid, inumSlid]
--   
-- -- -- -- FLslidBnk2Set modifies the values of a slider bank according to an -- array of values stored in a table. -- -- flSlidBnk2Set :: [Irate] -> Irate -> Irate -> SignalOut -- | -- --
--   FLslidBnk2Setk ktrig, ihandle, ifn [, istartIndex, istartSlid, inumSlid]
--   
-- -- -- -- FLslidBnk2Setk modifies the values of a slider bank according to an -- array of values stored in a table. -- -- flSlidBnk2Setk :: K k0 => [Irate] -> k0 -> Irate -> Irate -> SignalOut -- | -- --
--   ihandle FLvalue "label", iwidth, iheight, ix, iy
--   
-- -- -- -- FLvalue shows current the value of a valuator in a text field. -- -- flValue :: String -> Irate -> Irate -> Irate -> Irate -> Irate -- | -- --
--   FLvslidBnk "names", inumsliders [, ioutable] [, iwidth] [, iheight] [, ix] 
--       [, iy] [, itypetable] [, iexptable] [, istart_index] [, iminmaxtable]
--   
-- -- -- -- FLvslidBnk is a widget containing a bank of vertical sliders. -- -- flVslidBnk :: [Irate] -> String -> Irate -> SignalOut -- | -- --
--   FLvslidBnk2 "names", inumsliders, ioutable, iconfigtable [,iwidth, iheight, ix, iy, istart_index]
--   
-- -- -- -- FLvslidBnk2 is a widget containing a bank of vertical sliders. -- -- flVslidBnk2 :: [Irate] -> String -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   koutx, kouty, kinside FLxyin ioutx_min, ioutx_max, iouty_min, iouty_max, 
--       iwindx_min, iwindx_max, iwindy_min, iwindy_max [, iexpx, iexpy, ioutx, iouty]
--   
-- -- -- -- Similar to xyin, sense the mouse cursor position in a user-defined -- area inside an FLpanel. -- -- flXyin :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | Modifying FLTK Widget Appearance module CsoundExpr.Opcodes.Control.FltkAppearance -- | -- --
--   FLcolor ired, igreen, iblue [, ired2, igreen2, iblue2]
--   
-- -- -- -- Sets the primary colors to RGB values given by the user. -- -- flColor :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLcolor2 ired, igreen, iblue
--   
-- -- -- -- FLcolor2 is the same of FLcolor except it affects the secondary -- (selection) color. -- -- flColor2 :: Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLhide ihandle
--   
-- -- -- -- Hides the target FLTK widget, making it invisible. -- -- flHide :: Irate -> SignalOut -- | -- --
--   FLlabel isize, ifont, ialign, ired, igreen, iblue
--   
-- -- -- -- Modifies a set of parameters related to the text label appearence of a -- widget (i.e. size, font, alignment and color of corresponding text). -- -- flLabel :: Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLsetAlign ialign, ihandle
--   
-- -- -- -- FLsetAlign sets the text alignment of the label of the target widget. -- -- flSetAlign :: Irate -> Irate -> SignalOut -- | -- --
--   FLsetBox itype, ihandle
--   
-- -- -- -- FLsetBox sets the appearance of a box surrounding the target widget. -- -- flSetBox :: Irate -> Irate -> SignalOut -- | -- --
--   FLsetColor ired, igreen, iblue, ihandle
--   
-- -- -- -- FLsetColor sets the primary color of the target widget. -- -- flSetColor :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLsetColor2 ired, igreen, iblue, ihandle
--   
-- -- -- -- FLsetColor2 sets the secondary (or selection) color of the target -- widget. -- -- flSetColor2 :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLsetFont ifont, ihandle
--   
-- -- -- -- FLsetFont sets the font type of the target widget. -- -- flSetFont :: Irate -> Irate -> SignalOut -- | -- --
--   FLsetPosition ix, iy, ihandle
--   
-- -- -- -- FLsetPosition sets the position of the target widget according to the -- ix and iy arguments. -- -- flSetPosition :: Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLsetSize iwidth, iheight, ihandle
--   
-- -- -- -- FLsetSize resizes the target widget (not the size of its text) -- according to the iwidth and iheight arguments. -- -- flSetSize :: Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLsetText "itext", ihandle
--   
-- -- -- -- FLsetText sets the label of the target widget to the double-quoted -- text string provided with the itext argument. -- -- flSetText :: String -> Irate -> SignalOut -- | -- --
--   FLsetTextColor ired, iblue, igreen, ihandle
--   
-- -- -- -- FLsetTextColor sets the color of the text label of the target widget. -- -- flSetTextColor :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   FLsetTextSize isize, ihandle
--   
-- -- -- -- FLsetTextSize sets the size of the text label of the target widget. -- -- flSetTextSize :: Irate -> Irate -> SignalOut -- | -- --
--   FLsetTextType itype, ihandle
--   
-- -- -- -- FLsetTextType sets some attributes related to the fonts of the text -- label of the target widget. -- -- flSetTextType :: Irate -> Irate -> SignalOut -- | -- --
--   FLsetVal_i ivalue, ihandle
--   
-- -- -- -- FLsetVal_i forces the value of a valuator to a number provided by the -- user. -- -- flSetVal_i :: Irate -> Irate -> SignalOut -- | -- --
--   FLsetVal ktrig, kvalue, ihandle
--   
-- -- -- -- FLsetVal is almost identical to FLsetVal_i. Except it operates at -- k-rate and it affects the target valuator only when ktrig is set to a -- non-zero value. -- -- flSetVal :: (K k0, K k1) => k0 -> k1 -> Irate -> SignalOut -- | -- --
--   FLshow ihandle
--   
-- -- -- -- FLshow restores the visibility of a previously hidden widget. -- -- flShow :: Irate -> SignalOut -- | General FLTK Widget-related Opcodes module CsoundExpr.Opcodes.Control.FltkGeneral -- | -- --
--   FLupdate
--   
-- -- -- -- Same as the FLrun opcode. -- -- flUpdate :: SignalOut -- | Instrument Invocation module CsoundExpr.Opcodes.Control.Invocat -- | -- --
--   scoreline_i Sin
--   
-- -- -- -- scoreline_i will issue score events at i-time. It can handle strings -- in the same conditions as the standard score. Multi-line strings are -- accepted, using {{ }} to enclose the string. -- -- scoreline_i :: String -> SignalOut -- | -- --
--   scoreline Sin, ktrig
--   
-- -- -- -- Scoreline will issue one or more score events, if ktrig is 1 every -- k-period. It can handle strings in the same conditions as the standard -- score. Multi-line strings are accepted, using {{ }} to enclose the -- string. -- -- scoreline :: K k0 => String -> k0 -> SignalOut -- | Program Flow Control module CsoundExpr.Opcodes.Control.Pgmctl -- | -- --
--   else
--   
-- -- -- -- Executes a block of code when an if...then condition is false. -- -- else' :: SignalOut -- | -- --
--   endif
--   
-- -- -- -- Closes a block of code that begins with an if...then statement. -- -- endif :: SignalOut -- | Real-time Performance Control module CsoundExpr.Opcodes.Control.Realtime -- | -- --
--   ir active insnum
--   kres active kinsnum
--   
-- -- -- -- Returns the number of active instances of an instrument. -- -- activeI :: Irate -> Irate -- | -- --
--   ir active insnum
--   kres active kinsnum
--   
-- -- -- -- Returns the number of active instances of an instrument. -- -- activeK :: K k0 => k0 -> Krate -- | -- --
--   cpuprc insnum, ipercent
--   
-- -- -- -- Control allocation of cpu resources on a per-instrument basis, to -- optimize realtime output. -- -- cpuprc :: Irate -> Irate -> SignalOut -- | -- --
--   maxalloc insnum, icount
--   
-- -- -- -- Limits the number of allocations of an instrument. -- -- maxalloc :: Irate -> Irate -> SignalOut -- | -- --
--   prealloc insnum, icount
--   prealloc "insname", icount
--   
-- -- -- -- Creates space for instruments but does not run them. -- -- preallocI :: Irate -> Irate -> SignalOut -- | -- --
--   prealloc insnum, icount
--   prealloc "insname", icount
--   
-- -- -- -- Creates space for instruments but does not run them. -- -- preallocS :: String -> Irate -> SignalOut -- | -- --
--   jacktransport icommand [, ilocation]
--   
-- -- -- -- Start/stop jack_transport and can optionally relocate the playback -- head. -- -- jacktransport :: [Irate] -> Irate -> SignalOut -- | Initialization and Reinitialization module CsoundExpr.Opcodes.Control.Reinitn -- | -- --
--   ir tival
--   
-- -- -- -- Puts the value of the instrument's internal tie-in flag into the named -- i-rate variable. -- -- tival :: Irate -- | -- --
--   ivar1,... passign [istart]
--   
-- -- -- -- Assigns a range of p-fields to ivariables. -- -- passign :: [Irate] -> Irate -- | -- --
--   pset icon1 [, icon2] [...]
--   
-- -- -- -- Defines and initializes numeric arrays at orchestra load time. -- -- pset :: Irate -> SignalOut -- | -- --
--   rireturn
--   
-- -- -- -- Terminates a reinit pass (i.e., no-op at standard i-time). This -- statement, or an endin, will cause normal performance to be resumed. -- -- rireturn :: SignalOut -- | Sensing and Control module CsoundExpr.Opcodes.Control.Sensing -- | -- --
--   kres button knum
--   
-- -- -- -- Sense on-screen controls. Requires Winsound or TCL/TK. -- -- button :: K k0 => k0 -> Krate -- | -- --
--   kres checkbox knum
--   
-- -- -- -- Sense on-screen controls. Requires Winsound or TCL/TK. -- -- checkbox :: K k0 => k0 -> Krate -- | -- --
--   kres control knum
--   
-- -- -- -- Configurable slider controls for realtime user input. Requires -- Winsound or TCL/TK. control reads a slider's value. -- -- control :: K k0 => k0 -> Krate -- | -- --
--   setctrl inum, ival, itype
--   
-- -- -- -- Configurable slider controls for realtime user input. Requires -- Winsound or TCL/TK. setctrl sets a slider to a specific value, or sets -- a minimum or maximum range. -- -- setctrl :: Irate -> Irate -> Irate -> SignalOut -- | -- --
--   kres[, kkeydown] sensekey
--   
-- -- -- -- Returns the ASCII code of a key that has been pressed, or -1 if no key -- has been pressed. -- -- sensekey :: MultiOut -- | -- --
--   kx, ky xyin iprd, ixmin, ixmax, iymin, iymax [, ixinit] [, iyinit]
--   
-- -- -- -- Sense the cursor position in an output window. When xyin is called the -- position of the mouse within the output window is used to reply to the -- request. This simple mechanism does mean that only one xyin can be -- used accurately at once. The position of the mouse is reported in the -- output window. -- -- xyin :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   ares follow asig, idt
--   
-- -- -- -- Envelope follower unit generator. -- -- follow :: Arate -> Irate -> Arate -- | -- --
--   ares follow2 asig, katt, krel
--   
-- -- -- -- A controllable envelope extractor using the algorithm attributed to -- Jean-Marc Jot. -- -- follow2 :: (K k0, K k1) => Arate -> k0 -> k1 -> Arate -- | -- --
--   kres peak asig
--   kres peak ksig
--   
-- -- -- -- These opcodes maintain the output k-rate variable as the peak absolute -- level so far received. -- -- peakA :: Arate -> Krate -- | -- --
--   kres peak asig
--   kres peak ksig
--   
-- -- -- -- These opcodes maintain the output k-rate variable as the peak absolute -- level so far received. -- -- peakK :: K k0 => k0 -> Krate -- | -- --
--   kres rms asig [, ihp] [, iskip]
--   
-- -- -- -- Determines the root-mean-square amplitude of an audio signal. It -- low-pass filters the actual value, to average in the manner of a VU -- meter. -- -- rms :: [Irate] -> Arate -> Krate -- | -- --
--   kcps, kamp ptrack asig, ihopsize[,ipeaks]
--   
-- -- -- -- ptrack takes an input signal, splits it into ihopsize blocks and using -- a STFT method, extracts an estimated pitch for its fundamental -- frequency as well as estimating the total amplitude of the signal in -- dB, relative to full-scale (0dB). The method implies an analysis -- window size of 2*ihopsize samples (overlaping by 1/2 window), which -- has to be a power-of-two, between 128 and 8192 (hopsizes between 64 -- and 4096). Smaller windows will give better time precision, but worse -- frequency accuracy (esp. in low fundamentals).This opcode is based on -- an original algorithm by M. Puckette. -- -- ptrack :: [Irate] -> Arate -> Irate -> MultiOut -- | -- --
--   koct, kamp pitch asig, iupdte, ilo, ihi, idbthresh [, ifrqs] [, iconf] 
--       [, istrt] [, iocts] [, iq] [, inptls] [, irolloff] [, iskip]
--   
-- -- -- -- Using the same techniques as spectrum and specptrk, pitch tracks the -- pitch of the signal in octave point decimal form, and amplitude in dB. -- -- pitch :: [Irate] -> Arate -> Irate -> Irate -> Irate -> Irate -> MultiOut -- | -- --
--   kcps, krms pitchamdf asig, imincps, imaxcps [, icps] [, imedi] 
--       [, idowns] [, iexcps] [, irmsmedi]
--   
-- -- -- -- Follows the pitch of a signal based on the AMDF method (Average -- Magnitude Difference Function). Outputs pitch and amplitude tracking -- signals. The method is quite fast and should run in realtime. This -- technique usually works best for monophonic signals. -- -- pitchamdf :: [Irate] -> Arate -> Irate -> Irate -> MultiOut -- | -- --
--   ktemp tempest kin, iprd, imindur, imemdur, ihp, ithresh, ihtim, ixfdbak, 
--       istartempo, ifn [, idisprd] [, itweek]
--   
-- -- -- -- Estimate the tempo of beat patterns in a control signal. -- -- tempest :: K k0 => [Irate] -> k0 -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Krate -- | -- --
--   tempo ktempo, istartempo
--   
-- -- -- -- Apply tempo control to an uninterpreted score. -- -- tempo :: K k0 => k0 -> Irate -> SignalOut -- | -- --
--   ksig miditempo
--   
-- -- -- -- Returns the current tempo at k-rate, of either the MIDI file (if -- available) or the score -- -- miditempo :: Krate -- | -- --
--   kres tempoval
--   
-- -- -- -- Reads the current value of the tempo. -- -- tempoval :: Krate -- | -- --
--   ktrig_out seqtime ktime_unit, kstart, kloop, kinitndx, kfn_times
--   
-- -- -- -- Generates a trigger signal according to the values stored in a table. -- -- seqtime :: (K k0, K k1, K k2, K k3, K k4) => k0 -> k1 -> k2 -> k3 -> k4 -> Krate -- | -- --
--   ktrig_out seqtime2 ktrig_in, ktime_unit, kstart, kloop, kinitndx, kfn_times
--   
-- -- -- -- Generates a trigger signal according to the values stored in a table. -- -- seqtime2 :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> Krate -- | -- --
--   kout trigger ksig, kthreshold, kmode
--   
-- -- -- -- Informs when a krate signal crosses a threshold. -- -- trigger :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   ktrig timedseq ktimpnt, ifn, kp1 [,kp2, kp3,...,kpN]
--   
-- -- -- -- An event-sequencer in which time can be controlled by a time-pointer. -- Sequence data are stored into a table. -- -- timedseq :: (K k0, K k1) => k0 -> Irate -> [k1] -> Krate -- | -- --
--   ktrig changed kvar1 [, kvar2,..., kvarN]
--   
-- -- -- -- This opcode outputs a trigger signal that informs when any one of its -- k-rate arguments has changed. Useful with valuator widgets or MIDI -- controllers. -- -- changed :: K k0 => [k0] -> Krate -- | -- --
--   Svalue getcfg iopt
--   
-- -- -- -- Return various configuration settings in Svalue as a string at init -- time. -- -- getcfg :: Irate -> String -- | -- --
--   rewindscore
--   
-- -- -- -- Rewinds the playback position of the current score performance.. -- -- rewindscore :: SignalOut -- | Stacks module CsoundExpr.Opcodes.Control.Stacks -- | -- --
--   stack iStackSize
--   
-- -- -- -- Initializes and sets the size of the global stack. -- -- stack :: Irate -> SignalOut -- | -- --
--   xval1, [xval2,..., xval31] pop
--   ival1, [ival2,..., ival31] pop
--   
-- -- -- -- Pops values from the global stack. -- -- pop :: MultiOut -- | -- --
--   push xval1, [xval2,..., xval31]
--   push ival1, [ival2,..., ival31]
--   
-- -- -- -- Pushes a value into the global stack. -- -- push :: X x0 => [x0] -> SignalOut -- | Sub-instrument Control module CsoundExpr.Opcodes.Control.Subinstrument -- | Time Reading module CsoundExpr.Opcodes.Control.Timeread -- | -- --
--   ir readclock inum
--   
-- -- -- -- Reads the value of an internal clock. -- -- readclock :: Irate -> Irate -- | -- --
--   ires rtclock
--   kres rtclock
--   
-- -- -- -- Read the real-time clock from the operating system. -- -- rtclockI :: Irate -- | -- --
--   ires rtclock
--   kres rtclock
--   
-- -- -- -- Read the real-time clock from the operating system. -- -- rtclockK :: Krate -- | -- --
--   kres timeinstk
--   
-- -- -- -- Read absolute time, in k-rate cycles, since the start of an instance -- of an instrument. Called at both i-time as well as k-time. -- -- timeinstk :: Krate -- | -- --
--   kres timeinsts
--   
-- -- -- -- Read absolute time, in seconds, since the start of an instance of an -- instrument. -- -- timeinsts :: Krate -- | -- --
--   ires times
--   kres times
--   
-- -- -- -- Read absolute time, in seconds, since the start of the performance. -- -- timesI :: Irate -- | -- --
--   ires times
--   kres times
--   
-- -- -- -- Read absolute time, in seconds, since the start of the performance. -- -- timesK :: Krate -- | -- --
--   ires timek
--   kres timek
--   
-- -- -- -- Read absolute time, in k-rate cycles, since the start of the -- performance. -- -- timekI :: Irate -- | -- --
--   ires timek
--   kres timek
--   
-- -- -- -- Read absolute time, in k-rate cycles, since the start of the -- performance. -- -- timekK :: Krate -- | -- --
--   ir date
--   
-- -- -- -- Returns the number seconds since 1 January 1970, using the operating -- system's clock. -- -- date :: Irate -- | -- --
--   Sir dates [ itime]
--   
-- -- -- -- Returns as a string the date and time specified. -- -- dates :: [Irate] -> String -- | Instrument Control module CsoundExpr.Opcodes.Control -- | Table Queries module CsoundExpr.Opcodes.Table.Queries -- | -- --
--   ftchnls(x) (init-rate args only)
--   
-- -- -- -- Returns the number of channels in a stored function table. -- -- ftchnls :: Irate -> Irate -- | -- --
--   ftlen(x) (init-rate args only)
--   
-- -- -- -- Returns the size of a stored function table. -- -- ftlen :: Irate -> Irate -- | -- --
--   ftlptim(x) (init-rate args only)
--   
-- -- -- -- Returns the loop segment start-time of a stored function table number. -- -- ftlptim :: Irate -> Irate -- | -- --
--   ftsr(x) (init-rate args only)
--   
-- -- -- -- Returns the sampling-rate of a stored function table. -- -- ftsr :: Irate -> Irate -- | -- --
--   nsamp(x) (init-rate args only)
--   
-- -- -- -- Returns the number of samples loaded into a stored function table -- number. -- -- nsamp :: Irate -> Irate -- | -- --
--   ires tableng ifn
--   kres tableng kfn
--   
-- -- -- -- Interrogates a function table for length. -- -- tablengI :: Irate -> Irate -- | -- --
--   ires tableng ifn
--   kres tableng kfn
--   
-- -- -- -- Interrogates a function table for length. -- -- tablengK :: K k0 => k0 -> Krate -- | Read/Write Operations module CsoundExpr.Opcodes.Table.Readwrit -- | -- --
--   ftloadk "filename", ktrig, iflag, ifn1 [, ifn2] [...]
--   
-- -- -- -- Load a set of previously-allocated tables from a file. -- -- ftloadk :: K k0 => String -> k0 -> Irate -> [Irate] -> SignalOut -- | -- --
--   ftload "filename", iflag, ifn1 [, ifn2] [...]
--   
-- -- -- -- Load a set of previously-allocated tables from a file. -- -- ftload :: String -> Irate -> [Irate] -> SignalOut -- | -- --
--   ftsavek "filename", ktrig, iflag, ifn1 [, ifn2] [...]
--   
-- -- -- -- Save a set of previously-allocated tables to a file. -- -- ftsavek :: K k0 => String -> k0 -> Irate -> [Irate] -> SignalOut -- | -- --
--   ftsave "filename", iflag, ifn1 [, ifn2] [...]
--   
-- -- -- -- Save a set of previously-allocated tables to a file. -- -- ftsave :: String -> Irate -> [Irate] -> SignalOut -- | -- --
--   tablecopy kdft, ksft
--   
-- -- -- -- Simple, fast table copy opcode. -- -- tablecopy :: (K k0, K k1) => k0 -> k1 -> SignalOut -- | -- --
--   tablegpw kfn
--   
-- -- -- -- Writes a table's guard point. -- -- tablegpw :: K k0 => k0 -> SignalOut -- | -- --
--   tableicopy idft, isft
--   
-- -- -- -- Simple, fast table copy opcode. -- -- tableicopy :: Irate -> Irate -> SignalOut -- | -- --
--   tableigpw ifn
--   
-- -- -- -- Writes a table's guard point. -- -- tableigpw :: Irate -> SignalOut -- | -- --
--   tableimix idft, idoff, ilen, is1ft, is1off, is1g, is2ft, is2off, is2g
--   
-- -- -- -- Mixes two tables. -- -- tableimix :: Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   tableiw isig, indx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   
-- -- -- -- This opcode operates on existing function tables, changing their -- contents. tableiw is used when all inputs are init time variables or -- constants and you only want to run it at the initialization of the -- instrument. The valid combinations of variable types are shown by the -- first letter of the variable names. -- -- tableiw :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   tablemix kdft, kdoff, klen, ks1ft, ks1off, ks1g, ks2ft, ks2off, ks2g
--   
-- -- -- -- Mixes two tables. -- -- tablemix :: (K k0, K k1, K k2, K k3, K k4, K k5, K k6, K k7, K k8) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> k6 -> k7 -> k8 -> SignalOut -- | -- --
--   ares tablera kfn, kstart, koff
--   
-- -- -- -- These opcode reads tables in sequential locations to an a-rate -- variable. Some thought is required before using it. It has at least -- two major, and quite different, applications which are discussed -- below. -- -- tablera :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Arate -- | -- --
--   tablew asig, andx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   tablew isig, indx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   tablew ksig, kndx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   
-- -- -- -- This opcode operates on existing function tables, changing their -- contents. tablew is for writing at k- or at a-rates, with the table -- number being specified at init time. The valid combinations of -- variable types are shown by the first letter of the variable names. -- -- tablewA :: [Irate] -> Arate -> Arate -> Irate -> SignalOut -- | -- --
--   tablew asig, andx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   tablew isig, indx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   tablew ksig, kndx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   
-- -- -- -- This opcode operates on existing function tables, changing their -- contents. tablew is for writing at k- or at a-rates, with the table -- number being specified at init time. The valid combinations of -- variable types are shown by the first letter of the variable names. -- -- tablewI :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   tablew asig, andx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   tablew isig, indx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   tablew ksig, kndx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   
-- -- -- -- This opcode operates on existing function tables, changing their -- contents. tablew is for writing at k- or at a-rates, with the table -- number being specified at init time. The valid combinations of -- variable types are shown by the first letter of the variable names. -- -- tablewK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> SignalOut -- | -- --
--   kstart tablewa kfn, asig, koff
--   
-- -- -- -- This opcode writes to a table in sequential locations to and from an -- a-rate variable. Some thought is required before using it. It has at -- least two major, and quite different, applications which are discussed -- below. -- -- tablewa :: (K k0, K k1) => k0 -> Arate -> k1 -> Krate -- | -- --
--   tablewkt asig, andx, kfn [, ixmode] [, ixoff] [, iwgmode]
--   tablewkt ksig, kndx, kfn [, ixmode] [, ixoff] [, iwgmode]
--   
-- -- -- -- This opcode operates on existing function tables, changing their -- contents. tablewkt uses a k-rate variable for selecting the table -- number. The valid combinations of variable types are shown by the -- first letter of the variable names. -- -- tablewktA :: K k0 => [Irate] -> Arate -> Arate -> k0 -> SignalOut -- | -- --
--   tablewkt asig, andx, kfn [, ixmode] [, ixoff] [, iwgmode]
--   tablewkt ksig, kndx, kfn [, ixmode] [, ixoff] [, iwgmode]
--   
-- -- -- -- This opcode operates on existing function tables, changing their -- contents. tablewkt uses a k-rate variable for selecting the table -- number. The valid combinations of variable types are shown by the -- first letter of the variable names. -- -- tablewktK :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> SignalOut -- | -- --
--   kout tabmorph kindex, kweightpoint, ktabnum1, ktabnum2, 
--       ifn1, ifn2 [, ifn3, ifn4,... ifnN]
--   
-- -- -- -- tabmorph allows morphing between a set of tables of the same size, by -- means of a weighted average between two currently selected tables. -- -- tabmorph :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> k3 -> [Irate] -> Krate -- | -- --
--   aout tabmorpha aindex, aweightpoint, atabnum1, atabnum2, 
--       ifn1, ifn2 [, ifn3, ifn4,... ifnN]
--   
-- -- -- -- tabmorpha allows morphing between a set of tables of the same size, by -- means of a weighted average between two currently selected tables. -- -- tabmorpha :: Arate -> Arate -> Arate -> Arate -> [Irate] -> Arate -- | -- --
--   aout tabmorphak aindex, kweightpoint, ktabnum1, ktabnum2, 
--       ifn1, ifn2 [, ifn3, ifn4,... ifnN]
--   
-- -- -- -- tabmorphak allows morphing between a set of tables of the same size, -- by means of a weighted average between two currently selected tables. -- -- tabmorphak :: (K k0, K k1, K k2) => Arate -> k0 -> k1 -> k2 -> [Irate] -> Arate -- | -- --
--   kout tabmorphi kindex, kweightpoint, ktabnum1, ktabnum2, 
--       ifn1, ifn2 [, ifn3, ifn4,... ifnN]
--   
-- -- -- -- tabmorphi allows morphing between a set of tables of the same size, by -- means of a weighted average between two currently selected tables. -- -- tabmorphi :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> k3 -> [Irate] -> Krate -- | -- --
--   tabrec ktrig_start, ktrig_stop, knumtics, kfn, kin1 [,kin2,...,kinN]
--   
-- -- -- -- Records control-rate signals on trigger-temporization basis. -- -- tabrec :: (K k0, K k1, K k2, K k3, K k4) => k0 -> k1 -> k2 -> k3 -> [k4] -> SignalOut -- | -- --
--   tabplay ktrig, knumtics, kfn, kout1 [,kout2,..., koutN]
--   
-- -- -- -- Plays-back control-rate signals on trigger-temporization basis. -- -- tabplay :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> [k3] -> SignalOut -- | Table Reading with Dynamic Selection module CsoundExpr.Opcodes.Table.Select -- | -- --
--   ares tableikt xndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   kres tableikt kndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- k-rate control over table numbers. -- -- tableiktA :: (X x0, K k0) => [Irate] -> x0 -> k0 -> Arate -- | -- --
--   ares tableikt xndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   kres tableikt kndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- k-rate control over table numbers. -- -- tableiktK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | -- --
--   ares tablekt xndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   kres tablekt kndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- k-rate control over table numbers. -- -- tablektA :: (X x0, K k0) => [Irate] -> x0 -> k0 -> Arate -- | -- --
--   ares tablekt xndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   kres tablekt kndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- k-rate control over table numbers. -- -- tablektK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | -- --
--   ares tablexkt xndx, kfn, kwarp, iwsize [, ixmode] [, ixoff] [, iwrap]
--   
-- -- -- -- Reads function tables with linear, cubic, or sinc interpolation. -- -- tablexkt :: (X x0, K k0, K k1) => [Irate] -> x0 -> k0 -> k1 -> Irate -> Arate -- | Function Table Control module CsoundExpr.Opcodes.Table -- | Amplitude Converters module CsoundExpr.Opcodes.Math.Amp -- | -- --
--   ampdb(x) (no rate restriction)
--   
-- -- -- -- Returns the amplitude equivalent of the decibel value x. Thus: -- -- ampdb :: X x0 => x0 -> x0 -- | -- --
--   ampdbfs(x) (no rate restriction)
--   
-- -- -- -- Returns the amplitude equivalent of the full scale decibel (dB FS) -- value x. The logarithmic full scale decibel values will be converted -- to linear 16-bit signed integer values from 32,768 to +32,767. -- -- ampdbfs :: X x0 => x0 -> x0 -- | -- --
--   db(x)
--   
-- -- -- -- Returns the amplitude equivalent for a given decibel amount. This -- opcode is the same as ampdb. -- -- db :: X x0 => x0 -> x0 -- | -- --
--   dbamp(x) (init-rate or control-rate args only)
--   
-- -- -- -- Returns the decibel equivalent of the raw amplitude x. -- -- dbamp :: K k0 => k0 -> k0 -- | -- --
--   dbfsamp(x) (init-rate or control-rate args only)
--   
-- -- -- -- Returns the decibel equivalent of the raw amplitude x, relative to -- full scale amplitude. Full scale is assumed to be 16 bit. New is -- Csound version 4.10. -- -- dbfsamp :: K k0 => k0 -> k0 -- | Comparators and Accumulators module CsoundExpr.Opcodes.Math.SigmodCompaccum -- | -- --
--   amax max ain1 [, ain2] [, ain3] [, ain4] [...]
--   kmax max kin1 [, kin2] [, kin3] [, kin4] [...]
--   
-- -- -- -- The max opcode takes any number of a-rate or k-rate signals as input -- (all of the same rate), and outputs a signal at the same rate that is -- the maximum of all of the inputs. For a-rate signals, the inputs are -- compared one sample at a time (i.e. max does not scan an entire ksmps -- period of a signal for its local maximum as the max_k opcode does). -- -- maxA :: [Arate] -> Arate -- | -- --
--   amax max ain1 [, ain2] [, ain3] [, ain4] [...]
--   kmax max kin1 [, kin2] [, kin3] [, kin4] [...]
--   
-- -- -- -- The max opcode takes any number of a-rate or k-rate signals as input -- (all of the same rate), and outputs a signal at the same rate that is -- the maximum of all of the inputs. For a-rate signals, the inputs are -- compared one sample at a time (i.e. max does not scan an entire ksmps -- period of a signal for its local maximum as the max_k opcode does). -- -- maxK :: K k0 => [k0] -> Krate -- | -- --
--   knumkout max_k asig, ktrig, itype
--   
-- -- -- -- max_k outputs the local maximum (or minimum) value of the incoming -- asig signal, checked in the time interval between ktrig has become -- true twice. -- -- max_k :: K k0 => Arate -> k0 -> Irate -> Krate -- | -- --
--   amax maxabs ain1 [, ain2] [, ain3] [, ain4] [...]
--   kmax maxabs kin1 [, kin2] [, kin3] [, kin4] [...]
--   
-- -- -- -- The maxabs opcode takes any number of a-rate or k-rate signals as -- input (all of the same rate), and outputs a signal at the same rate -- that is the maximum of all of the inputs. It is identical to the max -- opcode except that it takes the absolute value of each input before -- comparing them. Therefore, the output is always non-negative. For -- a-rate signals, the inputs are compared one sample at a time (i.e. -- maxabs does not scan an entire ksmps period of a signal for its local -- maximum as the max_k opcode does). -- -- maxabsA :: [Arate] -> Arate -- | -- --
--   amax maxabs ain1 [, ain2] [, ain3] [, ain4] [...]
--   kmax maxabs kin1 [, kin2] [, kin3] [, kin4] [...]
--   
-- -- -- -- The maxabs opcode takes any number of a-rate or k-rate signals as -- input (all of the same rate), and outputs a signal at the same rate -- that is the maximum of all of the inputs. It is identical to the max -- opcode except that it takes the absolute value of each input before -- comparing them. Therefore, the output is always non-negative. For -- a-rate signals, the inputs are compared one sample at a time (i.e. -- maxabs does not scan an entire ksmps period of a signal for its local -- maximum as the max_k opcode does). -- -- maxabsK :: K k0 => [k0] -> Krate -- | -- --
--   maxabsaccum aAccumulator, aInput
--   
-- -- -- -- maxabsaccum compares two audio-rate variables and stores the maximum -- of their absolute values into the first. -- -- maxabsaccum :: Arate -> Arate -> SignalOut -- | -- --
--   maxaccum aAccumulator, aInput
--   
-- -- -- -- maxaccum compares two audio-rate variables and stores the maximum -- value between them into the first. -- -- maxaccum :: Arate -> Arate -> SignalOut -- | -- --
--   amin min ain1 [, ain2] [, ain3] [, ain4] [...]
--   kmin min kin1 [, kin2] [, kin3] [, kin4] [...]
--   
-- -- -- -- The min opcode takes any number of a-rate or k-rate signals as input -- (all of the same rate), and outputs a signal at the same rate that is -- the minimum of all of the inputs. For a-rate signals, the inputs are -- compared one sample at a time (i.e. min does not scan an entire ksmps -- period of a signal for its local minimum as the max_k opcode does). -- -- minA :: [Arate] -> Arate -- | -- --
--   amin min ain1 [, ain2] [, ain3] [, ain4] [...]
--   kmin min kin1 [, kin2] [, kin3] [, kin4] [...]
--   
-- -- -- -- The min opcode takes any number of a-rate or k-rate signals as input -- (all of the same rate), and outputs a signal at the same rate that is -- the minimum of all of the inputs. For a-rate signals, the inputs are -- compared one sample at a time (i.e. min does not scan an entire ksmps -- period of a signal for its local minimum as the max_k opcode does). -- -- minK :: K k0 => [k0] -> Krate -- | -- --
--   amin minabs ain1 [, ain2] [, ain3] [, ain4] [...]
--   kmin minabs kin1 [, kin2] [, kin3] [, kin4] [...]
--   
-- -- -- -- The minabs opcode takes any number of a-rate or k-rate signals as -- input (all of the same rate), and outputs a signal at the same rate -- that is the minimum of all of the inputs. It is identical to the min -- opcode except that it takes the absolute value of each input before -- comparing them. Therefore, the output is always non-negative. For -- a-rate signals, the inputs are compared one sample at a time (i.e. -- minabs does not scan an entire ksmps period of a signal for its local -- minimum as the max_k opcode does). -- -- minabsA :: [Arate] -> Arate -- | -- --
--   amin minabs ain1 [, ain2] [, ain3] [, ain4] [...]
--   kmin minabs kin1 [, kin2] [, kin3] [, kin4] [...]
--   
-- -- -- -- The minabs opcode takes any number of a-rate or k-rate signals as -- input (all of the same rate), and outputs a signal at the same rate -- that is the minimum of all of the inputs. It is identical to the min -- opcode except that it takes the absolute value of each input before -- comparing them. Therefore, the output is always non-negative. For -- a-rate signals, the inputs are compared one sample at a time (i.e. -- minabs does not scan an entire ksmps period of a signal for its local -- minimum as the max_k opcode does). -- -- minabsK :: K k0 => [k0] -> Krate -- | -- --
--   minabsaccum aAccumulator, aInput
--   
-- -- -- -- minabsaccum compares two audio-rate variables and stores the minimum -- of their absolute values into the first. -- -- minabsaccum :: Arate -> Arate -> SignalOut -- | -- --
--   minaccum aAccumulator, aInput
--   
-- -- -- -- minaccum compares two audio-rate variables and stores the minimum -- value between them into the first. -- -- minaccum :: Arate -> Arate -> SignalOut -- | Mathematical Functions module CsoundExpr.Opcodes.Math.Matfunc -- | -- --
--   abs(x) (no rate restriction)
--   
-- -- -- -- Returns the absolute value of x. -- -- abs' :: X x0 => x0 -> x0 -- | -- --
--   ceil(x) (init-, control-, or audio-rate arg allowed)
--   
-- -- -- -- Returns the smallest integer not less than x -- -- ceil :: X x0 => x0 -> x0 -- | -- --
--   exp(x) (no rate restriction)
--   
-- -- -- -- Returns e raised to the xth power. -- -- exp' :: X x0 => x0 -> x0 -- | -- --
--   floor(x) (init-, control-, or audio-rate arg allowed)
--   
-- -- -- -- Returns the largest integer not greater than x -- -- floor' :: X x0 => x0 -> x0 -- | -- --
--   frac(x) (init-rate or control-rate args; also works at audio rate in Csound5)
--   
-- -- -- -- Returns the fractional part of x. -- -- frac :: K k0 => k0 -> k0 -- | -- --
--   int(x) (init-rate or control-rate; also works at audio rate in Csound5)
--   
-- -- -- -- Returns the integer part of x. -- -- int :: K k0 => k0 -> k0 -- | -- --
--   log(x) (no rate restriction)
--   
-- -- -- -- Returns the natural log of x (x positive only). -- -- log' :: X x0 => x0 -> x0 -- | -- --
--   log10(x) (no rate restriction)
--   
-- -- -- -- Returns the base 10 log of x (x positive only). -- -- log10 :: X x0 => x0 -> x0 -- | -- --
--   logbtwo(x) (init-rate or control-rate args only)
--   
-- -- -- -- Performs a logarithmic base two calculation. -- -- logbtwo :: K k0 => k0 -> k0 -- | -- --
--   ares pow aarg, kpow [, inorm]
--   ires pow iarg, ipow [, inorm]
--   kres pow karg, kpow [, inorm]
--   
-- -- -- -- Computes xarg to the power of kpow (or ipow) and scales the result by -- inorm. -- -- powA :: K k0 => [Irate] -> Arate -> k0 -> Arate -- | -- --
--   ares pow aarg, kpow [, inorm]
--   ires pow iarg, ipow [, inorm]
--   kres pow karg, kpow [, inorm]
--   
-- -- -- -- Computes xarg to the power of kpow (or ipow) and scales the result by -- inorm. -- -- powI :: [Irate] -> Irate -> Irate -> Irate -- | -- --
--   ares pow aarg, kpow [, inorm]
--   ires pow iarg, ipow [, inorm]
--   kres pow karg, kpow [, inorm]
--   
-- -- -- -- Computes xarg to the power of kpow (or ipow) and scales the result by -- inorm. -- -- powK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate -- | -- --
--   powoftwo(x) (init-rate or control-rate args only)
--   
-- -- -- -- Performs a power-of-two calculation. -- -- powoftwo :: K k0 => k0 -> k0 -- | -- --
--   round(x) (init-, control-, or audio-rate arg allowed)
--   
-- -- -- -- The integer value nearest to x ; if the fractional part of x is -- exactly 0.5, the direction of rounding is undefined. -- -- round' :: X x0 => x0 -> x0 -- | -- --
--   sqrt(x) (no rate restriction)
--   
-- -- -- -- Returns the square root of x (x non-negative). -- -- sqrt' :: X x0 => x0 -> x0 -- | Opcode Equivalents of Functions module CsoundExpr.Opcodes.Math.Opeqfunc -- | -- --
--   ares divz xa, xb, ksubst
--   ires divz ia, ib, isubst
--   kres divz ka, kb, ksubst
--   
-- -- -- -- Safely divides two numbers. -- -- divzA :: (X x0, X x1, K k0) => x0 -> x1 -> k0 -> Arate -- | -- --
--   ares divz xa, xb, ksubst
--   ires divz ia, ib, isubst
--   kres divz ka, kb, ksubst
--   
-- -- -- -- Safely divides two numbers. -- -- divzI :: Irate -> Irate -> Irate -> Irate -- | -- --
--   ares divz xa, xb, ksubst
--   ires divz ia, ib, isubst
--   kres divz ka, kb, ksubst
--   
-- -- -- -- Safely divides two numbers. -- -- divzK :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   ares product asig1, asig2 [, asig3] [...]
--   
-- -- -- -- Multiplies any number of a-rate signals. -- -- product' :: [Arate] -> Arate -- | -- --
--   ares sum asig1 [, asig2] [, asig3] [...]
--   
-- -- -- -- Sums any number of a-rate signals. -- -- sum' :: [Arate] -> Arate -- | -- --
--   ares taninv2 ay, ax
--   ires taninv2 iy, ix
--   kres taninv2 ky, kx
--   
-- -- -- -- Returns the arctangent of iyix, kykx, or ay/ax. -- -- taninv2A :: Arate -> Arate -> Arate -- | -- --
--   ares taninv2 ay, ax
--   ires taninv2 iy, ix
--   kres taninv2 ky, kx
--   
-- -- -- -- Returns the arctangent of iyix, kykx, or ay/ax. -- -- taninv2I :: Irate -> Irate -> Irate -- | -- --
--   ares taninv2 ay, ax
--   ires taninv2 iy, ix
--   kres taninv2 ky, kx
--   
-- -- -- -- Returns the arctangent of iyix, kykx, or ay/ax. -- -- taninv2K :: (K k0, K k1) => k0 -> k1 -> Krate -- | Random Functions module CsoundExpr.Opcodes.Math.Rndfunc -- | -- --
--   birnd(x) (init- or control-rate only)
--   
-- -- -- -- Returns a random number in a bi-polar range. -- -- birnd :: K k0 => k0 -> k0 -- | -- --
--   rnd(x) (init- or control-rate only)
--   
-- -- -- -- Returns a random number in a unipolar range at the rate given by the -- input argument. -- -- rnd :: K k0 => k0 -> k0 -- | Trigonometric Functions module CsoundExpr.Opcodes.Math.Trig -- | -- --
--   cos(x) (no rate restriction)
--   
-- -- -- -- Returns the cosine of x (x in radians). -- -- cos' :: X x0 => x0 -> x0 -- | -- --
--   cosh(x) (no rate restriction)
--   
-- -- -- -- Returns the hyperbolic cosine of x (x in radians). -- -- cosh' :: X x0 => x0 -> x0 -- | -- --
--   cosinv(x) (no rate restriction)
--   
-- -- -- -- Returns the arccosine of x (x in radians). -- -- cosinv :: X x0 => x0 -> x0 -- | -- --
--   sin(x) (no rate restriction)
--   
-- -- -- -- Returns the sine of x (x in radians). -- -- sin' :: X x0 => x0 -> x0 -- | -- --
--   sinh(x) (no rate restriction)
--   
-- -- -- -- Returns the hyperbolic sine of x (x in radians). -- -- sinh' :: X x0 => x0 -> x0 -- | -- --
--   sininv(x) (no rate restriction)
--   
-- -- -- -- Returns the arcsine of x (x in radians). -- -- sininv :: X x0 => x0 -> x0 -- | -- --
--   tan(x) (no rate restriction)
--   
-- -- -- -- Returns the tangent of x (x in radians). -- -- tan' :: X x0 => x0 -> x0 -- | -- --
--   tanh(x) (no rate restriction)
--   
-- -- -- -- Returns the hyperbolic tangent of x (x in radians). -- -- tanh' :: X x0 => x0 -> x0 -- | -- --
--   taninv(x) (no rate restriction)
--   
-- -- -- -- Returns the arctangent of x (x in radians). -- -- taninv :: X x0 => x0 -> x0 -- | Mathematical Operations module CsoundExpr.Opcodes.Math -- | Functions module CsoundExpr.Opcodes.Pitch.Funcs -- | -- --
--   cent(x)
--   
-- -- -- -- Calculates a factor to raise/lower a frequency by a given amount of -- cents. -- -- cent :: X x0 => x0 -> x0 -- | -- --
--   cpsmidinn (MidiNoteNumber) (init- or control-rate args only)
--   
-- -- -- -- Converts a Midi note number value to cycles-per-second. -- -- cpsmidinn :: K k0 => k0 -> k0 -- | -- --
--   cpsoct (oct) (no rate restriction)
--   
-- -- -- -- Converts an octave-point-decimal value to cycles-per-second. -- -- cpsoct :: X x0 => x0 -> x0 -- | -- --
--   cpspch (pch) (init- or control-rate args only)
--   
-- -- -- -- Converts a pitch-class value to cycles-per-second. -- -- cpspch :: K k0 => k0 -> k0 -- | -- --
--   octave(x)
--   
-- -- -- -- Calculates a factor to raise/lower a frequency by a given amount of -- octaves. -- -- octave :: X x0 => x0 -> x0 -- | -- --
--   octcps (cps) (init- or control-rate args only)
--   
-- -- -- -- Converts a cycles-per-second value to octave-point-decimal. -- -- octcps :: K k0 => k0 -> k0 -- | -- --
--   octmidinn (MidiNoteNumber) (init- or control-rate args only)
--   
-- -- -- -- Converts a Midi note number value to octave-point-decimal. -- -- octmidinn :: K k0 => k0 -> k0 -- | -- --
--   octpch (pch) (init- or control-rate args only)
--   
-- -- -- -- Converts a pitch-class value to octave-point-decimal. -- -- octpch :: K k0 => k0 -> k0 -- | -- --
--   pchmidinn (MidiNoteNumber) (init- or control-rate args only)
--   
-- -- -- -- Converts a Midi note number value to octave point pitch-class units. -- -- pchmidinn :: K k0 => k0 -> k0 -- | -- --
--   pchoct (oct) (init- or control-rate args only)
--   
-- -- -- -- Converts an octave-point-decimal value to pitch-class. -- -- pchoct :: K k0 => k0 -> k0 -- | -- --
--   semitone(x)
--   
-- -- -- -- Calculates a factor to raise/lower a frequency by a given amount of -- semitones. -- -- semitone :: X x0 => x0 -> x0 -- | Tuning Opcodes module CsoundExpr.Opcodes.Pitch.Tuning -- | -- --
--   icps cps2pch ipch, iequal
--   
-- -- -- -- Converts a pitch-class value into cycles-per-second (Hz) for equal -- divisions of the octave. -- -- cps2pch :: Irate -> Irate -> Irate -- | -- --
--   icps cpsxpch ipch, iequal, irepeat, ibase
--   
-- -- -- -- Converts a pitch-class value into cycles-per-second (Hz) for equal -- divisions of any interval. There is a restriction of no more than 100 -- equal divisions. -- -- cpsxpch :: Irate -> Irate -> Irate -> Irate -> Irate -- | -- --
--   kcps cpstun ktrig, kindex, kfn
--   
-- -- -- -- Returns micro-tuning values at k-rate. -- -- cpstun :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate -- | -- --
--   icps cpstuni index, ifn
--   
-- -- -- -- Returns micro-tuning values at init-rate. -- -- cpstuni :: Irate -> Irate -> Irate -- | Pitch Converters module CsoundExpr.Opcodes.Pitch -- | MIDI input module CsoundExpr.Opcodes.Midi.Input -- | -- --
--   kaft aftouch [imin] [, imax]
--   
-- -- -- -- Get the current after-touch value for this channel. -- -- aftouch :: [Irate] -> Krate -- | -- --
--   ival chanctrl ichnl, ictlno [, ilow] [, ihigh]
--   kval chanctrl ichnl, ictlno [, ilow] [, ihigh]
--   
-- -- -- -- Get the current value of a controller and optionally map it onto -- specified range. -- -- chanctrlI :: [Irate] -> Irate -> Irate -> Irate -- | -- --
--   ival chanctrl ichnl, ictlno [, ilow] [, ihigh]
--   kval chanctrl ichnl, ictlno [, ilow] [, ihigh]
--   
-- -- -- -- Get the current value of a controller and optionally map it onto -- specified range. -- -- chanctrlK :: [Irate] -> Irate -> Irate -> Krate -- | -- --
--   ires polyaft inote [, ilow] [, ihigh]
--   kres polyaft inote [, ilow] [, ihigh]
--   
-- -- -- -- polyaft returns the polyphonic pressure of the selected note number, -- optionally mapped to an user-specified range. -- -- polyaftI :: [Irate] -> Irate -> Irate -- | -- --
--   ires polyaft inote [, ilow] [, ihigh]
--   kres polyaft inote [, ilow] [, ihigh]
--   
-- -- -- -- polyaft returns the polyphonic pressure of the selected note number, -- optionally mapped to an user-specified range. -- -- polyaftK :: [Irate] -> Irate -> Krate -- | -- --
--   ibend pchbend [imin] [, imax]
--   kbend pchbend [imin] [, imax]
--   
-- -- -- -- Get the current pitch-bend value for this channel. -- -- pchbendI :: [Irate] -> Irate -- | -- --
--   ibend pchbend [imin] [, imax]
--   kbend pchbend [imin] [, imax]
--   
-- -- -- -- Get the current pitch-bend value for this channel. -- -- pchbendK :: [Irate] -> Krate -- | -- --
--   ival veloc [ilow] [, ihigh]
--   
-- -- -- -- Get the velocity from a MIDI event. -- -- veloc :: [Irate] -> Irate -- | -- --
--   ival midictrl inum [, imin] [, imax]
--   kval midictrl inum [, imin] [, imax]
--   
-- -- -- -- Get the current value (0-127) of a specified MIDI controller. -- -- midictrlI :: [Irate] -> Irate -> Irate -- | -- --
--   ival midictrl inum [, imin] [, imax]
--   kval midictrl inum [, imin] [, imax]
--   
-- -- -- -- Get the current value (0-127) of a specified MIDI controller. -- -- midictrlK :: [Irate] -> Irate -> Krate -- | -- --
--   ival notnum
--   
-- -- -- -- Get a note number from a MIDI event. -- -- notnum :: Irate -- | -- --
--   idest ctrl7 ichan, ictlno, imin, imax [, ifn]
--   kdest ctrl7 ichan, ictlno, kmin, kmax [, ifn]
--   adest ctrl7 ichan, ictlno, kmin, kmax [, ifn] [, icutoff]
--   
-- -- -- -- Allows a floating-point 7-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- ctrl7A :: (K k0, K k1) => [Irate] -> Irate -> Irate -> k0 -> k1 -> Arate -- | -- --
--   idest ctrl7 ichan, ictlno, imin, imax [, ifn]
--   kdest ctrl7 ichan, ictlno, kmin, kmax [, ifn]
--   adest ctrl7 ichan, ictlno, kmin, kmax [, ifn] [, icutoff]
--   
-- -- -- -- Allows a floating-point 7-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- ctrl7I :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -- | -- --
--   idest ctrl7 ichan, ictlno, imin, imax [, ifn]
--   kdest ctrl7 ichan, ictlno, kmin, kmax [, ifn]
--   adest ctrl7 ichan, ictlno, kmin, kmax [, ifn] [, icutoff]
--   
-- -- -- -- Allows a floating-point 7-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- ctrl7K :: (K k0, K k1) => [Irate] -> Irate -> Irate -> k0 -> k1 -> Krate -- | -- --
--   idest ctrl14 ichan, ictlno1, ictlno2, imin, imax [, ifn]
--   kdest ctrl14 ichan, ictlno1, ictlno2, kmin, kmax [, ifn]
--   
-- -- -- -- Allows a floating-point 14-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- ctrl14I :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -- | -- --
--   idest ctrl14 ichan, ictlno1, ictlno2, imin, imax [, ifn]
--   kdest ctrl14 ichan, ictlno1, ictlno2, kmin, kmax [, ifn]
--   
-- -- -- -- Allows a floating-point 14-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- ctrl14K :: (K k0, K k1) => [Irate] -> Irate -> Irate -> Irate -> k0 -> k1 -> Krate -- | -- --
--   idest ctrl21 ichan, ictlno1, ictlno2, ictlno3, imin, imax [, ifn]
--   kdest ctrl21 ichan, ictlno1, ictlno2, ictlno3, kmin, kmax [, ifn]
--   
-- -- -- -- Allows a floating-point 21-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- ctrl21I :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -- | -- --
--   idest ctrl21 ichan, ictlno1, ictlno2, ictlno3, imin, imax [, ifn]
--   kdest ctrl21 ichan, ictlno1, ictlno2, ictlno3, kmin, kmax [, ifn]
--   
-- -- -- -- Allows a floating-point 21-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- ctrl21K :: (K k0, K k1) => [Irate] -> Irate -> Irate -> Irate -> Irate -> k0 -> k1 -> Krate -- | -- --
--   idest midic7 ictlno, imin, imax [, ifn]
--   kdest midic7 ictlno, kmin, kmax [, ifn]
--   
-- -- -- -- Allows a floating-point 7-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- midic7I :: [Irate] -> Irate -> Irate -> Irate -> Irate -- | -- --
--   idest midic7 ictlno, imin, imax [, ifn]
--   kdest midic7 ictlno, kmin, kmax [, ifn]
--   
-- -- -- -- Allows a floating-point 7-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- midic7K :: (K k0, K k1) => [Irate] -> Irate -> k0 -> k1 -> Krate -- | -- --
--   idest midic14 ictlno1, ictlno2, imin, imax [, ifn]
--   kdest midic14 ictlno1, ictlno2, kmin, kmax [, ifn]
--   
-- -- -- -- Allows a floating-point 14-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- midic14I :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -- | -- --
--   idest midic14 ictlno1, ictlno2, imin, imax [, ifn]
--   kdest midic14 ictlno1, ictlno2, kmin, kmax [, ifn]
--   
-- -- -- -- Allows a floating-point 14-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- midic14K :: (K k0, K k1) => [Irate] -> Irate -> Irate -> k0 -> k1 -> Krate -- | -- --
--   idest midic21 ictlno1, ictlno2, ictlno3, imin, imax [, ifn]
--   kdest midic21 ictlno1, ictlno2, ictlno3, kmin, kmax [, ifn]
--   
-- -- -- -- Allows a floating-point 21-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- midic21I :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -- | -- --
--   idest midic21 ictlno1, ictlno2, ictlno3, imin, imax [, ifn]
--   kdest midic21 ictlno1, ictlno2, ictlno3, kmin, kmax [, ifn]
--   
-- -- -- -- Allows a floating-point 21-bit MIDI signal scaled with a minimum and a -- maximum range. -- -- midic21K :: (K k0, K k1) => [Irate] -> Irate -> Irate -> Irate -> k0 -> k1 -> Krate -- | -- --
--   initc7 ichan, ictlno, ivalue
--   
-- -- -- -- Initializes MIDI controller ictlno with ivalue -- -- initc7 :: Irate -> Irate -> Irate -> SignalOut -- | -- --
--   initc14 ichan, ictlno1, ictlno2, ivalue
--   
-- -- -- -- Initializes the controllers used to create a 14-bit MIDI value. -- -- initc14 :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   initc21 ichan, ictlno1, ictlno2, ictlno3, ivalue
--   
-- -- -- -- Initializes the controllers used to create a 21-bit MIDI value. -- -- initc21 :: Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | MIDI Message Output module CsoundExpr.Opcodes.Midi.Output -- | -- --
--   mdelay kstatus, kchan, kd1, kd2, kdelay
--   
-- -- -- -- A MIDI delay opcode. -- -- mdelay :: (K k0, K k1, K k2, K k3, K k4) => k0 -> k1 -> k2 -> k3 -> k4 -> SignalOut -- | -- --
--   nrpn kchan, kparmnum, kparmvalue
--   
-- -- -- -- Sends a NPRN (Non-Registered Parameter Number) message to the MIDI OUT -- port each time one of the input arguments changes. -- -- nrpn :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> SignalOut -- | -- --
--   outiat ichn, ivalue, imin, imax
--   
-- -- -- -- Sends MIDI aftertouch messages at i-rate. -- -- outiat :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   outic ichn, inum, ivalue, imin, imax
--   
-- -- -- -- Sends MIDI controller output at i-rate. -- -- outic :: Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   outic14 ichn, imsb, ilsb, ivalue, imin, imax
--   
-- -- -- -- Sends 14-bit MIDI controller output at i-rate. -- -- outic14 :: Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   outipat ichn, inotenum, ivalue, imin, imax
--   
-- -- -- -- Sends polyphonic MIDI aftertouch messages at i-rate. -- -- outipat :: Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   outipb ichn, ivalue, imin, imax
--   
-- -- -- -- Sends MIDI pitch-bend messages at i-rate. -- -- outipb :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   outipc ichn, iprog, imin, imax
--   
-- -- -- -- Sends MIDI program change messages at i-rate -- -- outipc :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   outkat kchn, kvalue, kmin, kmax
--   
-- -- -- -- Sends MIDI aftertouch messages at k-rate. -- -- outkat :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> k3 -> SignalOut -- | -- --
--   outkc kchn, knum, kvalue, kmin, kmax
--   
-- -- -- -- Sends MIDI controller messages at k-rate. -- -- outkc :: (K k0, K k1, K k2, K k3, K k4) => k0 -> k1 -> k2 -> k3 -> k4 -> SignalOut -- | -- --
--   outkc14 kchn, kmsb, klsb, kvalue, kmin, kmax
--   
-- -- -- -- Sends 14-bit MIDI controller output at k-rate. -- -- outkc14 :: (K k0, K k1, K k2, K k3, K k4, K k5) => k0 -> k1 -> k2 -> k3 -> k4 -> k5 -> SignalOut -- | -- --
--   outkpat kchn, knotenum, kvalue, kmin, kmax
--   
-- -- -- -- Sends polyphonic MIDI aftertouch messages at k-rate. -- -- outkpat :: (K k0, K k1, K k2, K k3, K k4) => k0 -> k1 -> k2 -> k3 -> k4 -> SignalOut -- | -- --
--   outkpb kchn, kvalue, kmin, kmax
--   
-- -- -- -- Sends MIDI pitch-bend messages at k-rate. -- -- outkpb :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> k3 -> SignalOut -- | -- --
--   outkpc kchn, kprog, kmin, kmax
--   
-- -- -- -- Sends MIDI program change messages at k-rate. -- -- outkpc :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> k3 -> SignalOut -- | Generic Input and Output module CsoundExpr.Opcodes.Midi.Generic -- | -- --
--   kstatus, kchan, kdata1, kdata2 midiin
--   
-- -- -- -- Returns a generic MIDI message received by the MIDI IN port -- -- midiin :: MultiOut -- | -- --
--   midiout kstatus, kchan, kdata1, kdata2
--   
-- -- -- -- Sends a generic MIDI message to the MIDI OUT port. -- -- midiout :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> k3 -> SignalOut -- | Converters module CsoundExpr.Opcodes.Midi.Convert -- | -- --
--   icps cpsmidi
--   
-- -- -- -- Get the note number of the current MIDI event, expressed in -- cycles-per-second. -- -- cpsmidi :: Irate -- | -- --
--   icps cpsmidib [irange]
--   kcps cpsmidib [irange]
--   
-- -- -- -- Get the note number of the current MIDI event and modify it by the -- current pitch-bend value, express it in cycles-per-second. -- -- cpsmidibI :: [Irate] -> Irate -- | -- --
--   icps cpsmidib [irange]
--   kcps cpsmidib [irange]
--   
-- -- -- -- Get the note number of the current MIDI event and modify it by the -- current pitch-bend value, express it in cycles-per-second. -- -- cpsmidibK :: [Irate] -> Krate -- | -- --
--   icps cpstmid ifn
--   
-- -- -- -- This unit is similar to cpsmidi, but allows fully customized -- micro-tuning scales. -- -- cpstmid :: Irate -> Irate -- | -- --
--   ioct octmidi
--   
-- -- -- -- Get the note number, in octave-point-decimal units, of the current -- MIDI event. -- -- octmidi :: Irate -- | -- --
--   ioct octmidib [irange]
--   koct octmidib [irange]
--   
-- -- -- -- Get the note number of the current MIDI event and modify it by the -- current pitch-bend value, express it in octave-point-decimal. -- -- octmidibI :: [Irate] -> Irate -- | -- --
--   ioct octmidib [irange]
--   koct octmidib [irange]
--   
-- -- -- -- Get the note number of the current MIDI event and modify it by the -- current pitch-bend value, express it in octave-point-decimal. -- -- octmidibK :: [Irate] -> Krate -- | -- --
--   ipch pchmidi
--   
-- -- -- -- Get the note number of the current MIDI event, expressed in -- pitch-class units. -- -- pchmidi :: Irate -- | -- --
--   ipch pchmidib [irange]
--   kpch pchmidib [irange]
--   
-- -- -- -- Get the note number of the current MIDI event and modify it by the -- current pitch-bend value, express it in pitch-class units. -- -- pchmidibI :: [Irate] -> Irate -- | -- --
--   ipch pchmidib [irange]
--   kpch pchmidib [irange]
--   
-- -- -- -- Get the note number of the current MIDI event and modify it by the -- current pitch-bend value, express it in pitch-class units. -- -- pchmidibK :: [Irate] -> Krate -- | -- --
--   iamp ampmidi iscal [, ifn]
--   
-- -- -- -- Get the velocity of the current MIDI event. -- -- ampmidi :: [Irate] -> Irate -> Irate -- | Event Extenders module CsoundExpr.Opcodes.Midi.Extender -- | -- --
--   kflag release
--   
-- -- -- -- Provides a way of knowing when a note off message for the current note -- is received. Only a noteoff message with the same MIDI note number as -- the one which triggered the note will be reported by release. -- -- release :: Krate -- | -- --
--   xtratim iextradur
--   
-- -- -- -- Extend the duration of real-time generated events and handle their -- extra life (Usually for usage along with release instead of linenr, -- linsegr, etc). -- -- xtratim :: Irate -> SignalOut -- | Note-on/Note-off Output module CsoundExpr.Opcodes.Midi.Onoff -- | -- --
--   midion kchn, knum, kvel
--   
-- -- -- -- Generates MIDI note messages at k-rate. -- -- midion :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> SignalOut -- | -- --
--   midion2 kchn, knum, kvel, ktrig
--   
-- -- -- -- Sends noteon and noteoff messages to the MIDI OUT port when triggered -- by a value different than zero. -- -- midion2 :: (K k0, K k1, K k2, K k3) => k0 -> k1 -> k2 -> k3 -> SignalOut -- | -- --
--   moscil kchn, knum, kvel, kdur, kpause
--   
-- -- -- -- Sends a stream of the MIDI notes. -- -- moscil :: (K k0, K k1, K k2, K k3, K k4) => k0 -> k1 -> k2 -> k3 -> k4 -> SignalOut -- | -- --
--   noteoff ichn, inum, ivel
--   
-- -- -- -- Send a noteoff message to the MIDI OUT port. -- -- noteoff :: Irate -> Irate -> Irate -> SignalOut -- | -- --
--   noteon ichn, inum, ivel
--   
-- -- -- -- Send a noteon message to the MIDI OUT port. -- -- noteon :: Irate -> Irate -> Irate -> SignalOut -- | -- --
--   noteondur ichn, inum, ivel, idur
--   
-- -- -- -- Sends a noteon and a noteoff MIDI message both with the same channel, -- number and velocity. -- -- noteondur :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   noteondur2 ichn, inum, ivel, idur
--   
-- -- -- -- Sends a noteon and a noteoff MIDI message both with the same channel, -- number and velocity. -- -- noteondur2 :: Irate -> Irate -> Irate -> Irate -> SignalOut -- | MIDI/Score Interoperability opcodes module CsoundExpr.Opcodes.Midi.Interop -- | -- --
--   midichannelaftertouch xchannelaftertouch [, ilow] [, ihigh]
--   
-- -- -- -- midichannelaftertouch is designed to simplify writing instruments that -- can be used interchangeably for either score or MIDI input, and to -- make it easier to adapt instruments originally written for score input -- to work with MIDI input. -- -- midichannelaftertouch :: X x0 => [Irate] -> x0 -> SignalOut -- | -- --
--   ichn midichn
--   
-- -- -- -- midichn returns the MIDI channel number (1 - 16) from which the note -- was activated. In the case of score notes, it returns 0. -- -- midichn :: Irate -- | -- --
--   midicontrolchange xcontroller, xcontrollervalue [, ilow] [, ihigh]
--   
-- -- -- -- midicontrolchange is designed to simplify writing instruments that can -- be used interchangeably for either score or MIDI input, and to make it -- easier to adapt instruments originally written for score input to work -- with MIDI input. -- -- midicontrolchange :: (X x0, X x1) => [Irate] -> x0 -> x1 -> SignalOut -- | -- --
--   mididefault xdefault, xvalue
--   
-- -- -- -- mididefault is designed to simplify writing instruments that can be -- used interchangeably for either score or MIDI input, and to make it -- easier to adapt instruments originally written for score input to work -- with MIDI input. -- -- mididefault :: (X x0, X x1) => x0 -> x1 -> SignalOut -- | -- --
--   midinoteoff xkey, xvelocity
--   
-- -- -- -- midinoteoff is designed to simplify writing instruments that can be -- used interchangeably for either score or MIDI input, and to make it -- easier to adapt instruments originally written for score input to work -- with MIDI input. -- -- midinoteoff :: (X x0, X x1) => x0 -> x1 -> SignalOut -- | -- --
--   midinoteoncps xcps, xvelocity
--   
-- -- -- -- midinoteoncps is designed to simplify writing instruments that can be -- used interchangeably for either score or MIDI input, and to make it -- easier to adapt instruments originally written for score input to work -- with MIDI input. -- -- midinoteoncps :: (X x0, X x1) => x0 -> x1 -> SignalOut -- | -- --
--   midinoteonkey xkey, xvelocity
--   
-- -- -- -- midinoteonkey is designed to simplify writing instruments that can be -- used interchangeably for either score or MIDI input, and to make it -- easier to adapt instruments originally written for score input to work -- with MIDI input. -- -- midinoteonkey :: (X x0, X x1) => x0 -> x1 -> SignalOut -- | -- --
--   midinoteonoct xoct, xvelocity
--   
-- -- -- -- midinoteonoct is designed to simplify writing instruments that can be -- used interchangeably for either score or MIDI input, and to make it -- easier to adapt instruments originally written for score input to work -- with MIDI input. -- -- midinoteonoct :: (X x0, X x1) => x0 -> x1 -> SignalOut -- | -- --
--   midinoteonpch xpch, xvelocity
--   
-- -- -- -- midinoteonpch is designed to simplify writing instruments that can be -- used interchangeably for either score or MIDI input, and to make it -- easier to adapt instruments originally written for score input to work -- with MIDI input. -- -- midinoteonpch :: (X x0, X x1) => x0 -> x1 -> SignalOut -- | -- --
--   midipitchbend xpitchbend [, ilow] [, ihigh]
--   
-- -- -- -- midipitchbend is designed to simplify writing instruments that can be -- used interchangeably for either score or MIDI input, and to make it -- easier to adapt instruments originally written for score input to work -- with MIDI input. -- -- midipitchbend :: X x0 => [Irate] -> x0 -> SignalOut -- | -- --
--   midipolyaftertouch xpolyaftertouch, xcontrollervalue [, ilow] [, ihigh]
--   
-- -- -- -- midipolyaftertouch is designed to simplify writing instruments that -- can be used interchangeably for either score or MIDI input, and to -- make it easier to adapt instruments originally written for score input -- to work with MIDI input. -- -- midipolyaftertouch :: (X x0, X x1) => [Irate] -> x0 -> x1 -> SignalOut -- | -- --
--   midiprogramchange xprogram
--   
-- -- -- -- midiprogramchange is designed to simplify writing instruments that can -- be used interchangeably for either score or MIDI input, and to make it -- easier to adapt instruments originally written for score input to work -- with MIDI input. -- -- midiprogramchange :: X x0 => x0 -> SignalOut -- | System Realtime Messages module CsoundExpr.Opcodes.Midi.Realtime -- | -- --
--   mclock ifreq
--   
-- -- -- -- Sends a MIDI CLOCK message. -- -- mclock :: Irate -> SignalOut -- | -- --
--   mrtmsg imsgtype
--   
-- -- -- -- Send system real-time messages to the MIDI OUT port. -- -- mrtmsg :: Irate -> SignalOut -- | Slider Banks module CsoundExpr.Opcodes.Midi.Slidrbk -- | -- --
--   i1,...,i16 slider16 ichan, ictlnum1, imin1, imax1, init1, ifn1,..., 
--       ictlnum16, imin16, imax16, init16, ifn16
--   k1,...,k16 slider16 ichan, ictlnum1, imin1, imax1, init1, ifn1,..., 
--       ictlnum16, imin16, imax16, init16, ifn16
--   
-- -- -- -- Creates a bank of 16 different MIDI control message numbers. -- -- slider16 :: Irate -> [Irate] -> MultiOut -- | -- --
--   k1,...,k16 slider16f ichan, ictlnum1, imin1, imax1, init1, ifn1, 
--       icutoff1,..., ictlnum16, imin16, imax16, init16, ifn16, icutoff16
--   
-- -- -- -- Creates a bank of 16 different MIDI control message numbers, filtered -- before output. -- -- slider16f :: Irate -> [Irate] -> MultiOut -- | -- --
--   i1,...,i32 slider32 ichan, ictlnum1, imin1, imax1, init1, ifn1,..., 
--       ictlnum32, imin32, imax32, init32, ifn32
--   k1,...,k32 slider32 ichan, ictlnum1, imin1, imax1, init1, ifn1,..., 
--       ictlnum32, imin32, imax32, init32, ifn32
--   
-- -- -- -- Creates a bank of 32 different MIDI control message numbers. -- -- slider32 :: Irate -> [Irate] -> MultiOut -- | -- --
--   k1,...,k32 slider32f ichan, ictlnum1, imin1, imax1, init1, ifn1, icutoff1, 
--      ..., ictlnum32, imin32, imax32, init32, ifn32, icutoff32
--   
-- -- -- -- Creates a bank of 32 different MIDI control message numbers, filtered -- before output. -- -- slider32f :: Irate -> [Irate] -> MultiOut -- | -- --
--   i1,...,i64 slider64 ichan, ictlnum1, imin1, imax1, init1, ifn1,..., 
--       ictlnum64, imin64, imax64, init64, ifn64
--   k1,...,k64 slider64 ichan, ictlnum1, imin1, imax1, init1, ifn1,..., 
--       ictlnum64, imin64, imax64, init64, ifn64
--   
-- -- -- -- Creates a bank of 64 different MIDI control message numbers. -- -- slider64 :: Irate -> [Irate] -> MultiOut -- | -- --
--   k1,...,k64 slider64f ichan, ictlnum1, imin1, imax1, init1, ifn1, 
--       icutoff1,..., ictlnum64, imin64, imax64, init64, ifn64, icutoff64
--   
-- -- -- -- Creates a bank of 64 different MIDI control message numbers, filtered -- before output. -- -- slider64f :: Irate -> [Irate] -> MultiOut -- | -- --
--   i1,...,i16 s16b14 ichan, ictlno_msb1, ictlno_lsb1, imin1, imax1, 
--       initvalue1, ifn1,..., ictlno_msb16, ictlno_lsb16, imin16, imax16, initvalue16, ifn16
--   k1,...,k16 s16b14 ichan, ictlno_msb1, ictlno_lsb1, imin1, imax1, 
--       initvalue1, ifn1,..., ictlno_msb16, ictlno_lsb16, imin16, imax16, initvalue16, ifn16
--   
-- -- -- -- Creates a bank of 16 different 14-bit MIDI control message numbers. -- -- s16b14 :: Irate -> [Irate] -> MultiOut -- | -- --
--   i1,...,i32 s32b14 ichan, ictlno_msb1, ictlno_lsb1, imin1, imax1, 
--       initvalue1, ifn1,..., ictlno_msb32, ictlno_lsb32, imin32, imax32, initvalue32, ifn32
--   k1,...,k32 s32b14 ichan, ictlno_msb1, ictlno_lsb1, imin1, imax1, 
--       initvalue1, ifn1,..., ictlno_msb32, ictlno_lsb32, imin32, imax32, initvalue32, ifn32
--   
-- -- -- -- Creates a bank of 32 different 14-bit MIDI control message numbers. -- -- s32b14 :: Irate -> [Irate] -> MultiOut -- | -- --
--   k1, k2,...., k16 sliderKawai imin1, imax1, init1, ifn1, 
--       imin2, imax2, init2, ifn2,..., imin16, imax16, init16, ifn16
--   
-- -- -- -- Creates a bank of 16 different MIDI control message numbers from a -- KAWAI MM-16 midi mixer. -- -- sliderKawai :: [Irate] -> MultiOut -- | -- --
--   kflag slider8table ichan, ioutTable, ioffset, ictlnum1, imin1, imax1, 
--       init1, ifn1,..., ictlnum8, imin8, imax8, init8, ifn8
--   
-- -- -- -- Stores a bank of 8 different MIDI control messages to a table. -- -- slider8table :: Irate -> Irate -> Irate -> [Irate] -> Krate -- | -- --
--   kflag slider8tablef ichan, ioutTable, ioffset, ictlnum1, imin1, imax1, 
--       init1, ifn1, icutoff1,...., ictlnum8, imin8, imax8, init8, ifn8, icutoff8
--   
-- -- -- -- Stores a bank of 8 different MIDI control messages to a table, -- filtered before output. -- -- slider8tablef :: Irate -> Irate -> Irate -> [Irate] -> Krate -- | -- --
--   kflag slider16table ichan, ioutTable, ioffset, ictlnum1, imin1, imax1, 
--       init1, ifn1,...., ictlnum16, imin16, imax16, init16, ifn16
--   
-- -- -- -- Stores a bank of 16 different MIDI control messages to a table. -- -- slider16table :: Irate -> Irate -> Irate -> [Irate] -> Krate -- | -- --
--   kflag slider16tablef ichan, ioutTable, ioffset, ictlnum1, imin1, imax1, 
--       init1, ifn1, icutoff1,...., ictlnum16, imin16, imax16, init16, ifn16, icutoff16
--   
-- -- -- -- Stores a bank of 16 different MIDI control messages to a table, -- filtered before output. -- -- slider16tablef :: Irate -> Irate -> Irate -> [Irate] -> Krate -- | -- --
--   kflag slider32table ichan, ioutTable, ioffset, ictlnum1, imin1, 
--       imax1, init1, ifn1,...., ictlnum32, imin32, imax32, init32, ifn32
--   
-- -- -- -- Creates a bank of 32 different MIDI control messages to a table. -- -- slider32table :: Irate -> Irate -> Irate -> [Irate] -> Krate -- | -- --
--   kflag slider32tablef ichan, ioutTable, ioffset, ictlnum1, imin1, imax1, 
--       init1, ifn1, icutoff1,...., ictlnum32, imin32, imax32, init32, ifn32, icutoff32
--   
-- -- -- -- Creates a bank of 32 different MIDI control message numbers, filtered -- before output. -- -- slider32tablef :: Irate -> Irate -> Irate -> [Irate] -> Krate -- | -- --
--   kflag slider64table ichan, ioutTable, ioffset, ictlnum1, imin1, 
--       imax1, init1, ifn1,...., ictlnum64, imin64, imax64, init64, ifn64
--   
-- -- -- -- Creates a bank of 64 different MIDI control messages to a table. -- -- slider64table :: Irate -> Irate -> Irate -> [Irate] -> Krate -- | -- --
--   kflag slider64tablef ichan, ioutTable, ioffset, ictlnum1, imin1, imax1, 
--       init1, ifn1, icutoff1,...., ictlnum64, imin64, imax64, init64, ifn64, icutoff64
--   
-- -- -- -- Stores a bank of 64 different MIDI MIDI control messages to a table, -- filtered before output. -- -- slider64tablef :: Irate -> Irate -> Irate -> [Irate] -> Krate -- | Real-time MIDI Support module CsoundExpr.Opcodes.Midi -- | Short-time Fourier Transform (STFT) Resynthesis module CsoundExpr.Opcodes.Spectral.SiggenStft -- | -- --
--   tableseg ifn1, idur1, ifn2 [, idur2] [, ifn3] [...]
--   
-- -- -- -- tableseg is like linseg but interpolate between values in a stored -- function tables. The result is a new function table passed internally -- to any following vpvoc which occurs before a subsequent tableseg (much -- like lpread/lpreson pairs work). The uses of these are described below -- under vpvoc. -- -- tableseg :: [Irate] -> SignalOut -- | -- --
--   ares pvadd ktimpnt, kfmod, ifilcod, ifn, ibins [, ibinoffset] 
--       [, ibinincr] [, iextractmode] [, ifreqlim] [, igatefn]
--   
-- -- -- -- pvadd reads from a pvoc file and uses the data to perform additive -- synthesis using an internal array of interpolating oscillators. The -- user supplies the wave table (usually one period of a sine wave), and -- can choose which analysis bins will be used in the re-synthesis. -- -- pvadd :: (K k0, K k1) => [Irate] -> k0 -> k1 -> String -> Irate -> Irate -> Arate -- | -- --
--   pvbufread ktimpnt, ifile
--   
-- -- -- -- pvbufread reads from a pvoc file and makes the retrieved data -- available to any following pvinterp and pvcross units that appear in -- an instrument before a subsequent pvbufread (just as lpread and -- lpreson work together). The data is passed internally and the unit has -- no output of its own. -- -- pvbufread :: K k0 => k0 -> Irate -> SignalOut -- | -- --
--   ares pvcross ktimpnt, kfmod, ifile, kampscale1, kampscale2 [, ispecwp]
--   
-- -- -- -- pvcross applies the amplitudes from one phase vocoder analysis file to -- the data from a second file and then performs the resynthesis. The -- data is passed, as described above, from a previously called pvbufread -- unit. The two k-rate amplitude arguments are used to scale the -- amplitudes of each files separately before they are added together and -- used in the resynthesis (see below for further explanation). The -- frequencies of the first file are not used at all in this process. -- This unit simply allows for cross-synthesis through the application of -- the amplitudes of the spectra of one signal to the frequencies of a -- second signal. Unlike pvinterp, pvcross does allow for the use of the -- ispecwp as in pvoc and vpvoc. -- -- pvcross :: (K k0, K k1, K k2, K k3) => [Irate] -> k0 -> k1 -> Irate -> k2 -> k3 -> Arate -- | -- --
--   ares pvinterp ktimpnt, kfmod, ifile, kfreqscale1, kfreqscale2, 
--       kampscale1, kampscale2, kfreqinterp, kampinterp
--   
-- -- -- -- pvinterp interpolates between the amplitudes and frequencies, on a bin -- by bin basis, of two phase vocoder analysis files (one from a -- previously called pvbufread unit and the other from within its own -- argument list), allowing for user defined transitions between analyzed -- sounds. It also allows for general scaling of the amplitudes and -- frequencies of each file separately before the interpolated values are -- calculated and sent to the resynthesis routines. The kfmod argument in -- pvinterp performs its frequency scaling on the frequency values after -- their derivation from the separate scaling and subsequent -- interpolation is performed so that this acts as an overall scaling -- value of the new frequency components. -- -- pvinterp :: (K k0, K k1, K k2, K k3, K k4, K k5, K k6, K k7) => k0 -> k1 -> Irate -> k2 -> k3 -> k4 -> k5 -> k6 -> k7 -> Arate -- | -- --
--   ares pvoc ktimpnt, kfmod, ifilcod [, ispecwp] [, iextractmode] 
--       [, ifreqlim] [, igatefn]
--   
-- -- -- -- Implements signal reconstruction using an fft-based phase vocoder. -- -- pvoc :: (K k0, K k1) => [Irate] -> k0 -> k1 -> String -> Arate -- | -- --
--   kfreq, kamp pvread ktimpnt, ifile, ibin
--   
-- -- -- -- pvread reads from a pvoc file and returns the frequency and amplitude -- from a single analysis channel or bin. The returned values can be used -- anywhere else in the Csound instrument. For example, one can use them -- as arguments to an oscillator to synthesize a single component from an -- analyzed signal or a bank of pvreads can be used to resynthesize the -- analyzed sound using additive synthesis by passing the frequency and -- magnitude values to a bank of oscillators. -- -- pvread :: K k0 => k0 -> Irate -> Irate -> MultiOut -- | -- --
--   tablexseg ifn1, idur1, ifn2 [, idur2] [, ifn3] [...]
--   
-- -- -- -- tablexseg is like expseg but interpolate between values in a stored -- function tables. The result is a new function table passed internally -- to any following vpvoc which occurs before a subsequent tablexseg -- (much like lpread/lpreson pairs work). The uses of these are described -- below under vpvoc. -- -- tablexseg :: [Irate] -> SignalOut -- | -- --
--   ares vpvoc ktimpnt, kfmod, ifile [, ispecwp] [, ifn]
--   
-- -- -- -- Implements signal reconstruction using an fft-based phase vocoder and -- an extra envelope. -- -- vpvoc :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Arate -- | Linear Predictive Coding (LPC) Resynthesis module CsoundExpr.Opcodes.Spectral.Lpcresyn -- | -- --
--   ares lpfreson asig, kfrqratio
--   
-- -- -- -- Resynthesises a signal from the data passed internally by a previous -- lpread, applying formant shifting. -- -- lpfreson :: K k0 => Arate -> k0 -> Arate -- | -- --
--   lpinterp islot1, islot2, kmix
--   
-- -- -- -- Computes a new set of poles from the interpolation between two -- analysis. -- -- lpinterp :: K k0 => Irate -> Irate -> k0 -> SignalOut -- | -- --
--   krmsr, krmso, kerr, kcps lpread ktimpnt, ifilcod [, inpoles] [, ifrmrate]
--   
-- -- -- -- Reads a control file of time-ordered information frames. -- -- lpread :: K k0 => [Irate] -> k0 -> String -> MultiOut -- | -- --
--   ares lpreson asig
--   
-- -- -- -- Resynthesises a signal from the data passed internally by a previous -- lpread. -- -- lpreson :: Arate -> Arate -- | -- --
--   lpslot islot
--   
-- -- -- -- Selects the slot to be use by further lp opcodes. -- -- lpslot :: Irate -> SignalOut -- | Non-standard Spectral Processing module CsoundExpr.Opcodes.Spectral.Nonstand -- | Tools for Real-time Spectral Processing (pvs opcodes) module CsoundExpr.Opcodes.Spectral.RealTime -- | ATS Spectral Processing module CsoundExpr.Opcodes.Spectral.ATS -- | -- --
--   idata ATSinfo iatsfile, ilocation
--   
-- -- -- -- atsinfo reads data out of the header of an ATS file. -- -- atsInfo :: Irate -> Irate -> Irate -- | -- --
--   kfreq, kamp ATSread ktimepnt, iatsfile, ipartial
--   
-- -- -- -- ATSread returns the amplitude (kamp) and frequency (kfreq) information -- of a user specified partial contained in the ATS analysis file at the -- time indicated by the time pointer ktimepnt. -- -- atsRead :: K k0 => k0 -> Irate -> Irate -> MultiOut -- | -- --
--   kenergy ATSreadnz ktimepnt, iatsfile, iband
--   
-- -- -- -- ATSreadnz returns the energy (kenergy) of a user specified noise band -- (1-25 bands) at the time indicated by the time pointer ktimepnt. -- -- atsReadnz :: K k0 => k0 -> Irate -> Irate -> Krate -- | -- --
--   ATSbufread ktimepnt, kfmod, iatsfile, ipartials[, ipartialoffset, 
--       ipartialincr]
--   
-- -- -- -- ATSbufread reads data from and ATS data file and stores it in an -- internal data table of frequency, amplitude pairs. -- -- atsBufread :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -> SignalOut -- | -- --
--   kamp ATSinterpread kfreq
--   
-- -- -- -- ATSinterpread allows a user to determine the frequency envelope of any -- ATSbufread. -- -- atsInterpread :: K k0 => k0 -> Krate -- | -- --
--   kfrq, kamp ATSpartialtap ipartialnum
--   
-- -- -- -- ATSpartialtap takes a partial number and returns a frequency, -- amplitude pair. The frequency and amplitude data comes from an -- ATSbufread opcode. -- -- atsPartialtap :: Irate -> MultiOut -- | -- --
--   ar ATSadd ktimepnt, kfmod, iatsfile, ifn, ipartials[, ipartialoffset, 
--       ipartialincr, igatefn]
--   
-- -- -- -- ATSadd reads from an ATS analysis file and uses the data to perform -- additive synthesis using an internal array of interpolating -- oscillators. -- -- atsAdd :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -> Irate -> Arate -- | -- --
--   ar ATSaddnz ktimepnt, iatsfile, ibands[, ibandoffset, ibandincr]
--   
-- -- -- -- ATSaddnz reads from an ATS analysis file and uses the data to perform -- additive synthesis using a modified randi function. -- -- atsAddnz :: K k0 => [Irate] -> k0 -> Irate -> Irate -> Arate -- | -- --
--   ar ATScross ktimepnt, kfmod, iatsfile, ifn, kmylev, kbuflev, ipartials 
--       [, ipartialoffset, ipartialincr]
--   
-- -- -- -- ATScross uses data from an ATS analysis file and data from an -- ATSbufread to perform cross synthesis. -- -- atsCross :: (K k0, K k1, K k2, K k3) => [Irate] -> k0 -> k1 -> Irate -> Irate -> k2 -> k3 -> Irate -> Arate -- | -- --
--   ar ATSsinnoi ktimepnt, ksinlev, knzlev, kfmod, iatsfile, ipartials 
--       [, ipartialoffset, ipartialincr]
--   
-- -- -- -- ATSsinnoi reads data from an ATS data file and uses the information to -- synthesize sines and noise together. -- -- atsSinnoi :: (K k0, K k1, K k2, K k3) => [Irate] -> k0 -> k1 -> k2 -> k3 -> Irate -> Irate -> Arate -- | Loris Opcodes module CsoundExpr.Opcodes.Spectral.Loris -- | -- --
--   lorisread ktimpnt, ifilcod, istoreidx, kfreqenv, kampenv, kbwenv[, ifadetime]
--   
-- -- -- -- lorisread imports a set of bandwidth-enhanced partials from a -- SDIF-format data file, applying control-rate frequency, amplitude, and -- bandwidth scaling envelopes, and stores the modified partials in -- memory. -- -- lorisread :: (K k0, K k1, K k2, K k3) => [Irate] -> k0 -> String -> Irate -> k1 -> k2 -> k3 -> SignalOut -- | -- --
--   lorismorph isrcidx, itgtidx, istoreidx, kfreqmorphenv, kampmorphenv, kbwmorphenv
--   
-- -- -- -- lorismorph morphs two stored sets of bandwidth-enhanced partials and -- stores a new set of partials representing the morphed sound. The morph -- is performed by linearly interpolating the parameter envelopes -- (frequency, amplitude, and bandwidth, or noisiness) of the -- bandwidth-enhanced partials according to control-rate frequency, -- amplitude, and bandwidth morphing functions. -- -- lorismorph :: (K k0, K k1, K k2) => Irate -> Irate -> Irate -> k0 -> k1 -> k2 -> SignalOut -- | -- --
--   ar lorisplay ireadidx, kfreqenv, kampenv, kbwenv
--   
-- -- -- -- lorisplay renders a stored set of bandwidth-enhanced partials using -- the method of Bandwidth-Enhanced Additive Synthesis implemented in the -- Loris software, applying control-rate frequency, amplitude, and -- bandwidth scaling envelopes. -- -- lorisplay :: (K k0, K k1, K k2) => Irate -> k0 -> k1 -> k2 -> Arate -- | Spectral Processing module CsoundExpr.Opcodes.Spectral -- | Tables of vectors operators module CsoundExpr.Opcodes.Vectorial.Vectorialtables -- | -- --
--   vtablei indx, ifn, interp, ixmode, iout1 [, iout2, iout3,...., ioutN ]
--   
-- -- -- -- This opcode reads vectors from tables. -- -- vtablei :: Irate -> Irate -> Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   vtable1k kfn,kout1 [, kout2, kout3,...., koutN ]
--   
-- -- -- -- This opcode reads vectors from tables at k-rate. -- -- vtable1k :: (K k0, K k1) => k0 -> [k1] -> SignalOut -- | -- --
--   vtablek kndx, kfn, kinterp, ixmode, kout1 [, kout2, kout3,...., koutN ]
--   
-- -- -- -- This opcode reads vectors from tables at k-rate. -- -- vtablek :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Irate -> [Irate] -> SignalOut -- | -- --
--   vtablea andx, kfn, kinterp, ixmode, aout1 [, aout2, aout3,...., aoutN ]
--   
-- -- -- -- This opcode reads vectors from tables at a-rate. -- -- vtablea :: (K k0, K k1) => Arate -> k0 -> k1 -> Irate -> [Arate] -> SignalOut -- | -- --
--   vtablewi indx, ifn, ixmode, inarg1 [, inarg2, inarg3,...., inargN ]
--   
-- -- -- -- This opcode writes vectors to tables at init time. -- -- vtablewi :: Irate -> Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   vtablewk kndx, kfn, ixmode, kinarg1 [, kinarg2, kinarg3,...., kinargN ]
--   
-- -- -- -- This opcode writes vectors to tables at k-rate. -- -- vtablewk :: (K k0, K k1, K k2) => k0 -> k1 -> Irate -> [k2] -> SignalOut -- | -- --
--   vtablewa andx, kfn, ixmode, ainarg1 [, ainarg2, ainarg3,...., ainargN ]
--   
-- -- -- -- This opcode writes vectors to tables at a-rate. -- -- vtablewa :: Arate -> Arate -> Irate -> [Arate] -> SignalOut -- | -- --
--   vtabi indx, ifn, iout1 [, iout2, iout3,...., ioutN ]
--   
-- -- -- -- This opcode reads vectors from tables. -- -- vtabi :: Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   vtabk kndx, ifn, kout1 [, kout2, kout3,...., koutN ]
--   
-- -- -- -- This opcode reads vectors from tables at k-rate. -- -- vtabk :: (K k0, K k1) => k0 -> Irate -> [k1] -> SignalOut -- | -- --
--   vtaba andx, ifn, aout1 [, aout2, aout3,...., aoutN ]
--   
-- -- -- -- This opcode reads vectors from tables at a-rate. -- -- vtaba :: Arate -> Irate -> [Arate] -> SignalOut -- | -- --
--   vtabwi indx, ifn, inarg1 [, inarg2, inarg3,...., inargN ]
--   
-- -- -- -- This opcode writes vectors to tables at init time. -- -- vtabwi :: Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   vtabwk kndx, ifn, kinarg1 [, kinarg2, kinarg3,...., kinargN ]
--   
-- -- -- -- This opcode writes vectors to tables at a-rate. -- -- vtabwk :: (K k0, K k1) => k0 -> Irate -> [k1] -> SignalOut -- | -- --
--   vtabwa andx, ifn, ainarg1 [, ainarg2, ainarg3,...., ainargN ]
--   
-- -- -- -- This opcode writes vectors to tables at a-rate. -- -- vtabwa :: Arate -> Irate -> [Arate] -> SignalOut -- | Operations Between a Vectorial and a Scalar Signal module CsoundExpr.Opcodes.Vectorial.Vectorialscalar -- | -- --
--   vadd ifn, kval, kelements [, kdstoffset] [, kverbose]
--   
-- -- -- -- Adds a scalar value to a vector in a table. -- -- vadd :: (K k0, K k1, K k2) => [k0] -> Irate -> k1 -> k2 -> SignalOut -- | -- --
--   vmult ifn, kval, kelements [, kdstoffset] [, kverbose]
--   
-- -- -- -- Multiplies a vector in a table by a scalar value. -- -- vmult :: (K k0, K k1, K k2) => [k0] -> Irate -> k1 -> k2 -> SignalOut -- | -- --
--   vpow ifn, kval, kelements [, kdstoffset] [, kverbose]
--   
-- -- -- -- Raises each element of a vector to a scalar power -- -- vpow :: (K k0, K k1, K k2) => [k0] -> Irate -> k1 -> k2 -> SignalOut -- | -- --
--   vexp ifn, kval, kelements [, kdstoffset] [, kverbose]
--   
-- -- -- -- Performs power-of operations between a vector and a scalar -- -- vexp :: (K k0, K k1, K k2) => [k0] -> Irate -> k1 -> k2 -> SignalOut -- | -- --
--   vadd_i ifn, ival, ielements [, idstoffset]
--   
-- -- -- -- Adds a scalar value to a vector in a table. -- -- vadd_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   vmult_i ifn, ival, ielements [, idstoffset]
--   
-- -- -- -- Multiplies a vector in a table by a scalar value. -- -- vmult_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   vpow_i ifn, ival, ielements [, idstoffset]
--   
-- -- -- -- Raises each element of a vector to a scalar power -- -- vpow_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   vexp_i ifn, ival, ielements[, idstoffset]
--   
-- -- -- -- Performs power-of operations between a vector and a scalar -- -- vexp_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | Operations Between two Vectorial Signals module CsoundExpr.Opcodes.Vectorial.Vectorialvectorial -- | -- --
--   vaddv ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- -- -- Performs addition between two vectorial control signals -- -- vaddv :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut -- | -- --
--   vsubv ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- -- -- Performs subtraction between two vectorial control signals -- -- vsubv :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut -- | -- --
--   vmultv ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- -- -- Performs mutiplication between two vectorial control signals -- -- vmultv :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut -- | -- --
--   vdivv ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- -- -- Performs division between two vectorial control signals -- -- vdivv :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut -- | -- --
--   vpowv ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- -- -- Performs power-of operations between two vectorial control signals -- -- vpowv :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut -- | -- --
--   vexpv ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- -- -- Performs exponential operations between two vectorial control signals -- -- vexpv :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut -- | -- --
--   vcopy ifn, ifn2, kelements [, kdstoffset] [, ksrcoffset] [, kverbose]
--   
-- -- -- -- Copies between two vectorial control signals -- -- vcopy :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut -- | -- --
--   vmap ifn1, ifn2, ielements [,idstoffset, isrcoffset]
--   
-- -- -- -- Maps elements from a vector onto another according to the indeces of a -- this vector -- -- vmap :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   vaddv_i ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- -- -- Performs addition between two vectorial control signals at init time. -- -- vaddv_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   vsubv_i ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- -- -- Performs subtraction between two vectorial control signals at init -- time. -- -- vsubv_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   vmultv_i ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- -- -- Performs mutiplication between two vectorial control signals at init -- time. -- -- vmultv_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   vdivv_i ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- -- -- Performs division between two vectorial control signals at init time. -- -- vdivv_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   vpowv_i ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- -- -- Performs power-of operations between two vectorial control signals at -- init time. -- -- vpowv_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   vexpv_i ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- -- -- Performs exponential operations between two vectorial control signals -- at init time. -- -- vexpv_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   vcopy_i ifn, ifn2, ielements [,idstoffset, isrcoffset]
--   
-- -- -- -- Copies a vector from one table to another. -- -- vcopy_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut -- | Vectorial Envelope Generators module CsoundExpr.Opcodes.Vectorial.EnvelopeGenerators -- | -- --
--   vlinseg ifnout, ielements, ifn1, idur1, ifn2 [, idur2, ifn3 [...]]
--   
-- -- -- -- Generate linear vectorial segments -- -- vlinseg :: Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   vexpseg ifnout, ielements, ifn1, idur1, ifn2 [, idur2, ifn3 [...]]
--   
-- -- -- -- Generate exponential vectorial segments -- -- vexpseg :: Irate -> Irate -> [Irate] -> SignalOut -- | -- --
--   vcella ktrig, kreinit, ioutFunc, initStateFunc, 
--       iRuleFunc, ielements, irulelen [, iradius]
--   
-- -- -- -- Unidimensional Cellular Automata applied to Csound vectors -- -- vcella :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | Limiting and wrapping of vectorial control signals module CsoundExpr.Opcodes.Vectorial.Vectorialimiting -- | -- --
--   vlimit ifn, kmin, kmax, ielements
--   
-- -- -- -- Limits elements of vectorial control signals. -- -- vlimit :: (K k0, K k1) => Irate -> k0 -> k1 -> Irate -> SignalOut -- | -- --
--   vwrap ifn, kmin, kmax, ielements
--   
-- -- -- -- Wraps elements of vectorial control signals. -- -- vwrap :: (K k0, K k1) => Irate -> k0 -> k1 -> Irate -> SignalOut -- | -- --
--   vmirror ifn, kmin, kmax, ielements
--   
-- -- -- -- Reflects elements of vectorial control signals on thresholds. -- -- vmirror :: (K k0, K k1) => Irate -> k0 -> k1 -> Irate -> SignalOut -- | Vectorial Control-rate Delay Paths module CsoundExpr.Opcodes.Vectorial.Vectorialdelay -- | -- --
--   kout vdelayk iksig, kdel, imaxdel [, iskip, imode]
--   
-- -- -- -- Variable delay applied to a k-rate signal -- -- vdelayk :: K k0 => [Irate] -> Irate -> k0 -> Irate -> Krate -- | -- --
--   vport ifn, khtime, ielements [, ifnInit]
--   
-- -- -- -- Generate a sort of vectorial portamento -- -- vport :: K k0 => [Irate] -> Irate -> k0 -> Irate -> SignalOut -- | -- --
--   vecdelay ifn, ifnIn, ifnDel, ielements, imaxdel [, iskip]
--   
-- -- -- -- Generate a sort of vectorial delay -- -- vecdelay :: [Irate] -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut -- | Vectorial Random Signal Generators module CsoundExpr.Opcodes.Vectorial.Vectorialrandom -- | -- --
--   vrandh ifn, krange, kcps, ielements [, idstoffset] [, iseed] [, isize] [, ioffset]
--   
-- -- -- -- 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'. -- -- vrandh :: (K k0, K k1) => [Irate] -> Irate -> k0 -> k1 -> Irate -> SignalOut -- | -- --
--   vrandi ifn, krange, kcps, ielements [, idstoffset] [, iseed] [, isize] [, ioffset]
--   
-- -- -- -- Generate a sort of 'vectorial band-limited noise' -- -- vrandi :: (K k0, K k1) => [Irate] -> Irate -> k0 -> k1 -> Irate -> SignalOut -- | Vectorial Opcodes module CsoundExpr.Opcodes.Vectorial -- | Zak Patch System module CsoundExpr.Opcodes.Zak.Top -- | -- --
--   zacl kfirst, klast
--   
-- -- -- -- Clears one or more variables in the za space. -- -- zacl :: (K k0, K k1) => k0 -> k1 -> SignalOut -- | -- --
--   zakinit isizea, isizek
--   
-- -- -- -- Establishes zak space. Must be called only once. -- -- zakinit :: Irate -> Irate -> SignalOut -- | -- --
--   ares zamod asig, kzamod
--   
-- -- -- -- Modulates one a-rate signal by a second one. -- -- zamod :: K k0 => Arate -> k0 -> Arate -- | -- --
--   ares zar kndx
--   
-- -- -- -- Reads from a location in za space at a-rate. -- -- zar :: K k0 => k0 -> Arate -- | -- --
--   ares zarg kndx, kgain
--   
-- -- -- -- Reads from a location in za space at a-rate, adds some gain. -- -- zarg :: (K k0, K k1) => k0 -> k1 -> Arate -- | -- --
--   zaw asig, kndx
--   
-- -- -- -- Writes to a za variable at a-rate without mixing. -- -- zaw :: K k0 => Arate -> k0 -> SignalOut -- | -- --
--   zawm asig, kndx [, imix]
--   
-- -- -- -- Writes to a za variable at a-rate with mixing. -- -- zawm :: K k0 => [Irate] -> Arate -> k0 -> SignalOut -- | -- --
--   zkcl kfirst, klast
--   
-- -- -- -- Clears one or more variables in the zk space. -- -- zkcl :: (K k0, K k1) => k0 -> k1 -> SignalOut -- | -- --
--   kres zkmod ksig, kzkmod
--   
-- -- -- -- Facilitates the modulation of one signal by another. -- -- zkmod :: (K k0, K k1) => k0 -> k1 -> Krate -- | -- --
--   kres zkr kndx
--   
-- -- -- -- Reads from a location in zk space at k-rate. -- -- zkr :: K k0 => k0 -> Krate -- | -- --
--   zkw ksig, kndx
--   
-- -- -- -- Writes to a zk variable at k-rate without mixing. -- -- zkw :: (K k0, K k1) => k0 -> k1 -> SignalOut -- | -- --
--   zkwm ksig, kndx [, imix]
--   
-- -- -- -- Writes to a zk variable at k-rate with mixing. -- -- zkwm :: (K k0, K k1) => [Irate] -> k0 -> k1 -> SignalOut -- | -- --
--   ir zir indx
--   
-- -- -- -- Reads from a location in zk space at i-rate. -- -- zir :: Irate -> Irate -- | -- --
--   ziw isig, indx
--   
-- -- -- -- Writes to a zk variable at i-rate without mixing. -- -- ziw :: Irate -> Irate -> SignalOut -- | -- --
--   ziwm isig, indx [, imix]
--   
-- -- -- -- Writes to a zk variable to an i-rate variable with mixing. -- -- ziwm :: [Irate] -> Irate -> Irate -> SignalOut -- | Zak Patch System module CsoundExpr.Opcodes.Zak -- | DSSI and LADSPA for Csound module CsoundExpr.Opcodes.Plugin.Dssi4cs -- | -- --
--   ihandle dssiinit ilibraryname, iplugindex [, iverbose]
--   
-- -- -- -- dssiinit is used to load a DSSI or LADSPA plugin into memory for use -- with the other dssi4cs opcodes. Both LADSPA effects and DSSI -- instruments can be used. -- -- dssiinit :: [Irate] -> Irate -> Irate -> Irate -- | -- --
--   dssiactivate ihandle, ktoggle
--   
-- -- -- -- dssiactivate is used to activate or deactivate a DSSI or LADSPA -- plugin. It calles the plugin's activate() and deactivate() functions -- if they are provided. -- -- dssiactivate :: K k0 => Irate -> k0 -> SignalOut -- | -- --
--   dssilist
--   
-- -- -- -- dssilist checks the variables DSSI_PATH and LADSPA_PATH and lists all -- plugins available in all plugin libraries there. -- -- dssilist :: SignalOut -- | -- --
--   aout1 [, aout2, aout3, aout4] dssiaudio ihandle, ain1 [,ain2, ain3, ain4]
--   
-- -- -- -- dssiaudio generates audio by processing an input signal through a -- LADSPA plugin. -- -- dssiaudio :: [Arate] -> Irate -> Arate -> MultiOut -- | -- --
--   dssictls ihandle, iport, kvalue, ktrigger
--   
-- -- -- -- dssictls sends control values to a plugin's control port -- -- dssictls :: (K k0, K k1) => Irate -> Irate -> k0 -> k1 -> SignalOut -- | VST for Csound module CsoundExpr.Opcodes.Plugin.Vst4cs -- | -- --
--   instance vstinit ilibrarypath [,iverbose]
--   
-- -- -- -- vstinit is used to load a VST plugin into memory for use with the -- other vst4cs opcodes. Both VST effects and instruments (synthesizers) -- can be used. -- -- vstinit :: [Irate] -> Irate -> Irate -- | -- --
--   vstmidiout instance, kstatus, kchan, kdata1, kdata2
--   
-- -- -- -- vstmidiout is used for sending MIDI information to a VST plugin. -- -- vstmidiout :: (K k0, K k1, K k2, K k3) => Irate -> k0 -> k1 -> k2 -> k3 -> SignalOut -- | -- --
--   vstnote instance, kchan, knote, kveloc, kdur
--   
-- -- -- -- vstnote sends a MIDI note with definite duration to a VST plugin. -- -- vstnote :: (K k0, K k1, K k2, K k3) => Irate -> k0 -> k1 -> k2 -> k3 -> SignalOut -- | -- --
--   vstinfo instance
--   
-- -- -- -- vstinfo displays the parameters and the programs of a VST plugin. -- -- vstinfo :: Irate -> SignalOut -- | -- --
--   vstbankload instance, ipath
--   
-- -- -- -- vstbankload is used for loading parameter banks to a VST plugin. -- -- vstbankload :: Irate -> Irate -> SignalOut -- | -- --
--   vstprogset instance, kprogram
--   
-- -- -- -- vstprogset sets one of the programs in an .fxb bank. -- -- vstprogset :: K k0 => Irate -> k0 -> SignalOut -- | -- --
--   vstedit instance
--   
-- -- -- -- vstedit opens the custom GUI editor widow for a VST plugin. Note that -- not all VST plugins have custom GUI editors. It may be necessary to -- use the --displays command-line option to ensure that Csound handles -- events from the editor window and displays it properly. -- -- vstedit :: Irate -> SignalOut -- | Plugin Hosting module CsoundExpr.Opcodes.Plugin -- | OSC module CsoundExpr.Opcodes.OSCNetwork.OSC -- | -- --
--   ihandle OSCinit iport
--   
-- -- -- -- Starts a listening process, which can be used by OSClisten. -- -- oscInit :: Irate -> Irate -- | -- --
--   kans OSClisten ihandle, idest, itype [, xdata1, xdata2,...]
--   
-- -- -- -- On each k-cycle looks to see if an OSC message has been send to a -- given path of a given type. -- -- oscListen :: X x0 => Irate -> Irate -> Irate -> [x0] -> Krate -- | -- --
--   OSCsend kwhen, ihost, iport, idestination, itype [, kdata1, kdata2,...]
--   
-- -- -- -- Uses the OSC protocol to send message to other OSC listening -- processes. -- -- oscSend :: (K k0, K k1) => k0 -> Irate -> Irate -> Irate -> Irate -> [k1] -> SignalOut -- | Network module CsoundExpr.Opcodes.OSCNetwork.Network -- | -- --
--   asig sockrecv iport, ilength
--   asigl, asigr sockrecvs iport, ilength
--   asig strecv Sipaddr, iport
--   
-- -- -- -- Receives directly using the UDP (sockrecv and sockrecvs) or TCP -- (strecv) protocol onto a network. The data is not subject to any -- encoding or special routing. The sockrecvs opcode receives a stereo -- signal interleaved. -- -- sockrecv :: Irate -> Irate -> Arate -- | -- --
--   socksend asig, Sipaddr, iport, ilength
--   socksends asigl, asigr, Sipaddr, iport, ilength
--   stsend asig, Sipaddr, iport
--   
-- -- -- -- Transmits data directly using the UDP (socksend and socksends) or TCP -- (stsend) protocol onto a network. The data is not subject to any -- encoding or special routing. The socksends opcode send a stereo signal -- interleaved. -- -- socksend :: Arate -> String -> Irate -> Irate -> SignalOut -- | Remote Opcodes module CsoundExpr.Opcodes.OSCNetwork.Remote -- | -- --
--   remoteport iportnum
--   
-- -- -- -- Defines the port for use with the insremot, midremot, insglobal and -- midglobal opcodes. -- -- remoteport :: Irate -> SignalOut -- | OSC and Network module CsoundExpr.Opcodes.OSCNetwork -- | Mixer Opcodes module CsoundExpr.Opcodes.MixerOpcodes.MixerOpcodes -- | -- --
--   MixerSend asignal, isend, ibuss, ichannel
--   
-- -- -- -- Mixes an arate signal into a channel of a buss. -- -- mixerSend :: Arate -> Irate -> Irate -> Irate -> SignalOut -- | -- --
--   asignal MixerReceive ibuss, ichannel
--   
-- -- -- -- Receives an arate signal that has been mixed onto a channel of a buss. -- -- mixerReceive :: Irate -> Irate -> Arate -- | -- --
--   MixerSetLevel isend, ibuss, kgain
--   
-- -- -- -- Sets the level at which signals from the send are added to the buss. -- The actual sending of the signal to the buss is performed by the -- MixerSend opcode. -- -- mixerSetLevel :: K k0 => Irate -> Irate -> k0 -> SignalOut -- | -- --
--   MixerSetLevel_i isend, ibuss, igain
--   
-- -- -- -- Sets the level at which signals from the send are added to the buss. -- This opcode, because all parameters are irate, may be used in the -- orchestra header. The actual sending of the signal to the buss is -- performed by the MixerSend opcode. -- -- mixerSetLevel_i :: Irate -> Irate -> Irate -> SignalOut -- | -- --
--   kgain MixerGetLevel isend, ibuss
--   
-- -- -- -- Gets the level at which signals from the send are being added to the -- buss. The actual sending of the signal to the buss is performed by the -- MixerSend opcode. -- -- mixerGetLevel :: Irate -> Irate -> Krate -- | -- --
--   MixerClear
--   
-- -- -- -- Resets all channels of a buss to 0. -- -- mixerClear :: SignalOut -- | Mixer Opcodes module CsoundExpr.Opcodes.MixerOpcodes -- | Signal Flow Graph Opcodes module CsoundExpr.Opcodes.SignalFlowGraphOpcodes.SignalFlowGraphOpcodes -- | -- --
--   outleta Sname, asignal
--   
-- -- -- -- Sends an arate signal out from an instrument to a named port. -- -- outleta :: String -> Arate -> SignalOut -- | -- --
--   outletk Sname, ksignal
--   
-- -- -- -- Sends a krate signal out from an instrument to a named port. -- -- outletk :: K k0 => String -> k0 -> SignalOut -- | -- --
--   asignal inleta Sname
--   
-- -- -- -- Receives an arate signal into an instrument through a named port. -- -- inleta :: String -> Arate -- | -- --
--   ksignal inletk Sname
--   
-- -- -- -- Receives a krate signal into an instrument from a named port. -- -- inletk :: String -> Krate -- | -- --
--   ifno ftgenonce ip1dummy, ip2dummy, isize, igen, iarga, iargb,...
--   
-- -- -- -- Generate a function table from within an instrument definition, -- without duplication of data. -- -- ftgenonce :: Irate -> Irate -> Irate -> Irate -> [Irate] -> Irate -- | Signal Flow Graph Opcodes module CsoundExpr.Opcodes.SignalFlowGraphOpcodes -- | Image processing opcodes module CsoundExpr.Opcodes.Imageopcodes.Top -- | -- --
--   iimagenum imagecreate iwidth, iheight
--   
-- -- -- -- Create an empty image of a given size. Individual pixel values can -- then be set with. imagegetpixel. -- -- imagecreate :: Irate -> Irate -> Irate -- | -- --
--   iwidth iheight imagesize iimagenum
--   
-- -- -- -- Return the width and height of a previously opened or created image. -- An image can be loaded with imageload. An empty image can be created -- with imagecreate. -- -- imagesize :: Irate -> MultiOut -- | -- --
--   ared agreen ablue imagegetpixel iimagenum, ax, ay
--   kred kgreen kblue imagegetpixel iimagenum, kx, ky
--   
-- -- -- -- Return the RGB pixel values of a previously opened or created image. -- An image can be loaded with imageload. An empty image can be created -- with imagecreate. -- -- imagegetpixelA :: Irate -> Arate -> Arate -> MultiOut -- | -- --
--   ared agreen ablue imagegetpixel iimagenum, ax, ay
--   kred kgreen kblue imagegetpixel iimagenum, kx, ky
--   
-- -- -- -- Return the RGB pixel values of a previously opened or created image. -- An image can be loaded with imageload. An empty image can be created -- with imagecreate. -- -- imagegetpixelK :: (K k0, K k1) => Irate -> k0 -> k1 -> MultiOut -- | -- --
--   imagefree iimagenum
--   
-- -- -- -- Frees memory allocated for a previously loaded or created image. -- -- imagefree :: Irate -> SignalOut -- | Image processing opcodes module CsoundExpr.Opcodes.Imageopcodes -- | Miscellaneous opcodes module CsoundExpr.Opcodes.Miscopcodes.Top -- | -- --
--   ires system_i itrig, Scmd, [inowait]
--   kres system ktrig, Scmd, [knowait]
--   
-- -- -- -- system and system_i call any external command understood by the -- operating system, similarly to the C function system(). system_i runs -- at i-time only, while system runs both at initialization and -- performance time. -- -- system :: (K k0, K k1) => [k0] -> k1 -> String -> Krate -- | -- --
--   modmatrix iresfn, isrcmodfn, isrcparmfn, imodscale, inum_mod, 
--       inum_parm, kupdate
--   
-- -- -- -- The opcode can be used to let a large number of k-rate modulator -- variables modulate a large number of k-rate parameter variables, with -- arbitrary scaling of each modulator-to-parameter connection. Csound -- ftables are used to hold both the input (parameter) variables, the -- modulator variables, and the scaling coefficients. Output variables -- are written to another Csound ftable. -- -- modmatrix :: K k0 => Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> k0 -> SignalOut -- | Miscellaneous opcodes module CsoundExpr.Opcodes.Miscopcodes -- | Csound opcodes module CsoundExpr.Opcodes -- | basic combinators and types -- -- Imports all Base modules, but -- CsoundExpr.Base.UserDefined and CsoundExpr.Base.Pitch. module CsoundExpr.Base -- | Csound pitch constants module CsoundExpr.Base.Pitch type Pitch = Irate type Octave = Int -- | low shifts pitch one octave lower low :: Pitch -> Pitch -- | high shifts pitch one octave higher high :: Pitch -> Pitch -- | lower shifts pitch by n octaves lower lower :: Octave -> Pitch -> Pitch -- | higher shifts pitch by n octaves higher higher :: Octave -> Pitch -> Pitch c :: Pitch cs :: Pitch d :: Pitch ds :: Pitch e :: Pitch es :: Pitch f :: Pitch fs :: Pitch g :: Pitch gs :: Pitch a :: Pitch as :: Pitch b :: Pitch bs :: Pitch cb :: Pitch db :: Pitch eb :: Pitch fb :: Pitch gb :: Pitch ab :: Pitch bb :: Pitch -- | Library csound-expression allows csound code construction in -- functional way. -- -- It has two parts CsoundExpr.Base and CsoundExpr.Opcodes. -- First part Csound.Base contains essential functionality of the -- package. Second part Csound.Opcodes contains opcode -- definitions. -- -- This module provides overview of the library. For examples see -- sources, folder examples module CsoundExpr