-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Csound combinator library
--
-- Csound code generator. See CsoundExpr.Tutorial for guides and
-- examples.
@package csound-expression
@version 0.0.3
-- | This chapter explains some limitations and hack-features of library.
--
--
module CsoundExpr.Tutorial.Limits
-- | Csound-expression allows csound code construction in functional way.
--
-- It has two parts CsoundExpr.Base and CsoundExpr.Opcodes.
-- Csound.Base contains essential functionality of the package.
-- Csound code can be produced with Csound.Base.
-- Csound.Opcodes contains auxillary functions to build csound
-- instruments.
--
-- Tutorial contents :
--
--
--
-- score section
--
--
--
-- orchestra section
--
--
--
-- explains hack-features, limitations
--
-- Note :
--
-- Feel free to report english-language bugs in tutorial or in docs.
module CsoundExpr.Tutorial
-- | 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
-- | 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
module CsoundExpr.Base.Score
-- | composing structures in sequent and parallel ways
class Arrangeable a
(+:+) :: (Arrangeable a) => a -> a -> a
(=:=) :: (Arrangeable a) => a -> a -> a
type Time = Double
type Dur = Time
-- | representing score
type Score a = MediaUnit Dur () a
-- | transform Score to EventList
toList :: Score a -> EventList Dur a
-- | duration
dur :: (Temporal Dur a) => a -> Dur
-- | pause
rest :: (Temporal Dur a) => Dur -> a
-- | stretch in time domain
stretch :: (Stretchable Dur a) => Dur -> a -> a
-- | constructor of score
note :: Dur -> a -> Score a
delay :: (Temporal Dur a, Arrangeable a) => Dur -> a -> a
-- | sequential composition
line :: (Arrangeable a) => [a] -> a
-- | parallel composition
chord :: (Arrangeable a) => [a] -> a
loop :: (Arrangeable a) => Int -> a -> a
-- | extracting score parts in some time interval. it reverses output if
-- t1 < t0.
cut :: Dur -> Dur -> Score a -> Score a
-- | temporal functor
tmap :: (Dur -> a -> b) -> Score a -> Score b
-- | 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 a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26, Assign a27, Assign a28, Assign a29, Assign a30, Assign a31) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26, Assign a27, Assign a28, Assign a29, Assign a30) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26, Assign a27, Assign a28, Assign a29) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26, Assign a27, Assign a28) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26, Assign a27) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25, Assign a26) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24, Assign a25) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23, Assign a24) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22, Assign a23) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21, Assign a22) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20, Assign a21) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19, Assign a20) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18, Assign a19) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17, Assign a18) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16, Assign a17) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15, Assign a16) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14, Assign a15) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13, Assign a14) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12, Assign a13) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11, Assign a12) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10, Assign a11) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9, Assign a10) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8, Assign a9) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
instance (Assign a0, Assign a1, Assign a2, Assign a3, Assign a4, Assign a5, Assign a6, Assign a7, Assign a8) => Assign (a0, a1, a2, a3, a4, a5, a6, a7, a8)
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
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)
mo9 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8)
mo10 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
mo11 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
mo12 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
mo13 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
mo14 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
mo15 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
mo16 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
mo17 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)
mo18 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17)
mo19 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18)
mo20 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)
mo21 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
mo22 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21)
mo23 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21, X a22) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22)
mo24 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21, X a22, X a23) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23)
mo25 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21, X a22, X a23, X a24) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24)
mo26 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21, X a22, X a23, X a24, X a25) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25)
mo27 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21, X a22, X a23, X a24, X a25, X a26) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26)
mo28 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21, X a22, X a23, X a24, X a25, X a26, X a27) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27)
mo29 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21, X a22, X a23, X a24, X a25, X a26, X a27, X a28) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28)
mo30 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21, X a22, X a23, X a24, X a25, X a26, X a27, X a28, X a29) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29)
mo31 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21, X a22, X a23, X a24, X a25, X a26, X a27, X a28, X a29, X a30) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30)
mo32 :: (X a0, X a1, X a2, X a3, X a4, X a5, X a6, X a7, X a8, X a9, X a10, X a11, X a12, X a13, X a14, X a15, X a16, X a17, X a18, X a19, X a20, X a21, X a22, X a23, X a24, X a25, X a26, X a27, X a28, X a29, X a30, X a31) => MultiOut -> (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31)
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)
moA16 :: MultiOut -> (Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate)
moA24 :: MultiOut -> (Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate, Arate)
moA32 :: MultiOut -> (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, 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)
moK16 :: MultiOut -> (Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate)
moK24 :: MultiOut -> (Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate)
moK32 :: MultiOut -> (Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, Krate, 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)
moI16 :: MultiOut -> (Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate)
moI24 :: MultiOut -> (Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate)
moI32 :: MultiOut -> (Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, Irate, 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
-- | Scaling
(<*) :: (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 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 0, f 0, a 0, d 1]
--
-- main = print $ csd flags header $ toList 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
-- | 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
-- |
-- - opcode : adsyn
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : adsynt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : adsynt2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : hsboscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscbnk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscil3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscil3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscili
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscili
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscils
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poscil3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poscil3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscilikt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscilikt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : osciliktp
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscilikts
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : osciln
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lfo
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lfo
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vibr
-- - syntax :
--
--
--
-- kout vibr kAverageAmp, kAverageFreq, ifn
--
--
--
--
-- Easier-to-use user-controllable vibrato.
--
--
vibr :: (K k0, K k1) => k0 -> k1 -> Irate -> Krate
-- |
-- - opcode : vibrato
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : buzz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : gbuzz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mpulse
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vco
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vco2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vco2init
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vco2ft
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vco2ift
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : foscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : foscili
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : crossfm
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : crossfmi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : crosspm
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : crosspmi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : crossfmpm
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : crossfmpmi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fmb3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fmbell
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fmmetal
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fmpercfl
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fmrhode
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fmvoice
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fmwurlie
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : diskgrain
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fof
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fof2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fog
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : grain
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : grain2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : grain3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : granule
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : partikkel
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : partikkelsync
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sndwarp
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sndwarpst
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : syncgrain
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : syncloop
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vosim
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vphaseseg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : hvs1
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : hvs2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : hvs3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : expon
-- - syntax :
--
--
--
-- ares expon ia, idur, ib
-- kres expon ia, idur, ib
--
--
--
--
-- Trace an exponential curve between specified points.
--
--
exponA :: Irate -> Irate -> Irate -> Arate
-- |
-- - opcode : expon
-- - syntax :
--
--
--
-- ares expon ia, idur, ib
-- kres expon ia, idur, ib
--
--
--
--
-- Trace an exponential curve between specified points.
--
--
exponK :: Irate -> Irate -> Irate -> Krate
-- |
-- - opcode : expcurve
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : expseg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : expseg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : expsega
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : expsegr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : expsegr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : gainslider
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : jspline
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : jspline
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : line
-- - syntax :
--
--
--
-- ares line ia, idur, ib
-- kres line ia, idur, ib
--
--
--
--
-- Trace a straight line between specified points.
--
--
lineA :: Irate -> Irate -> Irate -> Arate
-- |
-- - opcode : line
-- - syntax :
--
--
--
-- ares line ia, idur, ib
-- kres line ia, idur, ib
--
--
--
--
-- Trace a straight line between specified points.
--
--
lineK :: Irate -> Irate -> Irate -> Krate
-- |
-- - opcode : linseg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linseg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linsegr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linsegr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : logcurve
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : loopseg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : loopsegp
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lpshold
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lpsholdp
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rspline
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rspline
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : scale
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : transeg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : transeg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : adsr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : adsr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : madsr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : madsr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mxadsr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mxadsr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : xadsr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : xadsr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linen
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linen
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linenr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linenr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : envlpx
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : envlpx
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : envlpxr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : envlpxr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bamboo
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : barmodel
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cabasa
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : crunch
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dripwater
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : gogobel
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : guiro
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mandol
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : marimba
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : moog
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sandpaper
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sekere
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : shaker
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sleighbells
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : stix
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tambourine
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vibes
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : voice
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lorenz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : planet
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : prepiano
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : prepiano
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mandel
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chuap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : phasor
-- - syntax :
--
--
--
-- ares phasor xcps [, iphs]
-- kres phasor kcps [, iphs]
--
--
--
--
-- Produce a normalized moving phase value.
--
--
phasorA :: (X x0) => [Irate] -> x0 -> Arate
-- |
-- - opcode : phasor
-- - syntax :
--
--
--
-- ares phasor xcps [, iphs]
-- kres phasor kcps [, iphs]
--
--
--
--
-- Produce a normalized moving phase value.
--
--
phasorK :: (K k0) => [Irate] -> k0 -> Krate
-- |
-- - opcode : phasorbnk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : phasorbnk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : syncphasor
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bexprnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bexprnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bexprnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bexprnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bexprnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bexprnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cuserrnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cuserrnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cuserrnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cuserrnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cuserrnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cuserrnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : duserrnd
-- - syntax :
--
--
--
-- aout duserrnd ktableNum
-- iout duserrnd itableNum
-- kout duserrnd ktableNum
--
--
--
--
-- Discrete USER-defined-distribution RaNDom generator.
--
--
duserrndA' :: (K k0) => k0 -> Arate
-- |
-- - opcode : duserrnd
-- - syntax :
--
--
--
-- aout duserrnd ktableNum
-- iout duserrnd itableNum
-- kout duserrnd ktableNum
--
--
--
--
-- Discrete USER-defined-distribution RaNDom generator.
--
--
duserrndA :: (K k0) => k0 -> SideEffect Arate
-- |
-- - opcode : duserrnd
-- - syntax :
--
--
--
-- aout duserrnd ktableNum
-- iout duserrnd itableNum
-- kout duserrnd ktableNum
--
--
--
--
-- Discrete USER-defined-distribution RaNDom generator.
--
--
duserrndI' :: Irate -> Irate
-- |
-- - opcode : duserrnd
-- - syntax :
--
--
--
-- aout duserrnd ktableNum
-- iout duserrnd itableNum
-- kout duserrnd ktableNum
--
--
--
--
-- Discrete USER-defined-distribution RaNDom generator.
--
--
duserrndI :: Irate -> SideEffect Irate
-- |
-- - opcode : duserrnd
-- - syntax :
--
--
--
-- aout duserrnd ktableNum
-- iout duserrnd itableNum
-- kout duserrnd ktableNum
--
--
--
--
-- Discrete USER-defined-distribution RaNDom generator.
--
--
duserrndK' :: (K k0) => k0 -> Krate
-- |
-- - opcode : duserrnd
-- - syntax :
--
--
--
-- aout duserrnd ktableNum
-- iout duserrnd itableNum
-- kout duserrnd ktableNum
--
--
--
--
-- Discrete USER-defined-distribution RaNDom generator.
--
--
duserrndK :: (K k0) => k0 -> SideEffect Krate
-- |
-- - opcode : exprand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : exprand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : exprand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : exprand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : exprand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : exprand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : gauss
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : gauss
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : gauss
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : gauss
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : gauss
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : gauss
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linrand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linrand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linrand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linrand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linrand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : linrand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : noise
-- - syntax :
--
--
--
-- ares noise xamp, kbeta
--
--
--
--
-- A white noise generator with an IIR lowpass filter.
--
--
noise' :: (X x0, K k0) => x0 -> k0 -> Arate
-- |
-- - opcode : noise
-- - syntax :
--
--
--
-- ares noise xamp, kbeta
--
--
--
--
-- A white noise generator with an IIR lowpass filter.
--
--
noise :: (X x0, K k0) => x0 -> k0 -> SideEffect Arate
-- |
-- - opcode : pcauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pcauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pcauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pcauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pcauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pcauchy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pinkish
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pinkish
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poisson
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poisson
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poisson
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poisson
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poisson
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : poisson
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randh
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randh
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rnd31
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rnd31
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rnd31
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rnd31
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rnd31
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rnd31
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : random
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : random
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : random
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : random
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : random
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : random
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randomh
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randomh
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randomh
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randomh
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randomi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randomi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randomi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : randomi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : trirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : trirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : trirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : trirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : trirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : trirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : unirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : unirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : unirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : unirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : unirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : unirand
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : urd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : urd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : urd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : urd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : urd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : urd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : weibull
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : weibull
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : weibull
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : weibull
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : weibull
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : weibull
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : jitter
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : jitter
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : jitter2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : jitter2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : trandom
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : trandom
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bbcutm
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bbcuts
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : flooper
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : flooper2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : loscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : loscil3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : loscilx
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lphasor
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lposcil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lposcil3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lposcila
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lposcilsa
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lposcilsa2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sndloop
-- - syntax :
--
--
--
-- 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)
-- |
-- - opcode : waveset
-- - syntax :
--
--
--
-- ares waveset ain, krep [, ilen]
--
--
--
--
-- A simple time stretch by repeating cycles.
--
--
waveset :: (K k0) => [Irate] -> Arate -> k0 -> Arate
-- |
-- - opcode : fluidAllOut
-- - syntax :
--
--
--
-- aleft, aright fluidAllOut
--
--
--
--
-- Collects all audio from all Fluidsynth engines in a performance
--
--
fluidAllOut :: MultiOut
-- |
-- - opcode : fluidCCi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fluidCCk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fluidControl
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fluidEngine
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fluidLoad
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fluidNote
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fluidOut
-- - syntax :
--
--
--
-- aleft, aright fluidOut ienginenum
--
--
--
--
-- Outputs the sound from a fluidEngine.
--
--
fluidOut :: Irate -> MultiOut
-- |
-- - opcode : fluidProgramSelect
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fluidSetInterpMethod
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfilist
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfinstr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfinstr3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfinstr3m
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfinstrm
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfload
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfpassign
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfplay
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfplay3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfplay3m
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfplaym
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sflooper
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfplist
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sfpreset
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : scanhammer
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : scans
-- - syntax :
--
--
--
-- ares scans kamp, kfreq, ifn, id [, iorder]
--
--
--
--
-- Generate audio output using scanned synthesis.
--
--
scans :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Irate -> Irate -> Arate
-- |
-- - opcode : scantable
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : scanu
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : xscanmap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : xscans
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : xscansmap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : xscanu
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : oscil1
-- - syntax :
--
--
--
-- kres oscil1 idel, kamp, idur, ifn
--
--
--
--
-- Accesses table values by incremental sampling.
--
--
oscil1 :: (K k0) => Irate -> k0 -> Irate -> Irate -> Krate
-- |
-- - opcode : oscil1i
-- - syntax :
--
--
--
-- kres oscil1i idel, kamp, idur, ifn
--
--
--
--
-- Accesses table values by incremental sampling with linear
-- interpolation.
--
--
oscil1i :: (K k0) => Irate -> k0 -> Irate -> Irate -> Krate
-- |
-- - opcode : table
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : table
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : table
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : table3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : table3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : table3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablei
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablei
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablei
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tab
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tab
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tab_i
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tabw
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tabw
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tabw_i
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wterrain
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pluck
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : repluck
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wgbow
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wgbowedbar
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wgbrass
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wgclar
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wgflute
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wgpluck
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wgpluck2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wguide1
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wguide2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fiopen
-- - syntax :
--
--
--
-- ihandle fiopen ifilename, imode
--
--
--
--
-- fiopen can be used to open a file in one of the specified modes.
--
--
fiopen :: Irate -> Irate -> Irate
-- |
-- - opcode : ficlose
-- - syntax :
--
--
--
-- ficlose ihandle
-- ficlose Sfilename
--
--
--
--
-- ficlose can be used to close a file which was opened with fiopen.
--
--
ficloseI :: Irate -> SignalOut
-- |
-- - opcode : ficlose
-- - syntax :
--
--
--
-- ficlose ihandle
-- ficlose Sfilename
--
--
--
--
-- ficlose can be used to close a file which was opened with fiopen.
--
--
ficloseS :: String -> SignalOut
-- |
-- - opcode : dumpk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dumpk2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dumpk3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dumpk4
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fout
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fouti
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : foutir
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : foutk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : readk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : readk2
-- - syntax :
--
--
--
-- kr1, kr2 readk2 ifilname, iformat, iprd
--
--
--
--
-- Periodically reads two orchestra control-signal values from an
-- external file.
--
--
readk2 :: Irate -> Irate -> Irate -> MultiOut
-- |
-- - opcode : readk3
-- - syntax :
--
--
--
-- kr1, kr2, kr3 readk3 ifilname, iformat, iprd
--
--
--
--
-- Periodically reads three orchestra control-signal values from an
-- external file.
--
--
readk3 :: Irate -> Irate -> Irate -> MultiOut
-- |
-- - opcode : readk4
-- - syntax :
--
--
--
-- kr1, kr2, kr3, kr4 readk4 ifilname, iformat, iprd
--
--
--
--
-- Periodically reads four orchestra control-signal values from an
-- external file.
--
--
readk4 :: Irate -> Irate -> Irate -> MultiOut
-- |
-- - opcode : fin
-- - syntax :
--
--
--
-- fin ifilename, iskipframes, iformat, ain1 [, ain2] [, ain3] [,...]
--
--
--
--
-- Read signals from a file at a-rate.
--
--
fin :: String -> Irate -> Irate -> [Arate] -> SignalOut
-- |
-- - opcode : fini
-- - syntax :
--
--
--
-- fini ifilename, iskipframes, iformat, in1 [, in2] [, in3] [,...]
--
--
--
--
-- Read signals from a file at i-rate.
--
--
fini :: String -> Irate -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : fink
-- - syntax :
--
--
--
-- fink ifilename, iskipframes, iformat, kin1 [, kin2] [, kin3] [,...]
--
--
--
--
-- Read signals from a file at k-rate.
--
--
fink :: (K k0) => String -> Irate -> Irate -> [k0] -> SignalOut
-- |
-- - opcode : clear
-- - syntax :
--
--
--
-- clear avar1 [, avar2] [, avar3] [...]
--
--
--
--
-- clear zeroes a list of audio signals.
--
--
clear :: [Arate] -> SignalOut
-- |
-- - opcode : vincr
-- - syntax :
--
--
--
-- vincr accum, aincr
--
--
--
--
-- vincr increments one audio variable with another signal, i.e. it
-- accumulates output.
--
--
vincr :: Arate -> Arate -> SignalOut
-- |
-- - opcode : fprints
-- - syntax :
--
--
--
-- fprints "filename", "string" [, ival1] [, ival2] [...]
--
--
--
--
-- Similar to prints but prints to a file.
--
--
fprints :: String -> String -> [Irate] -> SignalOut
-- |
-- - opcode : fprintks
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : in
-- - syntax :
--
--
--
-- ar1 in
--
--
--
--
-- Reads mono audio data from an external device or stream.
--
--
in' :: Arate
-- |
-- - opcode : in32
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : inch
-- - syntax :
--
--
--
-- ain inch kchan
--
--
--
--
-- Reads from a numbered channel in an external audio signal or stream.
--
--
inch :: (K k0) => k0 -> Arate
-- |
-- - opcode : inh
-- - syntax :
--
--
--
-- ar1, ar2, ar3, ar4, ar5, ar6 inh
--
--
--
--
-- Reads six-channel audio data from an external device or stream.
--
--
inh :: MultiOut
-- |
-- - opcode : ino
-- - syntax :
--
--
--
-- ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8 ino
--
--
--
--
-- Reads eight-channel audio data from an external device or stream.
--
--
ino :: MultiOut
-- |
-- - opcode : inq
-- - syntax :
--
--
--
-- ar1, ar2, ar3, a4 inq
--
--
--
--
-- Reads quad audio data from an external device or stream.
--
--
inq :: MultiOut
-- |
-- - opcode : inrg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ins
-- - syntax :
--
--
--
-- ar1, ar2 ins
--
--
--
--
-- Reads stereo audio data from an external device or stream.
--
--
ins :: MultiOut
-- |
-- - opcode : inx
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : diskin
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : diskin2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : soundin
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : invalue
-- - syntax :
--
--
--
-- kvalue invalue "channel name"
-- Sname invalue "channel name"
--
--
--
--
-- Reads a k-rate signal or string from a user-defined channel.
--
--
invalueK :: String -> Krate
-- |
-- - opcode : invalue
-- - syntax :
--
--
--
-- kvalue invalue "channel name"
-- Sname invalue "channel name"
--
--
--
--
-- Reads a k-rate signal or string from a user-defined channel.
--
--
invalueS :: String -> String
-- |
-- - opcode : inz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : out
-- - syntax :
--
--
--
-- out asig
--
--
--
--
-- Writes mono audio data to an external device or stream.
--
--
out :: Arate -> SignalOut
-- |
-- - opcode : out32
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outc
-- - syntax :
--
--
--
-- outc asig1 [, asig2] [...]
--
--
--
--
-- Writes audio data with an arbitrary number of channels to an external
-- device or stream.
--
--
outc :: (K k0) => k0 -> [Arate] -> SignalOut
-- |
-- - opcode : outch
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outh
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outo
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outrg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outq
-- - syntax :
--
--
--
-- outq asig1, asig2, asig3, asig4
--
--
--
--
-- Writes 4-channel audio data to an external device or stream.
--
--
outq :: Arate -> Arate -> Arate -> Arate -> SignalOut
-- |
-- - opcode : outq1
-- - syntax :
--
--
--
-- outq1 asig
--
--
--
--
-- Writes samples to quad channel 1 of an external device or stream.
--
--
outq1 :: Arate -> SignalOut
-- |
-- - opcode : outq2
-- - syntax :
--
--
--
-- outq2 asig
--
--
--
--
-- Writes samples to quad channel 2 of an external device or stream.
--
--
outq2 :: Arate -> SignalOut
-- |
-- - opcode : outq3
-- - syntax :
--
--
--
-- outq3 asig
--
--
--
--
-- Writes samples to quad channel 3 of an external device or stream.
--
--
outq3 :: Arate -> SignalOut
-- |
-- - opcode : outq4
-- - syntax :
--
--
--
-- outq4 asig
--
--
--
--
-- Writes samples to quad channel 4 of an external device or stream.
--
--
outq4 :: Arate -> SignalOut
-- |
-- - opcode : outs
-- - syntax :
--
--
--
-- outs asig1, asig2
--
--
--
--
-- Writes stereo audio data to an external device or stream.
--
--
outs :: Arate -> Arate -> SignalOut
-- |
-- - opcode : outs1
-- - syntax :
--
--
--
-- outs1 asig
--
--
--
--
-- Writes samples to stereo channel 1 of an external device or stream.
--
--
outs1 :: Arate -> SignalOut
-- |
-- - opcode : outs2
-- - syntax :
--
--
--
-- outs2 asig
--
--
--
--
-- Writes samples to stereo channel 2 of an external device or stream.
--
--
outs2 :: Arate -> SignalOut
-- |
-- - opcode : outx
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : soundout
-- - syntax :
--
--
--
-- soundout asig1, ifilcod [, iformat]
--
--
--
--
-- The usage of soundout is discouraged. Please use fout instead.
--
--
soundout :: [Irate] -> Arate -> String -> SignalOut
-- |
-- - opcode : soundouts
-- - syntax :
--
--
--
-- soundouts asigl, asigr, ifilcod [, iformat]
--
--
--
--
-- The usage of soundouts is discouraged. Please use fout instead.
--
--
soundouts :: [Irate] -> Arate -> Arate -> String -> SignalOut
-- |
-- - opcode : outvalue
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outvalue
-- - syntax :
--
--
--
-- outvalue "channel name", kvalue
-- outvalue "channel name", "string"
--
--
--
--
-- Sends a k-rate signal or string to a user-defined channel.
--
--
outvalueS :: String -> String -> SignalOut
-- |
-- - opcode : outz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chn_k
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chn_a
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chn_S
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnget
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnget
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnget
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnget
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnset
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnset
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnset
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnset
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnsend
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnsend
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnsend
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnsend
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnrecv
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnrecv
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnrecv
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnrecv
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnclear
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnmix
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chnparams
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dispfft
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : display
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : flashtxt
-- - syntax :
--
--
--
-- flashtxt iwhich, String
--
--
--
--
-- Allows text to be displayed from instruments like sliders etc. (only
-- on Unix and Windows at present)
--
--
flashtxt :: Irate -> String -> SignalOut
-- |
-- - opcode : print
-- - syntax :
--
--
--
-- print iarg [, iarg1] [, iarg2] [...]
--
--
--
--
-- These units will print orchestra init-values.
--
--
print' :: [Irate] -> SignalOut
-- |
-- - opcode : printf
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : printf_i
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : printk
-- - syntax :
--
--
--
-- printk itime, kval [, ispace]
--
--
--
--
-- Prints one k-rate value at specified intervals.
--
--
printk :: (K k0) => [Irate] -> Irate -> k0 -> SignalOut
-- |
-- - opcode : printk2
-- - syntax :
--
--
--
-- printk2 kvar [, inumspaces]
--
--
--
--
-- Prints a new value every time a control variable changes.
--
--
printk2 :: (K k0) => [Irate] -> k0 -> SignalOut
-- |
-- - opcode : printks
-- - syntax :
--
--
--
-- printks "string", itime [, kval1] [, kval2] [...]
--
--
--
--
-- Prints at k-rate using a printf() style syntax.
--
--
printks :: (K k0) => String -> Irate -> [k0] -> SignalOut
-- |
-- - opcode : prints
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : filelen
-- - syntax :
--
--
--
-- ir filelen ifilcod, [iallowraw]
--
--
--
--
-- Returns the length of a sound file.
--
--
filelen :: [Irate] -> String -> Irate
-- |
-- - opcode : filenchnls
-- - syntax :
--
--
--
-- ir filenchnls ifilcod [, iallowraw]
--
--
--
--
-- Returns the number of channels in a sound file.
--
--
filenchnls :: [Irate] -> String -> Irate
-- |
-- - opcode : filepeak
-- - syntax :
--
--
--
-- ir filepeak ifilcod [, ichnl]
--
--
--
--
-- Returns the peak absolute value of a sound file.
--
--
filepeak :: [Irate] -> String -> Irate
-- |
-- - opcode : filesr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : balance
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : compress
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : clip
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dam
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : gain
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : convolve
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cross2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dconv
-- - syntax :
--
--
--
-- ares dconv asig, isize, ifn
--
--
--
--
-- A direct convolution opcode.
--
--
dconv :: Arate -> Irate -> Irate -> Arate
-- |
-- - opcode : ftconv
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ftmorf
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pconvolve
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : delay
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : delay1
-- - syntax :
--
--
--
-- ares delay1 asig [, iskip]
--
--
--
--
-- Delays an input signal by one sample.
--
--
delay1 :: [Irate] -> Arate -> Arate
-- |
-- - opcode : delayk
-- - syntax :
--
--
--
-- kr delayk ksig, idel[, imode]
-- kr vdel_k ksig, kdel, imdel[, imode]
--
--
--
--
-- k-rate delay opcodes
--
--
delayk :: (K k0) => [Irate] -> k0 -> Irate -> Krate
-- |
-- - opcode : delayr
-- - syntax :
--
--
--
-- ares delayr idlt [, iskip]
--
--
--
--
-- Reads from an automatically established digital delay line.
--
--
delayr :: [Irate] -> Irate -> Arate
-- |
-- - opcode : delayw
-- - syntax :
--
--
--
-- delayw asig
--
--
--
--
-- Writes the audio signal to a digital delay line.
--
--
delayw :: Arate -> SignalOut
-- |
-- - opcode : deltap
-- - syntax :
--
--
--
-- ares deltap kdlt
--
--
--
--
-- Tap a delay line at variable offset times.
--
--
deltap :: (K k0) => k0 -> Arate
-- |
-- - opcode : deltap3
-- - syntax :
--
--
--
-- ares deltap3 xdlt
--
--
--
--
-- Taps a delay line at variable offset times, uses cubic interpolation.
--
--
deltap3 :: (X x0) => x0 -> Arate
-- |
-- - opcode : deltapi
-- - syntax :
--
--
--
-- ares deltapi xdlt
--
--
--
--
-- Taps a delay line at variable offset times, uses interpolation.
--
--
deltapi :: (X x0) => x0 -> Arate
-- |
-- - opcode : deltapn
-- - syntax :
--
--
--
-- ares deltapn xnumsamps
--
--
--
--
-- Tap a delay line at variable offset times.
--
--
deltapn :: (X x0) => x0 -> Arate
-- |
-- - opcode : deltapx
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : deltapxw
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vdelay
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vdelay3
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vdelayx
-- - syntax :
--
--
--
-- aout vdelayx ain, adl, imd, iws [, ist]
--
--
--
--
-- A variable delay opcode with high quality interpolation.
--
--
vdelayx :: [Irate] -> Arate -> Arate -> Irate -> Irate -> Arate
-- |
-- - opcode : vdelayxs
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vdelayxq
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vdelayxw
-- - syntax :
--
--
--
-- aout vdelayxw ain, adl, imd, iws [, ist]
--
--
--
--
-- Variable delay opcodes with high quality interpolation.
--
--
vdelayxw :: [Irate] -> Arate -> Arate -> Irate -> Irate -> Arate
-- |
-- - opcode : vdelayxwq
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vdelayxws
-- - syntax :
--
--
--
-- aout1, aout2 vdelayxws ain1, ain2, adl, imd, iws [, ist]
--
--
--
--
-- Variable delay opcodes with high quality interpolation.
--
--
vdelayxws :: [Irate] -> Arate -> Arate -> Arate -> Irate -> Irate -> MultiOut
-- |
-- - opcode : multitap
-- - syntax :
--
--
--
-- ares multitap asig [, itime1] [, igain1] [, itime2] [, igain2] [...]
--
--
--
--
-- Multitap delay line implementation.
--
--
multitap :: Arate -> [Irate] -> Arate
-- | Panning and Spatialization
module CsoundExpr.Opcodes.Sigmod.Panspatl
-- |
-- - opcode : locsend
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : locsig
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pan
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pan2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : space
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : spdist
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : spsend
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : spat3d
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : spat3di
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : spat3dt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vbap16
-- - syntax :
--
--
--
-- ar1,..., ar16 vbap16 asig, kazim [, kelev] [, kspread]
--
--
--
--
-- Distributes an audio signal among 16 channels.
--
--
vbap16 :: (K k0, K k1) => [k0] -> Arate -> k1 -> MultiOut
-- |
-- - opcode : vbap16move
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vbap4
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vbap4move
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vbap8
-- - syntax :
--
--
--
-- ar1,..., ar8 vbap8 asig, kazim [, kelev] [, kspread]
--
--
--
--
-- Distributes an audio signal among 8 channels.
--
--
vbap8 :: (K k0, K k1) => [k0] -> Arate -> k1 -> MultiOut
-- |
-- - opcode : vbap8move
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vbaplsinit
-- - syntax :
--
--
--
-- vbaplsinit idim, ilsnum [, idir1] [, idir2] [...] [, idir32]
--
--
--
--
-- Configures VBAP output according to loudspeaker parameters.
--
--
vbaplsinit :: Irate -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : vbapz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vbapzmove
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : hrtfer
-- - syntax :
--
--
--
-- aleft, aright hrtfer asig, kaz, kelev, HRTFcompact
--
--
--
--
-- Output is binaural (headphone) 3D audio.
--
--
hrtfer :: (K k0, K k1) => Arate -> k0 -> k1 -> MultiOut
-- |
-- - opcode : hrtfmove
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : hrtfmove2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : hrtfstat
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bformdec
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bformenc
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bformenc
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : alpass
-- - syntax :
--
--
--
-- ares alpass asig, krvt, ilpt [, iskip] [, insmps]
--
--
--
--
-- Reverberates an input signal with a flat frequency response.
--
--
alpass :: (K k0) => [Irate] -> Arate -> k0 -> Irate -> Arate
-- |
-- - opcode : babo
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : comb
-- - syntax :
--
--
--
-- ares comb asig, krvt, ilpt [, iskip] [, insmps]
--
--
--
--
-- Reverberates an input signal with a colored frequency response.
--
--
comb :: (K k0) => [Irate] -> Arate -> k0 -> Irate -> Arate
-- |
-- - opcode : freeverb
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : nestedap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : nreverb
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : reverb2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : reverb
-- - syntax :
--
--
--
-- ares reverb asig, krvt [, iskip]
--
--
--
--
-- Reverberates an input signal with a natural room frequency response.
--
--
reverb :: (K k0) => [Irate] -> Arate -> k0 -> Arate
-- |
-- - opcode : reverbsc
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : valpass
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vcomb
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : denorm
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : diff
-- - syntax :
--
--
--
-- ares diff asig [, iskip]
-- kres diff ksig [, iskip]
--
--
--
--
-- Modify a signal by differentiation.
--
--
diffA :: [Irate] -> Arate -> Arate
-- |
-- - opcode : diff
-- - syntax :
--
--
--
-- ares diff asig [, iskip]
-- kres diff ksig [, iskip]
--
--
--
--
-- Modify a signal by differentiation.
--
--
diffK :: (K k0) => [Irate] -> k0 -> Krate
-- |
-- - opcode : downsamp
-- - syntax :
--
--
--
-- kres downsamp asig [, iwlen]
--
--
--
--
-- Modify a signal by down-sampling.
--
--
downsamp :: [Irate] -> Arate -> Krate
-- |
-- - opcode : fold
-- - syntax :
--
--
--
-- ares fold asig, kincr
--
--
--
--
-- Adds artificial foldover to an audio signal.
--
--
fold :: (K k0) => Arate -> k0 -> Arate
-- |
-- - opcode : integ
-- - syntax :
--
--
--
-- ares integ asig [, iskip]
-- kres integ ksig [, iskip]
--
--
--
--
-- Modify a signal by integration.
--
--
integA :: [Irate] -> Arate -> Arate
-- |
-- - opcode : integ
-- - syntax :
--
--
--
-- ares integ asig [, iskip]
-- kres integ ksig [, iskip]
--
--
--
--
-- Modify a signal by integration.
--
--
integK :: (K k0) => [Irate] -> k0 -> Krate
-- |
-- - opcode : interp
-- - syntax :
--
--
--
-- ares interp ksig [, iskip] [, imode]
--
--
--
--
-- Converts a control signal to an audio signal using linear
-- interpolation.
--
--
interp :: (K k0) => [Irate] -> k0 -> Arate
-- |
-- - opcode : ntrpol
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ntrpol
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ntrpol
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : samphold
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : samphold
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : upsamp
-- - syntax :
--
--
--
-- ares upsamp ksig
--
--
--
--
-- Modify a signal by up-sampling.
--
--
upsamp :: (K k0) => k0 -> Arate
-- |
-- - opcode : vaget
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vaset
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : limit
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : limit
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : limit
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mirror
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mirror
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mirror
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wrap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wrap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : wrap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : distort
-- - syntax :
--
--
--
-- ar distort asig, kdist, ifn[, ihp, istor]
--
--
--
distort :: (K k0) => [Irate] -> Arate -> k0 -> Irate -> Arate
-- |
-- - opcode : distort1
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : flanger
-- - syntax :
--
--
--
-- ares flanger asig, adel, kfeedback [, imaxd]
--
--
--
--
-- A user controlled flanger.
--
--
flanger :: (K k0) => [Irate] -> Arate -> Arate -> k0 -> Arate
-- |
-- - opcode : harmon
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : phaser1
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : phaser2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : areson
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lowpass2
-- - syntax :
--
--
--
-- ares lowpass2 asig, kcf, kq [, iskip]
--
--
--
--
-- Implementation of a resonant second-order lowpass filter.
--
--
lowpass2 :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate
-- |
-- - opcode : lowres
-- - syntax :
--
--
--
-- ares lowres asig, kcutoff, kresonance [, iskip]
--
--
--
--
-- lowres is a resonant lowpass filter.
--
--
lowres :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate
-- |
-- - opcode : lowresx
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lpf18
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : moogvcf
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : moogladder
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : reson
-- - syntax :
--
--
--
-- ares reson asig, kcf, kbw [, iscl] [, iskip]
--
--
--
--
-- A second-order resonant filter.
--
--
reson :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate
-- |
-- - opcode : resonr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : resonx
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : resony
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : resonz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rezzy
-- - syntax :
--
--
--
-- ares rezzy asig, xfco, xres [, imode, iskip]
--
--
--
--
-- A resonant low-pass filter.
--
--
rezzy :: (X x0, X x1) => [Irate] -> Arate -> x0 -> x1 -> Arate
-- |
-- - opcode : statevar
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : svfilter
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tbvcf
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vlowres
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : bqrez
-- - syntax :
--
--
--
-- ares bqrez asig, xfco, xres [, imode] [, iskip]
--
--
--
--
-- A second-order multi-mode filter.
--
--
bqrez :: (X x0, X x1) => [Irate] -> Arate -> x0 -> x1 -> Arate
-- |
-- - opcode : atone
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : atonex
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tone
-- - syntax :
--
--
--
-- ares tone asig, khp [, iskip]
--
--
--
--
-- A first-order recursive low-pass filter with variable frequency
-- response.
--
--
tone :: (K k0) => [Irate] -> Arate -> k0 -> Arate
-- |
-- - opcode : tonex
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : biquad
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : biquada
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : butterbp
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : butterbr
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : butterhp
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : butterlp
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : butbp
-- - syntax :
--
--
--
-- ares butbp asig, kfreq, kband [, iskip]
--
--
--
--
-- Same as the butterbp opcode.
--
--
butbp :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate
-- |
-- - opcode : butbr
-- - syntax :
--
--
--
-- ares butbr asig, kfreq, kband [, iskip]
--
--
--
--
-- Same as the butterbr opcode.
--
--
butbr :: (K k0, K k1) => [Irate] -> Arate -> k0 -> k1 -> Arate
-- |
-- - opcode : buthp
-- - syntax :
--
--
--
-- ares buthp asig, kfreq [, iskip]
--
--
--
--
-- Same as the butterhp opcode.
--
--
buthp :: (K k0) => [Irate] -> Arate -> k0 -> Arate
-- |
-- - opcode : butlp
-- - syntax :
--
--
--
-- ares butlp asig, kfreq [, iskip]
--
--
--
--
-- Same as the butterlp opcode.
--
--
butlp :: (K k0) => [Irate] -> Arate -> k0 -> Arate
-- |
-- - opcode : clfilt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : aresonk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : atonek
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lineto
-- - syntax :
--
--
--
-- kres lineto ksig, ktime
--
--
--
--
-- Generate glissandos starting from a control signal.
--
--
lineto :: (K k0, K k1) => k0 -> k1 -> Krate
-- |
-- - opcode : port
-- - syntax :
--
--
--
-- kres port ksig, ihtim [, isig]
--
--
--
--
-- Applies portamento to a step-valued control signal.
--
--
port :: (K k0) => [Irate] -> k0 -> Irate -> Krate
-- |
-- - opcode : portk
-- - syntax :
--
--
--
-- kres portk ksig, khtim [, isig]
--
--
--
--
-- Applies portamento to a step-valued control signal.
--
--
portk :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate
-- |
-- - opcode : resonk
-- - syntax :
--
--
--
-- kres resonk ksig, kcf, kbw [, iscl] [, iskip]
--
--
--
--
-- A second-order resonant filter.
--
--
resonk :: (K k0, K k1, K k2) => [Irate] -> k0 -> k1 -> k2 -> Krate
-- |
-- - opcode : resonxk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tlineto
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tonek
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dcblock
-- - syntax :
--
--
--
-- ares dcblock ain [, igain]
--
--
--
--
-- Implements the DC blocking filter
--
--
dcblock :: [Irate] -> Arate -> Arate
-- |
-- - opcode : dcblock2
-- - syntax :
--
--
--
-- ares dcblock2 ain [, iorder] [, iskip]
--
--
--
--
-- Implements a DC blocking filter with improved DC attenuation.
--
--
dcblock2 :: [Irate] -> Arate -> Arate
-- |
-- - opcode : pareq
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rbjeq
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : eqfil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : nlfilt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : filter2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : filter2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : fofilter
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : hilbert
-- - syntax :
--
--
--
-- ar1, ar2 hilbert asig
--
--
--
--
-- An IIR implementation of a Hilbert transformer.
--
--
hilbert :: Arate -> MultiOut
-- |
-- - opcode : zfilter2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : streson
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chebyshevpoly
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : polynomial
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : powershape
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pdclip
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pdhalf
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pdhalfy
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : clockoff
-- - syntax :
--
--
--
-- clockoff inum
--
--
--
--
-- Stops one of a number of internal clocks.
--
--
clockoff :: Irate -> SignalOut
-- |
-- - opcode : clockon
-- - syntax :
--
--
--
-- clockon inum
--
--
--
--
-- Starts one of a number of internal clocks.
--
--
clockon :: Irate -> SignalOut
-- | Duration Control Statements
module CsoundExpr.Opcodes.Control.Durctl
-- |
-- - opcode : ihold
-- - syntax :
--
--
--
-- ihold
--
--
--
--
-- Causes a finite-duration note to become a held note
--
--
ihold :: SignalOut
-- |
-- - opcode : turnoff
-- - syntax :
--
--
--
-- turnoff
--
--
--
--
-- Enables an instrument to turn itself off.
--
--
turnoff :: SignalOut
-- |
-- - opcode : turnoff2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : turnon
-- - syntax :
--
--
--
-- turnon insnum [, itime]
--
--
--
--
-- Activate an instrument for an indefinite time.
--
--
turnon :: [Irate] -> Irate -> SignalOut
-- | FLTK Widgets and GUI controllers
module CsoundExpr.Opcodes.Control.FltkIntro
-- |
-- - opcode : FLrun
-- - syntax :
--
--
--
-- FLrun
--
--
--
--
-- Starts the FLTK widget thread.
--
--
flRun :: SignalOut
-- |
-- - opcode : FLgetsnap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLloadsnap
-- - syntax :
--
--
--
-- FLloadsnap "filename" [, igroup]
--
--
--
--
-- FLloadsnap loads all the snapshots contained in a file into the memory
-- bank of the current orchestra.
--
--
flLoadsnap :: [Irate] -> String -> SignalOut
-- |
-- - opcode : FLsavesnap
-- - syntax :
--
--
--
-- FLsavesnap "filename" [, igroup]
--
--
--
--
-- FLsavesnap saves all snapshots currently created (i.e. the entire
-- memory bank) into a file.
--
--
flSavesnap :: [Irate] -> String -> SignalOut
-- |
-- - opcode : FLsetsnap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLsetSnapGroup
-- - syntax :
--
--
--
-- FLsetSnapGroup igroup
--
--
--
--
-- FLsetSnapGroup determines the snapshot group of valuators declared
-- after it.
--
--
flSetSnapGroup :: Irate -> SignalOut
-- |
-- - opcode : FLgroup
-- - syntax :
--
--
--
-- FLgroup "label", iwidth, iheight, ix, iy [, iborder] [, image]
--
--
--
--
-- A FLTK container opcode that groups child widgets.
--
--
flGroup :: [Irate] -> String -> Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : FLgroupEnd
-- - syntax :
--
--
--
-- FLgroupEnd
--
--
--
--
-- Marks the end of a group of FLTK child widgets.
--
--
flGroupEnd :: SignalOut
-- |
-- - opcode : FLpack
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLpackEnd
-- - syntax :
--
--
--
-- FLpackEnd
--
--
--
--
-- Marks the end of a group of compressed or aligned FLTK widgets.
--
--
flPackEnd :: SignalOut
-- |
-- - opcode : FLpanel
-- - syntax :
--
--
--
-- FLpanel "label", iwidth, iheight [, ix] [, iy] [, iborder] [, ikbdcapture] [, iclose]
--
--
--
--
-- Creates a window that contains FLTK widgets.
--
--
flPanel :: [Irate] -> String -> Irate -> Irate -> SignalOut
-- |
-- - opcode : FLpanelEnd
-- - syntax :
--
--
--
-- FLpanelEnd
--
--
--
--
-- Marks the end of a group of FLTK widgets contained inside of a window
-- (panel).
--
--
flPanelEnd :: SignalOut
-- |
-- - opcode : FLscroll
-- - syntax :
--
--
--
-- FLscroll iwidth, iheight [, ix] [, iy]
--
--
--
--
-- FLscroll adds scroll bars to an area.
--
--
flScroll :: [Irate] -> Irate -> Irate -> SignalOut
-- |
-- - opcode : FLscrollEnd
-- - syntax :
--
--
--
-- FLscrollEnd
--
--
--
--
-- A FLTK opcode that marks the end of an area with scrollbars.
--
--
flScrollEnd :: SignalOut
-- |
-- - opcode : FLtabs
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLtabsEnd
-- - syntax :
--
--
--
-- FLtabsEnd
--
--
--
--
-- Marks the end of a tabbed FLTK interface.
--
--
flTabsEnd :: SignalOut
-- | FLTK Valuators
module CsoundExpr.Opcodes.Control.FltkValuators
-- |
-- - opcode : FLcount
-- - syntax :
--
--
--
-- 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)
-- |
-- - opcode : FLjoy
-- - syntax :
--
--
--
-- 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)
-- |
-- - opcode : FLknob
-- - syntax :
--
--
--
-- 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)
-- |
-- - opcode : FLroller
-- - syntax :
--
--
--
-- 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)
-- |
-- - opcode : FLslider
-- - syntax :
--
--
--
-- 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)
-- |
-- - opcode : FLtext
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLbox
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLbutBank
-- - syntax :
--
--
--
-- 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)
-- |
-- - opcode : FLbutton
-- - syntax :
--
--
--
-- 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)
-- |
-- - opcode : FLkeyIn
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLhvsBox
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLmouse
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLprintk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLprintk2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLslidBnk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLslidBnk2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLslidBnkGetHandle
-- - syntax :
--
--
--
-- ihandle FLslidBnkGetHandle
--
--
--
--
-- FLslidBnkGetHandle gets the handle of last slider bank created.
--
--
flSlidBnkGetHandle :: Irate
-- |
-- - opcode : FLslidBnkSet
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLslidBnk2Set
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLslidBnk2Setk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLvalue
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLvslidBnk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLvslidBnk2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLxyin
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLcolor
-- - syntax :
--
--
--
-- FLcolor ired, igreen, iblue [, ired2, igreen2, iblue2]
--
--
--
--
-- Sets the primary colors to RGB values given by the user.
--
--
flColor :: [Irate] -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : FLcolor2
-- - syntax :
--
--
--
-- FLcolor2 ired, igreen, iblue
--
--
--
--
-- FLcolor2 is the same of FLcolor except it affects the secondary
-- (selection) color.
--
--
flColor2 :: Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : FLhide
-- - syntax :
--
--
--
-- FLhide ihandle
--
--
--
--
-- Hides the target FLTK widget, making it invisible.
--
--
flHide :: Irate -> SignalOut
-- |
-- - opcode : FLlabel
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLsetAlign
-- - syntax :
--
--
--
-- FLsetAlign ialign, ihandle
--
--
--
--
-- FLsetAlign sets the text alignment of the label of the target widget.
--
--
flSetAlign :: Irate -> Irate -> SignalOut
-- |
-- - opcode : FLsetBox
-- - syntax :
--
--
--
-- FLsetBox itype, ihandle
--
--
--
--
-- FLsetBox sets the appearance of a box surrounding the target widget.
--
--
flSetBox :: Irate -> Irate -> SignalOut
-- |
-- - opcode : FLsetColor
-- - syntax :
--
--
--
-- FLsetColor ired, igreen, iblue, ihandle
--
--
--
--
-- FLsetColor sets the primary color of the target widget.
--
--
flSetColor :: Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : FLsetColor2
-- - syntax :
--
--
--
-- FLsetColor2 ired, igreen, iblue, ihandle
--
--
--
--
-- FLsetColor2 sets the secondary (or selection) color of the target
-- widget.
--
--
flSetColor2 :: Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : FLsetFont
-- - syntax :
--
--
--
-- FLsetFont ifont, ihandle
--
--
--
--
-- FLsetFont sets the font type of the target widget.
--
--
flSetFont :: Irate -> Irate -> SignalOut
-- |
-- - opcode : FLsetPosition
-- - syntax :
--
--
--
-- FLsetPosition ix, iy, ihandle
--
--
--
--
-- FLsetPosition sets the position of the target widget according to the
-- ix and iy arguments.
--
--
flSetPosition :: Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : FLsetSize
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLsetText
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLsetTextColor
-- - syntax :
--
--
--
-- FLsetTextColor ired, iblue, igreen, ihandle
--
--
--
--
-- FLsetTextColor sets the color of the text label of the target widget.
--
--
flSetTextColor :: Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : FLsetTextSize
-- - syntax :
--
--
--
-- FLsetTextSize isize, ihandle
--
--
--
--
-- FLsetTextSize sets the size of the text label of the target widget.
--
--
flSetTextSize :: Irate -> Irate -> SignalOut
-- |
-- - opcode : FLsetTextType
-- - syntax :
--
--
--
-- FLsetTextType itype, ihandle
--
--
--
--
-- FLsetTextType sets some attributes related to the fonts of the text
-- label of the target widget.
--
--
flSetTextType :: Irate -> Irate -> SignalOut
-- |
-- - opcode : FLsetVal_i
-- - syntax :
--
--
--
-- FLsetVal_i ivalue, ihandle
--
--
--
--
-- FLsetVal_i forces the value of a valuator to a number provided by the
-- user.
--
--
flSetVal_i :: Irate -> Irate -> SignalOut
-- |
-- - opcode : FLsetVal
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : FLshow
-- - syntax :
--
--
--
-- FLshow ihandle
--
--
--
--
-- FLshow restores the visibility of a previously hidden widget.
--
--
flShow :: Irate -> SignalOut
-- | General FLTK Widget-related Opcodes
module CsoundExpr.Opcodes.Control.FltkGeneral
-- |
-- - opcode : FLupdate
-- - syntax :
--
--
--
-- FLupdate
--
--
--
--
-- Same as the FLrun opcode.
--
--
flUpdate :: SignalOut
-- | Instrument Invocation
module CsoundExpr.Opcodes.Control.Invocat
-- |
-- - opcode : scoreline_i
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : scoreline
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : else
-- - syntax :
--
--
--
-- else
--
--
--
--
-- Executes a block of code when an if...then condition is false.
--
--
else' :: SignalOut
-- |
-- - opcode : endif
-- - syntax :
--
--
--
-- endif
--
--
--
--
-- Closes a block of code that begins with an if...then statement.
--
--
endif :: SignalOut
-- | Real-time Performance Control
module CsoundExpr.Opcodes.Control.Realtime
-- |
-- - opcode : active
-- - syntax :
--
--
--
-- ir active insnum
-- kres active kinsnum
--
--
--
--
-- Returns the number of active instances of an instrument.
--
--
activeI :: Irate -> Irate
-- |
-- - opcode : active
-- - syntax :
--
--
--
-- ir active insnum
-- kres active kinsnum
--
--
--
--
-- Returns the number of active instances of an instrument.
--
--
activeK :: (K k0) => k0 -> Krate
-- |
-- - opcode : cpuprc
-- - syntax :
--
--
--
-- cpuprc insnum, ipercent
--
--
--
--
-- Control allocation of cpu resources on a per-instrument basis, to
-- optimize realtime output.
--
--
cpuprc :: Irate -> Irate -> SignalOut
-- |
-- - opcode : maxalloc
-- - syntax :
--
--
--
-- maxalloc insnum, icount
--
--
--
--
-- Limits the number of allocations of an instrument.
--
--
maxalloc :: Irate -> Irate -> SignalOut
-- |
-- - opcode : prealloc
-- - syntax :
--
--
--
-- prealloc insnum, icount
-- prealloc "insname", icount
--
--
--
--
-- Creates space for instruments but does not run them.
--
--
preallocI :: Irate -> Irate -> SignalOut
-- |
-- - opcode : prealloc
-- - syntax :
--
--
--
-- prealloc insnum, icount
-- prealloc "insname", icount
--
--
--
--
-- Creates space for instruments but does not run them.
--
--
preallocS :: String -> Irate -> SignalOut
-- |
-- - opcode : jacktransport
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tival
-- - syntax :
--
--
--
-- ir tival
--
--
--
--
-- Puts the value of the instrument's internal tie-in flag into the named
-- i-rate variable.
--
--
tival :: Irate
-- |
-- - opcode : passign
-- - syntax :
--
--
--
-- ivar1,... passign [istart]
--
--
--
--
-- Assigns a range of p-fields to ivariables.
--
--
passign :: [Irate] -> Irate
-- |
-- - opcode : pset
-- - syntax :
--
--
--
-- pset icon1 [, icon2] [...]
--
--
--
--
-- Defines and initializes numeric arrays at orchestra load time.
--
--
pset :: Irate -> SignalOut
-- |
-- - opcode : rireturn
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : button
-- - syntax :
--
--
--
-- kres button knum
--
--
--
--
-- Sense on-screen controls. Requires Winsound or TCL/TK.
--
--
button :: (K k0) => k0 -> Krate
-- |
-- - opcode : checkbox
-- - syntax :
--
--
--
-- kres checkbox knum
--
--
--
--
-- Sense on-screen controls. Requires Winsound or TCL/TK.
--
--
checkbox :: (K k0) => k0 -> Krate
-- |
-- - opcode : control
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : setctrl
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sensekey
-- - syntax :
--
--
--
-- kres[, kkeydown] sensekey
--
--
--
--
-- Returns the ASCII code of a key that has been pressed, or -1 if no key
-- has been pressed.
--
--
sensekey :: MultiOut
-- |
-- - opcode : xyin
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : follow
-- - syntax :
--
--
--
-- ares follow asig, idt
--
--
--
--
-- Envelope follower unit generator.
--
--
follow :: Arate -> Irate -> Arate
-- |
-- - opcode : follow2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : peak
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : peak
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : rms
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ptrack
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pitch
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pitchamdf
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tempest
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tempo
-- - syntax :
--
--
--
-- tempo ktempo, istartempo
--
--
--
--
-- Apply tempo control to an uninterpreted score.
--
--
tempo :: (K k0) => k0 -> Irate -> SignalOut
-- |
-- - opcode : miditempo
-- - syntax :
--
--
--
-- ksig miditempo
--
--
--
--
-- Returns the current tempo at k-rate, of either the MIDI file (if
-- available) or the score
--
--
miditempo :: Krate
-- |
-- - opcode : tempoval
-- - syntax :
--
--
--
-- kres tempoval
--
--
--
--
-- Reads the current value of the tempo.
--
--
tempoval :: Krate
-- |
-- - opcode : seqtime
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : seqtime2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : trigger
-- - syntax :
--
--
--
-- kout trigger ksig, kthreshold, kmode
--
--
--
--
-- Informs when a krate signal crosses a threshold.
--
--
trigger :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate
-- |
-- - opcode : timedseq
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : changed
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : getcfg
-- - syntax :
--
--
--
-- Svalue getcfg iopt
--
--
--
--
-- Return various configuration settings in Svalue as a string at init
-- time.
--
--
getcfg :: Irate -> String
-- |
-- - opcode : rewindscore
-- - syntax :
--
--
--
-- rewindscore
--
--
--
--
-- Rewinds the playback position of the current score performance..
--
--
rewindscore :: SignalOut
-- | Stacks
module CsoundExpr.Opcodes.Control.Stacks
-- |
-- - opcode : stack
-- - syntax :
--
--
--
-- stack iStackSize
--
--
--
--
-- Initializes and sets the size of the global stack.
--
--
stack :: Irate -> SignalOut
-- |
-- - opcode : pop
-- - syntax :
--
--
--
-- xval1, [xval2,..., xval31] pop
-- ival1, [ival2,..., ival31] pop
--
--
--
--
-- Pops values from the global stack.
--
--
pop :: MultiOut
-- |
-- - opcode : push
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : readclock
-- - syntax :
--
--
--
-- ir readclock inum
--
--
--
--
-- Reads the value of an internal clock.
--
--
readclock :: Irate -> Irate
-- |
-- - opcode : rtclock
-- - syntax :
--
--
--
-- ires rtclock
-- kres rtclock
--
--
--
--
-- Read the real-time clock from the operating system.
--
--
rtclockI :: Irate
-- |
-- - opcode : rtclock
-- - syntax :
--
--
--
-- ires rtclock
-- kres rtclock
--
--
--
--
-- Read the real-time clock from the operating system.
--
--
rtclockK :: Krate
-- |
-- - opcode : timeinstk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : timeinsts
-- - syntax :
--
--
--
-- kres timeinsts
--
--
--
--
-- Read absolute time, in seconds, since the start of an instance of an
-- instrument.
--
--
timeinsts :: Krate
-- |
-- - opcode : times
-- - syntax :
--
--
--
-- ires times
-- kres times
--
--
--
--
-- Read absolute time, in seconds, since the start of the performance.
--
--
timesI :: Irate
-- |
-- - opcode : times
-- - syntax :
--
--
--
-- ires times
-- kres times
--
--
--
--
-- Read absolute time, in seconds, since the start of the performance.
--
--
timesK :: Krate
-- |
-- - opcode : timek
-- - syntax :
--
--
--
-- ires timek
-- kres timek
--
--
--
--
-- Read absolute time, in k-rate cycles, since the start of the
-- performance.
--
--
timekI :: Irate
-- |
-- - opcode : timek
-- - syntax :
--
--
--
-- ires timek
-- kres timek
--
--
--
--
-- Read absolute time, in k-rate cycles, since the start of the
-- performance.
--
--
timekK :: Krate
-- |
-- - opcode : date
-- - syntax :
--
--
--
-- ir date
--
--
--
--
-- Returns the number seconds since 1 January 1970, using the operating
-- system's clock.
--
--
date :: Irate
-- |
-- - opcode : dates
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ftchnls
-- - syntax :
--
--
--
-- ftchnls(x) (init-rate args only)
--
--
--
--
-- Returns the number of channels in a stored function table.
--
--
ftchnls :: Irate -> Irate
-- |
-- - opcode : ftlen
-- - syntax :
--
--
--
-- ftlen(x) (init-rate args only)
--
--
--
--
-- Returns the size of a stored function table.
--
--
ftlen :: Irate -> Irate
-- |
-- - opcode : ftlptim
-- - syntax :
--
--
--
-- ftlptim(x) (init-rate args only)
--
--
--
--
-- Returns the loop segment start-time of a stored function table number.
--
--
ftlptim :: Irate -> Irate
-- |
-- - opcode : ftsr
-- - syntax :
--
--
--
-- ftsr(x) (init-rate args only)
--
--
--
--
-- Returns the sampling-rate of a stored function table.
--
--
ftsr :: Irate -> Irate
-- |
-- - opcode : nsamp
-- - syntax :
--
--
--
-- nsamp(x) (init-rate args only)
--
--
--
--
-- Returns the number of samples loaded into a stored function table
-- number.
--
--
nsamp :: Irate -> Irate
-- |
-- - opcode : tableng
-- - syntax :
--
--
--
-- ires tableng ifn
-- kres tableng kfn
--
--
--
--
-- Interrogates a function table for length.
--
--
tablengI :: Irate -> Irate
-- |
-- - opcode : tableng
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ftloadk
-- - syntax :
--
--
--
-- ftloadk "filename", ktrig, iflag, ifn1 [, ifn2] [...]
--
--
--
--
-- Load a set of previously-allocated tables from a file.
--
--
ftloadk :: (K k0) => String -> k0 -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : ftload
-- - syntax :
--
--
--
-- ftload "filename", iflag, ifn1 [, ifn2] [...]
--
--
--
--
-- Load a set of previously-allocated tables from a file.
--
--
ftload :: String -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : ftsavek
-- - syntax :
--
--
--
-- ftsavek "filename", ktrig, iflag, ifn1 [, ifn2] [...]
--
--
--
--
-- Save a set of previously-allocated tables to a file.
--
--
ftsavek :: (K k0) => String -> k0 -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : ftsave
-- - syntax :
--
--
--
-- ftsave "filename", iflag, ifn1 [, ifn2] [...]
--
--
--
--
-- Save a set of previously-allocated tables to a file.
--
--
ftsave :: String -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : tablecopy
-- - syntax :
--
--
--
-- tablecopy kdft, ksft
--
--
--
--
-- Simple, fast table copy opcode.
--
--
tablecopy :: (K k0, K k1) => k0 -> k1 -> SignalOut
-- |
-- - opcode : tablegpw
-- - syntax :
--
--
--
-- tablegpw kfn
--
--
--
--
-- Writes a table's guard point.
--
--
tablegpw :: (K k0) => k0 -> SignalOut
-- |
-- - opcode : tableicopy
-- - syntax :
--
--
--
-- tableicopy idft, isft
--
--
--
--
-- Simple, fast table copy opcode.
--
--
tableicopy :: Irate -> Irate -> SignalOut
-- |
-- - opcode : tableigpw
-- - syntax :
--
--
--
-- tableigpw ifn
--
--
--
--
-- Writes a table's guard point.
--
--
tableigpw :: Irate -> SignalOut
-- |
-- - opcode : tableimix
-- - syntax :
--
--
--
-- tableimix idft, idoff, ilen, is1ft, is1off, is1g, is2ft, is2off, is2g
--
--
--
--
-- Mixes two tables.
--
--
tableimix :: Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : tableiw
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablemix
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablera
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablew
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablew
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablew
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablewa
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablewkt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablewkt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tabmorph
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tabmorpha
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tabmorphak
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tabmorphi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tabrec
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tabplay
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tableikt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tableikt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablekt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablekt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablexkt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ampdb
-- - syntax :
--
--
--
-- ampdb(x) (no rate restriction)
--
--
--
--
-- Returns the amplitude equivalent of the decibel value x. Thus:
--
--
ampdb :: (X x0) => x0 -> x0
-- |
-- - opcode : ampdbfs
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : db
-- - syntax :
--
--
--
-- db(x)
--
--
--
--
-- Returns the amplitude equivalent for a given decibel amount. This
-- opcode is the same as ampdb.
--
--
db :: (X x0) => x0 -> x0
-- |
-- - opcode : dbamp
-- - syntax :
--
--
--
-- dbamp(x) (init-rate or control-rate args only)
--
--
--
--
-- Returns the decibel equivalent of the raw amplitude x.
--
--
dbamp :: (K k0) => k0 -> k0
-- |
-- - opcode : dbfsamp
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : max
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : max
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : max_k
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : maxabs
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : maxabs
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : maxabsaccum
-- - syntax :
--
--
--
-- maxabsaccum aAccumulator, aInput
--
--
--
--
-- maxabsaccum compares two audio-rate variables and stores the maximum
-- of their absolute values into the first.
--
--
maxabsaccum :: Arate -> Arate -> SignalOut
-- |
-- - opcode : maxaccum
-- - syntax :
--
--
--
-- maxaccum aAccumulator, aInput
--
--
--
--
-- maxaccum compares two audio-rate variables and stores the maximum
-- value between them into the first.
--
--
maxaccum :: Arate -> Arate -> SignalOut
-- |
-- - opcode : min
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : min
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : minabs
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : minabs
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : minabsaccum
-- - syntax :
--
--
--
-- minabsaccum aAccumulator, aInput
--
--
--
--
-- minabsaccum compares two audio-rate variables and stores the minimum
-- of their absolute values into the first.
--
--
minabsaccum :: Arate -> Arate -> SignalOut
-- |
-- - opcode : minaccum
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : abs
-- - syntax :
--
--
--
-- abs(x) (no rate restriction)
--
--
--
--
-- Returns the absolute value of x.
--
--
abs' :: (X x0) => x0 -> x0
-- |
-- - opcode : ceil
-- - syntax :
--
--
--
-- ceil(x) (init-, control-, or audio-rate arg allowed)
--
--
--
--
-- Returns the smallest integer not less than x
--
--
ceil :: (X x0) => x0 -> x0
-- |
-- - opcode : exp
-- - syntax :
--
--
--
-- exp(x) (no rate restriction)
--
--
--
--
-- Returns e raised to the xth power.
--
--
exp' :: (X x0) => x0 -> x0
-- |
-- - opcode : floor
-- - syntax :
--
--
--
-- floor(x) (init-, control-, or audio-rate arg allowed)
--
--
--
--
-- Returns the largest integer not greater than x
--
--
floor' :: (X x0) => x0 -> x0
-- |
-- - opcode : frac
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : int
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : log
-- - syntax :
--
--
--
-- log(x) (no rate restriction)
--
--
--
--
-- Returns the natural log of x (x positive only).
--
--
log' :: (X x0) => x0 -> x0
-- |
-- - opcode : log10
-- - syntax :
--
--
--
-- log10(x) (no rate restriction)
--
--
--
--
-- Returns the base 10 log of x (x positive only).
--
--
log10 :: (X x0) => x0 -> x0
-- |
-- - opcode : logbtwo
-- - syntax :
--
--
--
-- logbtwo(x) (init-rate or control-rate args only)
--
--
--
--
-- Performs a logarithmic base two calculation.
--
--
logbtwo :: (K k0) => k0 -> k0
-- |
-- - opcode : pow
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pow
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pow
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : powoftwo
-- - syntax :
--
--
--
-- powoftwo(x) (init-rate or control-rate args only)
--
--
--
--
-- Performs a power-of-two calculation.
--
--
powoftwo :: (K k0) => k0 -> k0
-- |
-- - opcode : round
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sqrt
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : divz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : divz
-- - syntax :
--
--
--
-- ares divz xa, xb, ksubst
-- ires divz ia, ib, isubst
-- kres divz ka, kb, ksubst
--
--
--
--
-- Safely divides two numbers.
--
--
divzI :: Irate -> Irate -> Irate -> Irate
-- |
-- - opcode : divz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : product
-- - syntax :
--
--
--
-- ares product asig1, asig2 [, asig3] [...]
--
--
--
--
-- Multiplies any number of a-rate signals.
--
--
product' :: [Arate] -> Arate
-- |
-- - opcode : sum
-- - syntax :
--
--
--
-- ares sum asig1 [, asig2] [, asig3] [...]
--
--
--
--
-- Sums any number of a-rate signals.
--
--
sum' :: [Arate] -> Arate
-- |
-- - opcode : taninv2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : taninv2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : taninv2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : birnd
-- - syntax :
--
--
--
-- birnd(x) (init- or control-rate only)
--
--
--
--
-- Returns a random number in a bi-polar range.
--
--
birnd :: (K k0) => k0 -> k0
-- |
-- - opcode : rnd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cos
-- - syntax :
--
--
--
-- cos(x) (no rate restriction)
--
--
--
--
-- Returns the cosine of x (x in radians).
--
--
cos' :: (X x0) => x0 -> x0
-- |
-- - opcode : cosh
-- - syntax :
--
--
--
-- cosh(x) (no rate restriction)
--
--
--
--
-- Returns the hyperbolic cosine of x (x in radians).
--
--
cosh' :: (X x0) => x0 -> x0
-- |
-- - opcode : cosinv
-- - syntax :
--
--
--
-- cosinv(x) (no rate restriction)
--
--
--
--
-- Returns the arccosine of x (x in radians).
--
--
cosinv :: (X x0) => x0 -> x0
-- |
-- - opcode : sin
-- - syntax :
--
--
--
-- sin(x) (no rate restriction)
--
--
--
--
-- Returns the sine of x (x in radians).
--
--
sin' :: (X x0) => x0 -> x0
-- |
-- - opcode : sinh
-- - syntax :
--
--
--
-- sinh(x) (no rate restriction)
--
--
--
--
-- Returns the hyperbolic sine of x (x in radians).
--
--
sinh' :: (X x0) => x0 -> x0
-- |
-- - opcode : sininv
-- - syntax :
--
--
--
-- sininv(x) (no rate restriction)
--
--
--
--
-- Returns the arcsine of x (x in radians).
--
--
sininv :: (X x0) => x0 -> x0
-- |
-- - opcode : tan
-- - syntax :
--
--
--
-- tan(x) (no rate restriction)
--
--
--
--
-- Returns the tangent of x (x in radians).
--
--
tan' :: (X x0) => x0 -> x0
-- |
-- - opcode : tanh
-- - syntax :
--
--
--
-- tanh(x) (no rate restriction)
--
--
--
--
-- Returns the hyperbolic tangent of x (x in radians).
--
--
tanh' :: (X x0) => x0 -> x0
-- |
-- - opcode : taninv
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cent
-- - syntax :
--
--
--
-- cent(x)
--
--
--
--
-- Calculates a factor to raise/lower a frequency by a given amount of
-- cents.
--
--
cent :: (X x0) => x0 -> x0
-- |
-- - opcode : cpsmidinn
-- - syntax :
--
--
--
-- cpsmidinn (MidiNoteNumber) (init- or control-rate args only)
--
--
--
--
-- Converts a Midi note number value to cycles-per-second.
--
--
cpsmidinn :: (K k0) => k0 -> k0
-- |
-- - opcode : cpsoct
-- - syntax :
--
--
--
-- cpsoct (oct) (no rate restriction)
--
--
--
--
-- Converts an octave-point-decimal value to cycles-per-second.
--
--
cpsoct :: (X x0) => x0 -> x0
-- |
-- - opcode : cpspch
-- - syntax :
--
--
--
-- cpspch (pch) (init- or control-rate args only)
--
--
--
--
-- Converts a pitch-class value to cycles-per-second.
--
--
cpspch :: (K k0) => k0 -> k0
-- |
-- - opcode : octave
-- - syntax :
--
--
--
-- octave(x)
--
--
--
--
-- Calculates a factor to raise/lower a frequency by a given amount of
-- octaves.
--
--
octave :: (X x0) => x0 -> x0
-- |
-- - opcode : octcps
-- - syntax :
--
--
--
-- octcps (cps) (init- or control-rate args only)
--
--
--
--
-- Converts a cycles-per-second value to octave-point-decimal.
--
--
octcps :: (K k0) => k0 -> k0
-- |
-- - opcode : octmidinn
-- - syntax :
--
--
--
-- octmidinn (MidiNoteNumber) (init- or control-rate args only)
--
--
--
--
-- Converts a Midi note number value to octave-point-decimal.
--
--
octmidinn :: (K k0) => k0 -> k0
-- |
-- - opcode : octpch
-- - syntax :
--
--
--
-- octpch (pch) (init- or control-rate args only)
--
--
--
--
-- Converts a pitch-class value to octave-point-decimal.
--
--
octpch :: (K k0) => k0 -> k0
-- |
-- - opcode : pchmidinn
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pchoct
-- - syntax :
--
--
--
-- pchoct (oct) (init- or control-rate args only)
--
--
--
--
-- Converts an octave-point-decimal value to pitch-class.
--
--
pchoct :: (K k0) => k0 -> k0
-- |
-- - opcode : semitone
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cps2pch
-- - syntax :
--
--
--
-- icps cps2pch ipch, iequal
--
--
--
--
-- Converts a pitch-class value into cycles-per-second (Hz) for equal
-- divisions of the octave.
--
--
cps2pch :: Irate -> Irate -> Irate
-- |
-- - opcode : cpsxpch
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cpstun
-- - syntax :
--
--
--
-- kcps cpstun ktrig, kindex, kfn
--
--
--
--
-- Returns micro-tuning values at k-rate.
--
--
cpstun :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> Krate
-- |
-- - opcode : cpstuni
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : aftouch
-- - syntax :
--
--
--
-- kaft aftouch [imin] [, imax]
--
--
--
--
-- Get the current after-touch value for this channel.
--
--
aftouch :: [Irate] -> Krate
-- |
-- - opcode : chanctrl
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : chanctrl
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : polyaft
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : polyaft
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pchbend
-- - syntax :
--
--
--
-- ibend pchbend [imin] [, imax]
-- kbend pchbend [imin] [, imax]
--
--
--
--
-- Get the current pitch-bend value for this channel.
--
--
pchbendI :: [Irate] -> Irate
-- |
-- - opcode : pchbend
-- - syntax :
--
--
--
-- ibend pchbend [imin] [, imax]
-- kbend pchbend [imin] [, imax]
--
--
--
--
-- Get the current pitch-bend value for this channel.
--
--
pchbendK :: [Irate] -> Krate
-- |
-- - opcode : veloc
-- - syntax :
--
--
--
-- ival veloc [ilow] [, ihigh]
--
--
--
--
-- Get the velocity from a MIDI event.
--
--
veloc :: [Irate] -> Irate
-- |
-- - opcode : midictrl
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midictrl
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : notnum
-- - syntax :
--
--
--
-- ival notnum
--
--
--
--
-- Get a note number from a MIDI event.
--
--
notnum :: Irate
-- |
-- - opcode : ctrl7
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ctrl7
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ctrl7
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ctrl14
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ctrl14
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ctrl21
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ctrl21
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midic7
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midic7
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midic14
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midic14
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midic21
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midic21
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : initc7
-- - syntax :
--
--
--
-- initc7 ichan, ictlno, ivalue
--
--
--
--
-- Initializes MIDI controller ictlno with ivalue
--
--
initc7 :: Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : initc14
-- - syntax :
--
--
--
-- initc14 ichan, ictlno1, ictlno2, ivalue
--
--
--
--
-- Initializes the controllers used to create a 14-bit MIDI value.
--
--
initc14 :: Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : initc21
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mdelay
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : nrpn
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outiat
-- - syntax :
--
--
--
-- outiat ichn, ivalue, imin, imax
--
--
--
--
-- Sends MIDI aftertouch messages at i-rate.
--
--
outiat :: Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : outic
-- - syntax :
--
--
--
-- outic ichn, inum, ivalue, imin, imax
--
--
--
--
-- Sends MIDI controller output at i-rate.
--
--
outic :: Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : outic14
-- - syntax :
--
--
--
-- outic14 ichn, imsb, ilsb, ivalue, imin, imax
--
--
--
--
-- Sends 14-bit MIDI controller output at i-rate.
--
--
outic14 :: Irate -> Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : outipat
-- - syntax :
--
--
--
-- outipat ichn, inotenum, ivalue, imin, imax
--
--
--
--
-- Sends polyphonic MIDI aftertouch messages at i-rate.
--
--
outipat :: Irate -> Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : outipb
-- - syntax :
--
--
--
-- outipb ichn, ivalue, imin, imax
--
--
--
--
-- Sends MIDI pitch-bend messages at i-rate.
--
--
outipb :: Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : outipc
-- - syntax :
--
--
--
-- outipc ichn, iprog, imin, imax
--
--
--
--
-- Sends MIDI program change messages at i-rate
--
--
outipc :: Irate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : outkat
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outkc
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outkc14
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outkpat
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outkpb
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outkpc
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midiin
-- - syntax :
--
--
--
-- kstatus, kchan, kdata1, kdata2 midiin
--
--
--
--
-- Returns a generic MIDI message received by the MIDI IN port
--
--
midiin :: MultiOut
-- |
-- - opcode : midiout
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cpsmidi
-- - syntax :
--
--
--
-- icps cpsmidi
--
--
--
--
-- Get the note number of the current MIDI event, expressed in
-- cycles-per-second.
--
--
cpsmidi :: Irate
-- |
-- - opcode : cpsmidib
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cpsmidib
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : cpstmid
-- - syntax :
--
--
--
-- icps cpstmid ifn
--
--
--
--
-- This unit is similar to cpsmidi, but allows fully customized
-- micro-tuning scales.
--
--
cpstmid :: Irate -> Irate
-- |
-- - opcode : octmidi
-- - syntax :
--
--
--
-- ioct octmidi
--
--
--
--
-- Get the note number, in octave-point-decimal units, of the current
-- MIDI event.
--
--
octmidi :: Irate
-- |
-- - opcode : octmidib
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : octmidib
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pchmidi
-- - syntax :
--
--
--
-- ipch pchmidi
--
--
--
--
-- Get the note number of the current MIDI event, expressed in
-- pitch-class units.
--
--
pchmidi :: Irate
-- |
-- - opcode : pchmidib
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pchmidib
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ampmidi
-- - syntax :
--
--
--
-- iamp ampmidi iscal [, ifn]
--
--
--
--
-- Get the velocity of the current MIDI event.
--
--
ampmidi :: [Irate] -> Irate -> Irate
-- | Event Extenders
module CsoundExpr.Opcodes.Midi.Extender
-- |
-- - opcode : release
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : xtratim
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midion
-- - syntax :
--
--
--
-- midion kchn, knum, kvel
--
--
--
--
-- Generates MIDI note messages at k-rate.
--
--
midion :: (K k0, K k1, K k2) => k0 -> k1 -> k2 -> SignalOut
-- |
-- - opcode : midion2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : moscil
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : noteoff
-- - syntax :
--
--
--
-- noteoff ichn, inum, ivel
--
--
--
--
-- Send a noteoff message to the MIDI OUT port.
--
--
noteoff :: Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : noteon
-- - syntax :
--
--
--
-- noteon ichn, inum, ivel
--
--
--
--
-- Send a noteon message to the MIDI OUT port.
--
--
noteon :: Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : noteondur
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : noteondur2
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midichannelaftertouch
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midichn
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midicontrolchange
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mididefault
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midinoteoff
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midinoteoncps
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midinoteonkey
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midinoteonoct
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midinoteonpch
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midipitchbend
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midipolyaftertouch
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : midiprogramchange
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : mclock
-- - syntax :
--
--
--
-- mclock ifreq
--
--
--
--
-- Sends a MIDI CLOCK message.
--
--
mclock :: Irate -> SignalOut
-- |
-- - opcode : mrtmsg
-- - syntax :
--
--
--
-- mrtmsg imsgtype
--
--
--
--
-- Send system real-time messages to the MIDI OUT port.
--
--
mrtmsg :: Irate -> SignalOut
-- | Slider Banks
module CsoundExpr.Opcodes.Midi.Slidrbk
-- |
-- - opcode : slider16
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider16f
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider32
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider32f
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider64
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider64f
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : s16b14
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : s32b14
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sliderKawai
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider8table
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider8tablef
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider16table
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider16tablef
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider32table
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider32tablef
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider64table
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : slider64tablef
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tableseg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pvadd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pvbufread
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pvcross
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pvinterp
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pvoc
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : pvread
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : tablexseg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vpvoc
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lpfreson
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lpinterp
-- - syntax :
--
--
--
-- lpinterp islot1, islot2, kmix
--
--
--
--
-- Computes a new set of poles from the interpolation between two
-- analysis.
--
--
lpinterp :: (K k0) => Irate -> Irate -> k0 -> SignalOut
-- |
-- - opcode : lpread
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lpreson
-- - syntax :
--
--
--
-- ares lpreson asig
--
--
--
--
-- Resynthesises a signal from the data passed internally by a previous
-- lpread.
--
--
lpreson :: Arate -> Arate
-- |
-- - opcode : lpslot
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ATSinfo
-- - syntax :
--
--
--
-- idata ATSinfo iatsfile, ilocation
--
--
--
--
-- atsinfo reads data out of the header of an ATS file.
--
--
atsInfo :: Irate -> Irate -> Irate
-- |
-- - opcode : ATSread
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ATSreadnz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ATSbufread
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ATSinterpread
-- - syntax :
--
--
--
-- kamp ATSinterpread kfreq
--
--
--
--
-- ATSinterpread allows a user to determine the frequency envelope of any
-- ATSbufread.
--
--
atsInterpread :: (K k0) => k0 -> Krate
-- |
-- - opcode : ATSpartialtap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ATSadd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ATSaddnz
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ATScross
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : ATSsinnoi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lorisread
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lorismorph
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : lorisplay
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vtablei
-- - syntax :
--
--
--
-- vtablei indx, ifn, interp, ixmode, iout1 [, iout2, iout3,...., ioutN ]
--
--
--
--
-- This opcode reads vectors from tables.
--
--
vtablei :: Irate -> Irate -> Irate -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : vtable1k
-- - syntax :
--
--
--
-- vtable1k kfn,kout1 [, kout2, kout3,...., koutN ]
--
--
--
--
-- This opcode reads vectors from tables at k-rate.
--
--
vtable1k :: (K k0, K k1) => k0 -> [k1] -> SignalOut
-- |
-- - opcode : vtablek
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vtablea
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vtablewi
-- - syntax :
--
--
--
-- vtablewi indx, ifn, ixmode, inarg1 [, inarg2, inarg3,...., inargN ]
--
--
--
--
-- This opcode writes vectors to tables at init time.
--
--
vtablewi :: Irate -> Irate -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : vtablewk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vtablewa
-- - syntax :
--
--
--
-- vtablewa andx, kfn, ixmode, ainarg1 [, ainarg2, ainarg3,...., ainargN ]
--
--
--
--
-- This opcode writes vectors to tables at a-rate.
--
--
vtablewa :: Arate -> Arate -> Irate -> [Arate] -> SignalOut
-- |
-- - opcode : vtabi
-- - syntax :
--
--
--
-- vtabi indx, ifn, iout1 [, iout2, iout3,...., ioutN ]
--
--
--
--
-- This opcode reads vectors from tables.
--
--
vtabi :: Irate -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : vtabk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vtaba
-- - syntax :
--
--
--
-- vtaba andx, ifn, aout1 [, aout2, aout3,...., aoutN ]
--
--
--
--
-- This opcode reads vectors from tables at a-rate.
--
--
vtaba :: Arate -> Irate -> [Arate] -> SignalOut
-- |
-- - opcode : vtabwi
-- - syntax :
--
--
--
-- vtabwi indx, ifn, inarg1 [, inarg2, inarg3,...., inargN ]
--
--
--
--
-- This opcode writes vectors to tables at init time.
--
--
vtabwi :: Irate -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : vtabwk
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vtabwa
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vadd
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vmult
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vpow
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vexp
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vadd_i
-- - syntax :
--
--
--
-- vadd_i ifn, ival, ielements [, idstoffset]
--
--
--
--
-- Adds a scalar value to a vector in a table.
--
--
vadd_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : vmult_i
-- - syntax :
--
--
--
-- vmult_i ifn, ival, ielements [, idstoffset]
--
--
--
--
-- Multiplies a vector in a table by a scalar value.
--
--
vmult_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : vpow_i
-- - syntax :
--
--
--
-- vpow_i ifn, ival, ielements [, idstoffset]
--
--
--
--
-- Raises each element of a vector to a scalar power
--
--
vpow_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : vexp_i
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vaddv
-- - syntax :
--
--
--
-- vaddv ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--
--
--
--
-- Performs addition between two vectorial control signals
--
--
vaddv :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut
-- |
-- - opcode : vsubv
-- - syntax :
--
--
--
-- vsubv ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--
--
--
--
-- Performs subtraction between two vectorial control signals
--
--
vsubv :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut
-- |
-- - opcode : vmultv
-- - syntax :
--
--
--
-- vmultv ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--
--
--
--
-- Performs mutiplication between two vectorial control signals
--
--
vmultv :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut
-- |
-- - opcode : vdivv
-- - syntax :
--
--
--
-- vdivv ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--
--
--
--
-- Performs division between two vectorial control signals
--
--
vdivv :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut
-- |
-- - opcode : vpowv
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vexpv
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vcopy
-- - syntax :
--
--
--
-- vcopy ifn, ifn2, kelements [, kdstoffset] [, ksrcoffset] [, kverbose]
--
--
--
--
-- Copies between two vectorial control signals
--
--
vcopy :: (K k0, K k1) => [k0] -> Irate -> Irate -> k1 -> SignalOut
-- |
-- - opcode : vmap
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vaddv_i
-- - syntax :
--
--
--
-- vaddv_i ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--
--
--
--
-- Performs addition between two vectorial control signals at init time.
--
--
vaddv_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : vsubv_i
-- - syntax :
--
--
--
-- vsubv_i ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--
--
--
--
-- Performs subtraction between two vectorial control signals at init
-- time.
--
--
vsubv_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : vmultv_i
-- - syntax :
--
--
--
-- vmultv_i ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--
--
--
--
-- Performs mutiplication between two vectorial control signals at init
-- time.
--
--
vmultv_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : vdivv_i
-- - syntax :
--
--
--
-- vdivv_i ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--
--
--
--
-- Performs division between two vectorial control signals at init time.
--
--
vdivv_i :: [Irate] -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : vpowv_i
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vexpv_i
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vcopy_i
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vlinseg
-- - syntax :
--
--
--
-- vlinseg ifnout, ielements, ifn1, idur1, ifn2 [, idur2, ifn3 [...]]
--
--
--
--
-- Generate linear vectorial segments
--
--
vlinseg :: Irate -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : vexpseg
-- - syntax :
--
--
--
-- vexpseg ifnout, ielements, ifn1, idur1, ifn2 [, idur2, ifn3 [...]]
--
--
--
--
-- Generate exponential vectorial segments
--
--
vexpseg :: Irate -> Irate -> [Irate] -> SignalOut
-- |
-- - opcode : vcella
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vlimit
-- - syntax :
--
--
--
-- vlimit ifn, kmin, kmax, ielements
--
--
--
--
-- Limits elements of vectorial control signals.
--
--
vlimit :: (K k0, K k1) => Irate -> k0 -> k1 -> Irate -> SignalOut
-- |
-- - opcode : vwrap
-- - syntax :
--
--
--
-- vwrap ifn, kmin, kmax, ielements
--
--
--
--
-- Wraps elements of vectorial control signals.
--
--
vwrap :: (K k0, K k1) => Irate -> k0 -> k1 -> Irate -> SignalOut
-- |
-- - opcode : vmirror
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vdelayk
-- - syntax :
--
--
--
-- kout vdelayk iksig, kdel, imaxdel [, iskip, imode]
--
--
--
--
-- Variable delay applied to a k-rate signal
--
--
vdelayk :: (K k0) => [Irate] -> Irate -> k0 -> Irate -> Krate
-- |
-- - opcode : vport
-- - syntax :
--
--
--
-- vport ifn, khtime, ielements [, ifnInit]
--
--
--
--
-- Generate a sort of vectorial portamento
--
--
vport :: (K k0) => [Irate] -> Irate -> k0 -> Irate -> SignalOut
-- |
-- - opcode : vecdelay
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vrandh
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vrandi
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : zacl
-- - syntax :
--
--
--
-- zacl kfirst, klast
--
--
--
--
-- Clears one or more variables in the za space.
--
--
zacl :: (K k0, K k1) => k0 -> k1 -> SignalOut
-- |
-- - opcode : zakinit
-- - syntax :
--
--
--
-- zakinit isizea, isizek
--
--
--
--
-- Establishes zak space. Must be called only once.
--
--
zakinit :: Irate -> Irate -> SignalOut
-- |
-- - opcode : zamod
-- - syntax :
--
--
--
-- ares zamod asig, kzamod
--
--
--
--
-- Modulates one a-rate signal by a second one.
--
--
zamod :: (K k0) => Arate -> k0 -> Arate
-- |
-- - opcode : zar
-- - syntax :
--
--
--
-- ares zar kndx
--
--
--
--
-- Reads from a location in za space at a-rate.
--
--
zar :: (K k0) => k0 -> Arate
-- |
-- - opcode : zarg
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : zaw
-- - syntax :
--
--
--
-- zaw asig, kndx
--
--
--
--
-- Writes to a za variable at a-rate without mixing.
--
--
zaw :: (K k0) => Arate -> k0 -> SignalOut
-- |
-- - opcode : zawm
-- - syntax :
--
--
--
-- zawm asig, kndx [, imix]
--
--
--
--
-- Writes to a za variable at a-rate with mixing.
--
--
zawm :: (K k0) => [Irate] -> Arate -> k0 -> SignalOut
-- |
-- - opcode : zkcl
-- - syntax :
--
--
--
-- zkcl kfirst, klast
--
--
--
--
-- Clears one or more variables in the zk space.
--
--
zkcl :: (K k0, K k1) => k0 -> k1 -> SignalOut
-- |
-- - opcode : zkmod
-- - syntax :
--
--
--
-- kres zkmod ksig, kzkmod
--
--
--
--
-- Facilitates the modulation of one signal by another.
--
--
zkmod :: (K k0, K k1) => k0 -> k1 -> Krate
-- |
-- - opcode : zkr
-- - syntax :
--
--
--
-- kres zkr kndx
--
--
--
--
-- Reads from a location in zk space at k-rate.
--
--
zkr :: (K k0) => k0 -> Krate
-- |
-- - opcode : zkw
-- - syntax :
--
--
--
-- zkw ksig, kndx
--
--
--
--
-- Writes to a zk variable at k-rate without mixing.
--
--
zkw :: (K k0, K k1) => k0 -> k1 -> SignalOut
-- |
-- - opcode : zkwm
-- - syntax :
--
--
--
-- zkwm ksig, kndx [, imix]
--
--
--
--
-- Writes to a zk variable at k-rate with mixing.
--
--
zkwm :: (K k0, K k1) => [Irate] -> k0 -> k1 -> SignalOut
-- |
-- - opcode : zir
-- - syntax :
--
--
--
-- ir zir indx
--
--
--
--
-- Reads from a location in zk space at i-rate.
--
--
zir :: Irate -> Irate
-- |
-- - opcode : ziw
-- - syntax :
--
--
--
-- ziw isig, indx
--
--
--
--
-- Writes to a zk variable at i-rate without mixing.
--
--
ziw :: Irate -> Irate -> SignalOut
-- |
-- - opcode : ziwm
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dssiinit
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dssiactivate
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dssilist
-- - syntax :
--
--
--
-- dssilist
--
--
--
--
-- dssilist checks the variables DSSI_PATH and LADSPA_PATH and lists all
-- plugins available in all plugin libraries there.
--
--
dssilist :: SignalOut
-- |
-- - opcode : dssiaudio
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : dssictls
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vstinit
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vstmidiout
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vstnote
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : vstinfo
-- - syntax :
--
--
--
-- vstinfo instance
--
--
--
--
-- vstinfo displays the parameters and the programs of a VST plugin.
--
--
vstinfo :: Irate -> SignalOut
-- |
-- - opcode : vstbankload
-- - syntax :
--
--
--
-- vstbankload instance, ipath
--
--
--
--
-- vstbankload is used for loading parameter banks to a VST plugin.
--
--
vstbankload :: Irate -> Irate -> SignalOut
-- |
-- - opcode : vstprogset
-- - syntax :
--
--
--
-- vstprogset instance, kprogram
--
--
--
--
-- vstprogset sets one of the programs in an .fxb bank.
--
--
vstprogset :: (K k0) => Irate -> k0 -> SignalOut
-- |
-- - opcode : vstedit
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : OSCinit
-- - syntax :
--
--
--
-- ihandle OSCinit iport
--
--
--
--
-- Starts a listening process, which can be used by OSClisten.
--
--
oscInit :: Irate -> Irate
-- |
-- - opcode : OSClisten
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : OSCsend
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : sockrecv
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : socksend
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : remoteport
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : MixerSend
-- - syntax :
--
--
--
-- MixerSend asignal, isend, ibuss, ichannel
--
--
--
--
-- Mixes an arate signal into a channel of a buss.
--
--
mixerSend :: Arate -> Irate -> Irate -> Irate -> SignalOut
-- |
-- - opcode : MixerReceive
-- - syntax :
--
--
--
-- asignal MixerReceive ibuss, ichannel
--
--
--
--
-- Receives an arate signal that has been mixed onto a channel of a buss.
--
--
mixerReceive :: Irate -> Irate -> Arate
-- |
-- - opcode : MixerSetLevel
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : MixerSetLevel_i
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : MixerGetLevel
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : MixerClear
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : outleta
-- - syntax :
--
--
--
-- outleta Sname, asignal
--
--
--
--
-- Sends an arate signal out from an instrument to a named port.
--
--
outleta :: String -> Arate -> SignalOut
-- |
-- - opcode : outletk
-- - syntax :
--
--
--
-- outletk Sname, ksignal
--
--
--
--
-- Sends a krate signal out from an instrument to a named port.
--
--
outletk :: (K k0) => String -> k0 -> SignalOut
-- |
-- - opcode : inleta
-- - syntax :
--
--
--
-- asignal inleta Sname
--
--
--
--
-- Receives an arate signal into an instrument through a named port.
--
--
inleta :: String -> Arate
-- |
-- - opcode : inletk
-- - syntax :
--
--
--
-- ksignal inletk Sname
--
--
--
--
-- Receives a krate signal into an instrument from a named port.
--
--
inletk :: String -> Krate
-- |
-- - opcode : ftgenonce
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : imagecreate
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : imagesize
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : imagegetpixel
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : imagegetpixel
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : imagefree
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : system
-- - syntax :
--
--
--
-- 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
-- |
-- - opcode : modmatrix
-- - syntax :
--
--
--
-- 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 Pch = Irate
type Oct = Int
c :: Oct -> Pch
cs :: Oct -> Pch
d :: Oct -> Pch
ds :: Oct -> Pch
e :: Oct -> Pch
es :: Oct -> Pch
f :: Oct -> Pch
fs :: Oct -> Pch
g :: Oct -> Pch
gs :: Oct -> Pch
a :: Oct -> Pch
as :: Oct -> Pch
b :: Oct -> Pch
bs :: Oct -> Pch
cb :: Oct -> Pch
db :: Oct -> Pch
eb :: Oct -> Pch
fb :: Oct -> Pch
gb :: Oct -> Pch
ab :: Oct -> Pch
bb :: Oct -> Pch
css :: Oct -> Pch
dss :: Oct -> Pch
ess :: Oct -> Pch
fss :: Oct -> Pch
gss :: Oct -> Pch
ass :: Oct -> Pch
bss :: Oct -> Pch
cbb :: Oct -> Pch
dbb :: Oct -> Pch
ebb :: Oct -> Pch
fbb :: Oct -> Pch
gbb :: Oct -> Pch
abb :: Oct -> Pch
bbb :: Oct -> Pch
-- | Module CsoundExpr.Base.Score provides functions to construct
-- csound's score section
--
--
module CsoundExpr.Tutorial.Composition
exmpEventList :: EventList Double Irate
exmpScore :: Score String
exmpScoFunctor :: MediaUnit Dur () SignalOut
exmpScoMonad :: MediaUnit Dur () Irate
exmpScoTemporal :: Dur
exmpScoStretchable :: MediaUnit Dur () Irate
exmpScoArrangeable :: Score String
exmpScoTemporalFunctor :: Score SignalOut
main :: IO ()
-- | Guide to instrument-making
--
--
module CsoundExpr.Tutorial.Orchestra
exmpInstr :: Irate -> SignalOut
exmpImper :: Irate -> SignalOut
exmpArith :: (K k0) => k0 -> SignalOut
exmpPreview :: IO ()
exmpMidi :: IO ()
main :: IO ()
module CsoundExpr
-- | Csound-expression is csound code generator. Program produces value of
-- CsoundFile type. CsoundFile is Show. So that is
-- the way to get csound code. csd function can be invoked to make
-- value of CsoundFile type.
--
--
-- csd :: Flags -> Header -> EventList Dur SignalOut -> CsoundFile
--
--
--
-- - Flags is String. It's pasted in place of csounds
-- flags.
-- - Header is csound header declaration. See
-- CsoundExpr.Base.Header for more details.
-- - EventList represents csound orchestra and score sections.
-- This tutorial is all about how to construct EventList.
--
--
-- EventList
--
-- EventList contains values with time marks. Value begins at
-- some time and lasts for some time (see temporal-media package)
-- EventList can be constructed from Score with
-- toList function.
--
-- Score
--
-- Score is tree structure that represents music. Lists contain
-- notes and nodes contain information about how subtrees relate to each
-- other in time. Subtrees can be sequential or parallel. Module
-- CsoundExpr.Base.Score exposes combinators for
-- EventList / Score building. csd function takes
-- in EventList Double SignalOut. Double is
-- type of time-marks. SignalOut represents instrument structure.
--
-- Let's make first simple csound code block. It plays d minor chord wih
-- oscilator.
--
--
-- import CsoundExpr
-- import CsoundExpr.Opcodes(out, oscilA, cpspch)
-- import CsoundExpr.Base.Pitch
--
-- flags = "-d -o dm.wav"
--
-- -- (<=>) - assignment operator
-- -- instr0 - packs assignent statements in header statement
-- setup :: SignalInit
-- setup = instr0 [
-- gSr <=> 44100,
-- gKr <=> 4410,
-- gKsmps <=> 10,
-- gNchnls <=> 1]
--
-- header :: Header
-- header = [setup]
--
-- -- gen routine (see CsoundExpr.Base.Gens)
-- sinWave :: Irate
-- sinWave = gen10 4096 [1]
--
-- -- oscilator instrument
-- instr :: Irate -> SignalOut
-- instr x = out $ oscilA [] (num 1000) (cpspch x) sinWave
--
-- -- line, note - Score constructors (see CsoundExpr.Base.Score)
-- -- Score is a Functor, so it's possible to use instruments as
-- -- functions on abstract note representation.
-- -- here note is represented with pitch value of type Irate
-- -- (Irate is csound's init value)
-- --
-- sco = fmap instr $ line $ map (note 1) [d 0, f 0, a 0, d 1]
--
--
-- -- toList - converts Score to EventList (see CsoundExpr.Base.Score)
-- dmCode = csd flags header $ toList sco
--
--
--
module CsoundExpr.Tutorial.Intro
dmCode :: CsoundFile