-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | library to make electronic music -- -- Welcome to the simplest textual synthesizer. -- --
--   dac $ osc 440
--   
-- -- Csound-expression is a Haskell framework for computer music. With the -- help of the library we can create our instruments on the fly. A few -- lines in the interpreter is enough to get the cool sound going out of -- your speakers. It can be used for simple daily sound-file processing -- or for a full-blown live performances. -- -- Got interested? Check out the guide: -- https://github.com/anton-k/csound-expression/blob/master/tutorial/Index.md -- -- Acknowledgements (I'd like to mention those who supported me a lot -- with their music and ideas): -- -- -- -- Iain McCurdy, Victor Lazzarini, Rory Walsh, Steven Yi, John Ffitch, -- Jon Downing, Joachim Heintz, Peter Burgess, Dr. Richard Boulanger, -- Michael Gogins, Oeyvind Brandtsegg, Richard Dobson, Partev Barr -- Sarkissian, Dave Phillips, Guillermo Senna, Art Hunkins, Ben -- McAllister, Michael Rhoades, Gleb Rogozinsky, Eugene Cherny, Brian -- Merchant, Wolf Peuker, Hlöðver Sigurðsson, Aaron Krister Johnson, Andy -- Fillebrown and friends :) @package csound-expression @version 5.4.3 -- | Utils for Scores module Csound.Air.Sco -- | Euclidean beats. -- -- Scales series of scores by apllying series of stretching -- transformations. -- --
--   euc totalLength initDelay durations scores
--   
euc :: Double -> Double -> [Double] -> [Sco a] -> Sco a -- | Synonym to str (3/2) dot :: Sco a -> Sco a -- | double dot, str with 1.75 ddot :: Sco a -> Sco a -- | Sets tempo in beats per minute, if 1 Dur is equal to 1 second -- before transformation. scoBpm :: Sig -> Sco a -> Sco a -- | Means 'three notes'. Plays three notes as fast as two. trn :: Sco a -> Sco a bn :: Sco a -> Sco a wn :: Sco a -> Sco a hn :: Sco a -> Sco a qn :: Sco a -> Sco a en :: Sco a -> Sco a sn :: Sco a -> Sco a tn :: Sco a -> Sco a bnr :: Sco a wnr :: Sco a hnr :: Sco a qnr :: Sco a enr :: Sco a snr :: Sco a tnr :: Sco a -- | The Cab is a monad for Cabbage markup language. The markup description -- can be constructed in the same way as blaze-html markup. -- -- We use monadic sequencing for sequencing of markup elements. -- -- An example: -- --
--   import Csound.Base
--   import qualified Csound.Cabbage as C
--   
--   ui = do
--       C.cabbage $ do
--           C.form $ do
--              C.size 100 100
--              C.pluginid "plugin"
--          C.button $ do
--              C.bounds 10 10 80 80
--              C.channel "button"
--              C.text1 "Click me"
--               C.colour0 (C.Rgb 150 30 0)
--               C.colour1 (C.Rgb 30 150 12) 
--       res <- chnCtrlGet "button"  
--       return res
--   
--   main = dac $ do
--      btn <- ui
--      return $ btn * osc 220
--   
-- -- We can read a complete tutorial on how to create Cabbage plugins at -- the guide: -- https://github.com/spell-music/csound-expression/blob/master/tutorial/chapters/CabbageTutorial.md module Csound.Cabbage type Cab = Cab' () type CabProp = CabProp' () data Col Hash :: String -> Col Rgb :: Int -> Int -> Int -> Col cabbage :: Cab -> SE () button :: CabProp -> Cab filebutton :: CabProp -> Cab infobutton :: CabProp -> Cab checkbox :: CabProp -> Cab combobox :: CabProp -> Cab csoundoutput :: CabProp -> Cab encoder :: CabProp -> Cab gentable :: CabProp -> Cab hrange :: CabProp -> Cab vrange :: CabProp -> Cab form :: CabProp -> Cab groupbox :: CabProp -> Cab image :: CabProp -> Cab keyboard :: CabProp -> Cab label :: CabProp -> Cab hslider :: CabProp -> Cab vslider :: CabProp -> Cab rslider :: CabProp -> Cab soundfiler :: CabProp -> Cab signaldisplay :: CabProp -> Cab textbox :: CabProp -> Cab texteditor :: CabProp -> Cab xypad :: CabProp -> Cab bounds :: Int -> Int -> Int -> Int -> CabProp channel :: String -> CabProp text1 :: String -> CabProp text2 :: String -> String -> CabProp value :: Float -> CabProp colour :: Col -> CabProp colour0 :: Col -> CabProp colour1 :: Col -> CabProp backgroundcolour :: Col -> CabProp textcolour :: Col -> CabProp trackercolour :: Col -> CabProp outlinecolour :: Col -> CabProp fontcolour :: Col -> CabProp fontcolour0 :: Col -> CabProp fontcolour1 :: Col -> CabProp latched :: Bool -> CabProp identchannel :: String -> CabProp rotate :: Float -> Float -> Float -> CabProp alpha :: Float -> CabProp visible :: Bool -> CabProp caption :: String -> CabProp widgetarray :: String -> Int -> CabProp popuptext :: String -> CabProp active :: Bool -> CabProp svgfile :: String -> String -> CabProp populate :: String -> String -> CabProp mode :: String -> CabProp file :: String -> CabProp shape :: String -> CabProp corners :: Float -> CabProp channeltype :: String -> CabProp align :: String -> CabProp sliderincr :: Float -> CabProp max :: Float -> CabProp min :: Float -> CabProp textbox' :: Bool -> CabProp trackerthickness :: Float -> CabProp linethickness :: Float -> CabProp range :: Float -> Float -> (Float, Float) -> CabProp range2 :: Float -> Float -> (Float, Float) -> Maybe Float -> Maybe Float -> CabProp size :: Int -> Int -> CabProp pluginid :: String -> CabProp guirefresh :: Int -> CabProp plant :: String -> CabProp child :: Bool -> CabProp show :: Bool -> CabProp middlec :: Int -> CabProp keywidth :: Int -> CabProp scrollbars :: Bool -> CabProp fontstyle :: String -> CabProp scrubberpos :: Int -> CabProp zoom :: Float -> CabProp displaytype :: String -> CabProp updaterate :: Int -> CabProp wrap :: Bool -> CabProp -- | Use this module if your version of Csound is pre 6.09. module Csound.Compat.Filter zdf1 :: Sig -> Sig -> (Sig, Sig) zlp1 :: Sig -> Sig -> Sig zhp1 :: Sig -> Sig -> Sig zap1 :: Sig -> Sig -> Sig zdf2 :: Sig -> Sig -> Sig -> (Sig, Sig, Sig) zlp :: Sig -> Sig -> Sig -> Sig zbp :: Sig -> Sig -> Sig -> Sig zhp :: Sig -> Sig -> Sig -> Sig zdf2_notch :: Sig -> Sig -> Sig -> (Sig, Sig, Sig, Sig) zbr :: Sig -> Sig -> Sig -> Sig zladder :: Sig -> Sig -> Sig -> Sig -- | Non-Linear normalized diode ladder filter. -- --
--   diode saturation centerFrequency resonance asig
--   
-- -- resonance ranges in the interval [0, 1] and higher. self-resonance -- occurs at 1. -- -- saturation ranges from 1 and higher (typical value: 4) diode :: Sig -> Sig -> Sig -> Sig -> Sig -- | Linear diode ladder filter. -- --
--   linDiode centerFrequency resonance asig
--   
-- -- resonance ranges in the interval [0, 1] and higher. self-resonance -- occurs at 1. linDiode :: Sig -> Sig -> Sig -> Sig -- | Non-Linear not normalized diode ladder filter. -- --
--   noNormDiode saturation centerFrequency resonance asig
--   
-- -- resonance ranges in the interval [0, 1] and higher. self-resonance -- occurs at 1. -- -- saturation ranges from 1 and higher (typical value: 4) noNormDiode :: Sig -> Sig -> Sig -> Sig -> Sig -- | Linear korg 35 low pass filter (12 dB). -- --
--   linDiode centerFrequency resonance asig
--   
-- -- resonance ranges in the interval [0, 1] and higher. self-resonance -- occurs at 1. linKorg_lp :: Sig -> Sig -> Sig -> Sig -- | Linear korg 35 high pass filter (6 dB). -- --
--   linDiode centerFrequency resonance asig
--   
-- -- resonance ranges in the interval [0, 1] and higher. self-resonance -- occurs at 1. linKorg_hp :: Sig -> Sig -> Sig -> Sig -- | Korg 35 low pass filter (12 dB). -- --
--   diode saturation centerFrequency resonance asig
--   
-- -- resonance ranges in the interval [0, 1] and higher. self-resonance -- occurs at 1. -- -- saturation ranges from 1 and higher (typical value: 4) korg_lp :: Sig -> Sig -> Sig -> Sig -> Sig -- | Korg 35 high pass filter (6 dB). -- --
--   diode saturation centerFrequency resonance asig
--   
-- -- resonance ranges in the interval [0, 1] and higher. self-resonance -- occurs at 1. -- -- saturation ranges from 1 and higher (typical value: 4) korg_hp :: Sig -> Sig -> Sig -> Sig -> Sig -- | The compatibility functions. Functions to work with older versions of -- Csound. -- -- The module contains opcodes that work in old versions of Csound. Some -- opcodes are initialy implemented as UDOs. And if they are super cool -- Csound developers decide to reimplement them in C and built in the -- Csound core. It makes the opcodes faster. -- -- But if your version of Csound is not so modern and opcode version is -- not available for you. You can still use the UDO version, which is -- less efficient but should work. -- -- This module is not imported by default and intended to be used -- qualified. module Csound.Compat -- | Named channels. -- -- With named channels we can read and write values to the variables with -- dynamic names. We can specify the variable with string (Str). -- -- Csound has an C api wich is ported to many languages. With named -- channels we can interact with csound that runns a program. We can read -- and write to named channels from another program. module Csound.Control.Channel -- | Reads a value of type double. chnGetD :: Str -> SE D -- | Reads an audio signal. chnGetSig :: Str -> SE Sig -- | Reads a control signal. The control signals are updated at the lower -- rate. chnGetCtrl :: Str -> SE Sig -- | Reads a string. chnGetStr :: Str -> SE Str -- | Writes a value of type double. chnSetD :: D -> Str -> SE () -- | Writes an audio signal. chnSetSig :: Sig -> Str -> SE () -- | Writes a control signal. The control signals are updated at the lower -- rate. chnSetCtrl :: Sig -> Str -> SE () -- | Writes a string. chnSetStr :: Str -> Str -> SE () -- | The functions from this module specify the geometry of the -- GUI-elements. They tell where to render the elements. -- -- Every element is rectangular. To know where to place the element is to -- know the parameters of the bounding rectangle. All rectangles are -- relative and automatically aligned. -- -- We have two functions for grouping. They construct horizontal and -- vertical groups of the elements. Within the group we can change the -- relative size of the rectangles (by scaling one side of the -- rectangle). In place of rectangle we can put an empty space. module Csound.Control.Gui.Layout -- | Horizontal groupping of the elements. All elements are placed in the -- stright horizontal line and aligned by Y-coordinate and height. hor :: [Gui] -> Gui -- | Vertical groupping of the elements. All elements are placed in the -- stright vertical line and aligned by X-coordinate and width. ver :: [Gui] -> Gui -- | An empty space. space :: Gui -- | Scales an element within the group. It depends on the type of the -- alignment (horizontal or vertical) which side of the bounding box is -- scaled. If it's a horizontal group then the width is scaled and height -- is scaled otherwise. -- -- Every element in the group has a scaling factor. By default it equals -- to one. During rendering all scaling factors are summed and divided on -- the sum of all factors. So that factors become weights or proportions. -- This process is called normalization. Scaling one element affects not -- only this element but all other elements in the group! -- -- An example: -- -- One element is twice as large as the other two: -- --
--   hor [a, b, sca 2 c]
--   
-- -- Why is it so? Let's look at the hidden scaling factors: -- --
--   hor [sca 1 a, sca 1 b, sca 2 c]
--   
-- -- During rendering we scale all the scaling fators so that total sum -- equals to one: -- --
--   hor [sca 0.25 a, sca 0.25 b, sca 0.5 c]
--   
sca :: Double -> Gui -> Gui -- | Weighted horizontal grouping. It takes a list of scaling factors and -- elements. horSca :: [(Double, Gui)] -> Gui -- | Weighted vertical grouping. It takes a list of scaling factors and -- elements. verSca :: [(Double, Gui)] -> Gui -- | Layouts the widgets in grid. The first argument is the number of -- widgets in the row. -- --
--   grid rowLength widgets
--   
grid :: Int -> [Gui] -> Gui -- | Sets the padding of the element. How much empty space to reserve -- outside the element. padding :: Int -> Gui -> Gui -- | Sets the margin of the element. How much empty space to reserve -- between the elements within the group. It affects only compound -- elements. margin :: Int -> Gui -> Gui type ScaleFactor = (Double, Double) -- | Rescales the default sizes for the UI elements. resizeGui :: ScaleFactor -> Gui -> Gui -- | Properties that specify the appearance of the GUI elements. The -- specification is inspired by CSS. All properties are set in the -- cascade manner. For example, if you want to change the font type for -- all elements you should set this property only for the top-most GUI -- element. If the property is set on the lower level it wins versus -- property that is set on the higher level. module Csound.Control.Gui.Props -- | Sets the properties for a GUI element. props :: [Prop] -> Gui -> Gui -- | Sets the properties for a GUI element on all levels. forceProps :: [Prop] -> Gui -> Gui -- | Properties of the widgets. data Prop SetLabel :: String -> Prop SetMaterial :: Material -> Prop SetBoxType :: BoxType -> Prop SetColor1 :: Color -> Prop SetColor2 :: Color -> Prop SetTextColor :: Color -> Prop SetFontSize :: Int -> Prop SetFontType :: FontType -> Prop SetEmphasis :: Emphasis -> Prop SetSliderType :: SliderType -> Prop SetTextType :: TextType -> Prop SetButtonType :: ButtonType -> Prop SetOrient :: Orient -> Prop SetKnobType :: KnobType -> Prop SetLabelType :: LabelType -> Prop data BorderType NoBorder :: BorderType DownBoxBorder :: BorderType UpBoxBorder :: BorderType EngravedBorder :: BorderType EmbossedBorder :: BorderType BlackLine :: BorderType ThinDown :: BorderType ThinUp :: BorderType -- | The Csound colours. type Color = Colour Double -- | A rectangle. data Rect Rect :: Int -> Int -> Int -> Int -> Rect [px] :: Rect -> Int [py] :: Rect -> Int [width] :: Rect -> Int [height] :: Rect -> Int data FontType Helvetica :: FontType Courier :: FontType Times :: FontType Symbol :: FontType Screen :: FontType Dingbats :: FontType data Emphasis NoEmphasis :: Emphasis Italic :: Emphasis Bold :: Emphasis BoldItalic :: Emphasis -- | The type of the material of the element. It affects sliders and -- buttons. data Material NoPlastic :: Material Plastic :: Material -- | The orientation of the widget (slider, roller). This property is never -- needs to be set in practice. If this property is not set then default -- orientation is calculated from the bounding box of the widget. If the -- width is greater than the height then we need to use a horizontal -- widget otherwise it should be a vertical one. data Orient Hor :: Orient Ver :: Orient setBorder :: BorderType -> Gui -> Gui setLabel :: String -> Gui -> Gui setMaterial :: Material -> Gui -> Gui setColor1 :: Color -> Gui -> Gui setColor2 :: Color -> Gui -> Gui setColors :: Color -> Color -> Gui -> Gui setTextColor :: Color -> Gui -> Gui setFontSize :: Int -> Gui -> Gui setFontType :: FontType -> Gui -> Gui setEmphasis :: Emphasis -> Gui -> Gui setOrient :: Orient -> Gui -> Gui -- | Open Sound Control. module Csound.Control.Osc -- | The hostname of the computer. An empty string is for local machine. type OscHost = String -- | Port to listen OSC-messages. type OscPort = Int -- | Path-like string ("foobar/baz") type OscAddress = String -- | The string specifies the type of expected arguments. The string can -- contain the characters "bcdfilmst" which stand for Boolean, character, -- double, float, 32-bit integer, 64-bit integer, MIDI, string and -- timestamp. type OscType = String data OscRef -- | Initializes host client. The process starts to run in the background. initOsc :: OscPort -> OscRef -- | Listens for the OSC-messages. The first argument is OSC-reference. We -- can create it with the function initOsc. The next two -- arguments are strings. The former specifies the path-like address to -- listen the messages. It can be: -- --
--   /foo/bar/baz
--   
-- -- The latter specifies the type of expected arguments. The string can -- contain the characters "bcdfilmst" which stand for Boolean, character, -- double, float, 32-bit integer, 64-bit integer, MIDI, string and -- timestamp. -- -- The result is an event of messages. We can run a callback on it with -- standard function runEvt: -- --
--   runEvt :: Evt a -> (a -> SE ()) -> SE ()
--   
listenOsc :: Tuple a => OscRef -> OscAddress -> OscType -> Evt a type ListenOsc a = OscAddress -> a -> SE a class Tuple a => OscVal a -- | Listens for tuples of continuous signals read from OSC-channel. -- --
--   listenOscVal ref address initValue
--   
listenOscVal :: (Tuple a, OscVal a) => OscRef -> String -> a -> SE a -- | Listens for continuous signal from OSC-channel -- --
--   listenOscSig host address initValue
--   
listenOscSig :: OscRef -> OscAddress -> Sig -> SE Sig -- | Listens for pair of continuous signals from OSC-channel -- --
--   listenOscSig2 host address initValue
--   
listenOscSig2 :: OscRef -> OscAddress -> Sig2 -> SE Sig2 -- | Sends OSC-messages. It takes in a name of the host computer (empty -- string is alocal machine), port on which the target machine is -- listening, OSC-addres and type. The last argument produces the values -- for OSC-messages. sendOsc :: Tuple a => OscHost -> OscPort -> OscAddress -> OscType -> Evt a -> SE () module Csound.Control.SE -- | The Csound's IO-monad. All values that produce side effects -- are wrapped in the SE-monad. data SE a -- | It describes a reference to mutable values. data Ref a writeRef :: Tuple a => Ref a -> a -> SE () readRef :: Tuple a => Ref a -> SE a -- | Modifies the Ref value with given function. modifyRef :: Tuple a => Ref a -> (a -> a) -> SE () -- | Adds the given signal to the value that is contained in the reference. mixRef :: (Num a, Tuple a) => Ref a -> a -> SE () -- | Allocates a new local (it is visible within the instrument) mutable -- value and initializes it with value. A reference can contain a tuple -- of variables. newRef :: Tuple a => a -> SE (Ref a) -- | An alias for the function newRef. It returns not the -- reference to mutable value but a pair of reader and writer functions. sensorsSE :: Tuple a => a -> SE (SE a, a -> SE ()) -- | Allocates a new global mutable value and initializes it with value. A -- reference can contain a tuple of variables. newGlobalRef :: Tuple a => a -> SE (Ref a) -- | An alias for the function newRef. It returns not the -- reference to mutable value but a pair of reader and writer functions. globalSensorsSE :: Tuple a => a -> SE (SE a, a -> SE ()) -- | Allocates a new local (it is visible within the instrument) mutable -- value and initializes it with value. A reference can contain a tuple -- of variables. It contains control signals (k-rate) and constants for -- numbers (i-rates). newCtrlRef :: Tuple a => a -> SE (Ref a) -- | Allocates a new global mutable value and initializes it with value. A -- reference can contain a tuple of variables. It contains control -- signals (k-rate) and constants for numbers (i-rates). newGlobalCtrlRef :: Tuple a => a -> SE (Ref a) -- | Allocates a new clearable global mutable value and initializes it with -- value. A reference can contain a tuple of variables. The variable is -- set to zero at the end of every iteration. It's useful for -- accumulation of audio values from several instruments. newClearableGlobalRef :: Tuple a => a -> SE (Ref a) -- | Creates a new table. The Tab could be used while the instrument is -- playing. When the instrument is retriggered the new tab is allocated. -- --
--   newTab size
--   
newTab :: D -> SE Tab -- | Creates a new global table. It's generated only once. It's persisted -- between instrument calls. -- --
--   newGlobalTab identifier size
--   
newGlobalTab :: Int -> SE Tab whileRef :: Tuple st => st -> (st -> SE BoolSig) -> (st -> SE st) -> SE () module Csound.Options -- | Csound options. The default values are -- --
--   flags      = def     -- the only flag set by default is "no-displays"
--                        -- to supress the display of the tables
--   sampleRate = 44100
--   blockSize  = 64
--   gain       = 0.5
--   tabFi      = fineFi 13 [(idLins, 11), (idExps, 11), (idConsts, 9), (idSplines, 11), (idStartEnds, 12)] }
--   scaleUI    = (1, 1)
--   
data Options Options :: Flags -> Maybe Int -> Maybe Int -> Maybe Double -> Maybe TabFi -> Maybe (Double, Double) -> Maybe Jacko -> Maybe [(String, String)] -> Maybe Bool -> Options -- | Csound command line flags [csdFlags] :: Options -> Flags -- | The sample rate [csdSampleRate] :: Options -> Maybe Int -- | The number of audio samples in one control step [csdBlockSize] :: Options -> Maybe Int -- | A gain of the final output [csdGain] :: Options -> Maybe Double -- | Default fidelity of the arrays [csdTabFi] :: Options -> Maybe TabFi -- | Scale factors for UI-window [csdScaleUI] :: Options -> Maybe (Double, Double) [csdJacko] :: Options -> Maybe Jacko -- | list of jack connections to make after csound app is launched (Linux -- only) [csdJackConnect] :: Options -> Maybe [(String, String)] -- | Do we need debug-trace, default is False [csdTrace] :: Options -> Maybe Bool -- | Sets the global duration of the file or output signal to the given -- value. It should be used only once! The proper place is in the -- top-most expression before sending to dac or -- writeWav. setDur :: Sigs a => D -> a -> a -- | Sets sample rate and block size -- --
--   setRates sampleRate blockSize
--   
setRates :: Int -> Int -> Options -- | Sets hardware and software buffers. -- --
--   setBufs hardwareBuf ioBuf
--   
setBufs :: Int -> Int -> Options -- | Sets the default gain for the output signal (should be in range 0 to -- 1). setGain :: Double -> Options -- | Runs as JACK unit with given name (first argument). setJack :: String -> Options -- | Defines what ports we should connect after application is launched -- -- It invokes jack_connect for every pair of port-names in the -- list. setJackConnect :: [(String, String)] -> Options -- | Sets real-time driver to Alsa (use on Linux). setAlsa :: Options -- | Sets real-time driver to Core Audio (use on OSX). setCoreAudio :: Options -- | Sets real-time driver to Mme (use on Windows). setMme :: Options -- | Set's the output name of the device or file. setOutput :: String -> Options -- | Set's the input name of the device or file. setInput :: String -> Options -- | Sends output to speakers. setDac :: Options -- | Reads input from audio-card inputs. setAdc :: Options -- | Provides name identifier for dac. setDacBy :: String -> Options -- | Provides name identifier for adc. setAdcBy :: String -> Options -- | Sets both dac and adc. setThru :: Options -- | Sets the output to nosound. setSilent :: Options -- | Sets midi device. It's an string identifier of the device. -- -- Read MIDI events from device DEVICE. If using ALSA MIDI -- (-+rtmidi=alsa), devices are selected by name and not number. So, you -- need to use an option like -M hw:CARD,DEVICE where CARD and DEVICE are -- the card and device numbers (e.g. -M hw:1,0). In the case of PortMidi -- and MME, DEVICE should be a number, and if it is out of range, an -- error occurs and the valid device numbers are printed. When using -- PortMidi, you can use '-Ma' to enable all devices. This is also -- convenient when you don't have devices as it will not generate an -- error. setMidiDevice :: String -> Options -- | Sets midi device to all. setMa :: Options -- | Sets message level. For input integer value consult the Csound docs -- -- http://csound.com/docs/manual/CommandFlagsCategory.html setMessageLevel :: Int -> Options -- | Sets the tracing or debug info of csound console to minimum. noMessages :: Options setTrace :: Options -- | Provides options for Cabbage VST-engine. setCabbage :: Options -- | Defines a header for a Jacko opcodes. The Jacko opcodes allow for -- greater flexibility with definition of Jack-client. See the Csound -- docs for details and the datatype Jacko. -- --
--   csound doc: <http://csound.github.io/docs/manual/JackoOpcodes.html>
--   
setJacko :: Jacko -> Options data Flags Flags :: AudioFileOutput -> IdTags -> Maybe Rtaudio -> Maybe PulseAudio -> MidiIO -> MidiRT -> Maybe Rtmidi -> Displays -> Config -> Maybe String -> Flags [audioFileOutput] :: Flags -> AudioFileOutput [idTags] :: Flags -> IdTags [rtaudio] :: Flags -> Maybe Rtaudio [pulseAudio] :: Flags -> Maybe PulseAudio [midiIO] :: Flags -> MidiIO [midiRT] :: Flags -> MidiRT [rtmidi] :: Flags -> Maybe Rtmidi [displays] :: Flags -> Displays [config] :: Flags -> Config [flagsVerbatim] :: Flags -> Maybe String data AudioFileOutput AudioFileOutput :: Maybe FormatSamples -> Maybe FormatType -> Maybe String -> Maybe String -> Bool -> Bool -> Maybe Dither -> AudioFileOutput [formatSamples] :: AudioFileOutput -> Maybe FormatSamples [formatType] :: AudioFileOutput -> Maybe FormatType [output] :: AudioFileOutput -> Maybe String [input] :: AudioFileOutput -> Maybe String [nosound] :: AudioFileOutput -> Bool [nopeaks] :: AudioFileOutput -> Bool [dither] :: AudioFileOutput -> Maybe Dither data FormatHeader NoHeader :: FormatHeader RewriteHeader :: FormatHeader data FormatSamples Bit24 :: FormatSamples Alaw :: FormatSamples Uchar :: FormatSamples Schar :: FormatSamples FloatSamples :: FormatSamples Ulaw :: FormatSamples Short :: FormatSamples Long :: FormatSamples data FormatType Aiff :: FormatType Au :: FormatType Avr :: FormatType Caf :: FormatType Flac :: FormatType Htk :: FormatType Ircam :: FormatType Mat4 :: FormatType Mat5 :: FormatType Nis :: FormatType Paf :: FormatType Pvf :: FormatType Raw :: FormatType Sd2 :: FormatType Sds :: FormatType Svx :: FormatType Voc :: FormatType W64 :: FormatType Wav :: FormatType Wavex :: FormatType Xi :: FormatType data Dither Triangular :: Dither Uniform :: Dither data IdTags IdTags :: Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> IdTags [idArtist] :: IdTags -> Maybe String [idComment] :: IdTags -> Maybe String [idCopyright] :: IdTags -> Maybe String [idDate] :: IdTags -> Maybe String [idSoftware] :: IdTags -> Maybe String [idTitle] :: IdTags -> Maybe String data Rtaudio PortAudio :: Rtaudio Alsa :: Rtaudio Jack :: String -> String -> String -> Rtaudio [jackClient] :: Rtaudio -> String [jackInport] :: Rtaudio -> String [jackOutport] :: Rtaudio -> String Mme :: Rtaudio CoreAudio :: Rtaudio NoRtaudio :: Rtaudio data PulseAudio PulseAudio :: String -> String -> String -> PulseAudio [paServer] :: PulseAudio -> String [paOutput] :: PulseAudio -> String [paInput] :: PulseAudio -> String data MidiIO MidiIO :: Maybe String -> Maybe String -> Maybe String -> Bool -> Bool -> MidiIO [midiFile] :: MidiIO -> Maybe String [midiOutFile] :: MidiIO -> Maybe String [muteTracks] :: MidiIO -> Maybe String [rawControllerMode] :: MidiIO -> Bool [terminateOnMidi] :: MidiIO -> Bool data MidiRT MidiRT :: Maybe String -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe String -> MidiRT [midiDevice] :: MidiRT -> Maybe String [midiKey] :: MidiRT -> Maybe Int [midiKeyCps] :: MidiRT -> Maybe Int [midiKeyOct] :: MidiRT -> Maybe Int [midiKeyPch] :: MidiRT -> Maybe Int [midiVelocity] :: MidiRT -> Maybe Int [midiVelocityAmp] :: MidiRT -> Maybe Int [midiOutDevice] :: MidiRT -> Maybe String data Rtmidi PortMidi :: Rtmidi AlsaMidi :: Rtmidi AlsaSeq :: Rtmidi CoreMidi :: Rtmidi MmeMidi :: Rtmidi WinmmeMidi :: Rtmidi VirtualMidi :: Rtmidi NoRtmidi :: Rtmidi data Displays Displays :: Maybe Int -> Maybe DisplayMode -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Bool -> Bool -> Maybe Int -> Displays [csdLineNums] :: Displays -> Maybe Int [displayMode] :: Displays -> Maybe DisplayMode [displayHeartbeat] :: Displays -> Maybe Int [messageLevel] :: Displays -> Maybe Int [mAmps] :: Displays -> Maybe Int [mRange] :: Displays -> Maybe Int [mWarnings] :: Displays -> Maybe Int [mDb] :: Displays -> Maybe Int [mColours] :: Displays -> Maybe Int [mBenchmarks] :: Displays -> Maybe Int [msgColor] :: Displays -> Bool [displayVerbose] :: Displays -> Bool [listOpcodes] :: Displays -> Maybe Int data DisplayMode NoDisplay :: DisplayMode PostScriptDisplay :: DisplayMode AsciiDisplay :: DisplayMode data Config Config :: Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe String -> Maybe (String, String) -> Maybe (String, String) -> Bool -> Maybe Int -> Maybe (Int, String) -> Maybe Double -> Maybe Int -> Config [hwBuf] :: Config -> Maybe Int [ioBuf] :: Config -> Maybe Int [newKr] :: Config -> Maybe Int [newSr] :: Config -> Maybe Int [scoreIn] :: Config -> Maybe String [omacro] :: Config -> Maybe (String, String) [smacro] :: Config -> Maybe (String, String) [setSched] :: Config -> Bool [schedNum] :: Config -> Maybe Int [strsetN] :: Config -> Maybe (Int, String) [skipSeconds] :: Config -> Maybe Double [setTempo] :: Config -> Maybe Int module Csound.SigSpace -- | A class for easy way to process the outputs of the instruments. class SigSpace a mapSig :: SigSpace a => (Sig -> Sig) -> a -> a -- | A class for easy way to process the outputs of the instruments. class SigSpace a => BindSig a bindSig :: BindSig a => (Sig -> SE Sig) -> a -> SE a -- | Scaling the sound. mul :: SigSpace a => Sig -> a -> a -- | Scaling the sound with effectful signal. mul' :: BindSig a => SE Sig -> a -> SE a -- | Rescaling of the bipolar signal (-1, 1) -> (a, b) -- --
--   on a b biSig
--   
on :: SigSpace a => Sig -> Sig -> a -> a -- | Rescaling of the unipolar signal (0, 1) -> (a, b) -- --
--   on a b uniSig
--   
uon :: SigSpace a => Sig -> Sig -> a -> a class SigSpace b => At a b c where { type family AtOut a b c; } at :: At a b c => (a -> b) -> c -> AtOut a b c -- | It applies an effect and mixes the processed signal with original one. -- The first argument is for proportion of drywet -- (originalprocessed). It's like at but it allows to -- balance processed signal with original one. class (SigSpace b, At a b c) => MixAt a b c mixAt :: MixAt a b c => Sig -> (a -> b) -> c -> AtOut a b c -- | It applies an effect and balances the processed signal by original -- one. bat :: At Sig a b => (Sig -> a) -> b -> AtOut Sig a b -- | It applies an effect and balances the processed signal by original -- one. Also it applies an effect and mixes the processed balanced signal -- with original one. bmixAt :: MixAt Sig a b => Sig -> (Sig -> a) -> b -> AtOut Sig a b -- | Crossfade. -- --
--   cfd coeff sig1 sig2
--   
-- -- If coeff equals 0 then we get the first signal and if it equals 1 we -- get the second signal. cfd :: (Num a, SigSpace a) => Sig -> a -> a -> a -- | Bilinear interpolation for four signals. The signals are placed in the -- corners of the unit square. The first two signals are the xy -- coordinates in the square. -- --
--   cfd4 x y a b c d
--   
-- -- cfd4 :: (Num a, SigSpace a) => Sig -> Sig -> a -> a -> a -> a -> a -- | Generic crossfade for n coefficients and n+1 signals. -- --
--   cfds coeffs sigs
--   
cfds :: (Num a, SigSpace a) => [Sig] -> [a] -> a -- | Spectral crossfade. cfdSpec :: Sig -> Spec -> Spec -> Spec -- | Spectral bilinear crossfade (see cfd4). cfdSpec4 :: Sig -> Sig -> Spec -> Spec -> Spec -> Spec -> Spec -- | Generic spectral crossfade. cfdsSpec :: [Sig] -> [Spec] -> Spec -- | Weighted sum. wsum :: (Num a, SigSpace a) => [(Sig, a)] -> a -- | A class for easy way to process the outputs of the instruments. class SigSpace2 a mapSig2 :: SigSpace2 a => (Sig2 -> Sig2) -> a -> a -- | A class for easy way to process the outputs of the instruments. class SigSpace2 a => BindSig2 a bindSig2 :: BindSig2 a => (Sig2 -> SE Sig2) -> a -> SE a -- | Scaling the sound with a pair. mul2 :: SigSpace2 a => Sig2 -> a -> a -- | Scaling the sound with effectful pair of signals. mul2' :: BindSig2 a => SE Sig2 -> a -> SE a -- | Filters module Csound.Air.Filter -- | First order low pass filter (tone in Csound, 6 dB) -- --
--   lp1 centerFreq asig
--   
lp1 :: Sig -> Sig -> Sig -- | First order high pass filter (atone in Csound, 6 dB) -- --
--   hp1 centerFreq asig
--   
hp1 :: Sig -> Sig -> Sig -- | Low-pass filter. -- --
--   lp cutoff resonance sig
--   
lp :: Sig -> Sig -> Sig -> Sig -- | High-pass filter. -- --
--   hp cutoff resonance sig
--   
hp :: Sig -> Sig -> Sig -> Sig -- | Band-pass filter. -- --
--   bp cutoff resonance sig
--   
bp :: Sig -> Sig -> Sig -> Sig -- | Band-reject filter. -- --
--   br cutoff resonance sig
--   
br :: Sig -> Sig -> Sig -> Sig -- | All-pass filter. -- --
--   alp cutoff resonance sig
--   
alp :: Sig -> Sig -> Sig -> Sig -- | Resonance band pass filter (yet another implementation, it's reson in -- Csound) -- --
--   bp2 centerFreq q asig
--   
bp2 :: Sig -> Sig -> Sig -> Sig -- | Resonance band reject filter (yet another implementation, it's areson -- in Csound) -- --
--   br2 centerFreq q asig
--   
br2 :: Sig -> Sig -> Sig -> Sig -- | Low-pass filter. -- --
--   blp cutoff sig
--   
blp :: Sig -> Sig -> Sig -- | High-pass filter. -- --
--   bhp cutoff sig
--   
bhp :: Sig -> Sig -> Sig -- | Band-pass filter. -- --
--   bbp cutoff bandwidth sig
--   
bbp :: Sig -> Sig -> Sig -> Sig -- | Band-regect filter. -- --
--   bbr cutoff bandwidth sig
--   
bbr :: Sig -> Sig -> Sig -> Sig -- | Resonant filter. -- --
--   f centerFreq q asig
--   
type ResonFilter = Sig -> Sig -> Sig -> Sig -- | Filter without a resonance. -- --
--   f centerFreq q asig
--   
type FlatFilter = Sig -> Sig -> Sig -- | Applies a filter n-times. The n is given in the first rgument. filt :: Int -> ResonFilter -> ResonFilter -- | Applies a flat filter (without resonance) n-times. The n is given in -- the first rgument. flatFilt :: Int -> FlatFilter -> FlatFilter -- | Makes fake resonant filter from flat filter. The resulting filter just -- ignores the resonance. toReson :: FlatFilter -> ResonFilter -- | Moog's low-pass filter. -- --
--   mlp centerFrequency qResonance signal
--   
mlp :: Sig -> Sig -> Sig -> Sig -- | Another implementation of moog low pass filter (it's moogladder in -- Csound). The arguments have are just like in the mlp filter. -- --
--   mlp2 centerFreq q asig
--   
mlp2 :: Sig -> Sig -> Sig -> Sig -- | Mooglowpass filter with 18 dB. -- --
--   mlp3 centerFreq q asig
--   
mlp3 :: Sig -> Sig -> Sig -> Sig -- | Low pass filter 18 dB with built in distortion module. -- --
--   lp18 distortion centerFreq resonance asig
--   
-- -- lp18 :: Sig -> Sig -> Sig -> Sig -> Sig -- | Moog ladder filter -- --
--   ladder centerFreq q asig
--   
ladder :: Sig -> Sig -> Sig -> Sig -- | Formant filter. -- --
--   formant bandPassFilter formants asig
--   
-- -- It expects a band pass filter, a list of formants and processed -- signal. The signal is processed with each filter the result is a sum -- of all proceessed signals. Formant filters are used to mimic the -- vocalization of the sound. formant :: ResonFilter -> [(Sig, Sig)] -> Sig -> Sig -- | Formant filter that sings an A. singA :: Sig -> Sig -- | Formant filter that sings an O. singO :: Sig -> Sig -- | Formant filter that sings an E. singE :: Sig -> Sig -- | Formant filter that sings an U. singU :: Sig -> Sig -- | Formant filter that sings an O. singO2 :: Sig -> Sig -- | Produces smooth transitions between values in the signals. The first -- value defines a duration in seconds for a transition from one value to -- another in piecewise constant signals. -- --
--   smooth transTime asig
--   
smooth :: Sig -> Sig -> Sig -- | Makes slides between values in the signals. The first value defines a -- duration in seconds for a transition from one value to another in -- piecewise constant signals. slide :: Sig -> Sig -> Sig -- | Analog-like low-pass filter -- --
--   alpf1 centerFrequency resonance asig
--   
alp1 :: Sig -> Sig -> Sig -> Sig -- | Analog-like low-pass filter -- --
--   alpf2 centerFrequency resonance asig
--   
alp2 :: Sig -> Sig -> Sig -> Sig -- | Analog-like low-pass filter -- --
--   alpf3 centerFrequency resonanceance asig
--   
alp3 :: Sig -> Sig -> Sig -> Sig -- | Analog-like low-pass filter -- --
--   alpf4 centerFrequency resonance asig
--   
-- -- Analog outputs -- -- alp4 :: Sig -> Sig -> Sig -> (Sig, Sig, Sig, Sig) -- | Analog-like high-pass filter -- --
--   ahp centerFrequency asig
--   
ahp :: Sig -> Sig -> Sig -- | Zero-delay feedback implementation of 1 pole filter. -- -- ouputs low-pass and high-pass signals. -- --
--   zdf1 centerFreq asig = (alp, ahp)
--   
zdf1 :: Sig -> Sig -> (Sig, Sig) -- | Zero-delay feedback implementation of 1 pole low-pass filter. -- --
--   zlp1 centerFreq asig
--   
zlp1 :: Sig -> Sig -> Sig -- | Zero-delay feedback implementation of 1 pole high-pass filter. -- --
--   zhp1 centerFreq asig
--   
zhp1 :: Sig -> Sig -> Sig -- | Zero-delay feedback implementation of 1 pole allpass filter. -- --
--   zap1 centerFreq asig
--   
zap1 :: Sig -> Sig -> Sig -- | zero delay feedback 2 pole filter -- --
--   zdf2 centerFreq q asig = (alp, abp, ahp)
--   
zdf2 :: Sig -> Sig -> Sig -> (Sig, Sig, Sig) -- | zero delay feedback 2 pole Low pass filter. Q is unipolar [0, 1] -- --
--   zlp centerFreq q asig
--   
zlp :: Sig -> Sig -> Sig -> Sig -- | zero delay feedback 2 pole High pass filter. Q is unipolar [0, 1] -- --
--   zhp centerFreq q asig
--   
zhp :: Sig -> Sig -> Sig -> Sig -- | zero delay feedback 2 pole Band pass. Q is unipolar [0, 1] -- --
--   zbp centerFreq q asig
--   
zbp :: Sig -> Sig -> Sig -> Sig -- | Unity-gain bandpass (zero delay feedback 2 pole). Q is unipolar [0, 1] -- --
--   zubp centerFreq q asig
--   
zubp :: Sig -> Sig -> Sig -> Sig -- | zero delay feedback 2 pole Notch (band reject). Q is unipolar [0, 1] -- --
--   zbr centerFreq q asig
--   
zbr :: Sig -> Sig -> Sig -> Sig -- | zero delay feedback 2 pole Allpass filter. Q is unipolar [0, 1] -- --
--   zap centerFreq q asig
--   
zap :: Sig -> Sig -> Sig -> Sig -- | zero delay feedback 2 pole Peak filter. Q is unipolar [0, 1] -- --
--   zpeak centerFreq q asig
--   
zpeak :: Sig -> Sig -> Sig -> Sig -- | Zero-delay feedback implementation of 4 pole ladder filter. Q is -- unipolar [0, 1] -- --
--   zladder centerFreq q asig
--   
zladder :: Sig -> Sig -> Sig -> Sig -- | Chebyshev type I low pass filter (with 2 poles). -- -- lpCheb1 centerFreq asig lpCheb1 :: Sig -> Sig -> Sig -- | Chebyshev type I low pass filter (with given number of poles, first -- argument). -- -- lpCheb1' npols centerFreq asig lpCheb1' :: D -> Sig -> Sig -> Sig -- | Chebyshev type II low pass filter (with 2 poles). -- -- lpCheb2 centerFreq asig lpCheb2 :: Sig -> Sig -> Sig -- | Chebyshev type II low pass filter (with given number of poles, first -- argument). -- -- lpCheb2' npols centerFreq asig lpCheb2' :: D -> Sig -> Sig -> Sig -- | Butterworth lowpass filter based on clfilt opcode (with 2 poles). -- -- clp centerFreq asig clp :: Sig -> Sig -> Sig -- | Butterworth lowpass filter based on clfilt opcode (with given number -- of poles, first argument). -- -- clp' npols centerFreq asig clp' :: D -> Sig -> Sig -> Sig bpCheb1 :: Sig -> Sig -> Sig -> Sig bpCheb1' :: D -> Sig -> Sig -> Sig -> Sig bpCheb2 :: Sig -> Sig -> Sig -> Sig bpCheb2' :: D -> Sig -> Sig -> Sig -> Sig cbp :: Sig -> Sig -> Sig -> Sig cbp' :: D -> Sig -> Sig -> Sig -> Sig -- | Chebyshev type I high pass filter (with 2 poles). -- -- hpCheb1 centerFreq asig hpCheb1 :: Sig -> Sig -> Sig -- | Chebyshev type I high pass filter (with given number of poles, first -- argument). -- -- hpCheb1' npols centerFreq asig hpCheb1' :: D -> Sig -> Sig -> Sig -- | Chebyshev type II high pass filter (with 2 poles). -- -- hpCheb2 centerFreq asig hpCheb2 :: Sig -> Sig -> Sig -- | Chebyshev type II high pass filter (with given number of poles, first -- argument). -- -- hpCheb2' npols centerFreq asig hpCheb2' :: D -> Sig -> Sig -> Sig -- | Butterworth high pass filter based on clfilt opcode (with 2 poles). -- -- chp centerFreq asig chp :: Sig -> Sig -> Sig -- | Butterworth high pass filter based on clfilt opcode (with given number -- of poles, first argument). -- -- chp' npols centerFreq asig chp' :: D -> Sig -> Sig -> Sig cheb1 :: Sig -> Sig -> Sig -> Sig cheb2 :: Sig -> Sig -> Sig -> Sig vcf :: Sig -> Sig -> Sig -> Sig cheb1' :: D -> Sig -> Sig -> Sig -> Sig cheb2' :: D -> Sig -> Sig -> Sig -> Sig vcf' :: D -> Sig -> Sig -> Sig -> Sig -- | plastic sound -- --
--   plastic centerFreq q asig
--   
plastic :: Sig -> Sig -> Sig -> Sig -- | wobble sound -- --
--   wobble centerFreq q asig
--   
wobble :: Sig -> Sig -> Sig -> Sig -- | trumpy sound -- --
--   trumpy centerFreq q asig
--   
trumpy :: Sig -> Sig -> Sig -> Sig -- | harsh sound -- --
--   harsh centerFreq q asig
--   
harsh :: Sig -> Sig -> Sig -> Sig -- | Fixed version of tbfcv filter the first argument is distortion (range -- [0, 1]) tbf :: Sig -> Sig -> Sig -> Sig -> Sig -- | Zero-delay feedback implementation of 4 pole diode ladder filter (24 -- dB/oct) . This filter design was originally used in the EMS VCS3 and -- was the resonant filter in the Roland TB-303. -- -- -- --
--   diode saturation centerFreq q asig
--   
diode :: D -> Sig -> Sig -> Sig -> Sig -- | Faster diode, but lesser quality -- --
--   fdiode saturation centerFreq q asig
--   
fdiode :: D -> Sig -> Sig -> Sig -> Sig -- | Linear diode, no saturation involved -- --
--   linDiode centerFreq q asig
--   
linDiode :: Sig -> Sig -> Sig -> Sig -- | Linear Korg35 resonant low-pass filter -- --
--   linKorg_lp centerFreq q asig
--   
linKorg_lp :: Sig -> Sig -> Sig -> Sig -- | Linear Korg35 resonant high-pass filter -- --
--   linKorg_hp centerFreq q asig
--   
linKorg_hp :: Sig -> Sig -> Sig -> Sig linKorg_bp :: Sig -> Sig -> Sig -> Sig -- | Korg35 resonant low-pass filter. Q is unipolar [0, 1] -- --
--   korg_lp saturation centerFreq q asig
--   
korg_lp :: D -> Sig -> Sig -> Sig -> Sig -- | Korg35 resonant high-pass filter. Q is unipolar [0, 1] -- --
--   korg_hp saturation centerFreq q asig
--   
korg_hp :: D -> Sig -> Sig -> Sig -> Sig -- | Korg35 resonant band-pass filter. Q is unipolar [0, 1] -- --
--   korg_bp saturation centerFreq q asig
--   
korg_bp :: D -> Sig -> Sig -> Sig -> Sig -- | Alias for korg_lp klp :: D -> Sig -> Sig -> Sig -> Sig -- | Alias for korg_hp khp :: D -> Sig -> Sig -> Sig -> Sig -- | Alias for korg_bp kbp :: D -> Sig -> Sig -> Sig -> Sig -- | State variable low-pass filter slp :: Sig -> Sig -> Sig -> Sig -- | State variable high-pass filter shp :: Sig -> Sig -> Sig -> Sig -- | State variable band-pass filter sbp :: Sig -> Sig -> Sig -> Sig -- | State variable band-reject filter sbr :: Sig -> Sig -> Sig -> Sig multiStatevar :: (Sig, Sig, Sig) -> Sig -> Sig -> Sig -> Sig multiSvfilter :: (Sig, Sig, Sig) -> Sig -> Sig -> Sig -> Sig -- | Creating Function Tables (Buffers) module Csound.Tab -- | Tables (or arrays) data Tab -- | The default table. It's rendered to (-1) in the Csound. noTab :: Tab -- | nsamp — Returns the number of samples loaded into a stored function -- table number. -- --
--   nsamp(x) (init-rate args only)
--   
-- -- csound doc: http://www.csounds.com/manual/html/nsamp.html nsamp :: Tab -> D -- | Returns a length of the table. ftlen :: Tab -> D -- | Returns the sample rate for a table that stores wav files ftsr :: Tab -> D -- | Returns the number of channels for a table that stores wav files ftchnls :: Tab -> D -- | Returns the base frequency for a table that stores wav files ftcps :: Tab -> D -- | Table length in seconds for files that are read with GEN01 (which a re -- read with functions like wavs, wavTab, wavLeft, wavRight). tabDur :: Tab -> D -- | Table size fidelity (how many points in the table by default). data TabFi -- | Sets different table size for different GEN-routines. -- --
--   fineFi n ps
--   
-- -- where -- -- -- -- with this function we can set lower table sizes for tables that are -- usually used in the envelopes. fineFi :: Int -> [(Int, Int)] -> [(String, Int)] -> TabFi -- | Sets the same table size for all tables. -- --
--   coarseFi n
--   
-- -- where n is a degree of 2. For example, n = 10 sets -- size to 1024 points for all tables by default. coarseFi :: Int -> TabFi -- | Table contains all provided values (table is extended to contain all -- values and to be of the power of 2 or the power of two plus one). (by -- default it skips normalization). doubles :: [Double] -> Tab -- | Creates a new table. The Tab could be used while the instrument is -- playing. When the instrument is retriggered the new tab is allocated. -- --
--   newTab size
--   
newTab :: D -> SE Tab -- | Creates a new global table. It's generated only once. It's persisted -- between instrument calls. -- --
--   newGlobalTab identifier size
--   
newGlobalTab :: Int -> SE Tab -- | Calculates the number of samples needed to store the given amount of -- seconds. It multiplies the value by the current sample rate. tabSizeSeconds :: D -> D -- | Calculates the closest power of two value for a given size. tabSizePower2 :: D -> D -- | Calculates the closest power of two value in samples for a given size -- in seconds. tabSizeSecondsPower2 :: D -> D data WavChn WavLeft :: WavChn WavRight :: WavChn WavAll :: WavChn data Mp3Chn Mp3Mono :: Mp3Chn Mp3Stereo :: Mp3Chn Mp3Left :: Mp3Chn Mp3Right :: Mp3Chn Mp3All :: Mp3Chn -- | Loads wav or aiff file to table -- --
--   wavs fileName skipTime channel
--   
-- -- skipTime specifies from what second it should read the file. -- -- with channel argument we can read left, right or both channels. wavs :: String -> Double -> WavChn -> Tab -- | Load lossless stereo file to table. wavAll :: String -> Tab -- | Reads left channel of audio-file wavLeft :: String -> Tab -- | Reads right channel of audio-file wavRight :: String -> Tab -- | Loads mp3 file to table: -- --
--   mp3s fileName skipTime format
--   
-- -- skipTime specifies from what second it should read the file. -- -- format is: 1 - for mono files, 2 - for stereo files, 3 - for left -- channel of stereo file, 4 for right channel of stereo file mp3s :: String -> Double -> Mp3Chn -> Tab -- | Reads left channel of mp3-file mp3Left :: String -> Tab -- | Reads right channel of mp3-file mp3Right :: String -> Tab -- | Reads mono of mp3-file mp3m :: String -> Tab -- | Reads numbers from file (GEN23) -- -- csound doc: http://www.csounds.com/manual/html/GEN23.html readNumFile :: String -> Tab -- | Reads trajectory from file (GEN28) -- -- csound doc: http://www.csounds.com/manual/html/GEN28.html readTrajectoryFile :: String -> Tab -- | Reads PVOCEX files (GEN43) -- -- csound doc: http://www.csounds.com/manual/html/GEN43.html readPvocex :: String -> Int -> Tab -- | readMultichannel — Creates an interleaved multichannel table from the -- specified source tables, in the format expected by the ftconv opcode -- (GEN52). -- --
--   f # time size 52 nchannels fsrc1 offset1 srcchnls1 [fsrc2 offset2 srcchnls2 ... fsrcN offsetN srcchnlsN]
--   
-- -- csound doc: http://www.csounds.com/manual/html/GEN52.html readMultichannel :: Int -> [(Tab, Int, Int)] -> Tab type PartialStrength = Double type PartialNumber = Double type PartialPhase = Double type PartialDC = Double -- | Series of harmonic partials: -- --
--   sine = sines [1]
--   
-- --
--   saw = sines $ fmap (1 / ) [1 .. 10]
--   
-- --
--   square = sines $ fmap (1 / ) [1, 3 .. 11]
--   
-- --
--   triangle = sines $ zipWith (\a b -> a / (b ** 2)) (cycle [1, -1]) [1, 3 .. 11]
--   
sines :: [PartialStrength] -> Tab -- | Specifies series of possibly inharmonic partials. sines3 :: [(PartialNumber, PartialStrength, PartialPhase)] -> Tab -- | Just like sines3 but phases are set to zero. sines2 :: [(PartialNumber, PartialStrength)] -> Tab -- | Just like sines2 but partial strength is set to one. sines1 :: [PartialNumber] -> Tab -- | Specifies series of possibly inharmonic partials with direct current. sines4 :: [(PartialNumber, PartialStrength, PartialPhase, PartialDC)] -> Tab -- | Generates values similar to the opcode buzz. -- --
--   buzzes numberOfHarmonics [lowestHarmonic, coefficientOfAttenuation]
--   
-- -- With buzzes n [l, r] you get n harmonics from -- l that are attenuated by the factor of r on each -- step. buzzes :: Double -> [Double] -> Tab -- | Sines with bandwidth (simplified padsynth generator) -- -- bwSines harmonics bandwidth bwSines :: [Double] -> Double -> Tab -- | Sines with bandwidth (simplified padsynth generator). Only odd -- harmonics are present -- -- bwOddSines harmonics bandwidth bwOddSines :: [Double] -> Double -> Tab -- | It's just like sines3 but inplace of pure sinewave it uses supplied in -- the first argument shape. -- -- mixOnTab srcTable [(partialNumber, partialStrength, partialPahse)] -- -- phahse is in range [0, 1] mixOnTab :: Tab -> [(PartialNumber, PartialStrength, PartialPhase)] -> Tab -- | It's like mixOnTab but it's more generic since we can mix not -- only one shape. But we can specify shape for each harmonic. mixTabs :: [(Tab, PartialNumber, PartialStrength, PartialPhase)] -> Tab -- | Csound's GEN33 — Generate composite waveforms by mixing simple -- sinusoids. -- --
--   tabSines1 srcTab nh scl [fmode]
--   
-- -- Csound docs: http://www.csounds.com/manual/html/GEN33.html tabSines1 :: Tab -> Double -> Double -> Maybe Double -> Tab -- | Csound's GEN34 — Generate composite waveforms by mixing simple -- sinusoids. -- --
--   tabSines2 srcTab nh scl [fmode]
--   
-- -- Csound docs: http://www.csounds.com/manual/html/GEN3.html tabSines2 :: Tab -> Double -> Double -> Maybe Double -> Tab -- | "wave" — Generates a compactly supported wavelet function. -- --
--   waveletTab srcTab seq
--   
-- -- Csound docs: http://www.csounds.com/manual/html/GENwave.html waveletTab :: Tab -> Int -> Tab -- | "wave" — Generates a compactly supported wavelet function. The result -- table is rescaled. -- --
--   waveletTab srcTab seq
--   
-- -- Csound docs: http://www.csounds.com/manual/html/GENwave.html rescaleWaveletTab :: Tab -> Int -> Tab -- | Table for pure sine wave. sine :: Tab -- | Table for pure cosine wave. cosine :: Tab -- | Table for sigmoid wave. sigmoid :: Tab -- | Table for sigmoid rise wave. sigmoidRise :: Tab -- | Table for sigmoid fall wave. sigmoidFall :: Tab -- | Creates tanh sigmoid. The argument is the radius of teh sigmoid. tanhSigmoid :: Double -> Tab -- | Linear segments that form a singl cycle of triangle wave. triTab :: Tab -- | Linear segments that form a single cycle of sawtooth wave. sawTab :: Tab -- | Linear segments that form a single cycle of square wave. sqrTab :: Tab -- | Pulse-width wave formed with linear segments. Duty cycle rages from 0 -- to 1. 0.5 is a square wave. pwTab :: Double -> Tab -- | Tab with tanh from the given interval. -- --
--   tanhTab (start, end)
--   
tanhTab :: (Double, Double) -> Tab -- | Tab with tanh from the given interval. The table is rescaled. -- --
--   rescaleTanhTab (start, end)
--   
rescaleTanhTab :: (Double, Double) -> Tab -- | Tab with exponential from the given interval. -- --
--   expTab (start, end)
--   
expTab :: (Double, Double) -> Tab -- | Tab with exponential from the given interval. The table is rescaled. -- --
--   rescaleExpTab (start, end)
--   
rescaleExpTab :: (Double, Double) -> Tab -- | Tab with sone from the given interval. -- --
--   soneTab (start, end) equalpoint
--   
-- -- soneTab :: (Double, Double) -> Double -> Tab -- | Tab with sone from the given interval. -- --
--   soneTab (start, end) equalpoint
--   
-- -- rescaleSoneTab :: (Double, Double) -> Double -> Tab -- | "farey" — Fills a table with the Farey Sequence Fn of the integer n. -- -- see details in Csound doc: -- http://www.csounds.com/manual/html/GENfarey.html -- -- Notice that the arguments are reversed (in the haskell mindset) -- --
--   fareyTab mode num
--   
-- -- num -- the integer n for generating Farey Sequence Fn -- -- mode -- integer to trigger a specific output to be written into the -- table: -- -- fareyTab :: Int -> Int -> Tab -- | Constant segments (sample and hold). -- --
--   consts [a, n1, b, n2, c, ...]
--   
-- -- where -- -- consts :: [Double] -> Tab -- | Segments of straight lines. -- --
--   lins [a, n1, b, n2, c, ...]
--   
-- -- where -- -- lins :: [Double] -> Tab -- | Segments of cubic polynomials. -- --
--   cubes [a, n1, b, n2, c, ...]
--   
-- -- where -- -- cubes :: [Double] -> Tab -- | Segments of the exponential curves. -- --
--   exps [a, n1, b, n2, c, ...]
--   
-- -- where -- -- exps :: [Double] -> Tab -- | Cubic spline curve. -- --
--   splines [a, n1, b, n2, c, ...]
--   
-- -- where -- -- splines :: [Double] -> Tab -- | Creates a table from a starting value to an ending value. -- --
--   startEnds [val1, dur1, type1, val2, dur2, type2, val3, ... typeX, valN]
--   
-- -- -- --
--   beg + (end - beg) * (1 - exp( i*type)) / (1 - exp(type * dur))
--   
-- -- startEnds :: [Double] -> Tab -- | tabseg -- Writes composite waveforms made up of pre-existing -- waveforms. -- -- tabseg [(tab, amplitude, duration)] -- -- Csound GEN18: http://www.csounds.com/manual/html/GEN18.html -- -- Butnotice the difference with Csound we specify start and finish of -- writing but here we only specify the relative length of segments. -- Segments are arranged so that the start f next segment comes right -- after the end of the prev segment. tabseg :: [(Tab, PartialStrength, Double)] -> Tab -- | Linear segments in breakpoint fashion: -- --
--   bpLins [x1, y1, x2, y2, ..., xN, yN]
--   
-- -- csound docs: http://www.csounds.com/manual/html/GEN27.html -- -- All x1, x2, .. should belong to the interval [0, 1]. The actual values -- are rescaled to fit the table size. bpLins :: [Double] -> Tab -- | Exponential segments in breakpoint fashion: -- --
--   bpExps [x1, y1, x2, y2, ..., xN, yN]
--   
-- -- csound docs: http://www.csounds.com/manual/html/GEN25.html -- -- All x1, x2, .. should belong to the interval [0, 1]. The actual values -- are rescaled to fit the table size. bpExps :: [Double] -> Tab -- | Equally spaced constant segments. -- --
--   econsts [a, b, c, ...]
--   
-- -- is the same as -- --
--   consts [a, 1, b, 1, c, ...]
--   
econsts :: [Double] -> Tab -- | Equally spaced segments of straight lines. -- --
--   elins [a, b, c, ...]
--   
-- -- is the same as -- --
--   lins [a, 1, b, 1, c, ...]
--   
elins :: [Double] -> Tab -- | Equally spaced segments of cubic polynomials. -- --
--   ecubes [a, b, c, ...]
--   
-- -- is the same as -- --
--   cubes [a, 1, b, 1, c, ...]
--   
ecubes :: [Double] -> Tab -- | Equally spaced segments of exponential curves. -- --
--   eexps [a, b, c, ...]
--   
-- -- is the same as -- --
--   exps [a, 1, b, 1, c, ...]
--   
eexps :: [Double] -> Tab -- | Equally spaced spline curve. -- --
--   esplines [a, b, c, ...]
--   
-- -- is the same as -- --
--   splines [a, 1, b, 1, c, ...]
--   
esplines :: [Double] -> Tab -- | Equally spaced interpolation for the function startEnds -- --
--   estartEnds [val1, type1, val2, typ2, ...]
--   
-- -- is the same as -- --
--   estartEnds [val1, 1, type1, val2, 1, type2, ...]
--   
estartEnds :: [Double] -> Tab etabseg :: [(Tab, PartialStrength)] -> Tab -- | Polynomials. -- --
--   polys xl xr [c0, c1, c2, ..]
--   
-- -- where -- -- -- --
--   c0 + c1 * x + c2 * x * x + ...
--   
polys :: Double -> Double -> [Double] -> Tab -- | Chebyshev polynomials of the first kind. -- --
--   polys xl xr [h0, h1, h2, ..]
--   
-- -- where -- -- chebs1 :: Double -> Double -> [Double] -> Tab -- | Chebyshev polynomials of the second kind. -- --
--   polys xl xr [h0, h1, h2, ..]
--   
-- -- where -- -- chebs2 :: Double -> Double -> [Double] -> Tab -- | Modified Bessel function of the second kind, order 0 (for amplitude -- modulated FM). -- --
--   bessels xint
--   
-- -- the function is defined within the interval [0, xint]. bessels :: Double -> Tab -- | Uniform (positive numbers only) uniDist :: Tab -- | Linear (positive numbers only) linDist :: Tab -- | Triangular (positive and negative numbers) triDist :: Tab -- | Exponential (positive numbers only) expDist :: Tab -- | Biexponential (positive and negative numbers) biexpDist :: Tab -- | Gaussian (positive and negative numbers) gaussDist :: Tab -- | Cauchy (positive and negative numbers) cauchyDist :: Tab -- | Positive Cauchy (positive numbers only) pcauchyDist :: Tab -- | Beta (positive numbers only) -- --
--   betaDist alpha beta
--   
-- -- betaDist :: Double -> Double -> Tab -- | Weibull (positive numbers only) -- -- weibullDist :: Double -> Tab -- | Poisson (positive numbers only) poissonDist :: Tab -- | Generates a random distribution using a distribution histogram -- (GEN40). -- -- Csound docs: http://www.csounds.com/manual/html/GEN40.html tabDist :: Tab -> Tab uniDist' :: Double -> Tab linDist' :: Double -> Tab triDist' :: Double -> Tab expDist' :: Double -> Tab biexpDist' :: Double -> Tab gaussDist' :: Double -> Tab cauchyDist' :: Double -> Tab pcauchyDist' :: Double -> Tab betaDist' :: Double -> Double -> Double -> Tab weibullDist' :: Double -> Double -> Tab poissonDist' :: Double -> Tab -- | randDist — Generates a random list of numerical pairs (GEN41). -- --
--   randDist  [value1, prob1, value2, prob2, value3, prob3 ... valueN, probN]
--   
-- -- The first number of each pair is a value, and the second is the -- probability of that value to be chosen by a random algorithm. Even if -- any number can be assigned to the probability element of each pair, it -- is suggested to give it a percent value, in order to make it clearer -- for the user. -- -- This subroutine is designed to be used together with duserrnd and urd -- opcodes (see duserrnd for more information). randDist :: [Double] -> Tab -- | rangeDist — Generates a random distribution of discrete ranges of -- values (GEN42). -- -- The first number of each group is a the minimum value of the range, -- the second is the maximum value and the third is the probability of -- that an element belonging to that range of values can be chosen by a -- random algorithm. Probabilities for a range should be a fraction of 1, -- and the sum of the probabilities for all the ranges should total 1.0. -- -- This subroutine is designed to be used together with duserrnd and urd -- opcodes (see duserrnd for more information). Since both duserrnd and -- urd do not use any interpolation, it is suggested to give a size -- reasonably big. rangeDist :: [Double] -> Tab -- | The Hamming window. The peak equals to 1. winHamming :: Tab -- | The Hanning window. The peak equals to 1. winHanning :: Tab -- | The Bartlett window. The peak equals to 1. winBartlett :: Tab -- | The Blackman window. The peak equals to 1. winBlackman :: Tab -- | The Harris window. The peak equals to 1. winHarris :: Tab -- | This creates a function that contains a Gaussian window with a maximum -- value of 1. The extra argument specifies how broad the window is, as -- the standard deviation of the curve; in this example the s.d. is 2. -- The default value is 1. -- --
--   winGauss 2
--   
winGauss :: Double -> Tab -- | This creates a function that contains a Kaiser window with a maximum -- value of 1. The extra argument specifies how "open" the window is, for -- example a value of 0 results in a rectangular window and a value of 10 -- in a Hamming like window. -- --
--   winKaiser openness
--   
winKaiser :: Double -> Tab -- | The Rectangle window. The peak equals to 1. winRectangle :: Tab -- | The Sync window. The peak equals to 1. winSync :: Tab -- | Creates tables for the padsynth algorithm (described at -- http://www.paulnasca.com/algorithms-created-by-me). The table -- size should be very big the default is 18 power of 2. -- -- csound docs: -- http://csound.github.io/docs/manual/GENpadsynth.html padsynth :: PadsynthSpec -> Tab -- | Padsynth parameters. -- -- see for details: -- http://csound.github.io/docs/manual/GENpadsynth.html data PadsynthSpec PadsynthSpec :: Double -> Double -> Double -> Double -> PadsynthShape -> Double -> [Double] -> PadsynthSpec [padsynthFundamental] :: PadsynthSpec -> Double [padsynthBandwidth] :: PadsynthSpec -> Double [padsynthPartialScale] :: PadsynthSpec -> Double [padsynthHarmonicStretch] :: PadsynthSpec -> Double [padsynthShape] :: PadsynthSpec -> PadsynthShape [padsynthShapeParameter] :: PadsynthSpec -> Double [padsynthHarmonics] :: PadsynthSpec -> [Double] data PadsynthShape GaussShape :: PadsynthShape SquareShape :: PadsynthShape ExpShape :: PadsynthShape -- | Specs for padsynth algorithm: -- --
--   defPadsynthSpec partialBandwidth harmonics
--   
-- -- defPadsynthSpec :: Double -> [Double] -> PadsynthSpec -- | Generates harmonic partials by analyzing an existing table. -- --
--   tabHarmonics src minh maxh [ref_sr] [interp]
--   
-- -- -- -- GEN30 for Csound: http://www.csounds.com/manual/html/GEN30.html tabHarmonics :: Tab -> Double -> Double -> Maybe Double -> Maybe Double -> Tab -- | Normalizing table -- -- Csound GEN04: http://www.csounds.com/manual/html/GEN04.html normTab :: NormTabSpec -> Tab -> Tab data NormTabSpec ScanLeftToRight :: NormTabSpec ScanFromMiddle :: NormTabSpec -- | Creates a new table wich contains all values from the source table -- rescaled to the given interval. -- --
--   scaleTab (minValue, maxValue) sourceTab
--   
scaleTab :: (Double, Double) -> Tab -> Tab -- | Creates a table of doubles (It's f-table in Csound). Arguments are: -- -- -- -- All tables are created at 0 and memory is never released. gen :: Int -> [Double] -> Tab -- | Skips normalization (sets table size to negative value) skipNorm :: Tab -> Tab -- | Force normalization (sets table size to positive value). Might be -- useful to restore normalization for table doubles. forceNorm :: Tab -> Tab -- | Sets an absolute size value. As you can do it in the Csound files. setSize :: Int -> Tab -> Tab -- | Sets the relative size value. You can set the base value in the -- options (see tabResolution at CsdOptions, with -- tabResolution you can easily change table sizes for all your tables). -- Here zero means the base value. 1 is the base value multiplied by 2, 2 -- is the base value multiplied by 4 and so on. Negative values mean -- division by the specified degree. setDegree :: Int -> Tab -> Tab -- | Adds guard point to the table size (details of the interpolation -- schemes: you do need guard point if your intention is to read the -- table once but you don't need the guard point if you read table in -- many cycles, the guard point is the the first point of your table). guardPoint :: Tab -> Tab -- | Shortcut for guardPoint. gp :: Tab -> Tab -- | Sets degrees from -3 to 3. lllofi :: Tab -> Tab -- | Sets degrees from -3 to 3. llofi :: Tab -> Tab -- | Sets degrees from -3 to 3. lofi :: Tab -> Tab -- | Sets degrees from -3 to 3. midfi :: Tab -> Tab -- | Sets degrees from -3 to 3. hifi :: Tab -> Tab -- | Sets degrees from -3 to 3. hhifi :: Tab -> Tab -- | Sets degrees from -3 to 3. hhhifi :: Tab -> Tab idWavs :: Int idMp3s :: Int idDoubles :: Int idSines :: Int idSines3 :: Int idSines2 :: Int idPartials :: Int idSines4 :: Int idBuzzes :: Int idConsts :: Int idLins :: Int idCubes :: Int idExps :: Int idSplines :: Int idStartEnds :: Int idPolys :: Int idChebs1 :: Int idChebs2 :: Int idBessels :: Int idWins :: Int idPadsynth :: String idTanh :: String idExp :: String idSone :: String idFarey :: String idWave :: String -- | Transforms phasor that is defined in seconds to relative phasor that -- ranges in 0 to 1. sec2rel :: Tab -> Sig -> Sig -- | Container list of tables data TabList tabList :: [Tab] -> TabList fromTabList :: TabList -> Sig -> Tab fromTabListD :: TabList -> D -> Tab -- | Writes tables in sequential locations. -- -- 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. -- --
--   kstart tablewa kfn, asig, koff
--   
-- -- csound docs: http://www.csounds.com/manual/html/tablewa.html tablewa :: Tab -> Sig -> Sig -> SE Sig -- | tablew — Change the contents of existing function tables. -- -- 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. Using tablew with i-rate signal -- and index values is allowed, but the specified data will always be -- written to the function table at k-rate, not during the initialization -- pass. The valid combinations of variable types are shown by the first -- letter of the variable names. -- --
--   tablew asig, andx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   tablew isig, indx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   tablew ksig, kndx, ifn [, ixmode] [, ixoff] [, iwgmode]
--   
-- -- csound doc: http://www.csounds.com/manual/html/tablew.html tablew :: Sig -> Sig -> Tab -> SE () -- | Notice that this function is the same as tab, but it wraps -- the output in the SE-monad. So you can use the tab if your -- table is read-only and you can use readTab if you want to -- update the table and the order of read/write operation is important. -- -- Fast table opcodes. -- -- 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). -- --
--   kr  tab  kndx, ifn[, ixmode]
--   ar  tab  xndx, ifn[, ixmode]
--   
-- -- csound doc: http://www.csounds.com/manual/html/tab.html readTab :: Sig -> Tab -> SE Sig -- | Notice that this function is the same as table, but it wraps -- the output in the SE-monad. So you can use the table if your -- table is read-only and you can use readTable if you want to -- update the table and the order of read/write operation is important. -- -- Accesses table values by direct indexing. -- --
--   ares  table  andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires  table  indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres  table  kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://www.csounds.com/manual/html/table.html readTable :: SigOrD a => a -> Tab -> SE a -- | Notice that this function is the same as tablei, but it wraps -- the output in the SE-monad. So you can use the tablei if your -- table is read-only and you can use readTablei if you want to -- update the table and the order of read/write operation is important. -- -- Accesses table values by direct indexing with cubic interpolation. -- --
--   ares  table3  andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires  table3  indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres  table3  kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://www.csounds.com/manual/html/table3.html readTable3 :: SigOrD a => a -> Tab -> SE a -- | Notice that this function is the same as table3, but it wraps -- the output in the SE-monad. So you can use the table3 if your -- table is read-only and you can use readTable3 if you want to -- update the table and the order of read/write operation is important. -- -- Accesses table values by direct indexing with linear interpolation. -- --
--   ares  tablei  andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires  tablei  indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres  tablei  kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://www.csounds.com/manual/html/tablei.html readTablei :: SigOrD a => a -> Tab -> SE a -- | tableikt — Provides k-rate control over table numbers. -- -- k-rate control over table numbers. Function tables are read with -- linear interpolation. The standard Csound opcode tablei, when -- producing a k- or a-rate result, can only use an init-time variable to -- select the table number. tableikt accepts k-rate control as well as -- i-time. In all other respects they are similar to the original -- opcodes. -- --
--   ares tableikt xndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   kres tableikt kndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://www.csounds.com/manual/html/tableikt.html tableikt :: Sig -> Tab -> Sig -- | tablekt — Provides k-rate control over table numbers. -- -- k-rate control over table numbers. Function tables are read with -- linear interpolation. The standard Csound opcode table when producing -- a k- or a-rate result, can only use an init-time variable to select -- the table number. tablekt accepts k-rate control as well as i-time. In -- all other respects they are similar to the original opcodes. -- --
--   ares tablekt xndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   kres tablekt kndx, kfn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://www.csounds.com/manual/html/tablekt.html tablekt :: Sig -> Tab -> Sig -- | tablexkt — Reads function tables with linear, cubic, or sinc -- interpolation. -- --
--   ares tablexkt xndx, kfn, kwarp, iwsize [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://www.csounds.com/manual/html/tablexkt.html tablexkt :: Sig -> Tab -> Sig -> D -> Sig -- | cuserrnd — Continuous USER-defined-distribution RaNDom generator. -- -- Continuous USER-defined-distribution RaNDom generator. -- --
--   aout cuserrnd kmin, kmax, ktableNum
--   iout cuserrnd imin, imax, itableNum
--   kout cuserrnd kmin, kmax, ktableNum
--   
-- -- csound doc: http://www.csounds.com/manual/html/cuserrnd.html -- -- the tab should be done with tabDist, randDist or rangeDist cuserrnd :: SigOrD a => a -> a -> Tab -> SE a -- | duserrnd — Discrete USER-defined-distribution RaNDom generator. -- -- Discrete USER-defined-distribution RaNDom generator. -- --
--   aout duserrnd ktableNum
--   iout duserrnd itableNum
--   kout duserrnd ktableNum
--   
-- -- csound doc: http://www.csounds.com/manual/html/duserrnd.html -- -- the tab should be done with tabDist, randDist or rangeDist duserrnd :: SigOrD a => Tab -> SE a instance GHC.Classes.Eq Csound.Tab.WavChn instance GHC.Show.Show Csound.Tab.WavChn instance GHC.Classes.Eq Csound.Tab.Mp3Chn instance GHC.Show.Show Csound.Tab.Mp3Chn instance GHC.Enum.Enum Csound.Tab.PadsynthShape instance GHC.Classes.Ord Csound.Tab.PadsynthShape instance GHC.Classes.Eq Csound.Tab.PadsynthShape instance GHC.Show.Show Csound.Tab.PadsynthShape instance GHC.Classes.Eq Csound.Tab.PadsynthSpec instance GHC.Show.Show Csound.Tab.PadsynthSpec instance Data.Default.Class.Default Csound.Tab.Mp3Chn instance Data.Default.Class.Default Csound.Tab.WavChn -- | Basic waveforms that are used most often. A waveform function takes in -- a time varied frequency (in Hz). module Csound.Air.Wave type Wave = Sig -> SE Sig -- | A pure tone (sine wave). osc :: Sig -> Sig -- | An oscillator with user provided waveform. oscBy :: Tab -> Sig -> Sig -- | A sawtooth. saw :: Sig -> Sig -- | Integrated sawtooth: 4 * x * (1 - x). isaw :: Sig -> Sig -- | Pulse (not normalized). pulse :: Sig -> Sig -- | A square wave. sqr :: Sig -> Sig -- | Pulse width modulation (width range is 0 to 1) -- --
--   pw dutyCycle cps
--   
pw :: Sig -> Sig -> Sig -- | A triangle wave. tri :: Sig -> Sig -- | Triangle wave with ramp factor (factor's range is 0 to 1) -- --
--   ramp factor cps
--   
ramp :: Sig -> Sig -> Sig -- | A band-limited oscillator with user defined waveform (it's stored in -- the table). blosc :: Tab -> Sig -> Sig -- | A pure tone (sine wave) with initial phase (the first argiment). osc' :: D -> Sig -> Sig -- | An oscillator with user provided waveform with initial phase (the -- second argiment). oscBy' :: Tab -> D -> Sig -> Sig -- | A sawtooth. saw' :: D -> Sig -> Sig -- | Integrated sawtooth: 4 * x * (1 - x). isaw' :: D -> Sig -> Sig -- | Pulse (not normalized). pulse' :: D -> Sig -> Sig -- | A square wave. sqr' :: D -> Sig -> Sig -- | Pulse width modulation (width range is 0 to 1) -- --
--   pw' dutyCycle phase cps
--   
pw' :: Sig -> D -> Sig -> Sig -- | A triangle wave. tri' :: D -> Sig -> Sig -- | Triangle wave with ramp factor (factor's range is 0 to 1) -- --
--   ramp' factor phase cps
--   
ramp' :: Sig -> D -> Sig -> Sig -- | A band-limited oscillator with user defined waveform (it's stored in -- the table). blosc' :: Tab -> D -> Sig -> Sig rndOsc :: Sig -> SE Sig rndOscBy :: Tab -> Sig -> SE Sig rndSaw :: Sig -> SE Sig rndIsaw :: Sig -> SE Sig rndPulse :: Sig -> SE Sig rndSqr :: Sig -> SE Sig rndPw :: Sig -> Sig -> SE Sig rndTri :: Sig -> SE Sig rndRamp :: Sig -> Sig -> SE Sig rndBlosc :: Tab -> Sig -> SE Sig -- | Generic random smoothTypephase oscil rndPhs :: (D -> Sig -> Sig) -> Sig -> SE Sig rawTri :: Sig -> Sig rawSaw :: Sig -> Sig rawSqr :: Sig -> Sig rawPw :: Double -> Sig -> Sig rawTri' :: D -> Sig -> Sig rawSaw' :: D -> Sig -> Sig rawSqr' :: D -> Sig -> Sig rawPw' :: Double -> D -> Sig -> Sig rndRawTri :: Sig -> SE Sig rndRawSaw :: Sig -> SE Sig rndRawSqr :: Sig -> SE Sig rndRawPw :: Double -> Sig -> SE Sig -- | Turns a bipolar sound (ranges from -1 to 1) to unipolar (ranges from 0 -- to 1) unipolar :: Sig -> Sig -- | Turns an unipolar sound (ranges from 0 to 1) to bipolar (ranges from -- -1 to 1) bipolar :: Sig -> Sig -- | Unipolar pure tone. uosc :: Sig -> Sig -- | Unipolar oscBy. uoscBy :: Tab -> Sig -> Sig -- | Unipolar sawtooth. usaw :: Sig -> Sig -- | Unipolar integrated sawtooth. uisaw :: Sig -> Sig -- | Unipolar pulse. upulse :: Sig -> Sig -- | Unipolar square wave. usqr :: Sig -> Sig -- | Unipolar pulse width modulation wave. upw :: Sig -> Sig -> Sig -- | Unipolar triangle wave. utri :: Sig -> Sig -- | Unipolar triangle wave with ram factor. uramp :: Sig -> Sig -> Sig -- | Unipolar band-limited oscillator. ublosc :: Tab -> Sig -> Sig uosc' :: D -> Sig -> Sig uoscBy' :: Tab -> D -> Sig -> Sig usaw' :: D -> Sig -> Sig uisaw' :: D -> Sig -> Sig upulse' :: D -> Sig -> Sig usqr' :: D -> Sig -> Sig upw' :: Sig -> D -> Sig -> Sig utri' :: D -> Sig -> Sig uramp' :: Sig -> D -> Sig -> Sig ublosc' :: Tab -> D -> Sig -> Sig urndOsc :: Sig -> SE Sig urndOscBy :: Tab -> Sig -> SE Sig urndSaw :: Sig -> SE Sig urndIsaw :: Sig -> SE Sig urndPulse :: Sig -> SE Sig urndSqr :: Sig -> SE Sig urndPw :: Sig -> Sig -> SE Sig urndTri :: Sig -> SE Sig urndRamp :: Sig -> Sig -> SE Sig urndBlosc :: Tab -> Sig -> SE Sig urawTri :: Sig -> Sig urawSaw :: Sig -> Sig urawSqr :: Sig -> Sig urawPw :: Double -> Sig -> Sig urawTri' :: D -> Sig -> Sig urawSaw' :: D -> Sig -> Sig urawSqr' :: D -> Sig -> Sig urawPw' :: Double -> D -> Sig -> Sig urndRawTri :: Sig -> SE Sig urndRawSaw :: Sig -> SE Sig urndRawSqr :: Sig -> SE Sig urndRawPw :: Double -> Sig -> SE Sig -- | Constant random signal. It updates random numbers with given -- frequency. -- --
--   constRnd freq
--   
rndh :: Sig -> SE Sig -- | Unipolar rndh urndh :: Sig -> SE Sig -- | Linear random signal. It updates random numbers with given frequency. -- --
--   rndi freq
--   
rndi :: Sig -> SE Sig -- | Unipolar rndi urndi :: Sig -> SE Sig -- | White noise. white :: SE Sig -- | Pink noise. pink :: SE Sig -- | Brownian noise brown :: SE Sig -- | Frequency modulation -- --
--   fosc carrierFreq modulatorFreq modIndex cps
--   
fosc :: Sig -> Sig -> Sig -> Sig -> Sig -- | Low frequency oscillator type Lfo = Sig -- | Low frequency oscillator -- --
--   lfo shape depth rate
--   
lfo :: (Sig -> Sig) -> Sig -> Sig -> Sig -- | Scales the oscillator by frequency. That's how we can rise the pitch -- by 2 semitones and 15 cents: -- --
--   detune (semitone 2 * cent 15) osc
--   
detune :: Sig -> (Sig -> a) -> Sig -> a -- | Unision by Hertz. It creates n oscillators that are playing the same -- pitch slightly detuned. The oscillatos's pitch is evenly distributed -- in Hz. -- --
--   multiHz numberOfUnits amountHz wave
--   
multiHz :: Fractional a => Int -> Sig -> (Sig -> a) -> Sig -> a -- | Unision by Cents. It creates n oscillators that are playing the same -- pitch slightly detuned. The oscillatos's pitch is evenly distributed -- in cents. -- --
--   multiCent numberOfUnits amountCent wave
--   
multiCent :: Fractional a => Int -> Sig -> (Sig -> a) -> Sig -> a -- | Oscillators are detuned randomly in the given interval. -- --
--   multiRnd numberOfUnits amountCent wave
--   
multiRnd :: Fractional a => Int -> Sig -> (Sig -> a) -> Sig -> SE a -- | Oscillators are detuned randomly with Gauss distribution in the given -- interval. -- --
--   multiGauss numberOfUnits amountCent wave
--   
multiGauss :: Fractional a => Int -> Sig -> (Sig -> a) -> Sig -> SE a -- | Oscillators are detuned randomly in the given interval. Useful for -- waves that return a signals with Side Effects. -- --
--   multiRnd numberOfUnits amountCent wave
--   
multiRndSE :: Fractional a => Int -> Sig -> (Sig -> SE a) -> Sig -> SE a -- | Oscillators are detuned randomly with Gauss distribution in the given -- interval. Useful for waves that return a signals with Side Effects. -- --
--   multiGauss numberOfUnits amountCent wave
--   
multiGaussSE :: Fractional a => Int -> Sig -> (Sig -> SE a) -> Sig -> SE a -- | Unipolar random splines. It generates the splines with unipolar output -- (ranges from 0 to 1). Arguments affect the frequency for generation of -- new values. -- --
--   urspline cpsMin cpsMax
--   
urspline :: Sig -> Sig -> SE Sig -- | Bipolar random splines. It generates the splines with bipolar output -- (ranges from -1 to 1). Arguments affect the frequency for generation -- of new values. -- --
--   birspline cpsMin cpsMax
--   
birspline :: Sig -> Sig -> SE Sig -- | Output is a set of harmonically related sine partials. -- --
--   buz numOfHarmonics frequency
--   
buz :: Sig -> Sig -> Sig -- | Output is a set of harmonically related cosine partials. -- --
--   gbuz (minHarm, maxHarm) ratio frequency
--   
gbuz :: (Sig, Sig) -> Sig -> Sig -> Sig -- | Buz with phase buz' :: D -> Sig -> Sig -> Sig -- | Gbuz with phase gbuz' :: D -> (Sig, Sig) -> Sig -> Sig -> Sig -- | Loop over table stereo files. Uses loscil3 under the hood. Watch out -- for sample rates! If file sample rate is different from global project -- sample rate then playback will be distorted. losc :: Tab -> Sig2 -- | Loop over table stereo files with cubic interpolation. Uses loscil3 -- under the hood. Watch out for sample rates! If file sample rate is -- different from global project sample rate then playback will be -- distorted. losc3 :: Tab -> Sig2 -- | Reversed loop over table stereo files. Uses flooper under the hood. rosc :: Tab -> Sig2 -- | Loop over table mono files. Uses loscil3 under the hood. Watch out for -- sample rates! If file sample rate is different from global project -- sample rate then playback will be distorted. monoLosc :: Tab -> Sig -- | Loops with cross-fades at the ends. Uses entire file length loscCfd :: D -> Tab -> Sig2 -- | Loops with cross-fades at the ends. We can specify loop segment (in -- seconds). loscCfd' :: (D, D) -> D -> Tab -> Sig2 -- | Loop from disk (stereo files) ldisk :: Str -> Sig2 -- | Reversed loop from disk (stereo files) rdisk :: Str -> Sig2 -- | Loop from disk (mono files) ldisk1 :: Str -> Sig -- | Reversed loop from disk (mono files) rdisk1 :: Str -> Sig -- | Oscillators with hard and soft sync module Csound.Air.Wave.Sync -- | Type of smooth shape to make smooth transitions on retrigger. -- Available types are: -- -- data SyncSmooth RawSync :: SyncSmooth SawSync :: SyncSmooth TriSync :: SyncSmooth TrapSync :: SyncSmooth UserSync :: Tab -> SyncSmooth -- | Sawtooth oscillator with hard-sync. The first argument is a ration -- between slave and master oscillators. -- --
--   sawSync ratio cps
--   
sawSync :: Sig -> Sig -> Sig -- | Integrated sawtooth oscillator with hard-sync. The first argument is a -- ration between slave and master oscillators. -- --
--   isawSync ratio cps
--   
isawSync :: Sig -> Sig -> Sig -- | Pulse oscillator with hard-sync. The first argument is a ration -- between slave and master oscillators. -- --
--   pulseSync ratio cps
--   
pulseSync :: Sig -> Sig -> Sig -- | Square oscillator with hard-sync. The first argument is a ration -- between slave and master oscillators. -- --
--   sqrSync ratio cps
--   
sqrSync :: Sig -> Sig -> Sig -- | Triangle oscillator with hard-sync. The first argument is a ration -- between slave and master oscillators. -- --
--   triSync ratio cps
--   
triSync :: Sig -> Sig -> Sig -- | Band-limited oscillator with hard-sync. The first argument is a ration -- between slave and master oscillators. -- --
--   bloscSync tab ratio cps
--   
bloscSync :: Tab -> Sig -> Sig -> Sig -- | Sawtooth oscillator with hard-sync with phase. The second argument is -- a ration between slave and master oscillators. -- --
--   sawSync' phase ratio cps
--   
sawSync' :: D -> Sig -> Sig -> Sig -- | Integrated sawtooth oscillator with hard-sync with phase. The second -- argument is a ration between slave and master oscillators. -- --
--   isawSync' phase ratio cps
--   
isawSync' :: D -> Sig -> Sig -> Sig -- | Pulse oscillator with hard-sync with phase. The second argument is a -- ration between slave and master oscillators. -- --
--   pulseSync' phase ratio cps
--   
pulseSync' :: D -> Sig -> Sig -> Sig -- | Square oscillator with hard-sync with phase. The second argument is a -- ration between slave and master oscillators. -- --
--   sqrSync' phase ratio cps
--   
sqrSync' :: D -> Sig -> Sig -> Sig -- | Triangle oscillator with hard-sync with phase. The second argument is -- a ration between slave and master oscillators. -- --
--   triSync' phase ratio cps
--   
triSync' :: D -> Sig -> Sig -> Sig -- | Band-limited oscillator with hard-sync with phase. The second argument -- is a ration between slave and master oscillators. -- --
--   bloscSync' phase tab ratio cps
--   
bloscSync' :: Tab -> D -> Sig -> Sig -> Sig -- | Hard sync with saw waveform and randomized phase. rndSawSync :: Sig -> Sig -> SE Sig -- | Hard sync with integral saw waveform and randomized phase. rndIsawSync :: Sig -> Sig -> SE Sig -- | Hard sync with pulse waveform and randomized phase. rndPulseSync :: Sig -> Sig -> SE Sig -- | Hard sync with square waveform and randomized phase. rndSqrSync :: Sig -> Sig -> SE Sig -- | Hard sync with triangle waveform and randomized phase. rndTriSync :: Sig -> Sig -> SE Sig -- | Hard sync with band-limited table waveform waveform and randomized -- phase. rndBloscSync :: Tab -> Sig -> Sig -> SE Sig -- | Sawtooth oscillator with hard-sync. The freq argument is an -- absolute frequency of a slave oscillator. -- --
--   sawSyncAbs freq slaveCps masterCps
--   
sawSyncAbs :: Sig -> Sig -> Sig -- | Integrated sawtooth oscillator with hard-sync. The freq -- argument is an absolute frequency of a slave oscillator. -- --
--   isawSyncAbs freq slaveCps masterCps
--   
isawSyncAbs :: Sig -> Sig -> Sig -- | Pulse oscillator with hard-sync. The freq argument is an -- absolute frequency of a slave oscillator. -- --
--   pulseSyncAbs freq slaveCps masterCps
--   
pulseSyncAbs :: Sig -> Sig -> Sig -- | Square oscillator with hard-sync. The freq argument is an -- absolute frequency of a slave oscillator. -- --
--   sqrSyncAbs freq slaveCps masterCps
--   
sqrSyncAbs :: Sig -> Sig -> Sig -- | Triangle oscillator with hard-sync. The freq argument is an -- absolute frequency of a slave oscillator. -- --
--   triSyncAbs freq slaveCps masterCps
--   
triSyncAbs :: Sig -> Sig -> Sig -- | Bandlimited table oscillator with hard-sync. The freq -- argument is an absolute frequency of a slave oscillator. -- --
--   bloscSyncAbs tab freq slaveCps masterCps
--   
bloscSyncAbs :: Tab -> Sig -> Sig -> Sig -- | Sawtooth oscillator with hard-sync with phase. The freq -- argument is an absolute frequency of a slave oscillator. -- --
--   sawSyncAbs' phase freq slaveCps masterCps
--   
sawSyncAbs' :: D -> Sig -> Sig -> Sig -- | Integrated sawtooth oscillator with hard-sync with phase. The -- freq argument is an absolute frequency of a slave oscillator. -- --
--   isawSyncAbs' phase freq slaveCps masterCps
--   
isawSyncAbs' :: D -> Sig -> Sig -> Sig -- | Pulse oscillator with hard-sync with phase. The freq argument -- is an absolute frequency of a slave oscillator. -- --
--   pulseSyncAbs' phase freq slaveCps masterCps
--   
pulseSyncAbs' :: D -> Sig -> Sig -> Sig -- | Square oscillator with hard-sync with phase. The freq -- argument is an absolute frequency of a slave oscillator. -- --
--   sqrSyncAbs' phase freq slaveCps masterCps
--   
sqrSyncAbs' :: D -> Sig -> Sig -> Sig -- | Triangle oscillator with hard-sync with phase. The freq -- argument is an absolute frequency of a slave oscillator. -- --
--   triSyncAbs' phase freq slaveCps masterCps
--   
triSyncAbs' :: D -> Sig -> Sig -> Sig -- | Bandlimited table oscillator with hard-sync with phase. The -- freq argument is an absolute frequency of a slave oscillator. -- --
--   bloscSyncAbs' phase tab freq slaveCps masterCps
--   
bloscSyncAbs' :: Tab -> D -> Sig -> Sig -> Sig -- | Sawtooth oscillator with hard-sync. We can specify the smoothness -- type. The ratio argument is a ration between slave and master -- oscillators. -- --
--   sawSyncBy spec ratio cps
--   
sawSyncBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Integrated sawtooth oscillator with hard-sync. We can specify the -- smoothness type. The first argument is a ration between slave and -- master oscillators. -- --
--   isawSyncB specy ratio cps
--   
isawSyncBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Pulse oscillator with hard-sync. We can specify the smoothness type. -- The ratio argument is a ration between slave and master -- oscillators. -- --
--   pulseSyncBy spec ratio cps
--   
pulseSyncBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Square oscillator with hard-sync. We can specify the smoothness type. -- The ratio argument is a ration between slave and master -- oscillators. -- --
--   sawSyncBy spec ratio cps
--   
sqrSyncBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Triangle oscillator with hard-sync. We can specify the smoothness -- type. The ratio argument is a ration between slave and master -- oscillators. -- --
--   triSyncBy spec ratio cps
--   
triSyncBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Bandlimited table oscillator with hard-sync. We can specify the -- smoothness type. The ratio argument is a ration between slave -- and master oscillators. -- --
--   bloscSyncBy spec tab ratio cps
--   
bloscSyncBy :: SyncSmooth -> Tab -> Sig -> Sig -> Sig -- | Sawtooth oscillator with hard-sync with phase. We can specify the -- smoothness type. The ratio argument is a ration between slave -- and master oscillators. -- --
--   sawSyncBy' spec phase ratio cps
--   
sawSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig -- | Integrated sawtooth oscillator with hard-sync with phase. We can -- specify the smoothness type. The ratio argument is a ration -- between slave and master oscillators. -- --
--   isawSyncBy' spec phase ratio cps
--   
isawSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig -- | Pulse oscillator with hard-sync with phase. We can specify the -- smoothness type. The ratio argument is a ration between slave -- and master oscillators. -- --
--   pulseSyncBy' spec phase ratio cps
--   
pulseSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig -- | Square oscillator with hard-sync with phase. We can specify the -- smoothness type. The ratio argument is a ration between slave -- and master oscillators. -- --
--   sawSyncBy' spec phase ratio cps
--   
sqrSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig -- | Triangle oscillator with hard-sync with phase. We can specify the -- smoothness type. The ratio argument is a ration between slave -- and master oscillators. -- --
--   triSyncBy' spec phase ratio cps
--   
triSyncBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig -- | Bandlimited table oscillator with hard-sync with phase. We can specify -- the smoothness type. The ratio argument is a ration between -- slave and master oscillators. -- --
--   bloscSyncBy' spec phase tab ratio cps
--   
bloscSyncBy' :: SyncSmooth -> Tab -> D -> Sig -> Sig -> Sig -- | A hard sync for sawtooth with absolute slave frequency. -- --
--   sawSyncAbs syncType salveCps masterCps
--   
sawSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig -- | A hard sync for integrated sawtooth: 4 * x * (1 - x) with absolute -- slave frequency. -- --
--   isawSyncAbs syncType salveCps masterCps
--   
isawSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig -- | A hard sync for pulse wave with absolute slave frequency. -- --
--   pulseSyncAbs syncType salveCps masterCps
--   
pulseSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig -- | A hard sync for square wave with absolute slave frequency. -- --
--   sqrSyncAbs syncType salveCps masterCps
--   
sqrSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig -- | A hard sync for triangle wave with absolute slave frequency. -- --
--   triSyncAbs syncType salveCps masterCps
--   
triSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig -- | A hard sync for band-limited oscillator with user defined waveform -- (it's stored in the table) woth absolute frequency. -- --
--   bloscSyncAbs syncType ftable salveCps masterCps
--   
bloscSyncAbsBy :: SyncSmooth -> Tab -> Sig -> Sig -> Sig -- | A sawtooth. sawSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig -- | Integrated sawtooth: 4 * x * (1 - x). isawSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig -- | Pulse (not normalized). pulseSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig -- | A square wave. sqrSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig -- | A triangle wave. triSyncAbsBy' :: SyncSmooth -> D -> Sig -> Sig -> Sig -- | A band-limited oscillator with user defined waveform (it's stored in -- the table). bloscSyncAbsBy' :: SyncSmooth -> Tab -> D -> Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited triangle wave. rawTriSync :: Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited square wave. rawSqrSync :: Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited sawtooth wave. rawSawSync :: Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited pulse-width wave. rawPwSync :: Double -> Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited triangle wave. rawTriSyncBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited square wave. rawSqrSyncBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited sawtooth wave. rawSawSyncBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited pulse-width wave. rawPwSyncBy :: Double -> SyncSmooth -> Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited triangle wave. rawTriSyncAbs :: Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited square wave. rawSqrSyncAbs :: Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited sawtooth wave. rawSawSyncAbs :: Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited pulse-width wave. rawPwSyncAbs :: Double -> Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited triangle wave. rawTriSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited square wave. rawSqrSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited sawtooth wave. rawSawSyncAbsBy :: SyncSmooth -> Sig -> Sig -> Sig -- | Hard-sync with non-bandlimited pulse-width wave. rawPwSyncAbsBy :: Double -> SyncSmooth -> Sig -> Sig -> Sig -- | Soft sync with given waveform (with band-limited square wave for -- switch). The soft sync amount is controlled with ratio between master -- and slave frequencies. -- --
--   softSync slaveWave ratio masterWave
--   
softSync :: SigSpace a => (Sig -> a) -> Sig -> Sig -> a -- | Soft sync with given waveform (with raw square wave for switch). It's -- faster than softSync The soft sync amount is controlled with -- ratio between master and slave frequencies. -- --
--   rawSoftSync slaveWave ratio masterWave
--   
rawSoftSync :: SigSpace a => (Sig -> a) -> Sig -> Sig -> a -- | Soft sync with given waveform (with band-limited square wave for -- switch). The soft sync amount is controlled with ratio between master -- and slave frequencies. With first argument we can specify the -- smoothness algorithm. -- --
--   softSyncBy spec slaveWave ratio masterWave
--   
softSyncBy :: SigSpace a => SyncSmooth -> (Sig -> a) -> Sig -> Sig -> a -- | Soft sync with given waveform (with raw square wave for switch). It's -- faster than softSyncBy The soft sync amount is controlled with -- ratio between master and slave frequencies. With first argument we can -- specify the smoothness algorithm. -- --
--   rawSoftSyncBy spec slaveWave ratio masterWave
--   
rawSoftSyncBy :: SigSpace a => SyncSmooth -> (Sig -> a) -> Sig -> Sig -> a -- | Soft sync with given waveform (with band-limited square wave for -- switch). The soft sync amount is controlled with absolute frequency of -- the slave oscillator. -- --
--   softSyncAbs slaveWave ratio masterWave
--   
softSyncAbs :: SigSpace a => (Sig -> a) -> Sig -> Sig -> a -- | Soft sync with given waveform (with raw square wave for switch). It's -- faster than softSyncAbs The soft sync amount is controlled with -- absolute frequency of the slave oscillator. -- --
--   rawSoftSyncAbs slaveWave ratio masterWave
--   
rawSoftSyncAbs :: SigSpace a => (Sig -> a) -> Sig -> Sig -> a -- | Soft sync with given waveform (with band-limited square wave for -- switch). The soft sync amount is controlled with absolute frequency of -- the slave oscillator. With first argument we can specify the -- smoothness algorithm. -- --
--   softSyncAbsBy spec slaveWave ratio masterWave
--   
softSyncAbsBy :: SigSpace a => SyncSmooth -> (Sig -> a) -> Sig -> Sig -> a -- | Soft sync with given waveform (with raw square wave for switch). It's -- faster than softSyncAbsBy The soft sync amount is controlled -- with absolute frequency of the slave oscillator. With first argument -- we can specify the smoothness algorithm. -- --
--   rawSoftSyncBy spec slaveWave ratio masterWave
--   
rawSoftSyncAbsBy :: SigSpace a => SyncSmooth -> (Sig -> a) -> Sig -> Sig -> a -- | Tools to build Fm synthesis graphs -- -- Example -- --
--   f a = fmOut1 $ do
--    x1 <- fmOsc 1
--    x2 <- fmOsc 2
--    x1 `fmod` [(a, x2)]
--    return x1
--   
module Csound.Air.Fm type Fm a = State St a data FmNode -- | Creates fm node with generic wave. -- --
--   fmOsc' wave modFreq
--   
fmOsc' :: (Sig -> SE Sig) -> Sig -> Fm FmNode -- | Creates fm node with sine wave. -- --
--   fmOsc modFreq
--   
fmOsc :: Sig -> Fm FmNode -- | Creates fm node with signal generator (it's independent from the main -- frequency). fmSig :: Sig -> Fm FmNode fmod :: FmNode -> [(Sig, FmNode)] -> Fm () -- | Renders Fm synth to function. fmOut :: Fm [(Sig, FmNode)] -> Sig -> SE [Sig] -- | Renders mono output. fmOut1 :: Fm FmNode -> Sig -> SE Sig -- | Renders stereo output. fmOut2 :: Fm (FmNode, FmNode) -> Sig -> SE Sig2 data FmSpec FmSpec :: [Sig -> SE Sig] -> [Sig] -> [Sig] -> [Sig] -> FmSpec [fmWave] :: FmSpec -> [Sig -> SE Sig] [fmCps] :: FmSpec -> [Sig] [fmInd] :: FmSpec -> [Sig] [fmOuts] :: FmSpec -> [Sig] data FmGraph FmGraph :: [(Int, [Int])] -> [Int] -> FmGraph [fmGraph] :: FmGraph -> [(Int, [Int])] [fmGraphOuts] :: FmGraph -> [Int] fmRun :: FmGraph -> FmSpec -> Sig -> SE Sig -- |
--     +--+
--     6  |
--     +--+
--     5
--     |
--   2 4
--   | |
--   1 3
--   +---+
--   
dx_1 :: FmGraph -- |
--           6
--           |
--           5
--     +--+  |
--   2  |  4
--   +--+  |
--   1     3
--     +-----+
--   
dx_2 :: FmGraph -- |
--       +--+
--   3   6  |
--   |   +--+
--   2   5
--   | |
--   1   4
--   +---+
--   
dx_3 :: FmGraph -- |
--     +--+
--   3 6  |
--   | |  |
--   2 5  |
--   | |  |
--   1 4  |
--   | +--+
--       +---+
--   
dx_4 :: FmGraph -- | Spectral functions module Csound.Air.Spec -- | Converts signal to spectrum. toSpec :: Sig -> Spec -- | Converts spectrum to signal. fromSpec :: Spec -> Sig -- | Applies a transformation to the spectrum of the signal. mapSpec :: (Spec -> Spec) -> Sig -> Sig -- | Scales all frequencies. Usefull for transposition. For example, we can -- transpose a signal by the given amount of semitones: -- --
--   scaleSpec (semitone 1) asig
--   
scaleSpec :: Sig -> Sig -> Sig -- | Adds given amount of Hz to all frequencies. -- --
--   addSpec hz asig
--   
addSpec :: Sig -> Sig -> Sig -- | Scales frequency in semitones. scalePitch :: Sig -> Sig -> Sig -- | Settings for cross filtering algorithm. -- -- They are the defaults for opvodes: pvsifd, tradsyn, -- trcross and partials. -- -- data CrossSpec CrossSpec :: D -> D -> Sig -> Sig -> D -> D -> Sig -> Sig -> Sig -> Sig -> Sig -> CrossSpec [crossFft] :: CrossSpec -> D [crossHopSize] :: CrossSpec -> D [crossScale] :: CrossSpec -> Sig [crossPitch] :: CrossSpec -> Sig [crossMaxTracks] :: CrossSpec -> D [crossWinType] :: CrossSpec -> D [crossSearch] :: CrossSpec -> Sig [crossDepth] :: CrossSpec -> Sig [crossThresh] :: CrossSpec -> Sig [crossMinPoints] :: CrossSpec -> Sig [crossMaxGap] :: CrossSpec -> Sig -- | Filters the partials of the second signal with partials of the first -- signal. crossSpecFilter :: CrossSpec -> Sig2 -> Sig2 -> Sig2 -- | Substitutes the partials of the second signal with partials of the -- first signal. crossSpecVocoder :: CrossSpec -> Sig2 -> Sig2 -> Sig2 -- | crossSpecFilter for mono signals. crossSpecFilter1 :: CrossSpec -> Sig -> Sig -> Sig -- | crossSpecVocoder for mono signals. crossSpecVocoder1 :: CrossSpec -> Sig -> Sig -> Sig instance Data.Default.Class.Default Csound.Air.Spec.CrossSpec -- | Hyper vectorial synthesis module Csound.Air.Hvs -- | Hvs vector type HvsSnapshot = [Double] -- | 1D matrix type HvsMatrix1 = [HvsSnapshot] -- | 2D matrix (grid of vecotrs) type HvsMatrix2 = [HvsMatrix1] -- | 3D matrix (cube of vectors) type HvsMatrix3 = [HvsMatrix2] -- | One dimensional Hyper vectorial synthesis. We can provide a list of -- vectors (of lists but the same length for all items is assumed) and a -- signal that ranges from 0 to 1. It interpolates between vectors in the -- list. As a result we get a n interpolated vector. It's a list but the -- actual length equals to the length of input vectors. -- -- An example. We can set the center frequency and resonance of the -- filter with the single parameter: -- --
--   let f = hvs1 [[100, 0.1], [300, 0.1], [600, 0.5], [800, 0.9]]
--    dac $ lift1 (\x -> fmap (\[cps, q] -> mlp cps q (saw 110)) $ f x) (uknob 0.5)
--   
-- -- Notice the exact pattern match with the list in the argument of the -- lambda function: -- --
--   \[cps, q] -> mlp cps q (saw 110)) $ f x
--   
-- -- It's determined by the length of the items in the input list. hvs1 :: HvsMatrix1 -> Sig -> SE [Sig] -- | Two dimensional Hyper vectorial synthesis. Now we provide a list of -- lists of vectors. The length of all vectors should be the same but -- there is no limit for the number! So that's how we can control a lot -- of parameters with pair of signals. The input 2D atrix is the grid of -- samples. It finds the closest four points in the grid and interpolates -- between them (it's a weighted sum). -- --
--   hvs2 matrix (x, y)
--   
-- -- The usage is the same as in the case of hvs1. An example: -- --
--   g = hvs2 [[[100, 0.1, 0.3], [800, 0.1, 0.5], [1400, 0.1, 0.8]],
--        [[100, 0.5, 0.3], [800, 0.5, 0.5], [1400, 0.5, 0.8]],
--        [[100, 0.8, 0.3], [800, 0.8, 0.5], [1400, 0.8, 0.8]]]
--   
--   main = dac $ do
--    (g1, kx) <- uknob 0.5
--    (g2, ky) <- uknob 0.5
--    [cfq, q, w] <- g (kx, ky)
--    panel $ hor [g1, g2]
--    at (mlp cfq q) $ fmap (cfd w (saw 110)) (white)
--   
hvs2 :: HvsMatrix2 -> Sig2 -> SE [Sig] -- | The three dimensional hvs3 :: HvsMatrix3 -> Sig3 -> SE [Sig] -- | Allows one-dimensional Hyper Vectorial Synthesis (HVS) controlled by -- externally-updated k-variables. -- -- hvs1 allows one-dimensional Hyper Vectorial Synthesis (HVS) controlled -- by externally-updated k-variables. -- --
--   hvs1  kx, inumParms, inumPointsX, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--   
-- -- csound doc: http://www.csounds.com/manual/html/hvs1.html csdHvs1 :: Sig -> D -> D -> Tab -> Tab -> Tab -> SE () -- | Allows two-dimensional Hyper Vectorial Synthesis (HVS) controlled by -- externally-updated k-variables. -- -- hvs2 allows two-dimensional Hyper Vectorial Synthesis (HVS) controlled -- by externally-updated k-variables. -- --
--   hvs2  kx, ky, inumParms, inumPointsX, inumPointsY, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--   
-- -- csound doc: http://www.csounds.com/manual/html/hvs2.html csdHvs2 :: Sig -> Sig -> D -> D -> D -> Tab -> Tab -> Tab -> SE () -- | Allows three-dimensional Hyper Vectorial Synthesis (HVS) controlled by -- externally-updated k-variables. -- -- hvs3 allows three-dimensional Hyper Vectorial Synthesis (HVS) -- controlled by externally-updated k-variables. -- --
--   hvs3  kx, ky, kz, inumParms, inumPointsX, inumPointsY, inumPointsZ, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--   
-- -- csound doc: http://www.csounds.com/manual/html/hvs3.html csdHvs3 :: Sig -> Sig -> Sig -> D -> D -> D -> D -> Tab -> Tab -> Tab -> SE () -- | Effects module Csound.Air.Fx -- | Mono version of the cool reverberation opcode reverbsc. -- --
--   reverbsc1 asig feedbackLevel cutOffFreq
--   
reverbsc1 :: Sig -> Feedback -> ToneSig -> Sig -- | Mono reverb (based on reverbsc) -- --
--   rever1 feedback asig
--   
rever1 :: Feedback -> Sig -> (Sig, Sig) -- | Mono reverb (based on reverbsc) -- --
--   rever2 feedback (asigLeft, asigRight)
--   
rever2 :: Feedback -> Sig2 -> Sig2 -- | Reverb with given time. reverTime :: DelayTime -> Sig -> Sig -- | Mono reverb for small room. smallRoom :: Sig -> (Sig, Sig) -- | Mono reverb for small hall. smallHall :: Sig -> (Sig, Sig) -- | Mono reverb for large hall. largeHall :: Sig -> (Sig, Sig) -- | The magic cave reverb (mono). magicCave :: Sig -> (Sig, Sig) -- | Stereo reverb for small room. smallRoom2 :: Sig2 -> Sig2 -- | Stereo reverb for small hall. smallHall2 :: Sig2 -> Sig2 -- | Stereo reverb for large hall. largeHall2 :: Sig2 -> Sig2 -- | The magic cave reverb (stereo). magicCave2 :: Sig2 -> Sig2 -- | An alias for -- --
--   let room dryWet asig = mixAt dryWet smallRoom2 asig
--   
room :: MixAt Sig2 Sig2 a => Sig -> a -> AtOut Sig2 Sig2 a -- | An alias for -- --
--   let room dryWet asig = mixAt dryWet smallHall2 asig
--   
chamber :: MixAt Sig2 Sig2 a => Sig -> a -> AtOut Sig2 Sig2 a -- | An alias for -- --
--   let room dryWet asig = mixAt dryWet largeHall2 asig
--   
hall :: MixAt Sig2 Sig2 a => Sig -> a -> AtOut Sig2 Sig2 a -- | An alias for -- --
--   let room dryWet asig = mixAt dryWet magicCave2 asig
--   
cave :: MixAt Sig2 Sig2 a => Sig -> a -> AtOut Sig2 Sig2 a -- | Fast zero delay convolution with impulse response that is contained in -- mono-audio file. -- --
--   monoIR irFile ain
--   
monoIR :: FilePath -> Sig -> Sig -- | Fast zero delay convolution with impulse response that is contained in -- stereo-audio file. -- --
--   stereoIR irFile ain
--   
stereoIR :: FilePath -> Sig2 -> Sig2 -- | If IR is encoded in a couple of mono files. stereoIR2 :: (FilePath, FilePath) -> Sig2 -> Sig2 -- | Precise mono IR with pconvolve (requires a lot of CPU). pmonoIR :: FilePath -> Sig -> Sig -- | Precise stereo IR with pconvolve (requires a lot of CPU). pstereoIR :: FilePath -> Sig2 -> Sig2 pstereoIR2 :: (FilePath, FilePath) -> Sig2 -> Sig2 -- | Fast zero delay convolution with impulse response that is contained in -- mono-audio file. We can specify aux parameters for convolution -- algorithm (see zconv'). -- --
--   monoIR' spec irFile ain
--   
monoIR' :: ZConvSpec -> FilePath -> Sig -> Sig -- | Fast zero delay convolution with impulse response that is contained in -- stereo-audio file. We can specify aux parameters for convolution -- algorithm (see zconv'). -- --
--   stereoIR' spec irFile ain
--   
stereoIR' :: ZConvSpec -> FilePath -> Sig2 -> Sig2 -- | If IR is encoded in a couple of mono files. stereoIR2' :: ZConvSpec -> (FilePath, FilePath) -> Sig2 -> Sig2 -- | Zero convolution specification data ZConvSpec ZConvSpec :: D -> D -> D -> ZConvSpec -- | first partition size in samples [zconvPartSize] :: ZConvSpec -> D -- | partition growth ratio [zconvRatio] :: ZConvSpec -> D -- | total number of partition sizes [zconvNp] :: ZConvSpec -> D -- | Zero delay convolution with default parameters. -- --
--   zconv tabIR  ain = ...
--   
zconv :: Tab -> Sig -> Sig -- | zero delay convolution. -- --
--   zconv' (ZConvSpec ipart irat inp) ifn ain
--   
-- -- Original UDO code by Victor Lazzarini. -- -- /************************************************** asig ZConv -- ain,ipart,irat,inp,ifn ain - input signal ipart - first partition size -- in samples irat - partition growth ratio inp - total number of -- partition sizes ifn - function table number containing the IR -- **************************************************/ zconv' :: ZConvSpec -> Tab -> Sig -> Sig -- | The maximum delay time. type MaxDelayTime = D -- | The delaya time type DelayTime = Sig -- | Feedback for delay type Feedback = Sig -- | Dry/Wet mix value (ranges from 0 to 1). The 0 is all dry. The 1 is all -- wet. type Balance = Sig -- | The simplest delay with feedback. Arguments are: delay length and -- decay ratio. -- --
--   echo delayLength ratio
--   
echo :: MaxDelayTime -> Feedback -> Sig -> Sig -- | Delay with feedback. -- --
--   fdelay maxDelayLength delayLength feedback balance
--   
fvdelay :: MaxDelayTime -> DelayTime -> Feedback -> Sig -> Sig -- | Multitap delay. Arguments are: max delay length, list of pairs -- (delayLength, decayRatio), balance of mixed signal with -- processed signal. -- --
--   fdelay maxDelayLength  delays balance asig
--   
fvdelays :: MaxDelayTime -> [(DelayTime, Feedback)] -> Balance -> Sig -> SE Sig -- | Generic multitap delay. It's just like fvdelays but instead -- of constant feedbackLevel it expects a function for processing a -- delayed signal on the tap. -- --
--   fdelay maxDelayLength  delays balance asig
--   
funDelays :: MaxDelayTime -> [(DelayTime, Sig -> Sig)] -> Balance -> Sig -> SE Sig -- | Delay for functions that use some table (as a buffer). As granular -- synth or mincer. -- --
--   tabDelay fn maxDelayTime delayTime feedback balance asig
--   
tabDelay :: (Tab -> Sig -> SE Sig) -> MaxDelayTime -> DelayTime -> Feedback -> Balance -> Sig -> SE Sig -- | Aux parameters for ping pong delay. They are maximum delay time, low -- pass filter center frequency and Pan width. The defaults are (5 -- sec, 3500, 0.3). data PingPongSpec PingPongSpec :: MaxDelayTime -> Sig -> Sig -> PingPongSpec [pingPongMaxTime] :: PingPongSpec -> MaxDelayTime [pingPongDamp] :: PingPongSpec -> Sig [pingPongWidth] :: PingPongSpec -> Sig -- | Ping-pong delay. -- --
--   pingPong delayTime feedback mixLevel
--   
pingPong :: DelayTime -> Feedback -> Balance -> Sig2 -> Sig2 -- | Ping-pong delay with miscellaneous arguments. -- --
--   pingPong' spec delayTime feedback mixLevel
--   
pingPong' :: PingPongSpec -> DelayTime -> Feedback -> Balance -> Sig2 -> Sig2 -- | Ping-pong delay defined in csound style. All arguments are present -- (nothing is hidden). -- --
--   csdPingPong maxTime delTime damp feedback width mixLevel (ainL, ainR)
--   
csdPingPong :: MaxDelayTime -> DelayTime -> Sig -> Feedback -> Sig -> Balance -> Sig2 -> Sig2 type EchoGain = Sig type RandomSpreadSig = Sig -- | Function to read from tape. -- --
--   tapeRead aIn, kDelay, kRandomSpread
--   
-- -- The function is used in the same manner as deltapi first init the -- delay buffer and the use tapeRead. -- -- aIn - input signal kDelay - delay time kRandomSpread - [0, Inf] - the -- random spread of reading from the tape the higher the worser the -- quality of the tape. opcode tapeRead, a, akk tapeRead :: Sig -> Sig -> Sig -> SE Sig -- | Function to write to tape -- --
--   tapeWrite aIn, aOut, kFbGain
--   
-- -- It should be though of as delayw for magnetic tape. -- -- aIn - input signal aOut - output signal kFbGain - gain of feedback [0, -- 2] tapeWrite :: Sig -> Sig -> Sig -> SE () -- | Tape echo - simulates tape echo/delay -- --
--   tapeEcho size feedback echoGain tone randomSpread ain
--   
-- -- tapeEcho :: D -> DelayTime -> Feedback -> EchoGain -> ToneSig -> RandomSpreadSig -> Sig -> Sig -- | Distortion. -- --
--   distort distLevel asig
--   
distortion :: Sig -> Sig -> Sig type DepthSig = Sig type RateSig = Sig type WidthSig = Sig type ToneSig = Sig -- | Chorus. -- --
--   chorus depth rate balance asig
--   
chorus :: DepthSig -> RateSig -> Balance -> Sig -> SE Sig -- | Flanger. Lfo depth ranges in 0 to 1. -- -- flanger lfo feedback balance asig flange :: Lfo -> Feedback -> Balance -> Sig -> Sig -- | First order phaser. phase1 :: Sig -> Lfo -> Feedback -> Balance -> Sig -> Sig -- | Second order phaser. Sweeping gaps in the timbre are placed -- harmonicaly harmPhase :: Sig -> Lfo -> Sig -> Sig -> Feedback -> Balance -> Sig -> Sig -- | Second order phaser. Sweeping gaps in the timbre are placed by powers -- of the base frequency. powerPhase :: Sig -> Lfo -> Sig -> Sig -> Feedback -> Balance -> Sig -> Sig type DriveSig = Sig type SensitivitySig = Sig type BaseCps = Sig type Resonance = Sig type TimeSig = Sig type BitsReductionSig = Sig type FoldoverSig = Sig type TremWaveSig = Sig type RatioSig = Sig type FftSize = D -- | Distortion -- --
--   fxDistort level drive tone sigIn
--   
fxDistort :: Feedback -> Sig -> ToneSig -> Sig -> Sig -- | Stereo chorus. -- --
--   stChorus2 mix rate depth width sigIn
--   
stChorus2 :: Balance -> RateSig -> DepthSig -> WidthSig -> Sig2 -> Sig2 -- | Phaser -- -- An phase shifting effect that mimics the design of a so called 'stomp -- box' -- --
--   fxPhaser rate depth freq fback ain
--   
-- -- Arguments: -- -- fxPhaser :: RateSig -> DepthSig -> BaseCps -> Feedback -> Sig -> Sig -- | A flanger effect following the typical design of a so called 'stomp -- box' -- --
--   fxFlanger rate depth delayTime feedback ain =
--   
-- -- Arguments -- -- fxFlanger :: RateSig -> DepthSig -> DelayTime -> Feedback -> Sig -> Sig -- | Analog delay. -- --
--   analogDelay mix feedback time tone sigIn
--   
analogDelay :: Balance -> Feedback -> DelayTime -> ToneSig -> Sig -> Sig -- | Simplified delay -- --
--   fxEcho maxDelayLength delTime feedback sigIn
--   
fxEcho :: D -> Sig -> Sig -> Sig -> Sig -- | Filter effect (a pair of butterworth low and high pass filters). -- --
--   fxFilter lowPassfFreq highPassFreq gain
--   
fxFilter :: Sig -> Sig -> Sig -> Sig -> Sig -- | Adds filtered white noize to the signal -- --
--   fxWhite lfoFreq depth sigIn
--   
fxWhite :: Sig -> Sig -> Sig -> SE Sig -- | Adds filtered pink noize to the signal -- --
--   fxWhite lfoFreq depth sigIn
--   
fxPink :: Sig -> Sig -> Sig -> SE Sig -- | Equalizer -- --
--   equalizer gainsAndFrequencies gain sigIn
--   
equalizer :: [(Sig, Sig)] -> Sig -> Sig -> Sig -- | Equalizer with frequencies: 100, 400, 1600, 6400 eq4 :: [Sig] -> Sig -> Sig -> Sig -- | Equalizer with frequencies: 100, 200, 400, 800, 1600, 3200, 6400 eq7 :: [Sig] -> Sig -> Sig -> Sig -- | Gain -- --
--   fxGain gain sigIn
--   
fxGain :: SigSpace a => Sig -> a -> a -- | Delay line with low-pass filter in the feedback chain. The filter adds -- natural decay to the echoes. -- --
--   fxAnalogDelay mixRatio delayTime feedback toneRatio ain
--   
-- -- Note that the center frequency of the filter is measured in normalized -- units (form 0 to 1). fxAnalogDelay :: Balance -> DelayTime -> Feedback -> ToneSig -> Sig -> Sig -- | Distortion unit with low-pass filter. -- --
--   fxDistortion driveLevel toneRatio ain
--   
-- -- Note that the center frequency of the filter is measured in normalized -- units (form 0 to 1). fxDistortion :: DriveSig -> ToneSig -> Sig -> Sig -- | Envelope follower. -- --
--   fxFollower sensitivity baseFrequencyRatio resonance ain
--   
-- -- Arguments: -- -- -- -- ; resonance -- resonance of the lowpass filter (suggested -- range: 0 to 1) fxFollower :: SensitivitySig -> BaseCps -> Resonance -> Sig -> Sig -- | An effect that reverses an audio stream in chunks -- --
--   fxReverse time
--   
-- -- time -- the size of the chunck in seconds. fxReverse :: TimeSig -> Sig -> Sig -- | LoFi -- -- 'Low Fidelity' distorting effects of bit reduction and downsampling -- (foldover) -- --
--   fxLoFi  bits fold ain = ...
--   
-- -- Arguments -- -- fxLoFi :: BitsReductionSig -> FoldoverSig -> Sig -> Sig -- | Stereo Chorus -- -- A stereo chorus effect -- --
--   fxChorus2 rate depth width (ainLeft, ainRight)
--   
-- -- Arguments -- -- fxChorus2 :: RateSig -> DepthSig -> WidthSig -> Sig2 -> Sig2 -- | Auto pan -- --
--   fxAutoPan wave rate depth ain
--   
-- -- ; Arguments: -- -- fxAutoPan :: TremWaveSig -> DepthSig -> RateSig -> Sig2 -> Sig2 -- | Tremolo -- -- tremolo effect -- --
--   fxTrem wave rate depth ain
--   
-- -- ; Arguments: -- -- fxTrem :: TremWaveSig -> DepthSig -> RateSig -> Sig2 -> Sig2 -- | PitchShifter -- -- A pitch shifter effect based on FFT technology -- --
--   fxPitchShifter  fftSize mixRatio transposeRatio feedback ain
--   
-- -- Arguments -- -- fxPitchShifter :: FftSize -> Balance -> RatioSig -> Feedback -> Sig -> Sig -- | FreqShifter ; ---------------- ; A frequency shifter effect using the -- hilbert filter ; ; aout FreqShifter adry,kmix,kfreq,kmult,kfback ; ; -- Performance ; ----------- ; adry -- input audio to be frequency -- shifted ; kmix -- dry / wet mix of the output signal (range 0 to 1) ; -- kfreq -- frequency of frequency shifter effect (suggested range -1000 -- to 1000) ; kmult -- multiplier of frequency value for fine tuning -- control (suggested range -1 to 1) ; kfback -- control of the amount of -- output signal fed back into the input of the effect (suggested range 0 -- to 1) fxFreqShifter :: Balance -> Sig -> Sig -> Feedback -> Sig -> Sig -- | Compressor. All arguments are relative (range in 0 to 1). -- --
--   fxCompress thresh (loknee, hiknee) ratio (att, rel) gain ain
--   
fxCompress :: Sig -> (Sig, Sig) -> Sig -> (Sig, Sig) -> Sig -> Sig -> Sig -- | opcode audaciouseq, a, kkkkkkkkkka -- -- inputs: kgain1, kgain2, kgain3, kgain4, kgain5, kgain6, kgain7, -- kgain8, kgain9, kgain10 ain -- -- 10-band EQ Input: kgain1, kgain2, ... kgain10, asig Output: aout -- -- 10 kgain arguments maps to each band Bands are: 31.25, 52.6, 125, 500, -- 1000, 2000, 4000, 8000, 16000 audaciousEq :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Instrument plays an input signal in different modes. The segments of -- signal can be played back and forth. -- --
--   trackerSplice maxLength segLength mode
--   
-- -- -- -- Original author: Rory Walsh -- -- Example: -- --
--   main = dac $ do
--      let ev ch1 ch2 dt = fmap (\x -> (x, dt)) $ mconcat [
--            fmap (const 1.5) $ charOn ch1
--          , fmap (const 2.5) $ charOn ch2
--          , fmap (const 0) $ charOff ch1 <> charOff ch2]
--   
--      (k, dt) <- stepper (0, 0.1) $ ev 'q' 'w' 0.1 <> ev 'a' 's' 0.2 <> ev 'z' 'x' 0.4
--      mul 1.3 $ trackerSplice 0.8 dt (int' k) $ fst $ loopWav 1 "drumLoop.wav"
--   
trackerSplice :: D -> Sig -> Sig -> Sig -> SE Sig -- | PitchShifterDelay -- -- A pitch shifter effect that employs delay lines -- --
--   pitchShifterDelay maxDelayTime delayTime (feedback1, feedback2) transposeRatio ain
--   
-- -- Arguments -- -- pitchShifterDelay :: MaxDelayTime -> (Feedback, Feedback) -> DelayTime -> Sig -> Sig -> Sig instance Data.Default.Class.Default Csound.Air.Fx.PingPongSpec -- | The Csound types. -- -- There are several primitive types: -- -- -- -- A signal is a stream of numbers. Signals carry sound or time varied -- control values. Numbers are constants. 1-dimensional arrays contain -- some useful data which is calculated at the initial run of the -- program. -- -- There is only one compound type. It's a tuple of Csound values. The -- empty tuple is signified with special type called Unit. module Csound.Types -- | Signals data Sig -- | Constant numbers data D -- | Tables (or arrays) data Tab -- | Strings data Str -- | Spectrum. It's fsig in the Csound. data Spec -- | Another type for spectrum. It's wsig in the Csound. data Wspec -- | A signal of booleans. data BoolSig -- | A constant boolean value. data BoolD -- | Contains all Csound values. class Val a fromGE :: Val a => GE E -> a toGE :: Val a => a -> GE E fromE :: Val a => E -> a class (IsPrim a, RealFrac PrimOf a, Val a, Floating a) => SigOrD a type Sig2 = (Sig, Sig) type Sig3 = (Sig, Sig, Sig) type Sig4 = (Sig, Sig, Sig, Sig) type Sig5 = (Sig, Sig, Sig, Sig, Sig) type Sig6 = (Sig, Sig, Sig, Sig, Sig, Sig) type Sig8 = (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig) type Sig2_2 = (Sig2, Sig2) type Sig2_3 = (Sig2, Sig2, Sig2) type Sig2_4 = (Sig2, Sig2, Sig2, Sig2) type Sig2_5 = (Sig2, Sig2, Sig2, Sig2, Sig2) type Sig2_6 = (Sig2, Sig2, Sig2, Sig2, Sig2, Sig2) type Sig2_7 = (Sig2, Sig2, Sig2, Sig2, Sig2, Sig2, Sig2) type Sig2_8 = (Sig2, Sig2, Sig2, Sig2, Sig2, Sig2, Sig2, Sig2) -- | Constructs a number. double :: Double -> D -- | Constructs an integer. int :: Int -> D -- | Constructs a string. text :: String -> Str -- | Querries a total duration of the note. It's equivallent to Csound's -- p3 field. idur :: D getSampleRate :: D getControlRate :: D getBlockSize :: D -- | Gets the global BPM value. getBpm :: Sig -- | Sets the global BPM value. setBpm :: Sig -> SE () -- | It's used to synchronize changes with BPM. Useful with LFO's or delay -- times. syn :: Sig -> Sig -- | Calculates seconditions in ratio to global BPM. It measures time -- according to changes in the BPM. It's reciprocal to syn. takt :: Sig -> Sig -- | Sets a rate of the signal to audio rate. ar :: Sig -> Sig -- | Sets a rate of the signal to control rate. kr :: Sig -> Sig -- | Converts a signal to the number (initial value of the signal). ir :: Sig -> D -- | Makes a constant signal from the number. sig :: D -> Sig -- | Appends initialisation arguments. It's up to user to supply arguments -- with the right types. For example: -- --
--   oscil 0.5 440 sinWave `withInits` (0.5 :: D)
--   
withInits :: (Tuple a, Tuple b) => a -> b -> a -- | A special case of withInits. Here all inits are numbers. withDs :: Tuple a => a -> [D] -> a -- | A special case of withInits. Here all inits are signals. withSigs :: Tuple a => a -> [Sig] -> a -- | A special case of withInits. Here all inits are arrays. withTabs :: Tuple a => a -> [Tab] -> a -- | Appends an init value which is a number. withD :: Tuple a => a -> D -> a -- | Appends an init value which is a signal. withSig :: Tuple a => a -> Sig -> a -- | Appends an init value which is a table. withTab :: Tuple a => a -> Tab -> a -- | Applies a seed to the random value. It's equivalent to the -- withD but it has a special meaning of canceling the side -- effect. When random opcode is provided with seed value it's no longer -- contains a side effect so we don't need to restrict it. withSeed :: SE Sig -> D -> Sig quot' :: SigOrD a => a -> a -> a rem' :: SigOrD a => a -> a -> a div' :: SigOrD a => a -> a -> a mod' :: SigOrD a => a -> a -> a ceil' :: SigOrD a => a -> a floor' :: SigOrD a => a -> a round' :: SigOrD a => a -> a int' :: SigOrD a => a -> a frac' :: SigOrD a => a -> a -- | Creates a constant boolean signal. boolSig :: BoolD -> BoolSig -- | Invokes the given procedure if the boolean signal is true. when1 :: BoolSig -> SE () -> SE () -- | The chain of when1s. Tests all the conditions in sequence if -- everything is false it invokes the procedure given in the second -- argument. whens :: [(BoolSig, SE ())] -> SE () -> SE () whenElse :: BoolSig -> SE () -> SE () -> SE () -- | Invokes the given procedure if the boolean signal is true. whenD1 :: BoolD -> SE () -> SE () -- | The chain of when1s. Tests all the conditions in sequence if -- everything is false it invokes the procedure given in the second -- argument. whenDs :: [(BoolD, SE ())] -> SE () -> SE () whileDo :: BoolSig -> SE () -> SE () untilDo :: BoolSig -> SE () -> SE () whileDoD :: BoolD -> SE () -> SE () untilDoD :: BoolD -> SE () -> SE () whenElseD :: BoolD -> SE () -> SE () -> SE () -- | Performs tree search f the first argument lies within the interval it -- performs the corresponding procedure. compareWhenD :: D -> [(D, SE ())] -> SE () equalsTo :: EqB a => a -> a -> BooleanOf a infix 4 `equalsTo` notEqualsTo :: EqB a => a -> a -> BooleanOf a infix 4 `notEqualsTo` lessThan :: OrdB a => a -> a -> BooleanOf a infix 4 `lessThan` greaterThan :: OrdB a => a -> a -> BooleanOf a infix 4 `greaterThan` lessThanEquals :: OrdB a => a -> a -> BooleanOf a infix 4 `lessThanEquals` greaterThanEquals :: OrdB a => a -> a -> BooleanOf a infix 4 `greaterThanEquals` ar1 :: Sig -> Sig ar2 :: (Sig, Sig) -> (Sig, Sig) ar4 :: (Sig, Sig, Sig, Sig) -> (Sig, Sig, Sig, Sig) ar6 :: (Sig, Sig, Sig, Sig, Sig, Sig) -> (Sig, Sig, Sig, Sig, Sig, Sig) ar8 :: (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig) -> (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig) -- | A tuple of Csound values. class Tuple a tupleMethods :: Tuple a => TupleMethods a -- | Defines instance of type class Tuple for a new type in terms of -- an already defined one. makeTupleMethods :: Tuple a => (a -> b) -> (b -> a) -> TupleMethods b -- | Csound's empty tuple. data Unit -- | Constructs Csound's empty tuple. unit :: Unit -- | Gets an control/audio-rate value from the list by index. atTuple :: Tuple a => [a] -> Sig -> a -- | ifB for tuples of csound values. ifTuple :: Tuple a => BoolSig -> a -> a -> a -- | guardedB for tuples of csound values. guardedTuple :: Tuple b => [(BoolSig, b)] -> b -> b -- | caseB for tuples of csound values. caseTuple :: Tuple b => a -> [(a -> BoolSig, b)] -> b -> b class Tuple a => Arg a -- | Gets an init-rate value from the list by index. atArg :: (Tuple a, Arg a) => [a] -> D -> a -- | ifB for constants. ifArg :: (Arg a, Tuple a) => BoolD -> a -> a -> a -- | guardedB for constants. guardedArg :: (Tuple b, Arg b) => [(BoolD, b)] -> b -> b -- | caseB for constants. caseArg :: (Tuple b, Arg b) => a -> [(a -> BoolD, b)] -> b -> b -- | Input argument for monophonic synthesizer. It includes signals for -- amplitude, frequency (Cycles Per second), gate, trigger. The gate -- equals to 1 when any note is pressed or zero when nothing is pressed. -- The trigger equals to 1 at the moment when new note is pressed -- otherwise it's 0. data MonoArg MonoArg :: Sig -> Sig -> Sig -> Sig -> MonoArg [monoAmp] :: MonoArg -> Sig [monoCps] :: MonoArg -> Sig [monoGate] :: MonoArg -> Sig [monoTrig] :: MonoArg -> Sig -- | ADSR that's used in monophonic instruments. type MonoAdsr = Sig -> Sig -> Sig -> Sig -> Sig -- | Turns the function that expects ADSR-function and amplitude and -- frequency to the function on monophonic argument. adsrMonoSynt :: (MonoAdsr -> (Sig, Sig) -> a) -> MonoArg -> a monoAdsr :: MonoArg -> MonoAdsr -- | The tuples of signals. class (Tuple a, Num a, Fractional a, SigSpace a, BindSig a) => Sigs a -- | Arrays. The array data type is parametrized with type of the index and -- the type of the value. Note that the data tpyes for indices and values -- can be tuples. data Arr ix a -- | Creates an array that is local to the body of Csound instrument where -- it's defined. The array contains audio signals. -- --
--   newLocalArr sizes
--   
newLocalArr :: (Tuple a, Tuple ix) => [D] -> SE (Arr ix a) -- | Creates a global array. The array contains audio signals. -- --
--   newGlobalArr sizes
--   
newGlobalArr :: (Tuple a, Tuple ix) => [D] -> SE (Arr ix a) -- | Creates an array that is local to the body of Csound instrument where -- it's defined. The array contains control signals. -- --
--   newLocalCtrlArr sizes
--   
newLocalCtrlArr :: (Tuple a, Tuple ix) => [D] -> SE (Arr ix a) -- | Creates a global array. The array contains control signals. -- --
--   newGlobalCtrlArr sizes
--   
newGlobalCtrlArr :: (Tuple a, Tuple ix) => [D] -> SE (Arr ix a) -- | Writes data to the array. writeArr :: (Tuple ix, Tuple a) => Arr ix a -> ix -> a -> SE () -- | Reads data from the array. readArr :: (Tuple a, Tuple ix) => Arr ix a -> ix -> SE a -- | Updates the value of the array with pure function. modifyArr :: (Tuple a, Tuple ix) => Arr ix a -> ix -> (a -> a) -> SE () mixArr :: (Tuple ix, Tuple a, Num a) => Arr ix a -> ix -> a -> SE () -- | An array with single signal index. type Arr1 a = Arr Sig a -- | An array with single constant index. type DArr1 a = Arr D a -- | A matrix (2D array) with signal index. type Arr2 a = Arr (Sig, Sig) a -- | A matrix (2D array) with constant index. type DArr2 a = Arr (D, D) a -- | A 3D array with signal index. type Arr3 a = Arr (Sig, Sig, Sig) a -- | A 3D array with constant index. type DArr3 a = Arr (D, D, D) a -- | Function to help the type inference. arr1 :: SE (Arr Sig a) -> SE (Arr Sig a) -- | Function to help the type inference. darr1 :: SE (Arr D a) -> SE (Arr D a) -- | Function to help the type inference. arr2 :: SE (Arr (Sig, Sig) a) -> SE (Arr (Sig, Sig) a) -- | Function to help the type inference. darr2 :: SE (Arr (D, D) a) -> SE (Arr (D, D) a) -- | Function to help the type inference. arr3 :: SE (Arr (Sig, Sig, Sig) a) -> SE (Arr (Sig, Sig, Sig) a) -- | Function to help the type inference. darr3 :: SE (Arr (D, D, D) a) -> SE (Arr (D, D, D) a) -- | Traverses all elements of the array array and applies a procedure to -- each element. The procedure takes in a pair of index and the current -- value at the given index. foreachArr :: (Tuple ix, Tuple a) => Arr ix a -> ((ix, a) -> SE ()) -> SE () -- | Traverses all elements of the array at the **init rate** and applies a -- procedure to each element. The procedure takes in a pair of index and -- the current value at the given index. foreachArrD :: (Tuple ix, Tuple a) => Arr ix a -> ((ix, a) -> SE ()) -> SE () -- | Traverses all elements in the given row of 2D array at the signal rate -- and applies a procedure to all elements. forRowArr :: Tuple a => Sig -> Arr Sig2 a -> ((Sig, a) -> SE ()) -> SE () -- | Traverses all elements in the given column of 2D array at the signal -- rate and applies a procedure to all elements. forColumnArr :: Tuple a => Sig -> Arr Sig2 a -> ((Sig, a) -> SE ()) -> SE () -- | Traverses all elements in the given row of 2D array at the init rate -- and applies a procedure to all elements. forRowArrD :: Tuple a => D -> Arr D2 a -> ((D, a) -> SE ()) -> SE () -- | Traverses all elements in the given column of 2D array at the init -- rate and applies a procedure to all elements. forColumnArrD :: Tuple a => D -> Arr D2 a -> ((D, a) -> SE ()) -> SE () -- | Traverses an array and accumulates a value. We invoke the function -- with accumulator function, initial value and the array. foldArr :: (Tuple ix, Tuple a, Tuple b) => ((ix, a) -> b -> SE b) -> b -> Arr ix a -> SE b -- | Traverses a row in the array and accumulates a value. We invoke the -- function with accumulator function, initial value and the array with -- signal of the row number. -- --
--   foldRowArr accum initValue rowId array
--   
foldRowArr :: (Tuple a, Tuple b) => ((Sig, a) -> b -> SE b) -> b -> Sig -> Arr Sig2 a -> SE b -- | Traverses a column in the array and accumulates a value. We invoke the -- function with accumulator function, initial value and the array with -- signal of the row number. -- --
--   foldColumnArr accum initValue columnId array
--   
foldColumnArr :: (Tuple a, Tuple b) => ((Sig, a) -> b -> SE b) -> b -> Sig -> Arr Sig2 a -> SE b -- | Traverses a row at the **init rate** in the array and accumulates a -- value. We invoke the function with accumulator function, initial value -- and the array with signal of the row number. -- --
--   foldRowArr accum initValue rowId array
--   
foldRowsArrD :: (Tuple a, Tuple b) => ((D, a) -> b -> SE b) -> b -> D -> Arr D2 a -> SE b -- | Traverses a column at the **init rate** in the array and accumulates a -- value. We invoke the function with accumulator function, initial value -- and the array with signal of the row number. -- --
--   foldColumnArr accum initValue columnId array
--   
foldColumnsArrD :: (Tuple a, Tuple b) => ((D, a) -> b -> SE b) -> b -> D -> Arr D2 a -> SE b -- | Creates an array that is local to the body of Csound instrument where -- it's defined. The array contains audio signals. It fills the array -- from the list of values (the last argument). -- --
--   fillLocalArr sizes initValues = ...
--   
fillLocalArr :: (Tuple a, Tuple ix) => [Int] -> [a] -> SE (Arr ix a) -- | Creates a global array. The array contains audio signals. It fills the -- array from the list of values (the last argument). -- --
--   fillGlobalArr sizes initValues = ...
--   
fillGlobalArr :: (Tuple a, Tuple ix) => [Int] -> [a] -> SE (Arr ix a) -- | Creates an array that is local to the body of Csound instrument where -- it's defined. The array contains control signals. It fills the array -- from the list of values (the last argument). -- --
--   fillLocalCtrlArr sizes initValues = ...
--   
fillLocalCtrlArr :: (Tuple a, Tuple ix) => [Int] -> [a] -> SE (Arr ix a) -- | Creates a global array. The array contains control signals. It fills -- the array from the list of values (the last argument). -- --
--   fillGlobalCtrlArr sizes initValues = ...
--   
fillGlobalCtrlArr :: (Tuple a, Tuple ix) => [Int] -> [a] -> SE (Arr ix a) -- | Mapps all values in the array with the function. -- -- Csound docs: http://csound.github.io/docs/manual/maparray.html maparrayNew :: Arr a b -> Str -> SE (Arr a b) lenarray :: SigOrD c => Arr a b -> c -- | Copies table to array. copyf2array :: Arr Sig Sig -> Tab -> SE () -- | Copies array to table. copya2ftab :: Arr Sig Sig -> Tab -> SE () -- | Finds a minimum value of the array. minarray :: (Tuple b, Num b) => Arr a b -> SE b -- | Finds a maximum value of the array. maxarray :: (Tuple b, Num b) => Arr a b -> SE b -- | Summs all elements in the array. sumarray :: (Tuple b, Num b) => Arr a b -> SE b -- | Scales all elements in the array. scalearray :: (Tuple b, Num b) => Arr a b -> (b, b) -> SE () -- | Creates a copy of some part of the given array slicearrayNew :: Arr D a -> (D, D) -> SE (Arr D a) -- | Transforms the dta of the array and copies it to the second array. maparrayCopy :: Arr a b -> Str -> Arr a b -> SE () -- | Copies a part of array to another array. slicearrayCopy :: Arr D a -> (D, D) -> Arr D a -> SE () -- | Spectral array. type SpecArr = Arr Sig Sig -- | Complex-to-complex Fast Fourier Transform. -- -- csound docs: http://csound.github.io/docs/manual/fft.html fftNew :: SpecArr -> SE SpecArr -- | Complex-to-complex Inverse Fast Fourier Transform. -- -- csound docs: http://csound.github.io/docs/manual/fftinv.html fftinvNew :: SpecArr -> SE SpecArr -- | Fast Fourier Transform of a real-value array. -- -- csound docs: http://csound.github.io/docs/manual/rfft.html rfftNew :: SpecArr -> SE SpecArr -- | Complex-to-real Inverse Fast Fourier Transform. -- -- csound docs: http://csound.github.io/docs/manual/rifft.html rifftNew :: SpecArr -> SE SpecArr -- | Copies spectral data to k-rate arrays (or t-variables). Also known as -- pvs2array. -- -- csound docs: http://csound.github.io/docs/manual/pvs2tab.html pvs2tab :: SpecArr -> Spec -> SE Sig -- | Copies spectral data from k-rate arrays (or t-variables.). Also known -- as pvsfromarray. -- -- csound docs: http://csound.github.io/docs/manual/tab2pvs.html tab2pvs :: SpecArr -> SE Spec -- | Complex product of two arrays. -- --
--   kout[] cmplxprod kin1[], kin2[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/cmplxprod.html cmplxprodNew :: SpecArr -> SpecArr -> SE SpecArr -- | Rectangular to polar format conversion. -- --
--   kout[] rect2pol kin[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/rect2pol.html rect2polNew :: SpecArr -> SE SpecArr -- | Polar to rectangular format conversion. -- --
--   kout[] pol2rect kin[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/pol2rect.html pol2rectNew :: SpecArr -> SE SpecArr -- | Polar to rectangular format conversion. -- --
--   kout[] pol2rect kmags[], kphs[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/pol2rect.html pol2rect2New :: SpecArr -> SpecArr -> SE SpecArr -- | Applies a window to an array. -- --
--   kout[] window kin[][, koff, itype]
--   
-- -- csound docs: http://csound.github.io/docs/manual/window.html windowArrayNew :: SpecArr -> SE SpecArr -- | Real to complex format conversion. -- --
--   kout[] r2c kin[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/r2c.html r2cNew :: SpecArr -> SE SpecArr -- | Complex to real format conversion. -- --
--   kout[] c2r kin[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/c2r.html c2rNew :: SpecArr -> SE SpecArr -- | Obtains the magnitudes of a complex-number array -- --
--   kout[] mags kin[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/mags.html magsArrayNew :: SpecArr -> SE SpecArr -- | Obtains the phases of a complex-number array -- -- kout[] phs kin[] -- --
--   csound docs: <http://csound.github.io/docs/manual/phs.html>
--   
phsArrayNew :: SpecArr -> SE SpecArr -- | Complex-to-complex Fast Fourier Transform. -- -- csound docs: http://csound.github.io/docs/manual/fft.html fftCopy :: SpecArr -> SpecArr -> SE () -- | Complex-to-complex Inverse Fast Fourier Transform. -- -- csound docs: http://csound.github.io/docs/manual/fftinv.html fftinvCopy :: SpecArr -> SpecArr -> SE () -- | Fast Fourier Transform of a real-value array. -- -- csound docs: http://csound.github.io/docs/manual/rfft.html rfftCopy :: SpecArr -> SpecArr -> SE () -- | Complex-to-real Inverse Fast Fourier Transform. -- -- csound docs: http://csound.github.io/docs/manual/rifft.html rifftCopy :: SpecArr -> SpecArr -> SE () -- | Complex product of two arrays. -- --
--   kout[] cmplxprod kin1[], kin2[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/cmplxprod.html cmplxprodCopy :: SpecArr -> SpecArr -> SpecArr -> SE () -- | Rectangular to polar format conversion. -- --
--   kout[] rect2pol kin[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/rect2pol.html rect2polCopy :: SpecArr -> SpecArr -> SE () -- | Polar to rectangular format conversion. -- --
--   kout[] pol2rect kin[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/pol2rect.html pol2rectCopy :: SpecArr -> SpecArr -> SE () -- | Polar to rectangular format conversion. -- --
--   kout[] pol2rect kmags[], kphs[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/pol2rect.html pol2rect2Copy :: SpecArr -> SpecArr -> SpecArr -> SE () -- | Applies a window to an array. -- --
--   kout[] window kin[][, koff, itype]
--   
-- -- csound docs: http://csound.github.io/docs/manual/window.html windowArrayCopy :: SpecArr -> SpecArr -> SE () -- | Real to complex format conversion. -- --
--   kout[] r2c kin[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/r2c.html r2cCopy :: SpecArr -> SpecArr -> SE () -- | Complex to real format conversion. -- --
--   kout[] c2r kin[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/c2r.html c2rCopy :: SpecArr -> SpecArr -> SE () -- | Obtains the magnitudes of a complex-number array -- --
--   kout[] mags kin[]
--   
-- -- csound docs: http://csound.github.io/docs/manual/mags.html magsArrayCopy :: SpecArr -> SpecArr -> SE () -- | Obtains the phases of a complex-number array -- -- kout[] phs kin[] -- --
--   csound docs: <http://csound.github.io/docs/manual/phs.html>
--   
phsArrayCopy :: SpecArr -> SpecArr -> SE () module Csound.Tuning -- | Data structure for musical temperament. The value can be created with -- constructors genTemp and genTempCent. It can be -- passed as an argument to the instrument (it can be a part of the -- note). newtype Temp Temp :: Tab -> Temp [unTemp] :: Temp -> Tab -- | Creates a temperament. Arguments are -- --
--   genTemp interval baseHz baseMidiPitch cents
--   
-- -- For example: -- --
--   genTemp 2 261.63 60 [0, 100, 200 .. more cents .. , 1200]
--   
-- -- Cent list should include the first note from the next octave(interval -- of temperament repetition). genTemp :: Double -> Double -> Double -> [Double] -> Temp -- | Creates a temperament. Arguments are -- --
--   genTempCent interval baseHz baseMidiPitch ratios
--   
-- -- For example: -- --
--   genTempRatio 2 261.63 60 [1, .. more ratios .. , 2]
--   
-- -- Cent list should include the first note from the next octave(interval -- of temperament repetition). genTempRatio :: Double -> Double -> Double -> [Double] -> Temp -- | Temperament with base note at note C (261.63 Hz) and an octave as -- interval (2). The argument is the list of cents. tempC :: [Double] -> Temp -- | Temperament with base note at note C (261.63 Hz) and an octave as -- interval (2). The argument is the list of ratios. tempRatioC :: [Double] -> Temp -- | Temperament with 9th note tuned to 440 Hz (Concert A). The argument is -- the list of cents. stdTemp :: [Double] -> Temp -- | Temperament with 9th note tuned to 440 Hz (Concert A). The argument is -- the list of ratios. stdTempRatio :: [Double] -> Temp -- | Baroque Temperament with 9th note tuned to 415 Hz (Concert A). The -- argument is the list of cents. barTemp :: [Double] -> Temp -- | Baroque Temperament with 9th note tuned to 415 Hz (Concert A). The -- argument is the list of ratios. barTempRatio :: [Double] -> Temp -- | Temperament with 9th note tuned to 440 Hz (Concert A). The argument is -- the list of cents. concertA :: Double -> [Double] -> Temp -- | Temperament with 9th note tuned to 440 Hz (Concert A). The argument is -- the list of ratios. ratioConcertA :: Double -> [Double] -> Temp -- | Equal temperament equal1 :: Temp -- | Just intonation just1 :: Temp -- | Meantone temperament meantone :: Temp -- | Pythagorean tuning pythagor :: Temp -- | Werckmeister III temperament. Probably it was temperament of the Bach -- musical era. werckmeister :: Temp -- | Tomas Young temperament young1 :: Temp -- | Tomas Young temperament 1 (aligned with ET by C and A) young2 :: Temp -- | Tomas Young temperament 2 (aligned with ET by C and A) young3 :: Temp equalCents1 :: [Double] justCents1 :: [Double] meantoneCents :: [Double] pythagorCents :: [Double] werckmeisterCents :: [Double] youngCents1 :: [Double] youngCents2 :: [Double] youngCents3 :: [Double] -- | List of temperaments (or more precisely f-table of temperaments). It -- can be passed as an argument to the instrument (it can be a part of -- the note). newtype TempList TempList :: TabList -> TempList [unTempList] :: TempList -> TabList -- | Creates a list of temperaments. tempList :: [Temp] -> TempList -- | Selects one of the temperaments by index. fromTempList :: TempList -> Sig -> Temp -- | Selects one of the temperaments by index. Works at the time of -- instrument initialization (remains constant). fromTempListD :: TempList -> D -> Temp -- | Converts cents to ratios. cent2ratio :: Floating a => a -> a -- | Converts ratios to cents. ratio2cent :: Floating a => a -> a instance Csound.Typed.Types.Tuple.Tuple Csound.Tuning.TempList instance Csound.Typed.Types.Tuple.Arg Csound.Tuning.TempList instance Data.Default.Class.Default Csound.Tuning.Temp instance Csound.Typed.Types.Tuple.Tuple Csound.Tuning.Temp instance Csound.Typed.Types.Tuple.Arg Csound.Tuning.Temp module Csound.Control.Evt -- | A stream of events. We can convert a stream of events to the procedure -- with the function runEvt. It waits for events and invokes the -- given procedure when the event happens. data Evt a Evt :: (Bam a -> SE ()) -> Evt a [runEvt] :: Evt a -> Bam a -> SE () -- | A procedure. Something that takes a value and suddenly bams with it. type Bam a = a -> SE () type Tick = Evt Unit -- | Converts booleans to events. boolToEvt :: BoolSig -> Evt Unit -- | Converts an event stream to boolean signal. It's True when something -- happens and False otherwise. evtToBool :: Evt a -> BoolSig -- | Creates a trigger signal out of event stream. It equals to 1 when -- something happens and 0 otherwise. evtToTrig :: Evt a -> Sig -- | Triggers an event when signal equals to 1. sigToEvt :: Sig -> Evt Unit -- | Converts event stream to signal. The first argument is initial value. -- It holds the value while nothing happens. If the event happens it -- overwrites the current value of the output signal. evtToSig :: D -> Evt D -> Sig -- | Converts events to signals. stepper :: Tuple a => a -> Evt a -> SE a -- | Filters events with predicate. filterE :: (a -> BoolD) -> Evt a -> Evt a -- | Filters events with effectful predicate. filterSE :: (a -> SE BoolD) -> Evt a -> Evt a -- | Accumulator for events with side effects. accumSE :: Tuple s => s -> (a -> s -> SE (b, s)) -> Evt a -> Evt b -- | Accumulator for events. accumE :: Tuple s => s -> (a -> s -> (b, s)) -> Evt a -> Evt b -- | Accumulator with filtering. It can skip the events from the event -- stream. If the third element of the triple equals to 1 then we should -- include the event in the resulting stream. If the element equals to 0 -- we skip the event. filterAccumE :: Tuple s => s -> (a -> s -> (BoolD, b, s)) -> Evt a -> Evt b -- | Accumulator for events with side effects and filtering. Event triggers -- only if the first element in the tripplet is true. filterAccumSE :: Tuple s => s -> (a -> s -> SE (BoolD, b, s)) -> Evt a -> Evt b -- | A snapshot of the signal. It converts a type of the signal to the type -- of the value in the given moment. Instances: -- --
--   type instance Snap D   = D
--   type instance Snap Str = Str
--   type instance Snap Tab = Tab
--   
--   type instance Snap Sig = D
--   
--   type instance Snap (a, b) = (Snap a, Snap b)
--   type instance Snap (a, b, c) = (Snap a, Snap b, Snap c)
--   type instance Snap (a, b, c, d) = (Snap a, Snap b, Snap c, Snap d)
--   type instance Snap (a, b, c, d, e) = (Snap a, Snap b, Snap c, Snap d, Snap e)
--   type instance Snap (a, b, c, d, e, f) = (Snap a, Snap b, Snap c, Snap d, Snap e, Snap f)
--   
type family Snap a -- | Get values of some signal at the given events. snapshot :: (Tuple a, Tuple (Snap a)) => (Snap a -> b -> c) -> a -> Evt b -> Evt c readSnap :: (Tuple (Snap a), Tuple a) => a -> Snap a -- | Constructs an event stream that contains values from the given signal. -- Events happens only when the signal changes. snaps :: Sig -> Evt D -- | Constructs an event stream that contains pairs from the given pair of -- signals. Events happens when any signal changes. snaps2 :: Sig2 -> Evt (D, D) -- | Executes actions synchronized with global tempo (in Hz). -- --
--   runEvtSync tempoCps evt proc
--   
sync :: (Default a, Tuple a) => Sig -> Evt a -> Evt a -- | the sync function but time is measured in beats per minute. syncBpm :: (Default a, Tuple a) => Sig -> Evt a -> Evt a -- | Creates a stream of events that happen with the given frequency. metro :: Sig -> Evt Unit -- | Creates a stream of ticks that happen around the given frequency with -- given deviation. -- --
--   gaussTrig freq deviation
--   
gaussTrig :: Sig -> Sig -> Tick -- | Creates a stream of random events. The argument is a number of events -- per second. -- --
--   dust eventsPerSecond
--   
dust :: Sig -> Tick -- | Csound's original metro function. metroSig :: Sig -> Sig -- | Creates a signal that contains a random ones that happen with given -- frequency. dustSig :: Sig -> SE Sig -- | Creates a signal that contains a random ones or negative ones that -- happen with given frequency. dustSig2 :: Sig -> SE Sig -- | Fires a single event in the given time ahead. impulseE :: D -> Evt Unit -- | Behaves like changed, but returns an event stream. changedE :: [Sig] -> Evt Unit -- | Behaves like trigger, but returns an event stream. triggerE :: Sig -> Sig -> Sig -> Evt Unit -- | Fires a single event right now. -- --
--   loadbang = pulseE 0
--   
loadbang :: Evt Unit -- | Fires a single true value in the given time ahead. impulse :: D -> Sig -- | Behaves like metro, but returns an event stream. -- | Deprecated: Use metro instead metroE :: Sig -> Evt Unit -- | Delays event stream by given amount of seconds delEvt :: Arg a => D -> Evt a -> Evt a -- | Constant event stream. It produces the same value (the first argument) -- all the time. devt :: D -> Evt a -> Evt D -- | Makes an event stream from list of events. eventList :: [(Sig, Sig, a)] -> Evt (Sco a) -- | Constructs an event stream that contains an infinite repetition values -- from the given list. When an event happens this function takes the -- next value from the list, if there is no values left it starts from -- the beggining of the list. cycleE :: (Tuple a, Arg a) => [a] -> Evt b -> Evt a -- | When something happens on the given event stream resulting event -- stream contains an application of some unary function to the given -- initial value. So the event stream contains the values: -- --
--   [s0, f s0, f (f s0), f (f (f s0)), ...]
--   
iterateE :: Tuple a => a -> (a -> a) -> Evt b -> Evt a -- | Substitutes all values in the input stream with the given constant -- value. repeatE :: Tuple a => a -> Evt b -> Evt a -- | Accumulates a values from the given event stream with binary function. -- It's a variant of the fold for event streams. -- --
--   appendE z f evt
--   
-- -- When value a happens with evt, the resulting event -- stream contains a value (z f a) and in the next time -- z equals to this value. appendE :: Tuple a => a -> (a -> a -> a) -> Evt a -> Evt a -- | A special variant of the function appendE for the monoids. -- Initial value is mempty and binary function is mappend -- which belong to the instance of the class Monoid. mappendE :: (Monoid a, Tuple a) => Evt a -> Evt a -- | Splits event stream on two streams with predicate. partitionE :: (a -> BoolD) -> Evt a -> (Evt a, Evt a) -- | Takes the ns events from the event stream and ignores the rest of the -- stream. takeE :: Int -> Evt a -> Evt a -- | Drops the ns events from the event stream and leaves the rest of the -- stream. dropE :: Int -> Evt a -> Evt a -- | Takes events while the predicate is true. takeWhileE :: (a -> BoolD) -> Evt a -> Evt a -- | Drops events while the predicate is true. dropWhileE :: (a -> BoolD) -> Evt a -> Evt a -- | Splits a toggle event stream on on-events and off-events. splitToggle :: Evt D -> (Evt D, Evt D) -- | Converts clicks to alternating 0 and 1 (toggle event stream) toTog :: Tick -> Evt D -- | Converts clicks to alternating 1 and 0 (toggle event stream with first -- value set to 1) toTog1 :: Tick -> Evt D -- | Represents a values with frequency of occurence. type Rnds a = [(Sig, a)] -- | Constructs an event stream that contains values from the given list -- which are taken in the random order. oneOf :: (Tuple a, Arg a) => [a] -> Evt b -> Evt a -- | Constructs an event stream that contains values from the given list -- which are taken in the random order. In the list we specify not only -- values but the frequencies of occurrence. Sum of the frequencies -- should be equal to one. freqOf :: (Tuple a, Arg a) => Rnds a -> Evt b -> Evt a -- | This function combines the functions accumE and freqOf. -- We transform the values of the event stream with stateful function -- that produce not just values but the list of values with frequencies -- of occurrence. We apply this function to the current state and the -- value and then at random pick one of the values. freqAccum :: (Arg b, Arg s) => s -> (a -> s -> Rnds (b, s)) -> Evt a -> Evt b -- | An event stream of the random values in the interval (0, 1). randDs :: Evt b -> Evt D -- | An event stram of lists of random values in the interval (0, -- 1). The first argument is the length of the each list. randList :: Int -> Evt b -> Evt [D] -- | An event stream of the integers taken from the given diapason. randInts :: (D, D) -> Evt b -> Evt D -- | Skips elements at random. -- --
--   randSkip prob
--   
-- -- where prob is probability of includinng the element in the -- output stream. randSkip :: Sig -> Evt a -> Evt a -- | Skips elements at random. -- --
--   randSkip probFun
--   
-- -- It behaves just like randSkip, but probability depends on the -- value. randSkipBy :: (a -> Sig) -> Evt a -> Evt a -- |
--   range (xMin, xMax) === cycleE [xMin .. pred xMax]
--   
range :: (D, D) -> Evt b -> Evt D -- | Turns an event of indices to the event of the values from the list. A -- value is taken with index. listAt :: (Tuple a, Arg a) => [a] -> Evt D -> Evt a -- | Specialization of the function masked. -- --
--   every n [a, b, c, ..] evt
--   
-- -- constructs a mask that skips first n elements and then -- produces an event and skips next (a - 1) events, then produces an -- event and skips next (b - 1) events and so on. It's useful for -- construction of the percussive beats. For example -- --
--   every 0 [2] (metroE 2)
--   
-- -- triggers an event on the odd beats. With this function we can create a -- complex patterns of cyclic events. every :: (Tuple a, Arg a) => Int -> [Int] -> Evt a -> Evt a -- | Filters events with the mask. A mask is a list of ones and zeroes. -- n'th element from the given list should be included in the resulting -- stream if the n'th element from the list equals to one or skipped if -- the element equals to zero. masked :: (Tuple a, Arg a) => [D] -> Evt a -> Evt a -- | We can convert notes to sound signals with instruments. An instrument -- is a function: -- --
--   (Arg a, Sigs b) => a -> SE b
--   
-- -- It takes a tuple of primitive Csound values (number, string or array) -- and converts it to the tuple of signals and it makes some side effects -- along the way so the output is wrapped in the SE-monad. -- -- There are only three ways of making a sound with an instrument: -- -- -- -- Sometimes we don't want to produce any sound. Our instrument is just a -- procedure that makes something useful without being noisy about it. -- It's type is: -- --
--   (Arg a) => a -> SE ()
--   
-- -- To invoke the procedures there are functions with trailing underscore. -- For example we have the function trig to convert event stream -- to sound: -- --
--   trig :: (Arg a, Sigs b) => (a -> SE b) -> Evts (D, D, a) -> b
--   
-- -- and we have a trig with underscore to convert the event -- stream to the sequence of the procedure invkations: -- --
--   trig_ :: (Arg a) => (a -> SE ()) -> Evts (D, D, a) -> SE ()
--   
-- -- To invoke instruments from another instrumetnts we use artificial -- closures made with functions with trailing xxxBy. For example: -- --
--   trigBy :: (Arg a, Arg c, Sigs b) => (a -> SE b) -> (c -> Evts (D, D, a)) -> (c -> b)
--   
-- -- Notice that the event stream depends on the argument of the type c. -- Here goes all the parameters that we want to pass from the outer -- instrument. Unfortunately we can not just create the closure, because -- our values are not the real values. It's a text of the programm (a -- tiny snippet of it) to be executed. For a time being I don't know how -- to make it better. So we need to pass the values explicitly. -- -- For example, if we want to make an arpeggiator: -- --
--   pureTone :: D -> SE Sig
--   pureTone cps = return $ mul env $ osc $ sig cps
--      where env = linseg [0, 0.01, 1, 0.25, 0]
--   
--   majArpeggio :: D -> SE Sig
--   majArpeggio = return . schedBy pureTone evts
--       where evts cps = withDur 0.5 $ fmap (* cps) $ cycleE [1, 5/3, 3/2, 2] $ metroE 5
--   
--   main = dac $ mul 0.5 $ midi $ onMsg majArpeggio
--   
-- -- We should use schedBy to pass the frequency as a parameter to -- the event stream. module Csound.Control.Instr type Sco a = Track Sig a -- | Special type that represents a scores of sound signals. If an -- instrument is triggered with the scores the result is wrapped in the -- value of this type. data Mix a -- | Plays a bunch of notes with the given instrument. -- --
--   res = sco instrument scores
--   
sco :: (Arg a, Sigs b) => (a -> SE b) -> Sco a -> Sco (Mix b) -- | Renders a scores to the sound signals. we can use it inside the other -- instruments. mix :: Sigs a => Sco (Mix a) -> a -- | Applies an effect to the sound. Effect is applied to the sound on the -- give track. -- --
--   res = eff effect sco
--   
-- -- -- -- With the function eff you can apply a reverb or adjust the -- level of the signal. It functions like a mixing board but unlike -- mixing board it produces the value that you can arrange with functions -- from your favorite Score-generation library. You can delay it or mix -- with some other track and apply some another effect on top of it! eff :: (Sigs a, Sigs b) => (a -> SE b) -> Sco (Mix a) -> Sco (Mix b) -- | Plays a bunch of notes with the given monophonic instrument. See -- details on type MonoArg. The scores contain the pairs of -- amplitude (0 to 1) and frequency (in Hz). -- --
--   res = monoSco instrument scores
--   
monoSco :: Sigs a => (MonoArg -> SE a) -> Sco (D, D) -> Sco (Mix a) -- | Mixes the scores and plays them in the loop. mixLoop :: Sigs a => Sco (Mix a) -> a -- | Invokes a procedure for the given bunch of events. sco_ :: Arg a => (a -> SE ()) -> Sco a -> Sco (Mix Unit) -- | Converts a bunch of procedures scheduled with scores to a single -- procedure. mix_ :: Sco (Mix Unit) -> SE () -- | Mixes the procedures and plays them in the loop. mixLoop_ :: Sco (Mix Unit) -> SE () -- | Imitates a closure for a bunch of notes to be played within another -- instrument. mixBy :: (Arg a, Sigs b) => (a -> Sco (Mix b)) -> a -> b infiniteDur :: Num a => a -- | General mapping. Maps not only values but events. mapEvents :: Num t => (Event t a -> Event t b) -> Track t a -> Track t b -- | temp constructs just an event. Value of type a lasts for one -- time unit and starts at zero. temp :: Num t => a -> Track t a -- | Constant time events. Value a starts at some time and lasts -- for some time. data Event t a Event :: t -> t -> a -> Event t a [eventStart] :: Event t a -> t [eventDur] :: Event t a -> t [eventContent] :: Event t a -> a dur :: Duration a => a -> DurOf a -- | Delays the sound source by the given duration factor. str :: Stretch a => DurOf a -> a -> a sched :: (Arg a, Sigs b) => (a -> SE b) -> Evt (Sco a) -> b retrig :: (Arg a, Sigs b) => (a -> SE b) -> Evt a -> b -- | An instrument is triggered with event stream and delay time is set to -- zero (event fires immediately) and duration is set to inifinite time. -- The note is held while the instrument is producing something. If the -- instrument is silent for some seconds (specified in the first -- argument) then it's turned off. schedHarp :: (Arg a, Sigs b) => D -> (a -> SE b) -> Evt [a] -> b -- | Invokes an instrument with first event stream and holds the note until -- the second event stream is active. schedUntil :: (Arg a, Sigs b) => (a -> SE b) -> Evt a -> Evt c -> b -- | Invokes an instrument with toggle event stream (1 stands for on and 0 -- stands for off). schedToggle :: Sigs b => SE b -> Evt D -> b -- | Triggers a procedure on the event stream. sched_ :: Arg a => (a -> SE ()) -> Evt (Sco a) -> SE () -- | Invokes an instrument with first event stream and holds the note until -- the second event stream is active. schedUntil_ :: Arg a => (a -> SE ()) -> Evt a -> Evt c -> SE () -- | A closure to trigger an instrument inside the body of another -- instrument. schedBy :: (Arg a, Sigs b, Arg c) => (a -> SE b) -> (c -> Evt (Sco a)) -> c -> b -- | A closure to trigger an instrument inside the body of another -- instrument. schedHarpBy :: (Arg a, Sigs b, Arg c) => D -> (a -> SE b) -> (c -> Evt [a]) -> c -> b -- | Plays infinite notes for a given instrument with event stream. It -- allows for note overlap on release. We can specify release time on -- seconds in the first argument. -- --
--   schedStream releaseTime instr evt
--   
schedStream :: (Arg a, Sigs b) => D -> D -> (a -> SE b) -> Evt a -> SE b -- | Sets the same duration for all events. It's useful with the functions -- sched, schedBy, sched_. withDur :: Sig -> Evt a -> Evt (Sco a) -- | Turns monoSched :: Evt (Sco (D, D)) -> SE MonoArg -- | Creates an instrument that can be triggered by name with Csound API. -- The arguments are determined from the structure of the input for the -- instrument. If we have a tuple of arguments: (D, D, Tab) The -- would be rendered to instrument arguments that strts from p4. -- p1 is the name of teh instrument, p2 is the start -- time of the note, p3 is the duration of the note. Then -- p4 and p5 are going to be doubles and p6 is -- an integer that denotes a functional table. trigByName :: (Arg a, Sigs b) => String -> (a -> SE b) -> SE b -- | Creates an instrument that can be triggered by name with Csound API. -- The arguments are determined from the structure of the input for the -- instrument. -- -- With Csound API we can send messages -- --
--   i "name" time duration arg1 arg2 arg3
--   
trigByName_ :: Arg a => String -> (a -> SE ()) -> SE () -- | Creates an instrument that can be triggered by name with Csound API. -- -- It's intended to be used like a midi instrument. It simulates a -- simplified midi protocol. We can trigger notes: -- --
--   i "givenName" delay duration 1 pitchKey volumeKey auxParams     -- note on
--   i "givenName" delay duration 0 pitchKey volumeKey auxParams     -- note off
--   
-- -- The arguments are -- --
--   trigByNameMidi name instrument
--   
-- -- The instrument takes a triplet of (pitchKey, volumeKey, -- auxilliaryTuple). The order does matter. Please don't pass the -- volumeKey as the first argument. The instrument expects the -- pitch key to be a first argument. trigByNameMidi :: (Arg a, Sigs b) => String -> ((D, D, a) -> SE b) -> SE b -- | It behaves just like the function trigByNameMidi. Only it -- doesn't produce an audio signal. It performs some procedure on note on -- and stops doing the precedure on note off. trigByNameMidi_ :: Arg a => String -> ((D, D, a) -> SE ()) -> SE () -- | Turns off named instruments. -- --
--   turnoffNamedInstr name kmode krelease
--   
-- -- name of the instrument (should be defined with trigByName or -- smth like that). -- -- kmode -- sum of the following values: -- -- 0, 1, or 2: turn off all instances (0), oldest only (1), or newest -- only (2) -- -- 4: only turn off notes with exactly matching (fractional) instrument -- number, rather than ignoring fractional part -- -- 8: only turn off notes with indefinite duration (p3 < 0 or MIDI) -- -- krelease -- if non-zero, the turned off instances are allowed to -- release, otherwise are deactivated immediately (possibly resulting in -- clicks) turnoffByName :: String -> Sig -> Sig -> SE () -- | Executes some procedure for the whole lifespan of the program, alwaysOn :: SE () -> SE () -- | Transforms an instrument from always on to conditional one. The -- routput instrument plays only when condition is true otherwise it -- produces silence. playWhen :: forall a b. Sigs a => BoolSig -> (b -> SE a) -> b -> SE a class Sigs (SigOuts a) => Outs a where { type family SigOuts a :: *; } toOuts :: Outs a => a -> SE (SigOuts a) onArg :: Outs b => (a -> b) -> a -> SE (SigOuts b) -- | Constructs a drum-like instrument. Drum like instrument has a single -- argument that signifies an amplitude. class AmpInstr a where { type family AmpInstrOut a :: *; } onAmp :: AmpInstr a => a -> D -> SE (AmpInstrOut a) -- | Constructs a simple instrument that takes in a tuple of two arguments. -- They are amplitude and the frequency (in Hz or cycles per second). class CpsInstr a where { type family CpsInstrOut a :: *; } onCps :: CpsInstr a => a -> (D, D) -> SE (CpsInstrOut a) -- | Instrument reference. we can invoke or stop the instrument by the -- identifier. data InstrRef a -- | Creates a new instrument and generates a unique identifier. newInstr :: Arg a => (a -> SE ()) -> SE (InstrRef a) -- | Schedules an event for the instrument. -- --
--   scheduleEvent instrRef delay duration args
--   
-- -- The arguments for time values are set in seconds. scheduleEvent :: Arg a => InstrRef a -> D -> D -> a -> SE () -- | Turns off the note played on the given instrument. Use fractional -- instrument reference to turn off specific instance. -- --
--   turnoff2 instrRef mode releaseTime
--   
-- -- The mode is sum of the following values: -- -- -- -- releaseTime if non-zero, the turned off instances are allowed -- to release, otherwise are deactivated immediately (possibly resulting -- in clicks). turnoff2 :: InstrRef a -> Sig -> Sig -> SE () -- | Negates the instrument identifier. This trick is used in Csound to -- update the instrument arguments while instrument is working. negateInstrRef :: InstrRef a -> InstrRef a -- | Adds fractional part to the instrument reference. This trick is used -- in Csound to identify the notes (or specific instrument invokation). addFracInstrRef :: D -> D -> InstrRef a -> InstrRef a -- | Creates an insturment that produces a value. newOutInstr :: (Arg a, Sigs b) => (a -> SE b) -> SE (InstrRef a, b) -- | Triggers a note with fractional instrument reference. We can later -- stop the instrument on specific note with function noteOff. noteOn :: Arg a => D -> D -> InstrRef a -> a -> SE () -- | Stops a note with fractional instrument reference. noteOff :: (Default a, Arg a) => D -> D -> InstrRef a -> SE () -- | Midi. module Csound.Control.Midi -- | Specifies the midi channel or programm. data MidiChn ChnAll :: MidiChn Chn :: Int -> MidiChn Pgm :: Maybe Int -> Int -> MidiChn type MidiFun a = (Msg -> SE a) -> SE a toMidiFun :: Sigs a => MidiChn -> MidiFun a toMidiFun_ :: MidiChn -> MidiFun () data Msg type Channel = Int -- | Triggers a midi-instrument (aka Csound's massign) for all channels. -- It's useful to test a single instrument. midi :: (Num a, Sigs a) => (Msg -> SE a) -> SE a -- | Triggers a midi-instrument (aka Csound's massign) on the specified -- channel. midin :: (Num a, Sigs a) => Channel -> (Msg -> SE a) -> SE a -- | Triggers a midi-instrument (aka Csound's pgmassign) on the specified -- programm bank. pgmidi :: (Num a, Sigs a) => Maybe Int -> Channel -> (Msg -> SE a) -> SE a ampCps :: Msg -> (D, D) -- | Triggers a midi-procedure (aka Csound's massign) for all channels. midi_ :: (Msg -> SE ()) -> SE () -- | Triggers a midi-procedure (aka Csound's pgmassign) on the given -- channel. midin_ :: Channel -> (Msg -> SE ()) -> SE () -- | Triggers a midi-procedure (aka Csound's pgmassign) on the given -- programm bank. pgmidi_ :: Maybe Int -> Channel -> (Msg -> SE ()) -> SE () -- | Produces midi amplitude and frequency as a signal. The signal fades -- out when nothing is pressed. It can be used in mono-synths. Arguments -- are portamento time and release time. A portamento time is time it -- takes for transition from one note to another. -- --
--   monoMsg channel portamentoTime releaseTime
--   
monoMsg :: MidiChn -> D -> D -> SE (Sig, Sig) -- | Produces midi amplitude and frequency as a signal and holds the last -- value till the next one is present. It can be used in mono-synths. -- Arguments are portamento time and release time. A portamento time is -- time it takes for transition from one note to another. -- --
--   holdMsg portamentoTime
--   
holdMsg :: MidiChn -> D -> SE (Sig, Sig) -- | Creates a named instrument that can be triggered with Csound API. This -- way we can create a csd file that can be used inside another -- program/language. -- -- It simulates the input for monophonic midi-like instrument. Notes are -- encoded with messages: -- --
--   i "givenName" 1 pitchKey volumeKey     -- note on
--   i "givenName" 0 pitchKey volumeKey     -- note off
--   
-- -- The output is a pair of signals (midiVolume, midiPitch). trigNamedMono :: String -> SE MonoArg -- | Produces an argument for monophonic midi-synth. The signal fades out -- when nothing is pressed. It can be used in mono-synths. -- --
--   genMonoMsg channel
--   
genMonoMsg :: MidiChn -> SE MonoArg smoothMonoArg :: D -> MonoArg -> MonoArg genFilteredMonoMsg :: MidiChn -> (D -> BoolD) -> SE MonoArg -- | Just like mono genMonoMsg but also we can alter the -- temperament. The temperament spec goes first. -- --
--   genMonoMsgTemp temperament channel
--   
genFilteredMonoMsgTemp :: Temp -> MidiChn -> (D -> BoolD) -> SE MonoArg -- | Produces midi amplitude and frequency as a signal. The signal fades -- out when nothing is pressed. It can be used in mono-synths. Arguments -- are custom temperament, midi channel, portamento time and release -- time. A portamento time is time it takes for transition from one note -- to another. -- --
--   monoMsgTemp temperament channel portamentoTime releaseTime
--   
monoMsgTemp :: Temp -> MidiChn -> D -> D -> SE (Sig, Sig) -- | Produces midi amplitude and frequency as a signal and holds the last -- value till the next one is present. It can be used in mono-synths. -- Arguments are portamento time and release time. A portamento time is -- time it takes for transition from one note to another. -- --
--   holdMsg portamentoTime
--   
holdMsgTemp :: Temp -> MidiChn -> D -> SE (Sig, Sig) -- | Just like mono genMonoMsg but also we can alter the -- temperament. The temperament spec goes first. -- --
--   genMonoMsgTemp temperament channel
--   
genMonoMsgTemp :: Temp -> MidiChn -> SE MonoArg -- | Listens to midi on event on the given key as event stream. The event -- stream carries the level of volume (ranges from 0 to 1). midiKeyOn :: MidiChn -> D -> SE (Evt D) -- | Listens to midi on event off the given key as event stream. midiKeyOff :: MidiChn -> D -> SE Tick -- | Get the note number of the current MIDI event, expressed in -- cycles-per-second. -- --
--   icps  cpsmidi 
--   
-- -- csound doc: http://csound.com/docs/manual/cpsmidi.html cpsmidi :: Msg -> D -- | Get the velocity of the current MIDI event. -- --
--   iamp  ampmidi  iscal [, ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/ampmidi.html ampmidi :: Msg -> D -> D -- | Initialization of the midi control-messages. initc7 :: D -> D -> D -> SE () -- | Allows a floating-point 7-bit MIDI signal scaled with a minimum and a -- maximum range. -- --
--   idest  ctrl7  ichan, ictlno, imin, imax [, ifn]
--   kdest  ctrl7  ichan, ictlno, kmin, kmax [, ifn]
--   adest  ctrl7  ichan, ictlno, kmin, kmax [, ifn] [, icutoff]
--   
-- -- csound doc: http://csound.com/docs/manual/ctrl7.html ctrl7 :: D -> D -> D -> D -> Sig -- | Initializes control rate midi control and get the value in the -- specified range. midiCtrl7 :: D -> D -> D -> D -> D -> SE Sig -- | Initializes control rate midi control and get the value in the range -- (-1) to 1. midiCtrl :: D -> D -> D -> SE Sig -- | Unipolar control rate midiCtrl. Initializes midi control and get the -- value in the range 0 to 1. umidiCtrl :: D -> D -> D -> SE Sig -- | Initializes audio-rate midi control and get the value in the specified -- range. midiCtrl7A :: D -> D -> D -> D -> D -> SE Sig -- | Initializes audio-rate midi control and get the value in the range -- (-1) to 1. midiCtrlA :: D -> D -> D -> SE Sig -- | Unipolar audio-rate midiCtrl. Initializes midi control and get the -- value in the range 0 to 1. umidiCtrlA :: D -> D -> D -> SE Sig -- | Converts midi velocity number to amplitude. The first argument is -- dynamic range in decibels. -- --
--   ampmidinn (volMinDb, volMaxDb) volumeKey = amplitude
--   
ampmidinn :: (D, D) -> D -> D -- | Midi message convertion with custom temperament. ampCps' :: Temp -> Msg -> (D, D) -- | Midi message convertion to Hz with custom temperament. cpsmidi' :: Temp -> Msg -> D -- | Midi pitch key convertion to Hz with custom temperament. It works on -- constants. cpsmidi'D :: Temp -> D -> D -- | Midi pitch key convertion to Hz with custom temperament. It works on -- signals. cpsmidi'Sig :: Temp -> Sig -> Sig -- | Invokes ooverloaded instruments with midi. Example: -- --
--   dac $ tryMidi (mul (fades 0.01 0.1) . tri)
--   
tryMidi :: (MidiInstr a, Sigs (MidiInstrOut a)) => a -> SE (MidiInstrOut a) -- | Invokes ooverloaded instruments with midi and custom temperament. -- Example: -- --
--   dac $ tryMidi' youngTemp2 (mul (fades 0.01 0.1) . tri)
--   
tryMidi' :: (MidiInstrTemp a, Sigs (MidiInstrOut a)) => Temp -> a -> SE (MidiInstrOut a) -- | Converts a value to the midi-instrument. It's used with the functions -- midi, midin. class MidiInstr a where { type family MidiInstrOut a :: *; } onMsg :: MidiInstr a => a -> Msg -> SE (MidiInstrOut a) -- | Converts a value to the midi-instrument with custom temperament. It's -- used with the functions midi, midin. class MidiInstr a => MidiInstrTemp a onMsg' :: MidiInstrTemp a => Temp -> a -> Msg -> SE (MidiInstrOut a) namedAmpCpsSig :: String -> SE (Sig, Sig, Sig) instance GHC.Classes.Eq Csound.Control.Midi.MidiChn instance GHC.Show.Show Csound.Control.Midi.MidiChn -- | Sound fonts. Playing Sf2 samples. -- -- There are three groups of functions. Functions that are defined for -- midi messages, midi notes (it's a pair of integers from 0-127) and the -- frequencies (in Hz). Each group contains four functions. They are -- destinguished by suffixes. The function with no suffix play a sf2 file -- with linear interpolation and take stereo output. The function with -- suffix 3 read samples with cubic interpolation. The functions -- with suffix m produce mono outputs. The loopers play samples -- in loops. module Csound.Control.Sf -- | The sf2 sound font preset. It is defined with file name, bank and -- program integers. data Sf Sf :: String -> Int -> Int -> Sf -- | Creates a midi instrument from sf2 sound font. Midi listens on all -- channels. It's useful to quickly test a sound font. The second -- argument is a sustain in seconds. How long it takes for the sound to -- decay. sf2 :: Sf -> D -> SE (Sig, Sig) -- | Creates a midi instrument from sf2 sound font. Midi listens on all -- channels. It's useful to quickly test a sound font. The second -- argument is a sustain in seconds. How long it takes for the sound to -- decay. sfTemp :: Temp -> Sf -> D -> SE (Sig, Sig) -- | Creates a midi instrument from sf2 sound font file. The second -- argument is sustain in seconds. Reads samples with linear -- interpolation. sfMsg :: Sf -> D -> Msg -> SE (Sig, Sig) -- | Creates a midi instrument from sf2 sound font file. The second -- argument is sustain in seconds. Reads samples with cubic -- interpolation. sfMsg3 :: Sf -> D -> Msg -> SE (Sig, Sig) -- | Creates a midi instrument from sf2 sound font file. The second -- argument is sustain in seconds. Reads samples with linear -- interpolation. Produces mono output. sfMsgm :: Sf -> D -> Msg -> SE Sig -- | Creates a midi instrument from sf2 sound font file. The second -- argument is sustain in seconds. Reads samples with cubic -- interpolation. Produces mono output. sfMsg3m :: Sf -> D -> Msg -> SE Sig -- | Midi looper of the sf2 samples. The first arguments are: start, end, -- crossfade of the loop. sfMsgLooper :: Sig -> Sig -> Sig -> Sf -> D -> Msg -> SE (Sig, Sig) -- | Creates a midi instrument from sf2 sound font file. The second -- argument is sustain in seconds. Reads samples with linear -- interpolation. sfMsgTemp :: Temp -> Sf -> D -> Msg -> SE (Sig, Sig) -- | Creates a midi instrument from sf2 sound font file. The second -- argument is sustain in seconds. Reads samples with cubic -- interpolation. sfMsgTemp3 :: Temp -> Sf -> D -> Msg -> SE (Sig, Sig) -- | Creates a midi instrument from sf2 sound font file. The second -- argument is sustain in seconds. Reads samples with linear -- interpolation. Produces mono output. sfMsgTempm :: Temp -> Sf -> D -> Msg -> SE Sig -- | Creates a midi instrument from sf2 sound font file. The second -- argument is sustain in seconds. Reads samples with cubic -- interpolation. Produces mono output. sfMsgTemp3m :: Temp -> Sf -> D -> Msg -> SE Sig -- | Midi looper of the sf2 samples. The first arguments are: start, end, -- crossfade of the loop. sfMsgLooperTemp :: Sig -> Sig -> Sig -> Temp -> Sf -> D -> Msg -> SE (Sig, Sig) -- | Reads sf2 samples at given midi velocity and key (both are from 0 to -- 127). The second argument is sustain. Interpolation is linear. sfKey :: Sf -> D -> D -> D -> (Sig, Sig) -- | Reads sf2 samples at given midi velocity and key (both are from 0 to -- 127). The second argument is sustain. Interpolation is cubic. sfKey3 :: Sf -> D -> D -> D -> (Sig, Sig) -- | Reads sf2 samples at given midi velocity and key (both are from 0 to -- 127). The second argument is sustain. Interpolation is linear. The -- output is mono. sfKeym :: Sf -> D -> D -> D -> Sig -- | Reads sf2 samples at given midi velocity and key (both are from 0 to -- 127). The second argument is sustain. Interpolation is cubic. The -- output is mono. sfKey3m :: Sf -> D -> D -> D -> Sig -- | Looper of the sf2 samples. The first arguments are: start, end, -- crossfade of the loop. sfKeyLooper :: Sig -> Sig -> Sig -> Sf -> D -> D -> D -> (Sig, Sig) -- | Reads sf2 samples with amplitude in (0, 1) and frequency in Hz. The -- interpolation is linear. sfCps :: Sf -> D -> D -> D -> (Sig, Sig) -- | Reads sf2 samples with amplitude in (0, 1) and frequency in Hz. The -- interpolation is cubic. sfCps3 :: Sf -> D -> D -> D -> (Sig, Sig) -- | Reads sf2 samples with amplitude in (0, 1) and frequency in Hz. The -- interpolation is linear. The output is mono. sfCpsm :: Sf -> D -> D -> D -> Sig -- | Reads sf2 samples with amplitude in (0, 1) and frequency in Hz. The -- interpolation is cubic. The output is mono. sfCps3m :: Sf -> D -> D -> D -> Sig -- | Looper of the sf2 samples. The first arguments are: start, end, -- crossfade of the loop. sfCpsLooper :: Sig -> Sig -> Sig -> Sf -> D -> D -> D -> (Sig, Sig) -- | Primitive GUI elements. -- -- There is a convention that constructors take only parameters that -- specify the logic of the widget. The view is set for GUI-elements with -- other functions. module Csound.Control.Gui.Widget -- | The diapason of the continuous value. data ValDiap ValDiap :: Double -> Double -> ValDiap [valDiapMin] :: ValDiap -> Double [valDiapMax] :: ValDiap -> Double type ValStep = Double data ValScaleType Linear :: ValScaleType Exponential :: ValScaleType -- | A value span is a diapason of the value and a type of the scale (can -- be linear or exponential). data ValSpan ValSpan :: ValDiap -> ValScaleType -> ValSpan [valSpanDiap] :: ValSpan -> ValDiap [valSpanScale] :: ValSpan -> ValScaleType -- | Makes a linear ValSpan with specified boundaries. -- --
--   linSpan minVal maxVal
--   
linSpan :: Double -> Double -> ValSpan -- | Makes an exponential ValSpan with specified boundaries. -- --
--   expSpan minVal maxVal
--   
expSpan :: Double -> Double -> ValSpan -- | Unit span. A special case: -- --
--   uspan = linSpan 0 1
--   
uspan :: ValSpan -- | Bipolar unit span. A special case: -- --
--   uspan = linSpan (-1) 1
--   
bspan :: ValSpan -- | An exponential unit span. A special case: -- --
--   uspan = expSpan 0 1
--   
uspanExp :: ValSpan -- | Allows the user to increase/decrease a value with mouse clicks on a -- corresponding arrow button. Output is an event stream that contains -- values when counter changes. -- --
--   count diapason fineValStep maybeCoarseValStep initValue
--   
-- -- doc: http://www.csounds.com/manual/html/FLcount.html count :: ValDiap -> ValStep -> Maybe ValStep -> Double -> Source (Evt D) -- | A variance on the function count, but it produces a signal of -- piecewise constant function. countSig :: ValDiap -> ValStep -> Maybe ValStep -> Double -> Source Sig -- | It is a squared area that allows the user to modify two output values -- at the same time. It acts like a joystick. -- --
--   joy valueSpanX valueSpanY (initX, initY)
--   
-- -- doc: http://www.csounds.com/manual/html/FLjoy.html joy :: ValSpan -> ValSpan -> (Double, Double) -> Source (Sig, Sig) -- | A FLTK widget opcode that creates a knob. -- --
--   knob valueSpan initValue
--   
-- -- doc: http://www.csounds.com/manual/html/FLknob.html knob :: String -> ValSpan -> Double -> Source Sig data KnobType ThreeD :: Maybe Int -> KnobType Pie :: KnobType Clock :: KnobType Flat :: KnobType setKnobType :: KnobType -> Gui -> Gui -- | FLroller is a sort of knob, but put transversally. -- --
--   roller valueSpan step initVal
--   
-- -- doc: http://www.csounds.com/manual/html/FLroller.html roller :: String -> ValSpan -> ValStep -> Double -> Source Sig -- | FLslider puts a slider into the corresponding container. -- --
--   slider valueSpan initVal
--   
-- -- doc: http://www.csounds.com/manual/html/FLslider.html slider :: String -> ValSpan -> Double -> Source Sig -- | Constructs a list of linear unit sliders (ranges in [0, 1]). It takes -- a list of init values. sliderBank :: String -> [Double] -> Source [Sig] data SliderType Fill :: SliderType Engraved :: SliderType Nice :: SliderType setSliderType :: SliderType -> Gui -> Gui -- | numeric (originally FLtext in the Csound) allows the user to modify a -- parameter value by directly typing it into a text field. -- --
--   numeric diapason step initValue
--   
-- -- doc: http://www.csounds.com/manual/html/FLtext.html numeric :: String -> ValDiap -> ValStep -> Double -> Source Sig data TextType NormalText :: TextType NoDrag :: TextType NoEdit :: TextType setTextType :: TextType -> Gui -> Gui -- | A FLTK widget that displays text inside of a box. If the text is -- longer than 255 characters the text is split on several parts (Csound -- limitations). -- --
--   box text
--   
-- -- doc: http://www.csounds.com/manual/html/FLbox.html box :: String -> Display -- | The type of the box. Some values are not implemented on the Csound -- level. data BoxType FlatBox :: BoxType UpBox :: BoxType DownBox :: BoxType ThinUpBox :: BoxType ThinDownBox :: BoxType EngravedBox :: BoxType EmbossedBox :: BoxType BorderBox :: BoxType ShadowBox :: BoxType Roundedbox :: BoxType RoundedShadowBox :: BoxType RoundedFlatBox :: BoxType RoundedUpBox :: BoxType RoundedDownBox :: BoxType DiamondUpBox :: BoxType DiamondDownBox :: BoxType OvalBox :: BoxType OvalShadowBox :: BoxType OvalFlatBox :: BoxType setBoxType :: BoxType -> Gui -> Gui -- | A FLTK widget opcode that creates a button. -- --
--   button text
--   
-- -- doc: http://www.csounds.com/manual/html/FLbutton.html button :: String -> Source (Evt Unit) -- | The type of the button. It affects toggle buttons and button banks. -- -- In Csound buttons and toggle buttons are constructed with the same -- function (but with different button types). But in this library they -- are contructed by different functions (button and -- toggle). Normal button is a plain old button, but other -- values specify toggle buttons. So this property doesn't affect the -- buttons (since they could be only normal buttons). data ButtonType NormalButton :: ButtonType LightButton :: ButtonType CheckButton :: ButtonType RoundButton :: ButtonType setButtonType :: ButtonType -> Gui -> Gui -- | A FLTK widget opcode that creates a toggle button. -- --
--   button text
--   
-- -- doc: http://www.csounds.com/manual/html/FLbutton.html toggle :: String -> Bool -> Source (Evt D) -- | A FLTK widget opcode that creates a bank of buttons. Result is (x, y) -- coordinate of the triggered button. -- --
--   butBank xNumOfButtons yNumOfButtons
--   
-- -- doc: http://www.csounds.com/manual/html/FLbutBank.html butBank :: String -> Int -> Int -> (Int, Int) -> Source (Evt (D, D)) -- | A variance on the function toggle, but it produces a signal of -- piecewise constant function. toggleSig :: String -> Bool -> Source Sig -- | A variance on the function butBank, but it produces a signal of -- piecewise constant function. Result is (x, y) coordinate of the -- triggered button. butBankSig :: String -> Int -> Int -> (Int, Int) -> Source (Sig, Sig) -- | A FLTK widget opcode that creates a bank of buttons. -- --
--   butBank xNumOfButtons yNumOfButtons
--   
-- -- doc: http://www.csounds.com/manual/html/FLbutBank.html butBank1 :: String -> Int -> Int -> (Int, Int) -> Source (Evt D) butBankSig1 :: String -> Int -> Int -> (Int, Int) -> Source Sig -- | A radio button. It takes a list of values with labels. radioButton :: Arg a => String -> [(String, a)] -> Int -> Source (Evt a) -- | A matrix of values. matrixButton :: Arg a => String -> Int -> Int -> [a] -> (Int, Int) -> Source (Evt a) -- | Radio button that returns functions. Useful for picking a waveform or -- type of filter. funnyRadio :: Tuple b => String -> [(String, a -> b)] -> Int -> Source (a -> b) -- | Matrix of functional values. funnyMatrix :: Tuple b => String -> Int -> Int -> [a -> b] -> (Int, Int) -> Source (a -> b) -- | FLtext that is sink shows current the value of a valuator in a text -- field. setNumeric :: String -> ValDiap -> ValStep -> Double -> Sink Sig -- | A slider that serves as indicator. It consumes values instead of -- producing. -- --
--   meter valueSpan initValue
--   
meter :: String -> ValSpan -> Double -> Sink Sig setKnob :: String -> ValSpan -> Double -> SinkSource Sig setSlider :: String -> ValSpan -> Double -> SinkSource Sig setToggle :: String -> Bool -> SinkSource (Evt D) setToggleSig :: String -> Bool -> SinkSource Sig -- | Appends a title to a group of widgets. setTitle :: String -> Gui -> SE Gui -- | Keyboard events. data KeyEvt Press :: Key -> KeyEvt Release :: Key -> KeyEvt -- | Keys. data Key CharKey :: Char -> Key F1 :: Key F2 :: Key F3 :: Key F4 :: Key F5 :: Key F6 :: Key F7 :: Key F8 :: Key F9 :: Key F10 :: Key F11 :: Key F12 :: Key Scroll :: Key CapsLook :: Key LeftShift :: Key RightShift :: Key LeftCtrl :: Key RightCtrl :: Key Enter :: Key LeftAlt :: Key RightAlt :: Key LeftWinKey :: Key RightWinKey :: Key Backspace :: Key ArrowUp :: Key ArrowLeft :: Key ArrowRight :: Key ArrowDown :: Key Insert :: Key Home :: Key PgUp :: Key Delete :: Key End :: Key PgDown :: Key NumLock :: Key NumDiv :: Key NumMul :: Key NumSub :: Key NumHome :: Key NumArrowUp :: Key NumPgUp :: Key NumArrowLeft :: Key NumSpace :: Key NumArrowRight :: Key NumEnd :: Key NumArrowDown :: Key NumPgDown :: Key NumIns :: Key NumDel :: Key NumEnter :: Key NumPlus :: Key Num7 :: Key Num8 :: Key Num9 :: Key Num4 :: Key Num5 :: Key Num6 :: Key Num1 :: Key Num2 :: Key Num3 :: Key Num0 :: Key NumDot :: Key -- | The stream of keyboard press/release events. keyIn :: KeyEvt -> Evt Unit -- | Shortcut for press CharKey events. charOn :: Char -> Evt Unit -- | Shortcut for release CharKey events. charOff :: Char -> Evt Unit -- | Creates an event in the output stream when one of the chars is -- pressed. strOn :: String -> Tick -- | Creates an event in the output stream when one of the chars is -- depressed. strOff :: String -> Tick -- | Unipolar linear knob. The value belongs to the interval [0, 1]. The -- argument is for initial value. uknob :: Double -> Source Sig -- | Exponential knob (usefull for exploring frequencies or decibels). -- --
--   xknob (min, max) initVal
--   
-- -- The value belongs to the interval [min, max]. The last argument is for -- initial value. xknob :: Range Double -> Double -> Source Sig -- | Unipolar linear slider. The value belongs to the interval [0, 1]. The -- argument is for initial value. uslider :: Double -> Source Sig -- | Exponential slider (usefull for exploring frequencies or decibels). -- --
--   xknob (min, max) initVal
--   
-- -- The value belongs to the interval [min, max]. The last argument is for -- initial value. xslider :: Range Double -> Double -> Source Sig -- | Unit linear joystick. ujoy :: (Double, Double) -> Source (Sig, Sig) -- | Horizontal radio group. hradio :: [String] -> Int -> Source (Evt D) -- | Vertical radio group. vradio :: [String] -> Int -> Source (Evt D) -- | Horizontal radio group. hradioSig :: [String] -> Int -> Source Sig -- | Vertical radio group. vradioSig :: [String] -> Int -> Source Sig -- | The sample and hold widget. You can pick a value from the list of -- doubles. The original value is a head of the list (the first element). -- The visual grouping is horizontal (notice the prefix h). It's -- common to use it with function selector. hnumbers :: [Double] -> Source Sig -- | The sample and hold widget. You can pick a value from the list of -- doubles. The original value is a head of the list (the first element). -- The visual grouping is vertical (notice the prefix v). It's -- common to use it with function selector. vnumbers :: [Double] -> Source Sig -- | Pair of minimum and maximum values. type Range a = (a, a) -- | Creates a knob that outputs only integers in the given range. It -- produces an event stream of integer values. It can be used with list -- access functions listAt, atTuple, atArg. -- --
--   rangeKnob needInit (min, max) initVal
--   
-- -- The first argument is a boolean. If it's true than the initial value -- is put in the output stream. If its False the initial value is -- skipped. rangeKnob :: Bool -> Range Int -> Int -> Source (Evt D) -- | Creates a slider that outputs only integers in the given range. It -- produces an event stream of integer values. It can be used with list -- access functions listAt, atTuple, atArg. -- --
--   rangeSlider needInit (min, max) initVal
--   
-- -- The first argument is a boolean. If it's true than the initial value -- is put in the output stream. If its False the initial value is -- skipped. rangeSlider :: Bool -> Range Int -> Int -> Source (Evt D) -- | Creates a knob that outputs only integers in the given range. It -- produces a signal of integer values. -- --
--   rangeKnobSig (min, max) initVal
--   
rangeKnobSig :: Range Int -> Int -> Source Sig -- | Creates a slider that outputs only integers in the given range. It -- produces a signal of integer values. -- --
--   rangeSliderSig (min, max) initVal
--   
rangeSliderSig :: Range Int -> Int -> Source Sig -- | 2d range range slider. Outputs a pair of event streams. Each stream -- contains changes in the given direction (Ox or Oy). -- --
--   rangeJoy needsInit rangeX rangeY (initX, initY)
--   
-- -- The first argument is a boolean. If it's true than the initial value -- is put in the output stream. If its False the initial value is -- skipped. rangeJoy :: Bool -> Range Int -> Range Int -> (Int, Int) -> Source (Evt D, Evt D) -- | 2d range range slider. It produces a single event stream. The event -- fires when any signal changes. -- --
--   rangeJoy2 needsInit rangeX rangeY (initX, initY)
--   
-- -- The first argument is a boolean. If it's true than the initial value -- is put in the output stream. If its False the initial value is -- skipped. rangeJoy2 :: Bool -> Range Int -> Range Int -> (Int, Int) -> Source (Evt (D, D)) -- | 2d range range slider. It produces the pair of integer signals rangeJoySig :: Range Int -> Range Int -> (Int, Int) -> Source (Sig, Sig) -- | The matrix of unipolar knobs. -- --
--   knobPad columnNum rowNum names initVals
--   
-- -- It takes in the dimensions of matrix, the names (we can leave it empty -- if names are not important) and list of init values. It returns a -- function that takes in indices and produces the signal in the -- corresponding cell. knobPad :: Int -> Int -> [String] -> [Double] -> Source (Int -> Int -> Sig) -- | The matrix of toggle buttons. -- --
--   togglePad columnNum rowNum names initVals
--   
-- -- It takes in the dimensions of matrix, the names (we can leave it empty -- if names are not important) and list of init values (on/off booleans). -- It returns a function that takes in indices and produces the event -- stream in the corresponding cell. togglePad :: Int -> Int -> [String] -> [Bool] -> Source (Int -> Int -> Evt D) -- | The matrix of buttons. -- --
--   buttonPad columnNum rowNum names
--   
-- -- It takes in the dimensions of matrix, the names (we can leave it empty -- if names are not important). It returns a function that takes in -- indices and produces the event stream in the corresponding cell. buttonPad :: Int -> Int -> [String] -> Source (Int -> Int -> Evt Unit) -- | A generic constructor for matrixes of sound source widgets. It takes -- the constructor of the widget, a default initial value, the dimensions -- of the matrix, the list of names and the list of initial values. It -- produces the function that maps indices to corresponding values. genPad :: (String -> a -> Source b) -> a -> Int -> Int -> [String] -> [a] -> Source (Int -> Int -> b) -- | It's like simple button, but it can be controlled with -- external control. The first argument is for external control. button' :: Tick -> String -> Source Tick -- | It's like simple toggle, but it can be controlled with -- external control. The first argument is for external control. toggle' :: Evt D -> String -> Bool -> Source (Evt D) toggleSig' :: Sig -> String -> Bool -> Source Sig -- | It's like simple knob, but it can be controlled with external -- control. The first argument is for external control. knob' :: Sig -> String -> ValSpan -> Double -> Source Sig -- | It's like simple slider, but it can be controlled with -- external control. The first argument is for external control. slider' :: Sig -> String -> ValSpan -> Double -> Source Sig -- | It's like simple uknob, but it can be controlled with -- external control. The first argument is for external control. uknob' :: Sig -> Double -> Source Sig -- | It's like simple uslider, but it can be controlled with -- external control. The first argument is for external control. uslider' :: Sig -> Double -> Source Sig -- | It's like simple hradio, but it can be controlled with -- external control. The first argument is for external control. hradio' :: Evt D -> [String] -> Int -> Source (Evt D) -- | It's like simple vradio, but it can be controlled with -- external control. The first argument is for external control. vradio' :: Evt D -> [String] -> Int -> Source (Evt D) -- | It's like simple hradioSig, but it can be controlled with -- external control. The first argument is for external control. hradioSig' :: Sig -> [String] -> Int -> Source Sig -- | It's like simple vradioSig, but it can be controlled with -- external control. The first argument is for external control. vradioSig' :: Sig -> [String] -> Int -> Source Sig -- | GUI (Graphical User Interface) elements are handy to change the -- parameters of the sound in real time. It includes sliders, knobs, -- rollers, buttons and other widgets. -- -- A GUI element consists of two parts. They are view (how it looks) and -- logic (what's going on with it). For example a slider can be -- horizontal or vertical or green or yellow or small or big. It's the -- view of the slider. And a slider can produce a continuous signal -- within the given interval. It's a logic of the slider. -- -- Let's talk about the view. The view is divided on two parts: -- -- -- -- The layout is defined with very simple functions. There are vertical -- and horizontal grouping of the elements. We can scale the element -- within the group and include an empty space in the group. Everything -- is aligned (see Csound.Gui.Layout). Other properties include -- colors, fonts (size and type), borders, specific properties of the -- widgets (see Csound.Gui.Props). -- -- Let's consider the logic. The logic consists of three parts: -- -- -- -- A widget can react on values, produce values or do something useful. -- There are special types of widgets: -- -- -- -- Widgets can be simple and compound. Simple widgets are primitive -- elements (sliders, knobs, rollers, buttons). We have a special -- constructors that produce simple widgets (see -- Csound.Gui.Widget). Compound widgets glue together several -- widgets. That is the view contains several elements and all of them -- involved in the logic of the widget. module Csound.Control.Gui -- | A visual representation of the GUI-element. data Gui -- | A widget consists of visible element (Gui), value consumer (Output) -- and producer (Input) and an inner state (Inner). type Widget a b = SE (Gui, Output a, Input b, Inner) -- | Widgets that produce something has inputs. type Input a = a -- | Widgets that consume something has outputs. type Output a = a -> SE () -- | Widgets that just do something inside them or have an inner state. type Inner = SE () -- | A consumer of the values. type Sink a = SE (Gui, Output a) -- | A producer of the values. type Source a = SE (Gui, Input a) -- | A static element. We can only look at it. type Display = SE Gui type SinkSource a = SE (Gui, Output a, Input a) -- | A widget constructor. widget :: SE (Gui, Output a, Input b, Inner) -> Widget a b -- | A consumer constructor. sink :: SE (Gui, Output a) -> Sink a -- | A producer constructor. source :: SE (Gui, Input a) -> Source a -- | A display constructor. display :: SE Gui -> Display sinkSource :: SE (Gui, Output a, Input a) -> SinkSource a sinkSlice :: SinkSource a -> Sink a sourceSlice :: SinkSource a -> Source a -- | A handy function for transforming the value of producers. mapSource :: (a -> b) -> Source a -> Source b -- | A handy function for transforming the GUIs of producers. mapGuiSource :: (Gui -> Gui) -> Source a -> Source a -- | Horizontal grouping of widgets that can produce monoidal values. mhor :: Monoid a => [Source a] -> Source a -- | Vertical grouping of widgets that can produce monoidal values. mver :: Monoid a => [Source a] -> Source a -- | Scaling of widgets that can produce values. msca :: Double -> Source a -> Source a -- | Hides the SE inside Source. joinSource :: Source (SE a) -> Source a fromSource :: Source a -> SE a fromSourceSE :: Source (SE a) -> SE a -- | Resizes all default minimal sizes for all elements in the source. It -- affects the total sizes of the widgets. So for example if our UI is -- too big and it doesn't fir to the screen we can make it smaller by -- scaling: -- --
--   resizeSource (0.75, 0.5) uiSource
--   
resizeSource :: (Double, Double) -> Source a -> Source a -- | Renders the GUI elements on the window. Rectangle is calculated -- automatically (window doesn't listens for keyboard events). panel :: Gui -> SE () -- | Creates a window with the given name, size and content -- --
--   win name (width, height) gui
--   
win :: String -> (Int, Int) -> Gui -> SE () -- | Renders a list of panels. panels :: [Gui] -> SE () -- | Renders the GUI elements on the window. We can specify the window -- title and rectangle of the window. panelBy :: String -> Maybe Rect -> Gui -> SE () -- | Renders the GUI elements on the window. Rectangle is calculated -- automatically (window listens for keyboard events). keyPanel :: Gui -> SE () keyWin :: String -> (Int, Int) -> Gui -> SE () -- | Renders a list of panels. Panels are sensitive to keyboard events. keyPanels :: [Gui] -> SE () -- | Renders the GUI elements on the window. We can specify the window -- title and rectangle of the window. Panesls are sensitive to keyboard -- events. keyPanelBy :: String -> Maybe Rect -> Gui -> SE () setOrient :: Orient -> Gui -> Gui setEmphasis :: Emphasis -> Gui -> Gui setFontType :: FontType -> Gui -> Gui setFontSize :: Int -> Gui -> Gui setTextColor :: Color -> Gui -> Gui setColors :: Color -> Color -> Gui -> Gui setColor2 :: Color -> Gui -> Gui setColor1 :: Color -> Gui -> Gui setMaterial :: Material -> Gui -> Gui setLabel :: String -> Gui -> Gui setBorder :: BorderType -> Gui -> Gui -- | Sets the properties for a GUI element on all levels. forceProps :: [Prop] -> Gui -> Gui -- | The Csound colours. type Color = Colour Double -- | The orientation of the widget (slider, roller). This property is never -- needs to be set in practice. If this property is not set then default -- orientation is calculated from the bounding box of the widget. If the -- width is greater than the height then we need to use a horizontal -- widget otherwise it should be a vertical one. data Orient Hor :: Orient Ver :: Orient data FontType Helvetica :: FontType Courier :: FontType Times :: FontType Symbol :: FontType Screen :: FontType Dingbats :: FontType data Emphasis NoEmphasis :: Emphasis Italic :: Emphasis Bold :: Emphasis BoldItalic :: Emphasis -- | The type of the material of the element. It affects sliders and -- buttons. data Material NoPlastic :: Material Plastic :: Material data BorderType NoBorder :: BorderType DownBoxBorder :: BorderType UpBoxBorder :: BorderType EngravedBorder :: BorderType EmbossedBorder :: BorderType BlackLine :: BorderType ThinDown :: BorderType ThinUp :: BorderType -- | Properties of the widgets. data Prop SetLabel :: String -> Prop SetMaterial :: Material -> Prop SetBoxType :: BoxType -> Prop SetColor1 :: Color -> Prop SetColor2 :: Color -> Prop SetTextColor :: Color -> Prop SetFontSize :: Int -> Prop SetFontType :: FontType -> Prop SetEmphasis :: Emphasis -> Prop SetSliderType :: SliderType -> Prop SetTextType :: TextType -> Prop SetButtonType :: ButtonType -> Prop SetOrient :: Orient -> Prop SetKnobType :: KnobType -> Prop SetLabelType :: LabelType -> Prop -- | A rectangle. data Rect Rect :: Int -> Int -> Int -> Int -> Rect [px] :: Rect -> Int [py] :: Rect -> Int [width] :: Rect -> Int [height] :: Rect -> Int -- | Groups a list of Source-widgets. The visuals are horizontally aligned. hlifts :: ([a] -> b) -> [Source a] -> Source b -- | Groups a list of Source-widgets. The visuals are vertically aligned. vlifts :: ([a] -> b) -> [Source a] -> Source b -- | Groups a list of Source-widgets. The visuals are put on the grid. The -- first argument is numer of elements i each row. gridLifts :: Int -> ([a] -> b) -> [Source a] -> Source b -- | The shortcut for mapSource. lift1 :: (a -> b) -> Source a -> Source b -- | Combines two sound sources. Visuals are aligned horizontally and the -- sound sources a grouped with the given function. hlift2 :: (a -> b -> c) -> Source a -> Source b -> Source c -- | Combines two sound sources. Visuals are aligned vertically and the -- sound sources a grouped with the given function. vlift2 :: (a -> b -> c) -> Source a -> Source b -> Source c -- | The same as hlift2 but for three sound sources. hlift3 :: (a -> b -> c -> d) -> Source a -> Source b -> Source c -> Source d -- | The same as vlift2 but for three sound sources. vlift3 :: (a -> b -> c -> d) -> Source a -> Source b -> Source c -> Source d -- | The same as hlift2 but for four sound sources. hlift4 :: (a -> b -> c -> d -> e) -> Source a -> Source b -> Source c -> Source d -> Source e -- | The same as vlift2 but for four sound sources. vlift4 :: (a -> b -> c -> d -> e) -> Source a -> Source b -> Source c -> Source d -> Source e -- | The same as hlift2 but for five sound sources. hlift5 :: (a1 -> a2 -> a3 -> a4 -> a5 -> b) -> Source a1 -> Source a2 -> Source a3 -> Source a4 -> Source a5 -> Source b -- | The same as vlift2 but for five sound sources. vlift5 :: (a1 -> a2 -> a3 -> a4 -> a5 -> b) -> Source a1 -> Source a2 -> Source a3 -> Source a4 -> Source a5 -> Source b -- | Groups a list of Source-widgets. The visuals are horizontally aligned. -- It uses the list of proportions. hlifts' :: [Double] -> ([a] -> b) -> [Source a] -> Source b -- | Groups a list of Source-widgets. The visuals are vertically aligned. -- It uses the list of proportions. vlifts' :: [Double] -> ([a] -> b) -> [Source a] -> Source b -- | It's just like the hlift2 but two more parameters change -- visual scaling of the widgets. hlift2' :: Double -> Double -> (a -> b -> c) -> Source a -> Source b -> Source c -- | It's just like the vlift2 but two more parameters change -- visual scaling of the widgets. vlift2' :: Double -> Double -> (a -> b -> c) -> Source a -> Source b -> Source c -- | The same as hlift2' but for three sound sources. hlift3' :: Double -> Double -> Double -> (a -> b -> c -> d) -> Source a -> Source b -> Source c -> Source d -- | The same as vlift2' but for three sound sources. vlift3' :: Double -> Double -> Double -> (a -> b -> c -> d) -> Source a -> Source b -> Source c -> Source d -- | The same as hlift2' but for four sound sources. hlift4' :: Double -> Double -> Double -> Double -> (a -> b -> c -> d -> e) -> Source a -> Source b -> Source c -> Source d -> Source e -- | The same as vlift2' but for four sound sources. vlift4' :: Double -> Double -> Double -> Double -> (a -> b -> c -> d -> e) -> Source a -> Source b -> Source c -> Source d -> Source e -- | The same as hlift2' but for five sound sources. hlift5' :: Double -> Double -> Double -> Double -> Double -> (a1 -> a2 -> a3 -> a4 -> a5 -> b) -> Source a1 -> Source a2 -> Source a3 -> Source a4 -> Source a5 -> Source b -- | The same as vlift2' but for five sound sources. vlift5' :: Double -> Double -> Double -> Double -> Double -> (a1 -> a2 -> a3 -> a4 -> a5 -> b) -> Source a1 -> Source a2 -> Source a3 -> Source a4 -> Source a5 -> Source b -- | Monadic bind with horizontal concatenation of visuals. hbind :: Source a -> (a -> Source b) -> Source b -- | Monadic bind with vertical concatenation of visuals. vbind :: Source a -> (a -> Source b) -> Source b -- | Monadic apply with horizontal concatenation of visuals. happly :: (a -> Source b) -> Source a -> Source b -- | Monadic apply with vertical concatenation of visuals. vapply :: (a -> Source b) -> Source a -> Source b -- | Creates a list of sources with mapping a function and stacks them -- horizontally. hmapM :: (a -> Source b) -> [a] -> Source [b] -- | Creates a list of sources with mapping a function and stacks them -- vertically. vmapM :: (a -> Source b) -> [a] -> Source [b] -- | Monadic bind with horizontal concatenation of visuals. It expects -- scaling factors for visuals as first two arguments. hbind' :: Double -> Double -> Source a -> (a -> Source b) -> Source b -- | Monadic bind with vertical concatenation of visuals. It expects -- scaling factors for visuals as first two arguments. vbind' :: Double -> Double -> Source a -> (a -> Source b) -> Source b -- | Monadic apply with horizontal concatenation of visuals. It expects -- scaling factors for visuals as first two arguments. happly' :: Double -> Double -> (a -> Source b) -> Source a -> Source b -- | Monadic apply with vertical concatenation of visuals. It expects -- scaling factors for visuals as first two arguments. vapply' :: Double -> Double -> (a -> Source b) -> Source a -> Source b -- | It's like hmapM but we can supply the list of relative sizes. hmapM' :: [Double] -> (a -> Source b) -> [a] -> Source [b] -- | It's like hvapM but we can supply the list of relative sizes. vmapM' :: [Double] -> (a -> Source b) -> [a] -> Source [b] -- | Creates a list of sources with mapping a function and puts them on the -- grid. The first argument is the number of items in the row. gridMapM :: Int -> (a -> Source b) -> [a] -> Source [b] instance Csound.Typed.Types.SigSpace.SigSpace a => Csound.Typed.Types.SigSpace.SigSpace (Csound.Typed.Gui.Widget.Source a) instance Csound.Typed.Types.SigSpace.At Csound.Typed.Types.Prim.Sig (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) a => Csound.Typed.Types.SigSpace.At Csound.Typed.Types.Prim.Sig (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Gui.Widget.Source a) instance Csound.Typed.Types.SigSpace.At Csound.Typed.Types.Prim.Sig2 Csound.Typed.Types.Prim.Sig2 a => Csound.Typed.Types.SigSpace.At Csound.Typed.Types.Prim.Sig2 Csound.Typed.Types.Prim.Sig2 (Csound.Typed.Gui.Widget.Source a) instance Csound.Typed.Types.SigSpace.At Csound.Typed.Types.Prim.Sig2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) a => Csound.Typed.Types.SigSpace.At Csound.Typed.Types.Prim.Sig2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) (Csound.Typed.Gui.Widget.Source a) -- | Rendering of Csound files and playing the music in real time. -- -- How are we going to get the sound out of Haskell code? Instruments are -- ready and we have written all the scores for them. Now, it's time to -- use the rendering functions. We can render haskell expressions to -- Csound code. A rendering function takes a value that represents a -- sound (it's a tuple of signals) and produces a string with Csound -- code. It can take a value that represents the flags for the csound -- compiler and global settings (Options). Then we can save this -- string to file and convert it to sound with csound compiler -- --
--   csound -o music.wav music.csd
--   
-- -- Or we can play it in real time with -odac flag. It sends the sound -- directly to soundcard. It's usefull when we are using midi or tweek -- the parameters in real time with sliders or knobs. -- --
--   csound -odac music.csd
--   
-- -- The main function of this module is renderCsdBy. Other function -- are nothing but wrappers that produce the Csound code and make -- something useful with it (saving to file, playing with specific player -- or in real time). module Csound.IO class RenderCsd a renderCsdBy :: RenderCsd a => Options -> a -> IO String csdArity :: RenderCsd a => a -> CsdArity data CsdArity CsdArity :: Int -> Int -> CsdArity [csdArity'inputs] :: CsdArity -> Int [csdArity'outputs] :: CsdArity -> Int -- | Renders Csound file. renderCsd :: RenderCsd a => a -> IO String -- | Render Csound file and save it to the give file. writeCsd :: RenderCsd a => String -> a -> IO () -- | Render Csound file with options and save it to the give file. writeCsdBy :: RenderCsd a => Options -> String -> a -> IO () -- | Render Csound file and save result sound to the wav-file. writeSnd :: RenderCsd a => String -> a -> IO () -- | Render Csound file with options and save result sound to the wav-file. writeSndBy :: RenderCsd a => Options -> String -> a -> IO () -- | Renders Csound file, saves it to the given file, renders with csound -- command and plays it with the given program. -- --
--   playCsd program file csd
--   
-- -- Produces files file.csd (with renderCsd) and -- file.wav (with csound) and then invokes: -- --
--   program "file.wav"
--   
playCsd :: RenderCsd a => (String -> IO ()) -> String -> a -> IO () -- | Works just like playCsd but you can supply csound options. playCsdBy :: RenderCsd a => Options -> (String -> IO ()) -> String -> a -> IO () -- | Renders to tmp.csd and tmp.wav and plays with mplayer. mplayer :: RenderCsd a => a -> IO () -- | Renders to tmp.csd and tmp.wav and plays with mplayer. mplayerBy :: RenderCsd a => Options -> a -> IO () -- | Renders to tmp.csd and tmp.wav and plays with totem player. totem :: RenderCsd a => a -> IO () -- | Renders to tmp.csd and tmp.wav and plays with totem player. totemBy :: RenderCsd a => Options -> a -> IO () -- | Renders csound code to file tmp.csd with flags set to -- -odac, -iadc and -Ma (sound output goes to -- soundcard in real time). dac :: RenderCsd a => a -> IO () -- | dac with options. dacBy :: RenderCsd a => Options -> a -> IO () -- | Output to dac with virtual midi keyboard. vdac :: RenderCsd a => a -> IO () -- | Output to dac with virtual midi keyboard with specified options. vdacBy :: RenderCsd a => Options -> a -> IO () -- | Renders to file tmp.csd and invokes the csound on it. csd :: RenderCsd a => a -> IO () -- | Renders to file tmp.csd and invokes the csound on it. csdBy :: RenderCsd a => Options -> a -> IO () -- | Saves the user options in the current directory. -- -- If it's saved in the User's home directory it becomes global options. saveUserOptions :: Options -> IO () -- | Runs the csound files with cabbage engine. It invokes the Cabbage -- command line utility and setts all default cabbage flags. runCabbage :: RenderCsd a => a -> IO () -- | Runs the csound files with cabbage engine with user defined options. -- It invokes the Cabbage command line utility and setts all default -- cabbage flags. runCabbageBy :: RenderCsd a => Options -> a -> IO () -- | Alias to process inputs of single input audio-card. onCard1 :: (Sig -> a) -> Sig -> a -- | Alias to process inputs of stereo input audio-card. onCard2 :: (Sig2 -> a) -> Sig2 -> a -- | Alias to process inputs of audio-card with 4 inputs. onCard4 :: (Sig4 -> a) -> Sig4 -> a -- | Alias to process inputs of audio-card with 6 inputs. onCard6 :: (Sig6 -> a) -> Sig6 -> a -- | Alias to process inputs of audio-card with 8 inputs. onCard8 :: (Sig8 -> a) -> Sig8 -> a readMacrosString :: String -> String -> Str readMacrosDouble :: String -> Double -> D readMacrosInt :: String -> Int -> D instance GHC.Classes.Eq Csound.IO.CsdArity instance GHC.Show.Show Csound.IO.CsdArity instance Csound.IO.RenderCsd (Csound.Typed.GlobalState.SE.SE ()) instance Csound.Typed.Types.Tuple.Sigs a => Csound.IO.RenderCsd a instance Csound.Typed.Types.Tuple.Sigs a => Csound.IO.RenderCsd (Csound.Typed.GlobalState.SE.SE a) instance Csound.Typed.Types.Tuple.Sigs a => Csound.IO.RenderCsd (Csound.Typed.Gui.Widget.Source a) instance Csound.Typed.Types.Tuple.Sigs a => Csound.IO.RenderCsd (Csound.Typed.Gui.Widget.Source (Csound.Typed.GlobalState.SE.SE a)) instance Csound.Typed.Types.Tuple.Sigs a => Csound.IO.RenderCsd (Csound.Typed.Control.Mix.Sco (Csound.Typed.Control.Mix.Mix a)) instance Csound.Typed.Types.Tuple.Sigs a => Csound.IO.RenderCsd [Csound.Typed.Control.Mix.Sco (Csound.Typed.Control.Mix.Mix a)] instance (Csound.Typed.Types.Tuple.Sigs a, Csound.Typed.Types.Tuple.Sigs b) => Csound.IO.RenderCsd (a -> b) instance (Csound.Typed.Types.Tuple.Sigs a, Csound.Typed.Types.Tuple.Sigs b) => Csound.IO.RenderCsd (a -> Csound.Typed.GlobalState.SE.SE b) instance (Csound.Typed.Types.Tuple.Sigs a, Csound.Typed.Types.Tuple.Sigs b) => Csound.IO.RenderCsd (a -> Csound.Typed.Gui.Widget.Source b) instance (Csound.Typed.Types.Tuple.Sigs a, Csound.Typed.Types.Tuple.Sigs b) => Csound.IO.RenderCsd (a -> Csound.Typed.Gui.Widget.Source (Csound.Typed.GlobalState.SE.SE b)) instance Csound.Typed.Types.Tuple.Sigs a => Csound.IO.RenderCsd (a -> Csound.Typed.Gui.Widget.Source (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2)) instance Csound.IO.RenderCsd (Csound.Typed.Gui.Widget.Source ()) instance Csound.IO.RenderCsd (Csound.Typed.Gui.Widget.Source (Csound.Typed.GlobalState.SE.SE ())) -- | The module contains the modules that are responsible for converting -- events to signals module Csound.Control -- | Sound file playback module Csound.Air.Wav -- | Reads stereo signal from the sound-file (wav or mp3 or aiff). readSnd :: String -> (Sig, Sig) -- | Reads stereo signal from the sound-file (wav or mp3 or aiff) and loops -- it with the file length. loopSnd :: String -> (Sig, Sig) -- | Reads stereo signal from the sound-file (wav or mp3 or aiff) and loops -- it with the given period (in seconds). loopSndBy :: Sig -> String -> (Sig, Sig) -- | Reads the wav file with the given speed (if speed is 1 it's a norma -- playback). We can use negative speed to read file in reverse. readWav :: Sig -> String -> (Sig, Sig) -- | Reads th wav file and loops over it. loopWav :: Sig -> String -> (Sig, Sig) -- | Reads a segment from wav file. readSegWav :: D -> D -> Sig -> String -> (Sig, Sig) -- | Reads th wav file and loops over it. Scales the tempo with first -- argument. tempoLoopWav :: Sig -> String -> (Sig, Sig) -- | Reads the wav file with the given speed (if speed is 1 it's a norma -- playback). We can use negative speed to read file in reverse. Scales -- the tempo with first argument. tempoReadWav :: Sig -> String -> (Sig, Sig) -- | The mono variant of the function readSnd. readSnd1 :: String -> Sig -- | The mono variant of the function loopSnd. loopSnd1 :: String -> Sig -- | The mono variant of the function loopSndBy. loopSndBy1 :: Sig -> String -> Sig -- | The mono variant of the function readWav. readWav1 :: Sig -> String -> Sig -- | The mono variant of the function loopWav. loopWav1 :: Sig -> String -> Sig -- | Reads a segment from wav file. readSegWav1 :: D -> D -> Sig -> String -> Sig -- | Reads th mono wav file and loops over it. Scales the tempo with first -- argument. tempoLoopWav1 :: Sig -> String -> Sig -- | Reads the mono wav file with the given speed (if speed is 1 it's a -- norma playback). We can use negative speed to read file in reverse. -- Scales the tempo with first argument. tempoReadWav1 :: Sig -> String -> Sig data LoopMode Once :: LoopMode Loop :: LoopMode Bounce :: LoopMode -- | Loads the sample in the table. The sample should be short. The size of -- the table is limited. It's up to 3 minutes for 44100 sample rate (sr), -- 2.9 minutes for 48000 sr, 1.4 minutes for 96000 sr. ramSnd :: LoopMode -> Sig -> String -> Sig2 -- | Loads the sample in the table. The sample should be short. The size of -- the table is limited. It's up to 6 minutes for 44100 sample rate (sr), -- 5.9 minutes for 48000 sr, 2.8 minutes for 96000 sr. ramSnd1 :: LoopMode -> Sig -> String -> Sig -- | Mincer. We can playback a table and scale by tempo and pitch. -- --
--   mincer fidelity table pointer pitch
--   
-- -- fidelity is the parameter that specifies the size of the window (for -- FFT transform). The size equals to formula (fidelity + 11) ^ 2. If you -- don't know what to choose choose 0 for pitched sounds and -2 for -- drums. The table contains the sample to playback. The pointer loops -- over the table. The pitch specifies a scaling factor for pitch. So we -- can raise tone an octave up by setting the pitch to 2. ramTab :: Fidelity -> Tab -> Sig -> Sig -> Sig -- | Phase-locked vocoder processing. -- -- mincer implements phase-locked vocoder processing using function -- tables containing sampled-sound sources, with GEN01, and mincer will -- accept deferred allocation tables. -- --
--   asig  mincer  atimpt, kamp, kpitch, ktab, klock[,ifftsize,idecim]
--             
--   
-- -- csound doc: http://csound.com/docs/manual/mincer.html mincer :: Sig -> Sig -> Sig -> Tab -> Sig -> Sig -- | Phase-locked vocoder processing with onset detection/processing, -- 'tempo-scaling'. -- -- temposcal implements phase-locked vocoder processing using function -- tables containing sampled-sound sources, with GEN01, and temposcal -- will accept deferred allocation tables. -- --
--   asig  temposcal  ktimescal, kamp, kpitch, ktab, klock [,ifftsize, idecim, ithresh]
--             
--   
-- -- csound doc: http://csound.com/docs/manual/temposcal.html temposcal :: Sig -> Sig -> Sig -> Tab -> Sig -> Sig -- | Looping phasor. It creates a looping pointer to the file. It's used in -- the function ram. -- -- Ther arguments are: file name, start and end of the looping segment -- (in seconds), and the playback speed. data Phsr Phsr :: String -> Sig -> Sig -> Sig -> Phsr [phsrFile] :: Phsr -> String [phsrStart] :: Phsr -> Sig [phsrEnd] :: Phsr -> Sig [phsrSpeed] :: Phsr -> Sig -- | Creates a pointer signal for reading audio from the table in loops. -- --
--   lphase length start end speed
--   
-- -- Arguments are: -- -- lphase :: D -> Sig -> Sig -> Sig -> Sig -- | Creates a phasor if segments are relative to the total length. It can -- be useful for drum loops. If we don't know the complete length but we -- know that loop contains four distinct parts. relPhsr :: String -> Sig -> Sig -> Sig -> Phsr -- | Creates a phasor for reading the whole audio file in loops with given -- speed. sndPhsr :: String -> Sig -> Phsr -- | Reads the file forth and back. phsrBounce :: Phsr -> Phsr -- | Forces phasor to play only once. phsrOnce :: Phsr -> Phsr -- | Reads audio files in loops. The file is loaded in RAM. The size of the -- file is limited. It should be not more than 6 minutes for sample rate -- of 44100. 5.9 minutes for 48000. -- -- What makes this function so cool is that we can scale the sound by -- tempo without affecting pitch, and we can scale the sound by pitch -- without affecting the tempo. Let's study the arguments. -- --
--   ram fidelity phasor pitch
--   
-- -- fidelity corresponds to the size of the FFT-window. The function -- performs the FFT transform and it has to know the size. It's not the -- value for the size it's an integer value that proportional to the -- size. The higher the value the higher the size the lower the value the -- lower the size. The default value is 0. Zero is best for most of the -- cases. For drums we can lower it to (-2). -- -- The phasor is a quadruple of values -- --
--   (Phsr fileName startTime endTime playbackSpeed)
--   
-- -- we can read the file from startTime to endTime (in seconds) and we can -- set the speed for playback. If speed is negative file is played in -- reverse. The playback is looped. So to scale the tempo or play in -- reverse we can change the playbackSpeed. -- -- The last argument is pitch factor. We can rise by octave with factor -- 2. It's good place to use the function semitone. It produces factors -- for a number in semitones. -- -- Note that all parameters (except window size) are signals. It makes -- this function very flexible. We can change the speed of playback and -- start and end of the reading segment as we wish. -- --
--   ram 0 (Phsr "file.wav" 0 1 1.2) 1
--   
-- -- PS: here is the formula for window size: 2 ** (fidelity + 11) ram :: Fidelity -> Phsr -> Sig -> Sig2 ram1 :: Fidelity -> Phsr -> Sig -> Sig -- | Fidelity corresponds to the size of the FFT-window that is used by -- functions of RAM-family. The function performs the FFT transform and -- it has to know the size. It's not the value for the size it's an -- integer value that proportional to the size. The higher the value the -- higher the size the lower the value the lower the size. The default -- value is 0. Zero is best for most of the cases. For drums we can lower -- it to (-2). -- -- PS: here is the formula for window size: 2 ** (fidelity + 11). So the -- fidelity is actually the degree for power of two. The FFT-algorithm -- requires the window size to be a power of two. -- -- The lower fidelity is the less power is consumed by the function. type Fidelity = D -- | Scaling factor for tempo. The 1 is inherent tempo. type TempoSig = Sig -- | Scaling factor for pitch. The 1 is inherent pitch. type PitchSig = Sig -- | Reads file once and scales it by tempo and pitch. readRam :: Fidelity -> TempoSig -> PitchSig -> String -> Sig2 -- | Loop over file and scales it by tempo and pitch (it's based on mincer -- opcode). loopRam :: Fidelity -> TempoSig -> PitchSig -> String -> Sig2 -- | Reads a segment from file once and scales it by tempo and pitch. -- Segment is defined in seconds. readSeg :: Fidelity -> (Sig, Sig) -> TempoSig -> PitchSig -> String -> Sig2 -- | Loops over a segment of file and scales it by tempo and pitch. Segment -- is defined in seconds. loopSeg :: Fidelity -> (Sig, Sig) -> TempoSig -> PitchSig -> String -> Sig2 -- | Reads a relative segment from file once and scales it by tempo and -- pitch. Segment is defined in seconds. The end ponits for the segment -- are relative to the total length of the file. readRel :: Fidelity -> (Sig, Sig) -> TempoSig -> PitchSig -> String -> Sig2 -- | Loops over a relative segment of file and scales it by tempo and -- pitch. Segment is defined in seconds. The end ponits for the segment -- are relative to the total length of the file. loopRel :: Fidelity -> (Sig, Sig) -> TempoSig -> PitchSig -> String -> Sig2 -- | The mono version of readRam. readRam1 :: Fidelity -> TempoSig -> PitchSig -> String -> Sig -- | The mono version of loopRam. loopRam1 :: Fidelity -> TempoSig -> PitchSig -> String -> Sig -- | The mono version of readSeg. readSeg1 :: Fidelity -> (Sig, Sig) -> TempoSig -> PitchSig -> String -> Sig -- | The mono version of loopSeg. loopSeg1 :: Fidelity -> (Sig, Sig) -> TempoSig -> PitchSig -> String -> Sig -- | The mono version of readRel. readRel1 :: Fidelity -> (Sig, Sig) -> TempoSig -> PitchSig -> String -> Sig -- | The mono version of loopRel. loopRel1 :: Fidelity -> (Sig, Sig) -> TempoSig -> PitchSig -> String -> Sig -- | ScaleWav function with fidelity set for drum-loops. scaleDrum :: TempoSig -> PitchSig -> String -> Sig2 -- | ScaleWav function with fidelity set for hormonical-loops. scaleHarm :: TempoSig -> PitchSig -> String -> Sig2 -- | ScaleWav1 function with fidelity set for drum-loops. scaleDrum1 :: TempoSig -> PitchSig -> String -> Sig -- | ScaleWav1 function with fidelity set for hormonical-loops. scaleHarm1 :: TempoSig -> PitchSig -> String -> Sig -- | Scaling mono audio files (accepts both midi and wav). It's based on -- temposcal Csound opcode. scaleWav1 :: Fidelity -> TempoSig -> PitchSig -> String -> Sig -- | Scaling stereo audio files (accepts both midi and wav). It's based on -- temposcal Csound opcode. scaleWav :: Fidelity -> TempoSig -> PitchSig -> String -> Sig2 -- | The sample format. data SampleFormat -- | 32-bit floating point samples without header NoHeaderFloat32 :: SampleFormat -- | 16-bit integers without header NoHeaderInt16 :: SampleFormat -- | 16-bit integers with a header. The header type depends on the render -- (-o) format HeaderInt16 :: SampleFormat -- | u-law samples with a header UlawSamples :: SampleFormat -- | 16-bit integers with a header Int16 :: SampleFormat -- | 32-bit integers with a header Int32 :: SampleFormat -- | 32-bit floats with a header Float32 :: SampleFormat -- | 8-bit unsigned integers with a header Uint8 :: SampleFormat -- | 24-bit integers with a header Int24 :: SampleFormat -- | 64-bit floats with a header Float64 :: SampleFormat -- | Writes a sound signal to the file with the given format. It supports -- only four formats: Wav, Aiff, Raw and Ircam. writeSigs :: FormatType -> SampleFormat -> String -> [Sig] -> SE () -- | Writes wav files. writeWav :: String -> (Sig, Sig) -> SE () -- | Writes aiff files. writeAiff :: String -> (Sig, Sig) -> SE () -- | Writes mono signals to wav files. writeWav1 :: String -> Sig -> SE () -- | Writes mono signals to aiff files. writeAiff1 :: String -> Sig -> SE () -- | Dumps signals to file and sends the audio through. Useful to monitor -- the signals. dumpWav :: String -> (Sig, Sig) -> SE (Sig, Sig) -- | Dumps mono signal to file and sends the audio through. Useful to -- monitor the signals. dumpWav1 :: String -> Sig -> SE Sig -- | Length in seconds of the sound file. lengthSnd :: String -> D -- | Produces repeating segments with the given time in seconds. segments :: Sig -> Evt (Sco Unit) -- | Takes only given amount (in seconds) from the signal (the rest is -- silence). takeSnd :: Sigs a => Sig -> a -> a -- | Delays signals by the given amount (in seconds). delaySnd :: Sigs a => Sig -> a -> a -- | Plays the first signal for some time (in seconds) and then switches to -- the next one. -- --
--   afterSnd dur sig1 sig2
--   
afterSnd :: (Num b, Sigs b) => Sig -> b -> b -> b -- | Creates a sequence of signals. Each segment lasts for fixed amount of -- time given in the first argument. lineSnd :: (Num a, Sigs a) => Sig -> [a] -> a -- | Creates a sequence of signals and loops over the sequence. Each -- segment lasts for fixed amount of time given in the first argument. loopLineSnd :: (Num a, Sigs a) => Sig -> [a] -> a -- | Delays a signal by the first argument and takes only second argument -- amount of signal (everything is measured in seconds). segmentSnd :: Sigs a => Sig -> Sig -> a -> a -- | Repeats the signal with the given period. repeatSnd :: Sigs a => Sig -> a -> a -- | Converts stereosignal to mono with function mean. toMono :: (Sig, Sig) -> Sig instance GHC.Enum.Enum Csound.Air.Wav.LoopMode instance GHC.Classes.Eq Csound.Air.Wav.LoopMode instance GHC.Show.Show Csound.Air.Wav.LoopMode instance GHC.Enum.Enum Csound.Air.Wav.SampleFormat instance GHC.Classes.Ord Csound.Air.Wav.SampleFormat instance GHC.Classes.Eq Csound.Air.Wav.SampleFormat module Csound.Air.Seg -- | A segment of the signal. The signal segment is a limited span of -- signal in time. The time can be measured in seconds or in events! The -- time span which is measured in events is the first occurence of the -- event in the event stream. -- -- There are handy functions for scheduling the signal segments. we can -- delay the segment or loop over it or limit it with tme interval or -- play a sequence of segments. The main feature of the segments is the -- ability to schedule the signals with event streams (like button clicks -- or midi-events). data Seg a -- | Converts signals to segments. The segment is not limited in length. toSeg :: a -> Seg a -- | Converts segments to signals. runSeg :: Sigs a => Seg a -> a -- | Limits the length of the segment with constant length in seconds. constLim :: Sig -> Seg a -> Seg a -- | Delays a segment by a given time interval in seconds. constDel :: Num a => Sig -> Seg a -> Seg a -- | A pause. Plays nothing for the given time interval in seconds. constRest :: Num a => Sig -> Seg a -- | Limits a signal with an event stream and retriggers it after stop. limSnd :: Sigs a => Tick -> a -> a instance GHC.Base.Functor Csound.Air.Seg.Seg instance Csound.Typed.Types.SigSpace.SigSpace a => Csound.Typed.Types.SigSpace.SigSpace (Csound.Air.Seg.Seg a) instance Csound.Typed.Types.Tuple.Sigs a => Temporal.Class.Melody (Csound.Air.Seg.Seg a) instance Csound.Typed.Types.Tuple.Sigs a => Temporal.Class.Harmony (Csound.Air.Seg.Seg a) instance Csound.Typed.Types.Tuple.Sigs a => Temporal.Class.Compose (Csound.Air.Seg.Seg a) instance Csound.Typed.Types.Tuple.Sigs a => Temporal.Class.Delay (Csound.Air.Seg.Seg a) instance Csound.Typed.Types.Tuple.Sigs a => Temporal.Class.Loop (Csound.Air.Seg.Seg a) instance (Csound.Typed.Types.Tuple.Sigs a, GHC.Num.Num a) => Temporal.Class.Rest (Csound.Air.Seg.Seg a) instance Csound.Typed.Types.Tuple.Sigs a => Temporal.Class.Limit (Csound.Air.Seg.Seg a) module Csound.Air.Sampler -- | Triggers the signal with the first stream and turns it off with the -- second stream. evtTrig :: Sigs a => Maybe a -> Tick -> Tick -> a -> a -- | Consider note limiting? or performance degrades every note is held to -- infinity and it continues to produce zeroes. No it's not every -- sequence note triggers it but it's best to limit them anyway evtTap :: Sigs a => Sig -> Tick -> a -> a -- | Plays a list signals. It triggers the signal with event stream and -- silences all the rest in the list so that only one signal is playing. -- We can create simple costum monosynthes with this function. The last -- event stream stops all signals. evtGroup :: Sigs a => Maybe a -> [(Tick, a)] -> Tick -> a -- | Triggers one signal after another with an event stream. evtCycle :: Sigs a => Maybe a -> Tick -> Tick -> [a] -> a syncEvtTrig :: Sigs a => Sig -> Maybe a -> Tick -> Tick -> a -> a syncEvtTap :: Sigs a => Sig -> Sig -> Tick -> a -> a syncEvtGroup :: Sigs a => Sig -> Maybe a -> [(Tick, a)] -> Tick -> a -- | Triggers one signal after another with an event stream. syncEvtCycle :: Sigs a => Sig -> Maybe a -> Tick -> Tick -> [a] -> a -- | Triggers a signal when one of the chars from the first string is -- pressed. Stops signal from playing when one of the chars from the -- second string is pressed. charTrig :: Sigs a => Maybe a -> String -> String -> a -> a charTap :: Sigs a => Sig -> String -> a -> a -- | Plays a signal while a key is pressed. charPush :: Sigs a => Maybe a -> Char -> a -> a -- | Toggles the signal when key is pressed. charToggle :: Sigs a => Maybe a -> Char -> a -> a -- | Plays a list of signals when corresponding key is pressed. Turns off -- all other signals in the group. The last string is for stopping the -- group from playing. charGroup :: Sigs a => Maybe a -> [(Char, a)] -> String -> a -- | Plays signals one after another when key is pressed. Stops the group -- from playing when the char from the last argument is pressed. charCycle :: Sigs a => Maybe a -> Char -> String -> [a] -> a -- | Triggers a signal when one of the chars from the first string is -- pressed. Stops signal from playing when one of the chars from the -- second string is pressed. Synchronizes the signal with bpm (first -- argument). syncCharTrig :: Sigs a => Sig -> Maybe a -> String -> String -> a -> a syncCharTap :: Sigs a => Sig -> Sig -> String -> a -> a -- | Plays a signal while a key is pressed. Synchronized by BPM (first -- argument). syncCharPush :: Sigs a => Sig -> Maybe a -> Char -> a -> a -- | Toggles the signal when key is pressed. Synchronizes by BPM (first -- argument). syncCharToggle :: Sigs a => Sig -> Maybe a -> Char -> a -> a -- | Plays a list of signals when corresponding key is pressed. Turns off -- all other signals in the group. The last string is for stopping the -- group from playing. Events are syncronized by BPM (first argument). syncCharGroup :: Sigs a => Sig -> Maybe a -> [(Char, a)] -> String -> a -- | Plays signals one after another when key is pressed. Stops the group -- from playing when the char from the last argument is pressed. Events -- are syncronised with BPM (first argument). syncCharCycle :: Sigs a => Sig -> Maybe a -> Char -> String -> [a] -> a syncEvtToggle :: Sigs a => Sig -> Maybe a -> Tick -> a -> a -- | Plays a signal when the key is pressed. Retriggers the signal when the -- key is pressed again. The key is an integer midi code. The C1 is 60 -- and the A1 is 69. midiTrig :: (SigSpace a, Sigs a) => MidiChn -> Int -> a -> SE a -- | Plays a signal when the key is pressed. Retriggers the signal when the -- key is pressed again. Turns off the signal after specified duration (n -- seconds). The key is an integer midi code. The C1 is 60 and the A1 is -- 69. midiTap :: (SigSpace a, Sigs a) => MidiChn -> Sig -> Int -> a -> SE a -- | Plyas a signal while the key is pressed. The key is an integer midi -- code. The C1 is 60 and the A1 is 69. midiPush :: (SigSpace a, Sigs a) => MidiChn -> Int -> a -> SE a -- | Plays and stops a signal in the toggle mode. The key is an integer -- midi code. The C1 is 60 and the A1 is 69. midiToggle :: (SigSpace a, Sigs a) => MidiChn -> Int -> a -> SE a -- | Plays a set of signals on the list of keys. When certain key is -- pressed the corresponding signal starts to play and all the rest are -- stopped. -- -- midiGroup :: (SigSpace a, Sigs a) => MidiChn -> [(Int, a)] -> SE a -- | The generic midiTrig. We can specify the midi function. The midi -- function takes in a signal and a volume of the pressed key (it ranges -- from 0 to 1). It produces some output. The default is scaling the -- signal with the amplitude. midiTrigBy :: (SigSpace a, Sigs a) => MidiTrigFun a -> MidiChn -> Int -> a -> SE a -- | The generic midiTap. We can specify the midi function. The midi -- function takes in a signal and a volume of the pressed key (it ranges -- from 0 to 1). It produces some output. The default is scaling the -- signal with the amplitude. midiTapBy :: (SigSpace a, Sigs a) => MidiTrigFun a -> MidiChn -> Sig -> Int -> a -> SE a -- | The generic midiPush. We can specify the midi function. The midi -- function takes in a signal and a volume of the pressed key (it ranges -- from 0 to 1). It produces some output. The default is scaling the -- signal with the amplitude. midiPushBy :: (SigSpace a, Sigs a) => MidiTrigFun a -> MidiChn -> Int -> a -> SE a -- | The generic midiToggle. We can specify the midi function. The midi -- function takes in a signal and a volume of the pressed key (it ranges -- from 0 to 1). It produces some output. The default is scaling the -- signal with the amplitude. midiToggleBy :: (SigSpace a, Sigs a) => MidiTrigFun a -> MidiChn -> Int -> a -> SE a -- | The generic midiGroup. We can specify the midi function. The midi -- function takes in a signal and a volume of the pressed key (it ranges -- from 0 to 1). It produces some output. The default is scaling the -- signal with the amplitude. midiGroupBy :: (SigSpace a, Sigs a) => MidiTrigFun a -> MidiChn -> [(Int, a)] -> SE a type MidiTrigFun a = a -> D -> SE a -- | Scales the signal with the amplitude. midiAmpInstr :: (SigSpace a, Sigs a) => a -> D -> SE a -- | Applies a low pass filter to the signal. The first two arguments are -- the frequency range for center frequency of the filter and the second -- one is amount of resonance (ranges from 0 to 1). midiLpInstr :: (SigSpace a, Sigs a) => (Sig, Sig) -> Sig -> a -> D -> SE a -- | the midiLpInstr with audio range for center frequency. midiAudioLpInstr :: (SigSpace a, Sigs a) => Sig -> a -> D -> SE a -- | Ignores the amplitude and justplays back the original signal. midiConstInstr :: (SigSpace a, Sigs a) => a -> D -> SE a keyColumn1 :: [Char] keyColumn2 :: [Char] keyColumn3 :: [Char] keyColumn4 :: [Char] keyColumn5 :: [Char] keyColumn6 :: [Char] keyColumn7 :: [Char] keyColumn8 :: [Char] keyColumn9 :: [Char] keyColumn0 :: [Char] keyColumns :: [[Char]] -- | Effects module Csound.Air.Pan -- | Optional arguments for opcode hrtfmove. -- -- phase is 0 or 1 -- -- fade is 1 to 24. -- -- See csound docs for hrtfmove for details. data HeadPanSpec HeadPanSpec :: D -> D -> HeadPanSpec [headPanPhase] :: HeadPanSpec -> D [hradPanFade] :: HeadPanSpec -> D -- | Head response based spacialization. It works when you listen in -- headphones. It works only with sample rate of 44100, 48000 or 96000. -- --
--   headPan (azimuth, elevation) asig
--   
-- -- azimuth and elevation are measured in ratios (0, 1), headPan :: (Sig, Sig) -> Sig -> Sig2 -- | HeadPan with optional arguments. headPan' :: HeadPanSpec -> (Sig, Sig) -> Sig -> Sig2 -- | Static head response based spacialization. It works when you listen in -- headphones. It works only with sample rate of 44100, 48000 or 96000. -- It's more efficient than headPan. -- --
--   staticHeadPan (azimuth, elevation) asig
--   
-- -- azimuth and elevation are measured in ratios (0, 1), staticHeadPan :: (D, D) -> Sig -> Sig2 -- | The same as headPan but for stereo signals. headPan2 :: (Sig, Sig) -> Sig2 -> Sig2 -- | The same as headPan' but for stereo signals. headPan2' :: HeadPanSpec -> (Sig, Sig) -> Sig2 -> Sig2 -- | The same as staticHeadPan but for stereo signals. staticHeadPan2 :: (D, D) -> Sig2 -> Sig2 -- | Net of sounds evenly distributed oround the head. First argument is a -- pair of numbers (column, rows) in the matrix. The second argument is a -- matrix written in a single list. The rows are for elevation and the -- columns are for azimuth. -- -- A ghci session example: -- --
--   let f t x = mul 0.4 $ sched (\_ -> return $ fades 0.07 0.1 * tri x) $ withDur 0.2 $ metro t
--   dac $ headPanNet (3, 2) [f 1 220, f 0.75 330, f 0.5 440, f 0.2 660, delaySnd 0.75 $ f 2 (220 * 5/4),delaySnd 0.4 $  f 1 (220 * 9/8)]
--   
headPanNet :: (Int, Int) -> [Sig] -> Sig2 -- | The same as headPanNet but for stereo signals. headPanNet2 :: (Int, Int) -> [Sig2] -> Sig2 -- | The Csound contains a set of functions for granular synthesis. -- Unfortunately they are very hard to use due to large number of -- arguments. This module attempts to set most of the arguments with -- sensible defaults. So that a novice could start to use it. The -- defaults are implemented with the help of the class Default. -- It's a standard way to implement defaults in the Haskell. The class -- Defaults defines a single constnat called def. With -- def we can get the default value for the given type. -- -- Several csound opcodes are reimplemented so that first argument -- contains secondary parameters. The type for parameters always has the -- instance for the class Default. The original csound opcodes -- are defined in the end of the module with prefix csd. -- -- Also many granular synth opcodes expect the sound file as input. There -- are predefined versions of the opcodes that take in the file names -- instead of tables with sampled sound. They have suffix Snd -- for stereo and Snd1 for mono files. -- -- For example, that's how we can use the granule opcode: -- --
--   dac $ granuleSnd1 spec [1, 2, 3] grainSize "fox.wav"
--   
-- -- No need to set all 22 parameters. Look at the official tutorial (on -- github) for more examples. -- -- The five functions are reimplemented in this way: sndwarp, -- syncgrain, partikkel, granule, -- fof2. -- -- The most often used arguments are: -- -- -- -- Usual order of arguments is: GrainRate, GrainSize, -- TempoSig, PitchSig, file table or -- name, poniter to the table. module Csound.Air.Granular type GrainRate = Sig type GrainSize = Sig type Pointer = Sig type ConstPitchSig = D -- | Randomized parameters for function grainy. We can randomize -- pitch scaleing factor (0 to 1), read position (in ratio: 0 to 1), and -- duration of the grains (in seconds, in magnitude of 0.005 to 0.5). data RndGrainySpec RndGrainySpec :: Sig -> Sig -> Sig -> RndGrainySpec [rndGrainyPitch] :: RndGrainySpec -> Sig [rndGrainyPos] :: RndGrainySpec -> Sig [rndGrainyDur] :: RndGrainySpec -> Sig -- | Simplified version of partikkel. The partikkel for stereo sounds. -- --
--   grainy1 speed grainrate grainsize kfreqFactor file
--   
-- -- grainy :: GrainRate -> GrainSize -> TempoSig -> PitchSig -> String -> Sig2 -- | Simplified version of partikkel. The partikkel for mono sounds. -- --
--   grainy1 speed grainrate grainsize kfreqFactor file
--   
-- -- grainy1 :: GrainRate -> GrainSize -> TempoSig -> PitchSig -> String -> Sig -- | Randomized version of grainy. rndGrainy :: RndGrainySpec -> GrainRate -> GrainSize -> TempoSig -> PitchSig -> String -> SE Sig2 -- | Randomized version of grainy1. rndGrainy1 :: RndGrainySpec -> GrainRate -> GrainSize -> TempoSig -> PitchSig -> String -> SE Sig -- | Simplified version of partikkel with pointer access to the table. The -- partikkel for mono sounds. -- --
--   ptrGrainy grainrate grainsize kfreqFactor tab apnter
--   
-- -- ptrGrainy :: GrainRate -> GrainSize -> PitchSig -> Tab -> Pointer -> Sig -- | Randomized version of ptrGrainy. rndPtrGrainy :: RndGrainySpec -> GrainRate -> GrainSize -> PitchSig -> Tab -> Pointer -> SE Sig -- | Simplified version of partikkel with pointer access to the table. The -- partikkel for mono sounds. -- --
--   ptrGrainy grainrate grainsize kfreqFactor tab apnter
--   
-- -- ptrGrainySnd :: GrainRate -> GrainSize -> PitchSig -> String -> Pointer -> Sig2 -- | Simplified version of partikkel with pointer access to the table. The -- partikkel for mono sounds. -- --
--   ptrGrainy grainrate grainsize kfreqFactor tab apnter
--   
-- -- ptrGrainySnd1 :: GrainRate -> GrainSize -> PitchSig -> String -> Pointer -> Sig -- | Sndwarp secondary parameters. It's instance of Default, we -- can use the constant def to get the value. -- -- data SndwarpSpec SndwarpSpec :: D -> D -> D -> Tab -> SndwarpSpec [sndwarpWinSize] :: SndwarpSpec -> D [sndwarpRandw] :: SndwarpSpec -> D [sndwarpOvelrap] :: SndwarpSpec -> D [sndwarpWin] :: SndwarpSpec -> Tab -- | Simple sndwarp with scaling mode (corresponds to Csound's initmode -- == 0). -- --
--   sndwarp spec resample speed ftab
--   
-- -- sndwarp :: SndwarpSpec -> TempoSig -> PitchSig -> Tab -> Sig -- | Stereo version of the sndwarp. sndwarpst :: SndwarpSpec -> TempoSig -> PitchSig -> Tab -> Sig2 -- | Sndwarp that is defined on stereo audio files. We provide the filename -- instead of table. The rest is the same. sndwarpSnd :: SndwarpSpec -> TempoSig -> PitchSig -> String -> Sig2 -- | Sndwarp that is defined on mono audio files. We provide the filename -- instead of table. The rest is the same. sndwarpSnd1 :: SndwarpSpec -> TempoSig -> PitchSig -> String -> Sig -- | The simple sndwarp with pointer (Csound initmode = 1). -- --
--   sndwarp spec resample ftab ptr
--   
-- -- ptrSndwarp :: SndwarpSpec -> PitchSig -> Tab -> Pointer -> Sig -- | Stereo version of ptrSndwarp. ptrSndwarpst :: SndwarpSpec -> PitchSig -> Tab -> Pointer -> Sig2 -- | ptrSndwarp that is defined on stereo audio files. We provide the -- filename instead of table. The rest is the same. ptrSndwarpSnd :: SndwarpSpec -> PitchSig -> String -> Pointer -> Sig2 -- | ptrSndwarp that is defined on mono audio files. We provide the -- filename instead of table. The rest is the same. ptrSndwarpSnd1 :: SndwarpSpec -> PitchSig -> String -> Pointer -> Sig -- | Secondary parameters for syncgrain. -- -- data SyncgrainSpec SyncgrainSpec :: Tab -> D -> SyncgrainSpec [syncgrainWin] :: SyncgrainSpec -> Tab [syncgrainOverlap] :: SyncgrainSpec -> D -- | Randomized parameters for arguments (in range 0 to 1). data RndSyncgrainSpec RndSyncgrainSpec :: Sig -> Sig -> Sig -> RndSyncgrainSpec [rndSyncTimescale] :: RndSyncgrainSpec -> Sig [rndSyncgrainPitch] :: RndSyncgrainSpec -> Sig [rndSyncgrainGrainDur] :: RndSyncgrainSpec -> Sig -- | Synchronous granular synthesis. -- -- 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 spec graidDuration timeScale PitchSig ftab
--   
-- -- syncgrain :: SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Tab -> Sig -- | syncgrain that is defined on stereo audio files. We provide the -- filename instead of table. The rest is the same. syncgrainSnd :: SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> String -> Sig2 -- | syncgrain that is defined on mono audio files. We provide the filename -- instead of table. The rest is the same. syncgrainSnd1 :: SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> String -> Sig -- | The syncgrain with randomized parameters. rndSyncgrain :: RndSyncgrainSpec -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Tab -> SE Sig -- | rndSyncgrain that is defined on stereo audio files. We provide the -- filename instead of table. The rest is the same. rndSyncgrainSnd :: RndSyncgrainSpec -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> String -> SE Sig2 -- | rndSyncgrain that is defined on mono audio files. We provide the -- filename instead of table. The rest is the same. rndSyncgrainSnd1 :: RndSyncgrainSpec -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> String -> SE Sig -- | Secondary parameters for granule. We can use the def -- to get the defaults. -- -- data GranuleSpec GranuleSpec :: Sig -> D -> D -> GranuleMode -> D -> D -> D -> D -> D -> D -> GranuleSpec [granuleGap] :: GranuleSpec -> Sig [granuleVoice] :: GranuleSpec -> D [granuleRatio] :: GranuleSpec -> D [granuleMode] :: GranuleSpec -> GranuleMode [granuleSkip_os] :: GranuleSpec -> D [granuleGap_os] :: GranuleSpec -> D [granuleSize_os] :: GranuleSpec -> D [granuleSeed] :: GranuleSpec -> D [granuleAtt] :: GranuleSpec -> D [granuleDec] :: GranuleSpec -> D -- | Granule playback mode. data GranuleMode GranuleForward :: GranuleMode GranuleBackward :: GranuleMode GranuleRandom :: GranuleMode -- | A more complex granular synthesis texture generator. -- -- granule is a Csound unit generator which employs a wavetable as input -- to produce granularly synthesized audio output. Wavetable data may be -- generated by any of the GEN subroutines such as GEN01 which reads an -- audio data file into a wavetable. This enable a sampled sound to be -- used as the source for the grains. Up to 128 voices are implemented -- internally. The maximum number of voices can be increased by -- redefining the variable MAXVOICE in the grain4.h file. granule has a -- build-in random number generator to handle all the random offset -- parameters. Thresholding is also implemented to scan the source -- function table at initialization stage. This facilitates features such -- as skipping silence passage between sentences. -- --
--   granule spec chord grainSize ftab
--   
-- -- granule :: GranuleSpec -> [ConstPitchSig] -> GrainSize -> Tab -> Sig -- | granule that is defined on stereo audio files. We provide the -- filename instead of table. The rest is the same. granuleSnd :: GranuleSpec -> [ConstPitchSig] -> GrainSize -> String -> Sig2 -- | granule that is defined on mono audio files. We provide the -- filename instead of table. The rest is the same. granuleSnd1 :: GranuleSpec -> [ConstPitchSig] -> GrainSize -> String -> Sig -- | Secondary parameters for the partikkel opcode. We can use the -- def to get the defaults. See the official docs to know the -- complete description: -- -- csound doc: http://www.csounds.com/manual/html/partikkel.html data PartikkelSpec PartikkelSpec :: Sig -> Tab -> Sig -> Sig -> Tab -> Tab -> Tab -> Sig -> Sig -> Sig -> Tab -> Sig -> Tab -> Tab -> Sig -> Tab -> Tab -> Tab -> Sig -> Sig -> Tab -> Sig -> Tab -> [Sig] -> D -> PartikkelSpec [partikkelDistribution] :: PartikkelSpec -> Sig [partikkelDisttab] :: PartikkelSpec -> Tab [partikkelSync] :: PartikkelSpec -> Sig [partikkelEnv2amt] :: PartikkelSpec -> Sig [partikkelEnv2tab] :: PartikkelSpec -> Tab [partikkelEnv_attack] :: PartikkelSpec -> Tab [partikkelEnv_decay] :: PartikkelSpec -> Tab [partikkelSustain_amount] :: PartikkelSpec -> Sig [partikkelA_d_ratio] :: PartikkelSpec -> Sig [partikkelAmp] :: PartikkelSpec -> Sig [partikkelGainmasks] :: PartikkelSpec -> Tab [partikkelSweepshape] :: PartikkelSpec -> Sig [partikkelWavfreqstarttab] :: PartikkelSpec -> Tab [partikkelWavfreqendtab] :: PartikkelSpec -> Tab [partikkelWavfm] :: PartikkelSpec -> Sig [partikkelFmamptab] :: PartikkelSpec -> Tab [partikkelFmenv] :: PartikkelSpec -> Tab [partikkelCosine] :: PartikkelSpec -> Tab [partikkelNumpartials] :: PartikkelSpec -> Sig [partikkelChroma] :: PartikkelSpec -> Sig [partikkelChannelmasks] :: PartikkelSpec -> Tab [partikkelRandommask] :: PartikkelSpec -> Sig [partikkelWaveamptab] :: PartikkelSpec -> Tab [partikkelWavekeys] :: PartikkelSpec -> [Sig] [partikkelMax_grains] :: PartikkelSpec -> D -- | Granular synthesizer with "per grain" control over many of its -- parameters. Has a sync input to sychronize its internal grain -- scheduler clock to an external clock source. -- -- 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 spec grainrate grainsize kpitch ifiltabs apnters
--   
-- -- partikkel :: PartikkelSpec -> GrainRate -> GrainSize -> PitchSig -> [Tab] -> [Pointer] -> Sig -- | Defaults for fof2 opcode. data Fof2Spec Fof2Spec :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Fof2Spec [fof2TimeMod] :: Fof2Spec -> Sig [fof2PitchMod] :: Fof2Spec -> Sig [fof2Oct] :: Fof2Spec -> Sig [fof2Band] :: Fof2Spec -> Sig [fof2Rise] :: Fof2Spec -> Sig [fof2Decay] :: Fof2Spec -> Sig [fof2Gliss] :: Fof2Spec -> Sig [fof2Win] :: Fof2Spec -> Tab -- | Reimplementation of fof2 opcode. fof2 :: Fof2Spec -> GrainRate -> GrainSize -> Tab -> Pointer -> Sig -- | Reimplementation of fof2 opcode for stereo audio files. fof2Snd :: Fof2Spec -> GrainRate -> GrainSize -> TempoSig -> String -> Sig2 -- | Reimplementation of fof2 opcode for mono audio files. fof2Snd1 :: Fof2Spec -> GrainRate -> GrainSize -> TempoSig -> String -> Sig -- | Granular delay effect for grainy. grainyDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig -- | Granular delay effect for rndGrainy. rndGrainyDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> RndGrainySpec -> GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig -- | Granular delay effect for sndwarp. sndwarpDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> SndwarpSpec -> PitchSig -> Sig -> SE Sig -- | Granular delay effect for syncgrain. syncgrainDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Sig -> SE Sig -- | Granular delay effect for rndSyncgrain. rndSyncgrainDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> RndSyncgrainSpec -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Sig -> SE Sig -- | Granular delay effect for partikkel. partikkelDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> PartikkelSpec -> GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig -- | Granular delay effect for fof2. Good values for grain rate and size -- are -- --
--   grainRate = 25
--   grainSize = 2.5
--   
fofDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> Fof2Spec -> GrainRate -> GrainSize -> Sig -> SE Sig -- | Granular effect for grainy. grainyFx :: GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig -- | Granular effect for rndGrainy. rndGrainyFx :: RndGrainySpec -> GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig -- | Granular effect for sndwarp. sndwarpFx :: SndwarpSpec -> PitchSig -> Sig -> SE Sig -- | Granular effect for syncgrain. syncgrainFx :: SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Sig -> SE Sig -- | Granular effect for rndSyncgrain. rndSyncgrainFx :: RndSyncgrainSpec -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Sig -> SE Sig -- | Granular effect for partikkel. partikkelFx :: PartikkelSpec -> GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig -- | Granular effect for fof2. fofFx :: Fof2Spec -> GrainRate -> GrainSize -> Sig -> SE Sig -- | Reads a mono sound sample from a table and applies time-stretching -- and/or pitch modification. -- -- 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! -- --
--   ares [, ac]  sndwarp  xamp, xtimewarp, xresample, ifn1, ibeg, iwsize, \
--             irandw, ioverlap, ifn2, itimemode
--   
-- -- csound doc: http://www.csounds.com/manual/html/sndwarp.html csdSndwarp :: Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig -- | Reads a stereo sound sample from a table and applies time-stretching -- and/or pitch modification. -- -- 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! -- --
--   ar1, ar2 [,ac1] [, ac2]  sndwarpst  xamp, xtimewarp, xresample, ifn1, \
--             ibeg, iwsize, irandw, ioverlap, ifn2, itimemode
--   
-- -- csound doc: http://www.csounds.com/manual/html/sndwarpst.html csdSndwarpst :: Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig2 -- | Synchronous granular synthesis. -- -- 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. -- --
--   asig  syncgrain  kamp, kfreq, kpitch, kgrsize, kprate, ifun1, \
--             ifun2, iolaps
--   
-- -- csound doc: http://www.csounds.com/manual/html/syncgrain.html csdSyncgrain :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> D -> Sig -- | A more complex granular synthesis texture generator. -- -- The granule unit generator is more complex than grain, but does add -- new possibilities. -- --
--   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]
--   
-- -- csound doc: http://www.csounds.com/manual/html/granule.html csdGranule :: Sig -> D -> D -> D -> D -> Tab -> D -> D -> D -> D -> Sig -> D -> Sig -> D -> D -> D -> Sig -- | Granular synthesizer with "per grain" control over many of its -- parameters. Has a sync input to sychronize its internal grain -- scheduler clock to an external clock source. -- -- 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. -- --
--   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]
--   
-- -- csound doc: http://www.csounds.com/manual/html/partikkel.html csdPartikkel :: Tuple a => Sig -> Sig -> Tab -> Sig -> Sig -> Tab -> Tab -> Tab -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -> Sig -> Tab -> Tab -> Sig -> Tab -> Tab -> Tab -> Sig -> Sig -> Sig -> Tab -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> a instance Data.Default.Class.Default Csound.Air.Granular.Fof2Spec instance Data.Default.Class.Default Csound.Air.Granular.SndwarpSpec instance Data.Default.Class.Default Csound.Air.Granular.RndSyncgrainSpec instance Data.Default.Class.Default Csound.Air.Granular.SyncgrainSpec instance Data.Default.Class.Default Csound.Air.Granular.GranuleSpec instance Data.Default.Class.Default Csound.Air.Granular.GranuleMode instance Data.Default.Class.Default Csound.Air.Granular.RndGrainySpec instance Data.Default.Class.Default Csound.Air.Granular.PartikkelSpec -- | Wonderful echoes from morpheus. Granular synthesis for morphing -- between waveforms. It's a simplification of partikkel opcode for the -- case of morphing. module Csound.Air.Granular.Morpheus type WaveAmp = Sig type WaveKey = Sig type MorphWave = (Tab, WaveAmp, WaveKey, Pointer) -- | Specification of morphing synth. It has the default instance and the -- values in its records has default instances too data MorphSpec MorphSpec :: GrainDensity -> GrainEnv -> MorphSpec [morphGrainDensity] :: MorphSpec -> GrainDensity [morphGrainEnv] :: MorphSpec -> GrainEnv -- | Density of the grain stream. -- -- -- -- see docs for Csound partikkel opcode for more detailed information -- http://www.csounds.com/manual/html/partikkel.html data GrainDensity GrainDensity :: Sig -> Sig -> Sig -> GrainDensity [grainRate] :: GrainDensity -> Sig [grainSize] :: GrainDensity -> Sig [grainSkip] :: GrainDensity -> Sig -- | Parameters for grain envelope. -- -- -- -- see docs for Csound partikkel opcode for more detailed information -- http://www.csounds.com/manual/html/partikkel.html data GrainEnv GrainEnv :: Tab -> Tab -> Sig -> Sig -> GrainEnv [grainAttShape] :: GrainEnv -> Tab [grainDecShape] :: GrainEnv -> Tab [grainSustRatio] :: GrainEnv -> Sig [grainAttDecRatio] :: GrainEnv -> Sig -- | Synth that is based on partikkel. It allows easy morphing between -- unlimited number of waves. While partikkel allows only 4 waves to be -- used. We can use as many as we like. Internally the list is split on -- groups 4 elements or less in each and one partikkel is applied to each -- group. Many parameters of partikel were simplified to get the good -- defaults for sound morphing behavior. -- --
--   morpheus spec waves frequencyScale
--   
-- -- morpheus :: MorphSpec -> [MorphWave] -> Sig -> SE Sig2 -- | Morpheus synth for mono-audio files. The first cell in each tripple is -- occupied by file name. The rest arguments are the same as for -- morpheus. morphSnd1 :: MorphSpec -> [(String, WaveAmp, WaveKey)] -> Sig -> SE Sig2 -- | Morpheus synth for stereo-audio files. The first cell in each tripple -- is occupied by file name. The rest arguments are the same as for -- morpheus. morphSnd :: MorphSpec -> [(String, WaveAmp, WaveKey)] -> Sig -> SE Sig2 -- | Creates four control signals out two signals. The control signals are -- encoded by the position of the point on XY-plane. The four resulting -- signals are derived from the proximity of the point to four squares of -- the ((0, 1), (0, 1)) square. It can be useful to control the morpheus -- with XY-pad controller. pairToSquare :: (Sig, Sig) -> (Sig, Sig, Sig, Sig) -- | Morpheus oscillator. -- --
--   morpheusOsc spec (baseFrequency, table) cps
--   
-- -- baseFrequency is the frequency of the sample contained in the -- table. With oscillator we can read the table on different frequencies. morpheusOsc :: MorphSpec -> (D, Tab) -> Sig -> SE Sig2 -- | Morpheus oscillator. We control the four tables with pair of control -- signals (see the function pairToSquare). -- --
--   morpheusOsc2 spec baseFrequency waves (x, y) cps = ...
--   
morpheusOsc2 :: MorphSpec -> D -> [(Sig, Tab)] -> (Sig, Sig) -> Sig -> SE Sig2 instance Data.Default.Class.Default Csound.Air.Granular.Morpheus.MorphSpec instance Data.Default.Class.Default Csound.Air.Granular.Morpheus.GrainEnv instance Data.Default.Class.Default Csound.Air.Granular.Morpheus.GrainDensity -- | Envelopes module Csound.Air.Envelope -- | Linear adsr envelope generator with release -- --
--   leg attack decay sustain release
--   
leg :: D -> D -> D -> D -> Sig -- | Exponential adsr envelope generator with release -- --
--   xeg attack decay sustain release
--   
xeg :: D -> D -> D -> D -> Sig -- | Gated, Re-triggerable ADSR modeled after the Doepfer A-140 opcode -- adsr140, a, aakkkk -- -- inputs: agate, aretrig, kattack, kdecay, ksustain, krelease adsr140 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Triggers the table based envelope when the trigger signal equals to 1 -- and plays for dur seconds: -- --
--   trigTab table dur trigger
--   
trigTab :: Tab -> Sig -> Sig -> Sig -- | Triggers the table based envelope when the something happens on the -- event stream and plays for dur seconds: -- --
--   trigTabEvt table dur trigger
--   
trigTabEvt :: Tab -> Sig -> Evt a -> Sig -- | Makes time intervals relative to the note's duration. So that: -- --
--   onIdur [a, t1, b, t2, c]
--   
-- -- becomes: -- --
--   [a, t1 * idur, b, t2 * idur, c]
--   
onIdur :: [D] -> [D] -- | The opcode linseg with time intervals relative to the total -- duration of the note. lindur :: [D] -> Sig -- | The opcode expseg with time intervals relative to the total -- duration of the note. expdur :: [D] -> Sig -- | The opcode linen with time intervals relative to the total -- duration of the note. Total time is set to the value of idur. -- --
--   linendur asig rise decay
--   
linendur :: Sig -> D -> D -> Sig -- | Makes time intervals relative to the note's duration. So that: -- --
--   onDur dt [a, t1, b, t2, c]
--   
-- -- becomes: -- --
--   [a, t1 * dt, b, t2 * dt, c]
--   
onDur :: D -> [D] -> [D] -- | The opcode linseg with time intervals relative to the total -- duration of the note given by the user. lindurBy :: D -> [D] -> Sig -- | The opcode expseg with time intervals relative to the total -- duration of the note given by the user. expdurBy :: D -> [D] -> Sig -- | The opcode linen with time intervals relative to the total -- duration of the note. Total time is set to the value of the first -- argument. -- --
--   linendurBy dt asig rise decay
--   
linendurBy :: D -> Sig -> D -> D -> Sig -- | Fades in with the given attack time. fadeIn :: D -> Sig -- | Fades out with the given attack time. fadeOut :: D -> Sig -- | A combination of fade in and fade out. -- --
--   fades attackDuration decayDuration
--   
fades :: D -> D -> Sig -- | Fades in by exponent with the given attack time. expFadeIn :: D -> Sig -- | Fades out by exponent with the given attack time. expFadeOut :: D -> Sig -- | A combination of exponential fade in and fade out. -- --
--   expFades attackDuration decayDuration
--   
expFades :: D -> D -> Sig -- | Slope envelope. It stays at zero for a given time then it raises to 1 -- for thre given time. The function is usefull to delay the LFO. -- --
--   slope zeroTime rizeTime
--   
slope :: D -> D -> Sig -- | Exponential slope (See the function slope). expSlope :: D -> D -> Sig -- | A function transformer (decorator). We can transform an envelope -- producer so that all values are sumed with some random value. The -- amplitude of the random value is given with the first argument. -- -- It can transform linseg, expseg, sequence producers and simplified -- sequence producers. -- -- An example: -- --
--   dac $ mul (humanVal 0.1 sqrSeq [1, 0.5, 0.2, 0.1] 1) $ white
--   
-- -- As you can see it transforms the whole function. So we don't need for -- extra parenthesis. class HumanizeValue a where { type family HumanizeValueOut a :: *; } humanVal :: HumanizeValue a => Sig -> a -> HumanizeValueOut a -- | A function transformer (decorator). We can transform an envelope -- producer so that all durations are sumed with some random value. The -- amplitude of the random value is given with the first argument. -- -- It can transform linseg, expseg, sequence producers and simplified -- sequence producers. -- -- An example: -- --
--   dac $ mul (humanTime 0.1 sqrSeq [1, 0.5, 0.2, 0.1] 1) $ white
--   
-- -- As you can see it transforms the whole function. So we don't need for -- extra parenthesis. class HumanizeTime a where { type family HumanizeTimeOut a :: *; } humanTime :: HumanizeTime a => Sig -> a -> HumanizeTimeOut a -- | A function transformer (decorator). We can transform an envelope -- producer so that all values and durations are sumed with some random -- value. The amplitude of the random value is given with the first two -- arguments. -- -- It can transform linseg, expseg, sequence producers and simplified -- sequence producers. -- -- An example: -- --
--   dac $ mul (humanValTime 0.1 0.1 sqrSeq [1, 0.5, 0.2, 0.1] 1) $ white
--   
-- -- As you can see it transforms the whole function. So we don't need for -- extra parenthesis. class HumanizeValueTime a where { type family HumanizeValueTimeOut a :: *; } humanValTime :: HumanizeValueTime a => Sig -> Sig -> a -> HumanizeValueTimeOut a -- | Alias for humanVal. hval :: HumanizeValue a => Sig -> a -> HumanizeValueOut a -- | Alias for humanTime. htime :: HumanizeTime a => Sig -> a -> HumanizeTimeOut a -- | Alias for humanValTime. hvalTime :: HumanizeValueTime a => Sig -> Sig -> a -> HumanizeValueTimeOut a -- | Looping sample and hold envelope. The first argument is the list of -- pairs: -- --
--   [a, durA, b, durB, c, durc, ...]
--   
-- -- It's a list of values and durations. The durations are relative to the -- period of repetition. The period is specified with the second -- argument. The second argument is the frequency of repetition measured -- in Hz. -- --
--   lpshold valDurs frequency
--   
lpshold :: [Sig] -> Sig -> Sig -- | Looping linear segments envelope. The first argument is the list of -- pairs: -- --
--   [a, durA, b, durB, c, durc, ...]
--   
-- -- It's a list of values and durations. The durations are relative to the -- period of repetition. The period is specified with the second -- argument. The second argument is the frequency of repetition measured -- in Hz. -- --
--   loopseg valDurs frequency
--   
loopseg :: [Sig] -> Sig -> Sig -- | Looping exponential segments envelope. The first argument is the list -- of pairs: -- --
--   [a, durA, b, durB, c, durc, ...]
--   
-- -- It's a list of values and durations. The durations are relative to the -- period of repetition. The period is specified with the second -- argument. The second argument is the frequency of repetition measured -- in Hz. -- --
--   loopxseg valDurs frequency
--   
loopxseg :: [Sig] -> Sig -> Sig -- | It's like lpshold but we can specify the phase of repetition (phase -- belongs to [0, 1]). lpsholdBy :: D -> [Sig] -> Sig -> Sig -- | It's like loopseg but we can specify the phase of repetition (phase -- belongs to [0, 1]). loopsegBy :: D -> [Sig] -> Sig -> Sig -- | It's like loopxseg but we can specify the phase of repetition (phase -- belongs to [0, 1]). loopxsegBy :: D -> [Sig] -> Sig -> Sig -- | The looping sequence of constant segments. -- --
--   linSeg [a, durA, b, durB, c, durC, ...] [scale1, scale2, scale3] cps
--   
-- -- The first argument is the list that specifies the shape of the looping -- wave. It's the alternating values and durations of transition from one -- value to another. The durations are relative to the period. So that -- lists -- --
--   [0, 0.5, 1, 0.5, 0]  and [0, 50, 1, 50, 0]
--   
-- -- produce the same results. The second list is the list of scales for -- subsequent periods. Every value in the period is scaled with values -- from the second list. The last argument is the rate of repetition -- (Hz). holdSeq :: [Sig] -> [Sig] -> Sig -> Sig -- | The looping sequence of linear segments. -- --
--   linSeg [a, durA, b, durB, c, durC, ...] [scale1, scale2, scale3] cps
--   
-- -- The first argument is the list that specifies the shape of the looping -- wave. It's the alternating values and durations of transition from one -- value to another. The durations are relative to the period. So that -- lists -- --
--   [0, 0.5, 1, 0.5, 0]  and [0, 50, 1, 50, 0]
--   
-- -- produce the same results. The second list is the list of scales for -- subsequent periods. Every value in the period is scaled with values -- from the second list. The last argument is the rate of repetition -- (Hz). linSeq :: [Sig] -> [Sig] -> Sig -> Sig -- | The looping sequence of exponential segments. -- --
--   expSeg [a, durA, b, durB, c, durC, ...] [scale1, scale2, scale3] cps
--   
-- -- The first argument is the list that specifies the shape of the looping -- wave. It's the alternating values and durations of transition from one -- value to another. The durations are relative to the period. So that -- lists -- --
--   [0, 0.5, 1, 0.5, 0]  and [0, 50, 1, 50, 0]
--   
-- -- produce the same results. The second list is the list of scales for -- subsequent periods. Every value in the period is scaled with values -- from the second list. The last argument is the rate of repetition -- (Hz). expSeq :: [Sig] -> [Sig] -> Sig -> Sig -- | It's just like linseg but it loops over the envelope. linloop :: [Sig] -> Sig -- | It's just like expseg but it loops over the envelope. exploop :: [Sig] -> Sig -- | Sample and hold cyclic signal. It takes the list of -- --
--   [a, dta, b, dtb, c, dtc, ...]
--   
-- -- the a, b, c, ... are values of the constant segments -- -- the dta, dtb, dtc, are durations in seconds of constant segments. -- -- The period of the repetition equals to the sum of all durations. sah :: [Sig] -> Sig stepSeq :: [Sig] -> Sig -> Sig -- | Sample and hold sequence. It outputs the looping sequence of constan -- elements. constSeq :: [Sig] -> Sig -> Sig -- | Step sequencer with unipolar triangle. triSeq :: [Sig] -> Sig -> Sig -- | Step sequencer with unipolar square. sqrSeq :: [Sig] -> Sig -> Sig -- | Step sequencer with unipolar sawtooth. sawSeq :: [Sig] -> Sig -> Sig -- | Step sequencer with unipolar inveted sawtooth. isawSeq :: [Sig] -> Sig -> Sig -- | Step sequencer with unipolar exponential sawtooth. xsawSeq :: [Sig] -> Sig -> Sig -- | Step sequencer with unipolar inverted exponential sawtooth. ixsawSeq :: [Sig] -> Sig -> Sig -- | Step sequencer with unipolar inveted square. isqrSeq :: [Sig] -> Sig -> Sig -- | Step sequencer with unipolar exponential triangle. xtriSeq :: [Sig] -> Sig -> Sig -- | A sequence of unipolar waves with pulse width moulation (see upw). The -- first argument is a duty cycle in range 0 to 1. pwSeq :: Sig -> [Sig] -> Sig -> Sig -- | A sequence of unipolar inverted waves with pulse width moulation (see -- upw). The first argument is a duty cycle in range 0 to 1. ipwSeq :: Sig -> [Sig] -> Sig -> Sig -- | A sequence of unipolar triangle waves with ramp factor (see uramp). -- The first argument is a ramp factor cycle in range 0 to 1. rampSeq :: Sig -> [Sig] -> Sig -> Sig -- | A sequence of unipolar inverted triangle waves with ramp factor (see -- uramp). The first argument is a ramp factor cycle in range 0 to 1. irampSeq :: Sig -> [Sig] -> Sig -> Sig -- | A sequence of unipolar exponential triangle waves with ramp factor -- (see uramp). The first argument is a ramp factor cycle in range 0 to -- 1. xrampSeq :: Sig -> [Sig] -> Sig -> Sig -- | A sequence of unipolar inverted exponential triangle waves with ramp -- factor (see uramp). The first argument is a ramp factor cycle in range -- 0 to 1. ixrampSeq :: Sig -> [Sig] -> Sig -> Sig -- | The looping ADSR envelope. -- --
--   xadsrSeq attack decay sustain release weights frequency
--   
-- -- The sum of attack, decay, sustain and release time durations should be -- equal to one. adsrSeq :: Sig -> Sig -> Sig -> Sig -> [Sig] -> Sig -> Sig -- | The looping exponential ADSR envelope. there is a fifth segment at the -- end of the envelope during which the envelope equals to zero. -- --
--   xadsrSeq attack decay sustain release weights frequency
--   
-- -- The sum of attack, decay, sustain and release time durations should be -- equal to one. xadsrSeq :: Sig -> Sig -> Sig -> Sig -> [Sig] -> Sig -> Sig -- | The looping ADSR envelope with the rest at the end. -- --
--   adsrSeq attack decay sustain release rest weights frequency
--   
-- -- The sum of attack, decay, sustain, release and rest time durations -- should be equal to one. adsrSeq_ :: Sig -> Sig -> Sig -> Sig -> Sig -> [Sig] -> Sig -> Sig -- | The looping exponential ADSR envelope. there is a fifth segment at the -- end of the envelope during which the envelope equals to zero. -- --
--   xadsrSeq_ attack decay sustain release rest weights frequency
--   
-- -- The sum of attack, decay, sustain, release and rest time durations -- should be equal to one. xadsrSeq_ :: Sig -> Sig -> Sig -> Sig -> Sig -> [Sig] -> Sig -> Sig -- | The seq is a type for step sequencers. The step sequencer is a -- monophonic control signal. Most often step sequencer is a looping -- segment of some values. It's used to create bas lines or conrtrol the -- frequency of the filter in dub or trance music. There are simple -- functions for creation of step sequencers defined in the module -- Csound.Air.Envelope. -- -- Basically the step sequence is a list of pairs: -- --
--   [(valA, durA), (valB, durB), (valC, durC)]
--   
-- -- each pair defines a segment of height valN that lasts for durN. The -- sequence is repeated with the given frequency. Each segment has -- certain shape. It can be a constant or line segment or fragment of -- square wave or fragment of an adsr envelope. There are many predefined -- functions. -- -- With Seq we can construct control signals in very flexible way. We can -- use the score composition functions for creation of sequences. We can -- use mel for sequencing of individual steps, we can use -- str for stretching the sequence in time domain, we can delay -- with del. -- -- Here is an example: -- --
--   dac $ tri $ seqConst [str 0.25 $ mel [440, 220, 330, 220], 110] 1
--   
-- -- We can see how the function str was used to make a certain -- segment faster. There are numerical instaces for Seq. Bt it defines -- only functions fronInteger and fromRational. data Seq -- | Creates a toSeq :: Sig -> Seq -- | Squashes a sequence to a single beat. onBeat :: Seq -> Seq -- | Squashes a sequence to a single beat and then stretches to the given -- value. onBeats :: Sig -> Seq -> Seq -- | A sequence of constant segments. seqConst :: [Seq] -> Sig -> Sig -- | A linear sequence. seqLin :: [Seq] -> Sig -> Sig -- | An exponential sequence. seqExp :: [Seq] -> Sig -> Sig -- | The sequence of pulse width waves. The first argument is a duty cycle -- (ranges from 0 to 1). seqPw :: Sig -> [Seq] -> Sig -> Sig -- | The sequence of inversed pulse width waves. iseqPw :: Sig -> [Seq] -> Sig -> Sig -- | The sequence of square waves. seqSqr :: [Seq] -> Sig -> Sig -- | The sequence of inversed square waves. iseqSqr :: [Seq] -> Sig -> Sig -- | The sequence of sawtooth waves. seqSaw :: [Seq] -> Sig -> Sig -- | The sequence of inversed sawtooth waves. iseqSaw :: [Seq] -> Sig -> Sig -- | The sequence of exponential sawtooth waves. xseqSaw :: [Seq] -> Sig -> Sig -- | The sequence of inversed exponential sawtooth waves. ixseqSaw :: [Seq] -> Sig -> Sig -- | The sequence of ramp functions. The first argument is a duty cycle. seqRamp :: Sig -> [Seq] -> Sig -> Sig -- | The sequence of inversed ramp functions. The first argument is a duty -- cycle. iseqRamp :: Sig -> [Seq] -> Sig -> Sig -- | The sequence of triangular waves. seqTri :: [Seq] -> Sig -> Sig -- | The sequence of ramped triangular waves. seqTriRamp :: Sig -> [Seq] -> Sig -> Sig -- | The sequence of ADSR-envelopes. -- --
--   seqAdsr att dec sus rel
--   
-- -- It has to be: -- --
--   att + dec + sus_time + rel == 1
--   
seqAdsr :: Sig -> Sig -> Sig -> Sig -> [Seq] -> Sig -> Sig -- | The sequence of exponential ADSR-envelopes. xseqAdsr :: Sig -> Sig -> Sig -> Sig -> [Seq] -> Sig -> Sig -- | The sequence of ADSR-envelopes with rest at the end. -- --
--   seqAdsr att dec sus rel rest
--   
-- -- It has to be: -- --
--   att + dec + sus_time + rel + rest == 1
--   
seqAdsr_ :: Sig -> Sig -> Sig -> Sig -> Sig -> [Seq] -> Sig -> Sig -- | The sequence of exponential ADSR-envelopes with rest at the end. xseqAdsr_ :: Sig -> Sig -> Sig -> Sig -> Sig -> [Seq] -> Sig -> Sig -- | Function for creation of accented beats. The steady beat pattern of -- accents is repeated. The first argument describes the list of -- integers. Each integer is a main beat and the length of the beat. We -- can create a typical latino beat: -- --
--   dac $ mul (seqSaw [seqPat [3, 3, 2]] 1) white
--   
seqPat :: [Int] -> Seq -- | It's like seqPat but inplace of rests it fills the gaps with -- segments ascending in value. -- --
--   dac $ mul (seqSaw [seqAsc [3, 3, 2]] 1) white
--   
seqAsc :: [Int] -> Seq -- | It's like seqPat but inplace of rests it fills the gaps with -- segments descending in value. -- --
--   dac $ mul (seqSaw [seqDesc [3, 3, 2]] 1) white
--   
seqDesc :: [Int] -> Seq -- | It's like seqPat but inplace of rests it fills the gaps with -- 0.5s. -- --
--   dac $ mul (seqSaw [seqHalf [3, 3, 2]] 1) white
--   
seqHalf :: [Int] -> Seq instance Csound.Air.Envelope.HumanizeValueTime ([Csound.Air.Envelope.Seq] -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.Envelope.HumanizeValueTime ([Csound.Typed.Types.Prim.D] -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.Envelope.HumanizeValueTime ([Csound.Typed.Types.Prim.D] -> Csound.Typed.Types.Prim.D -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.Envelope.HumanizeTime ([Csound.Air.Envelope.Seq] -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.Envelope.HumanizeTime ([Csound.Typed.Types.Prim.D] -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.Envelope.HumanizeTime ([Csound.Typed.Types.Prim.D] -> Csound.Typed.Types.Prim.D -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.Envelope.HumanizeValue ([Csound.Air.Envelope.Seq] -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.Envelope.HumanizeValue ([Csound.Typed.Types.Prim.Sig] -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.Envelope.HumanizeValue ([Csound.Typed.Types.Prim.D] -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.Envelope.HumanizeValue ([Csound.Typed.Types.Prim.D] -> Csound.Typed.Types.Prim.D -> Csound.Typed.Types.Prim.Sig) instance Temporal.Class.Duration Csound.Air.Envelope.Seq instance Temporal.Class.Rest Csound.Air.Envelope.Seq instance Temporal.Class.Delay Csound.Air.Envelope.Seq instance Temporal.Class.Melody Csound.Air.Envelope.Seq instance Temporal.Class.Stretch Csound.Air.Envelope.Seq instance GHC.Num.Num Csound.Air.Envelope.Seq instance GHC.Real.Fractional Csound.Air.Envelope.Seq -- | Argument modifiers. Functions to transform arguments of the function -- with flexibility. module Csound.Air.ModArg class ModArg1 a b where { type family ModArgOut1 a b :: *; } modArg1 :: ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b class ModArg2 a b where { type family ModArgOut2 a b :: *; } modArg2 :: ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b class ModArg3 a b where { type family ModArgOut3 a b :: *; } modArg3 :: ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b class ModArg4 a b where { type family ModArgOut4 a b :: *; } modArg4 :: ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b delModArg1 :: (SigSpace a, ModArg1 a b) => D -> D -> Sig -> a -> b -> ModArgOut1 a b delModArg2 :: (SigSpace a, ModArg2 a b) => D -> D -> Sig -> a -> b -> ModArgOut2 a b delModArg3 :: (SigSpace a, ModArg3 a b) => D -> D -> Sig -> a -> b -> ModArgOut3 a b delModArg4 :: (SigSpace a, ModArg4 a b) => D -> D -> Sig -> a -> b -> ModArgOut4 a b oscArg1 :: ModArg1 Sig b => Sig -> Sig -> b -> ModArgOut1 Sig b oscArg2 :: ModArg2 Sig b => Sig -> Sig -> b -> ModArgOut2 Sig b oscArg3 :: ModArg3 Sig b => Sig -> Sig -> b -> ModArgOut3 Sig b oscArg4 :: ModArg4 Sig b => Sig -> Sig -> b -> ModArgOut4 Sig b triArg1 :: ModArg1 Sig b => Sig -> Sig -> b -> ModArgOut1 Sig b triArg2 :: ModArg2 Sig b => Sig -> Sig -> b -> ModArgOut2 Sig b triArg3 :: ModArg3 Sig b => Sig -> Sig -> b -> ModArgOut3 Sig b triArg4 :: ModArg4 Sig b => Sig -> Sig -> b -> ModArgOut4 Sig b sqrArg1 :: ModArg1 Sig b => Sig -> Sig -> b -> ModArgOut1 Sig b sqrArg2 :: ModArg2 Sig b => Sig -> Sig -> b -> ModArgOut2 Sig b sqrArg3 :: ModArg3 Sig b => Sig -> Sig -> b -> ModArgOut3 Sig b sqrArg4 :: ModArg4 Sig b => Sig -> Sig -> b -> ModArgOut4 Sig b sawArg1 :: ModArg1 Sig b => Sig -> Sig -> b -> ModArgOut1 Sig b sawArg2 :: ModArg2 Sig b => Sig -> Sig -> b -> ModArgOut2 Sig b sawArg3 :: ModArg3 Sig b => Sig -> Sig -> b -> ModArgOut3 Sig b sawArg4 :: ModArg4 Sig b => Sig -> Sig -> b -> ModArgOut4 Sig b rndOscArg1 :: ModArg1 (SE Sig) b => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b rndOscArg2 :: ModArg2 (SE Sig) b => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b rndOscArg3 :: ModArg3 (SE Sig) b => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b rndOscArg4 :: ModArg4 (SE Sig) b => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b rndTriArg1 :: ModArg1 (SE Sig) b => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b rndTriArg2 :: ModArg2 (SE Sig) b => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b rndTriArg3 :: ModArg3 (SE Sig) b => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b rndTriArg4 :: ModArg4 (SE Sig) b => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b rndSqrArg1 :: ModArg1 (SE Sig) b => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b rndSqrArg2 :: ModArg2 (SE Sig) b => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b rndSqrArg3 :: ModArg3 (SE Sig) b => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b rndSqrArg4 :: ModArg4 (SE Sig) b => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b rndSawArg1 :: ModArg1 (SE Sig) b => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b rndSawArg2 :: ModArg2 (SE Sig) b => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b rndSawArg3 :: ModArg3 (SE Sig) b => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b rndSawArg4 :: ModArg4 (SE Sig) b => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delOscArg1 :: ModArg1 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b delOscArg2 :: ModArg2 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b delOscArg3 :: ModArg3 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b delOscArg4 :: ModArg4 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b delTriArg1 :: ModArg1 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b delTriArg2 :: ModArg2 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b delTriArg3 :: ModArg3 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b delTriArg4 :: ModArg4 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b delSqrArg1 :: ModArg1 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b delSqrArg2 :: ModArg2 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b delSqrArg3 :: ModArg3 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b delSqrArg4 :: ModArg4 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b delSawArg1 :: ModArg1 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b delSawArg2 :: ModArg2 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b delSawArg3 :: ModArg3 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b delSawArg4 :: ModArg4 Sig b => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b delRndOscArg1 :: ModArg1 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delRndOscArg2 :: ModArg2 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delRndOscArg3 :: ModArg3 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delRndOscArg4 :: ModArg4 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delRndTriArg1 :: ModArg1 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delRndTriArg2 :: ModArg2 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delRndTriArg3 :: ModArg3 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delRndTriArg4 :: ModArg4 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delRndSqrArg1 :: ModArg1 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delRndSqrArg2 :: ModArg2 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delRndSqrArg3 :: ModArg3 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delRndSqrArg4 :: ModArg4 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delRndSawArg1 :: ModArg1 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delRndSawArg2 :: ModArg2 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delRndSawArg3 :: ModArg3 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delRndSawArg4 :: ModArg4 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b noiseArg1 :: ModArg1 (SE Sig) b => Sig -> b -> ModArgOut1 (SE Sig) b noiseArg2 :: ModArg2 (SE Sig) b => Sig -> b -> ModArgOut2 (SE Sig) b noiseArg3 :: ModArg3 (SE Sig) b => Sig -> b -> ModArgOut3 (SE Sig) b noiseArg4 :: ModArg4 (SE Sig) b => Sig -> b -> ModArgOut4 (SE Sig) b pinkArg1 :: ModArg1 (SE Sig) b => Sig -> b -> ModArgOut1 (SE Sig) b pinkArg2 :: ModArg2 (SE Sig) b => Sig -> b -> ModArgOut2 (SE Sig) b pinkArg3 :: ModArg3 (SE Sig) b => Sig -> b -> ModArgOut3 (SE Sig) b pinkArg4 :: ModArg4 (SE Sig) b => Sig -> b -> ModArgOut4 (SE Sig) b jitArg1 :: ModArg1 (SE Sig) b => Sig -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b jitArg2 :: ModArg2 (SE Sig) b => Sig -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b jitArg3 :: ModArg3 (SE Sig) b => Sig -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b jitArg4 :: ModArg4 (SE Sig) b => Sig -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b gaussArg1 :: ModArg1 (SE Sig) b => Sig -> b -> ModArgOut1 (SE Sig) b gaussArg2 :: ModArg2 (SE Sig) b => Sig -> b -> ModArgOut2 (SE Sig) b gaussArg3 :: ModArg3 (SE Sig) b => Sig -> b -> ModArgOut3 (SE Sig) b gaussArg4 :: ModArg4 (SE Sig) b => Sig -> b -> ModArgOut4 (SE Sig) b gaussiArg1 :: ModArg1 (SE Sig) b => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b gaussiArg2 :: ModArg2 (SE Sig) b => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b gaussiArg3 :: ModArg3 (SE Sig) b => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b gaussiArg4 :: ModArg4 (SE Sig) b => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delNoiseArg1 :: ModArg1 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b delNoiseArg2 :: ModArg2 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b delNoiseArg3 :: ModArg3 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b delNoiseArg4 :: ModArg4 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b delPinkArg1 :: ModArg1 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b delPinkArg2 :: ModArg2 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b delPinkArg3 :: ModArg3 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b delPinkArg4 :: ModArg4 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b delJitArg1 :: ModArg1 (SE Sig) b => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delJitArg2 :: ModArg2 (SE Sig) b => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delJitArg3 :: ModArg3 (SE Sig) b => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delJitArg4 :: ModArg4 (SE Sig) b => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delGaussArg1 :: ModArg1 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b delGaussArg2 :: ModArg2 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b delGaussArg3 :: ModArg3 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b delGaussArg4 :: ModArg4 (SE Sig) b => D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b delGaussiArg1 :: ModArg1 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delGaussiArg2 :: ModArg2 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delGaussiArg3 :: ModArg3 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delGaussiArg4 :: ModArg4 (SE Sig) b => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b adsrArg1 :: ModArg1 Sig b => Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b adsrArg2 :: ModArg2 Sig b => Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b adsrArg3 :: ModArg3 Sig b => Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b adsrArg4 :: ModArg4 Sig b => Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b xadsrArg1 :: ModArg1 Sig b => Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b xadsrArg2 :: ModArg2 Sig b => Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b xadsrArg3 :: ModArg3 Sig b => Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b xadsrArg4 :: ModArg4 Sig b => Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b delAdsrArg1 :: ModArg1 Sig b => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b delAdsrArg2 :: ModArg2 Sig b => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b delAdsrArg3 :: ModArg3 Sig b => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b delAdsrArg4 :: ModArg4 Sig b => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b delXadsrArg1 :: ModArg1 Sig b => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b delXadsrArg2 :: ModArg2 Sig b => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b delXadsrArg3 :: ModArg3 Sig b => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b delXadsrArg4 :: ModArg4 Sig b => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b instance Csound.Air.ModArg.ModArg4 Csound.Typed.Types.Prim.Sig (a -> b -> c -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg4 Csound.Typed.Types.Prim.Sig (a -> b -> c -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg4 Csound.Typed.Types.Prim.Sig (a -> b -> c -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg4 Csound.Typed.Types.Prim.Sig (a -> b -> c -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg4 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> c -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg4 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> c -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg4 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> c -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg4 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> c -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg3 Csound.Typed.Types.Prim.Sig (a -> b -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg3 Csound.Typed.Types.Prim.Sig (a -> b -> Csound.Typed.Types.Prim.Sig -> c -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg3 Csound.Typed.Types.Prim.Sig (a -> b -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg3 Csound.Typed.Types.Prim.Sig (a -> b -> Csound.Typed.Types.Prim.Sig -> c -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg3 Csound.Typed.Types.Prim.Sig (a -> b -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg3 Csound.Typed.Types.Prim.Sig (a -> b -> Csound.Typed.Types.Prim.Sig -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg3 Csound.Typed.Types.Prim.Sig (a -> b -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg3 Csound.Typed.Types.Prim.Sig (a -> b -> Csound.Typed.Types.Prim.Sig -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg3 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg3 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> Csound.Typed.Types.Prim.Sig -> c -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg3 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg3 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> Csound.Typed.Types.Prim.Sig -> c -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg3 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg3 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> Csound.Typed.Types.Prim.Sig -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg3 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg3 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> b -> Csound.Typed.Types.Prim.Sig -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> b -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> b -> c -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> b -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> b -> c -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> b -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> b -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> b -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 Csound.Typed.Types.Prim.Sig (a -> Csound.Typed.Types.Prim.Sig -> b -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> b -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> b -> c -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> b -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> b -> c -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> b -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> b -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> b -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg2 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (a -> Csound.Typed.Types.Prim.Sig -> b -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> b -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> b -> c -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> b -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> b -> c -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> b -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> b -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> b -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 Csound.Typed.Types.Prim.Sig (Csound.Typed.Types.Prim.Sig -> a -> b -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> b -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> b -> c -> Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> b -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> b -> c -> Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> b -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> b -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> b -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) instance Csound.Air.ModArg.ModArg1 (Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig) (Csound.Typed.Types.Prim.Sig -> a -> b -> c -> Csound.Typed.GlobalState.SE.SE Csound.Typed.Types.Prim.Sig2) -- | Patches. module Csound.Air.Patch -- | A simple csound note (good for playing with midi-keyboard). It's a -- pair of amplitude (0 to 1) and freuqncy (Hz). type CsdNote a = (a, a) -- | An instrument transforms a note to a signal. type Instr a b = CsdNote a -> SE b -- | Data type for monophonic instruments. type MonoInstr a = MonoArg -> SE a -- | An effect processes the input signal. type Fx a = a -> SE a -- | Mono effect. type Fx1 = Fx Sig -- | Stereo effect. type Fx2 = Fx Sig2 -- | Fx specification. It;s a pair of dryWet ratio and a transformation -- function. data FxSpec a FxSpec :: DryWetRatio -> Fx a -> FxSpec a [fxMix] :: FxSpec a -> DryWetRatio [fxFun] :: FxSpec a -> Fx a type DryWetRatio = Sig -- | Mono-output patch. type Patch1 = Patch Sig -- | Stereo-output patch. type Patch2 = Patch Sig2 -- | The patch can be: -- -- data Patch a MonoSynt :: MonoSyntSpec -> GenMonoInstr a -> Patch a PolySynt :: PolySyntSpec -> GenInstr D a -> Patch a SetSkin :: SyntSkin -> Patch a -> Patch a FxChain :: [GenFxSpec a] -> Patch a -> Patch a SplitPatch :: Patch a -> D -> Patch a -> Patch a LayerPatch :: [(Sig, Patch a)] -> Patch a data PolySyntSpec PolySyntSpec :: MidiChn -> PolySyntSpec [polySyntChn] :: PolySyntSpec -> MidiChn -- | Specification for monophonic synthesizer. -- -- data MonoSyntSpec MonoSyntSpec :: MidiChn -> Maybe D -> MonoSyntSpec [monoSyntChn] :: MonoSyntSpec -> MidiChn [monoSyntSlideTime] :: MonoSyntSpec -> Maybe D -- | Common parameters for patches. We use this type to parametrize the -- patch with some tpyes of arguments that we'd like to be able to change -- after patch is already constructed. For instance the filter type can -- greatly change the character of the patch. So by making patches depend -- on filter type we can let the user to change the filter type and leave -- the algorithm the same. It's like changing between trademarks. Moog -- sound vs Korg sound. -- -- The instruments in the patches depend on the SyntSkin through -- the Reader data type. -- -- If user doesn't supply any syntSkin value the default is used -- (mlp -- moog low pass filter). Right now the data type is just -- a synonym for filter but it can become a data type with more -- parameters in the future releases. type SyntSkin = ResonFilter -- | Generic polyphonic instrument. It depends on SyntSkin. type GenInstr a b = Reader SyntSkin (Instr a b) -- | Generic monophonic instrument. It depends on SyntSkin. type GenMonoInstr a = Reader SyntSkin (MonoInstr a) -- | Generic FX. It depends on SyntSkin. type GenFxSpec a = Reader SyntSkin (FxSpec a) -- | Constructor for polyphonic synthesizer. It expects a function from -- notes to signals. polySynt :: Instr D a -> Patch a -- | Constructor for monophonic synthesizer. The instrument is defned on -- the raw monophonic aruments (see MonoArg). monoSynt :: MonoInstr a -> Patch a -- | Constructor for monophonic synth with envelope generator. The envelope -- generator is synced with note triggering. So it restarts itself when -- the note is retriggered. The envelope generator is a simple ADSR -- gennerator see the type MonoAdsr. adsrMono :: (MonoAdsr -> Instr Sig a) -> Patch a -- | Constructor for monophonic synth with envelope generator and flexible -- choice of filter. It's just like adsrMono but the user lately -- can change filter provided in the first argument to some another -- filter. adsrMonoFilter :: (ResonFilter -> MonoAdsr -> Instr Sig a) -> Patch a -- | Constructor for FX-specification. -- --
--   fxSpec dryWetRatio fxFun
--   
fxSpec :: Sig -> Fx a -> GenFxSpec a -- | Constructor for polyphonic synthesizer with flexible choice of the -- low-pass filter. If we use the filter from the first argument user -- lately can change it to some another filter. It defaults to mlp. polySyntFilter :: (ResonFilter -> Instr D a) -> Patch a -- | Constructor for monophonic synthesizer with flexible filter choice. monoSyntFilter :: (ResonFilter -> MonoInstr a) -> Patch a -- | Constructor for FX-specification with flexible filter choice. -- --
--   fxSpec dryWetRatio fxFun
--   
fxSpecFilter :: Sig -> (ResonFilter -> Fx a) -> GenFxSpec a mapPatchInstr :: (Instr D a -> Instr D a) -> Patch a -> Patch a mapMonoPolyInstr :: (MonoInstr a -> MonoInstr a) -> (Instr D a -> Instr D a) -> Patch a -> Patch a -- | Transpose the patch by a given ratio. We can use the functions -- semitone, cent to calculate the ratio. transPatch :: D -> Patch a -> Patch a -- | Removes all effects from the patch. dryPatch :: Patch a -> Patch a -- | Renders the effect chain to a single function. getPatchFx :: (SigSpace a, Sigs a) => Maybe SyntSkin -> [GenFxSpec a] -> Fx a -- | Sets the dryWet ratio of the effects wwithin the patch. setFxMix :: Sig -> Patch a -> Patch a -- | Sets the dryWet ratios for the chain of the effects wwithin the patch. setFxMixes :: [Sig] -> Patch a -> Patch a -- | Sets the midi channel for all instruments in the patch. setMidiChn :: MidiChn -> Patch a -> Patch a -- | Plays a patch with midi. atMidi :: (SigSpace a, Sigs a) => Patch a -> SE a -- | Plays a patch with event stream. atSched :: (SigSpace a, Sigs a) => Patch a -> Evt (Sco (CsdNote D)) -> SE a -- | Plays a patch with event stream with stop-note event stream. atSchedUntil :: (SigSpace a, Sigs a) => Patch a -> Evt (CsdNote D) -> Evt b -> SE a -- | Plays notes indefinetely (it's more useful for monophonic -- synthesizers). atSchedHarp :: (SigSpace a, Sigs a) => Patch a -> Evt (CsdNote D) -> SE a -- | Plays a patch with scores. atSco :: forall a. (SigSpace a, Sigs a) => Patch a -> Sco (CsdNote D) -> Sco (Mix a) -- | Plays a patch with a single infinite note. atNote :: (SigSpace a, Sigs a) => Patch a -> CsdNote D -> SE a -- | Adds an effect to the patch's instrument. addInstrFx :: Fx a -> Patch a -> Patch a -- | Appends an effect before patch's effect. addPreFx :: DryWetRatio -> Fx a -> Patch a -> Patch a -- | Appends an effect after patch's effect. addPostFx :: DryWetRatio -> Fx a -> Patch a -> Patch a -- | Make an effect out of a pure function. fxSig :: SigSpace a => (Sig -> Sig) -> GenFxSpec a -- | Make an effect out of a pure function and specify dry/wet ratio. fxSigMix :: SigSpace a => Sig -> (Sig -> Sig) -> GenFxSpec a -- | Make an effect out of a stereo pure function. fxSig2 :: (Sig2 -> Sig2) -> GenFxSpec Sig2 -- | Make an effect out of a stereo pure function and specify dry/wet -- ratio. fxSigMix2 :: Sig -> (Sig2 -> Sig2) -> GenFxSpec Sig2 -- | Adds post fx with pure signal function. mapFx :: SigSpace a => (Sig -> Sig) -> Patch a -> Patch a -- | Adds post fx with pure signal function and specifies dry/wet ratio. mapFx' :: SigSpace a => Sig -> (Sig -> Sig) -> Patch a -> Patch a -- | Adds post fx with effectful signal function. bindFx :: BindSig a => (Sig -> SE Sig) -> Patch a -> Patch a -- | Adds post fx with effectful signal function and specifies dry/wet -- ratio. bindFx' :: BindSig a => Sig -> (Sig -> SE Sig) -> Patch a -> Patch a -- | Adds pre fx with pure signal function. mapPreFx :: SigSpace a => (Sig -> Sig) -> Patch a -> Patch a -- | Adds pre fx with pure signal function and specifies dry/wet ratio. mapPreFx' :: SigSpace a => Sig -> (Sig -> Sig) -> Patch a -> Patch a -- | Adds pre fx with effectful signal function. bindPreFx :: BindSig a => (Sig -> SE Sig) -> Patch a -> Patch a -- | Adds pre fx with effectful signal function and specifies dry/wet -- ratio. bindPreFx' :: BindSig a => Sig -> (Sig -> SE Sig) -> Patch a -> Patch a -- | Harmnoic series of patches. harmonPatch :: (SigSpace b, Sigs b) => [Sig] -> [D] -> Patch b -> Patch b -- | Adds an octave below note for a given patch to make the sound deeper. deepPad :: (SigSpace b, Sigs b) => Patch b -> Patch b -- | Plays a patch when the condition signal is satisfied. Can be useful -- for switches. patchWhen :: Sigs a => BoolSig -> Patch a -> Patch a -- | Mix two patches together. mixInstr :: (SigSpace b, Num b) => Sig -> Patch b -> Patch b -> Patch b withSmallRoom :: Patch2 -> Patch2 withSmallRoom' :: DryWetRatio -> Patch2 -> Patch2 withSmallHall :: Patch2 -> Patch2 withSmallHall' :: DryWetRatio -> Patch2 -> Patch2 withLargeHall :: Patch2 -> Patch2 withLargeHall' :: DryWetRatio -> Patch2 -> Patch2 withMagicCave :: Patch2 -> Patch2 withMagicCave' :: DryWetRatio -> Patch2 -> Patch2 -- | Sound font patch. sfPatch :: Sf -> Patch2 -- | Sound font patch with a bit of reverb. sfPatchHall :: Sf -> Patch2 -- | Transform the spec for monophonic patch. onMonoSyntSpec :: (MonoSyntSpec -> MonoSyntSpec) -> Patch a -> Patch a -- | Sets the slide time for pitch and amplitude of monophomic -- synthesizers. setMonoSlide :: D -> Patch a -> Patch a -- | Sets the monophonic to sharp transition and quick release. setMonoSharp :: Patch a -> Patch a -- | Triggers patch with Csound API. It creates a named instruement with -- given name (first argument). -- -- It simulates the midi-like instrument. Notes are encoded with -- messages: -- --
--   i "givenName" 1 pitchKey volumeKey     -- note on
--   i "givenName" 0 pitchKey volumeKey     -- note off
--   
patchByNameMidi :: (SigSpace a, Sigs a) => String -> Patch a -> SE a -- | Plays a patch with midi with given temperament (see -- Csound.Tuning). atMidiTemp :: (SigSpace a, Sigs a) => Temp -> Patch a -> SE a -- | Triggers patch with Csound API. It creates a named instruement with -- given name (second argument). It behaves like the function -- patchByNameMidi but we can specify custom temperament. patchByNameMidiTemp :: (SigSpace a, Sigs a) => Temp -> String -> Patch a -> SE a instance Csound.IO.RenderCsd Csound.Air.Patch.Patch1 instance Csound.IO.RenderCsd Csound.Air.Patch.Patch2 instance Csound.Typed.Types.SigSpace.SigSpace a => Csound.Typed.Types.SigSpace.SigSpace (Csound.Air.Patch.Patch a) instance Data.Default.Class.Default Csound.Air.Patch.PolySyntSpec instance Data.Default.Class.Default Csound.Air.Patch.MonoSyntSpec -- | Patterns module Csound.Air.Misc -- | Mean value. mean :: Fractional a => [a] -> a -- | Adds vibrato to the sound unit. Sound units is a function that takes -- in a frequency. vibrate :: Sig -> Sig -> (Sig -> a) -> Sig -> a -- | Adds a random vibrato to the sound unit. Sound units is a function -- that takes in a frequency. randomPitch :: Sig -> Sig -> (Sig -> a) -> Sig -> SE a -- | Chorus takes a number of copies, chorus width and wave shape. chorusPitch :: Int -> Sig -> (Sig -> Sig) -> Sig -> Sig -- | Applies a resonator to the signals. A resonator is a list of band pass -- filters. A list contains the parameters for the filters: -- --
--   [(centerFrequency, bandWidth)]
--   
resons :: [(Sig, Sig)] -> Sig -> Sig -- | A resonator with user defined band pass filter. Warning: a filter -- takes in a center frequency, band width and the signal. The signal -- comes last (this order is not standard in the Csound but it's more -- convinient to use with Haskell). resonsBy :: (cps -> bw -> Sig -> Sig) -> [(cps, bw)] -> Sig -> Sig -- | Chain of mass-spring-damping filters. -- --
--   modes params baseCps exciter
--   
-- -- modes :: [(Sig, Sig)] -> Sig -> Sig -> Sig -- | Mixes dry and wet signals. -- --
--   dryWet ratio effect asig
--   
-- -- dryWet :: Sig -> (Sig -> Sig) -> Sig -> Sig -- | Reads table once during the note length. once :: Tab -> Sig -- | Reads table once during a given period of time. onceBy :: D -> Tab -> Sig -- | Reads table several times during the note length. several :: Tab -> Sig -> Sig -- | Doubles the mono signal to get the stereo signal. fromMono :: Sig -> (Sig, Sig) -- | Selects odd elements from the list. odds :: [a] -> [a] -- | Selects even elements from the list. evens :: [a] -> [a] -- | Random panning rndPan :: Sig -> SE Sig2 -- | Random panning rndPan2 :: Sig2 -> SE Sig2 -- | Random volume -- --
--   gaussVol (minVolume, maxVolume)
--   
rndVol :: SigSpace a => (D, D) -> a -> SE a -- | Random volume (with gauss distribution) -- --
--   gaussVol radiusOfDistribution
--   
gaussVol :: SigSpace a => D -> a -> SE a -- | It picks a signal from the list by integer index. The original value -- is taken from the head of the list (the first element). selector :: (Num a, SigSpace a) => [a] -> Sig -> a -- | Hi-fi output for stereo signals. Saves the stereo signal to file. The -- length of the file is defined in seconds. -- --
--   writeHifi fileLength fileName asig
--   
writeHifi :: D -> String -> SE Sig2 -> IO () -- | Creates running arpeggios. -- --
--   arpeggiBy ampWeights pitches instrument cps
--   
-- -- It plays an instrument with fast sequence of notes. We can specify the -- pitches and amplitude weights of the notes as well as frequency of -- repetition. arpeggi :: SigSpace a => [Sig] -> [Sig] -> (Sig -> a) -> Sig -> a -- | Creates running arpeggios. -- --
--   arpeggiBy ampWave pitchwave ampWeights pitches instrument cps
--   
-- -- It plays an instrument with fast sequence of notes. We can specify -- amplitude envelope wave, pitch envelope wave, the pitches and -- amplitude weights of the notes as well as frequency of repetition. arpBy :: SigSpace a => ([Sig] -> Sig -> Sig) -> ([Sig] -> Sig -> Sig) -> [Sig] -> [Sig] -> (Sig -> a) -> Sig -> a -- | Low-pass filter pictured as joystick. Ox is for center frequency and -- Oy is for resonance. lpJoy :: Source (Sig -> Sig) -- | Delay a signal by certain number of seconds There is a subtle -- difference between the function and the function delaySnd. -- The delaySig is for delaying a signal on a micro level (the -- delay time have to be small) It's implemented with delay buffer in the -- csound. But delaySnd is for delaying on macro level (the -- delay time can be big). It's implemented with scores and invocation of -- hidden instruments. -- --
--   delaySig numOfSamples asig
--   
delaySig :: D -> Sig -> Sig -- | Delay a control signal by single sample. delay1k :: Sig -> Sig -- | Wave shaper. The signal should be bipolar. It ranges within the -- interval [-1, 1]. -- --
--   wshaper table amount asig
--   
-- -- wave shaper transforms the input signal with the table. The amount of -- transformation scales the signal from 0 to 1. the amount is ratio of -- scaling. It expects the values from the interval [0, 1]. wshaper :: Tab -> Sig -> Sig -> Sig -- | Wave shaper with sigmoid. -- --
--   genSaturator sigmoidRadius amount asig
--   
-- -- genSaturator :: Double -> Sig -> Sig -> Sig -- | Alias for -- --
--   genSaturator 10
--   
saturator :: Sig -> Sig -> Sig -- | Alias for -- --
--   genSaturator 5
--   
mildSaturator :: Sig -> Sig -> Sig -- | Alias for -- --
--   genSaturator 50
--   
hardSaturator :: Sig -> Sig -> Sig -- | Alias for -- --
--   genSaturator 100
--   
hardSaturator2 :: Sig -> Sig -> Sig -- | Chains all functions in the list. funSeq :: [a -> a] -> a -> a -- | Applies all functions in the list to the given input and summs them -- up. funPar :: Num a => [a -> a] -> a -> a -- | Metronome. -- --
--   ticks n bpm
--   
ticks :: Int -> Sig -> Sig -- | Metronome with a chain of accents. A typical 7/8 for example: -- --
--   dac $ nticks [3, 2, 2] (135 * 2)
--   
nticks :: [Int] -> Sig -> Sig ticks2 :: Int -> Sig -> Sig nticks2 :: [Int] -> Sig -> Sig ticks3 :: Int -> Sig -> Sig nticks3 :: [Int] -> Sig -> Sig ticks4 :: Int -> Sig -> Sig nticks4 :: [Int] -> Sig -> Sig testDrone :: D -> SE Sig2 testDrone2 :: D -> SE Sig2 testDrone3 :: D -> SE Sig2 testDrone4 :: D -> SE Sig2 -- | Detects attacks in the signal. Outputs event stream of attack events. -- --
--   attackTrig threshold sigIn
--   
-- -- threshhold cnmtrols the sensitivity of attack detection. Try out -- different values in [0, 0.2] attackTrig :: Sig -> Sig -> SE (Evt Unit) -- | Detects attacks in the signal. Outputs trigger-signal where 1 is when -- attack happens and 0 otherwise. attackTrigSig :: Sig -> Sig -> SE Sig -- | Make smooth attacks for the input guitar or piano-like sounds. It -- simulates automatic volume control pedal. It detects striken attacks -- and makes them sound more PAD-like. -- -- first argument is threshold that controls sensitivity of attack -- detection. The values like ~ 0.01, 0.02 is good start. -- -- To use it with guitar it's good to add a bit of distortion and -- compression to the signal to make it brighter and then to apply -- several delays to prolong the sustain and release phases. And it's -- good to add some reverb at the end. -- -- Here is an example of how to make ambient guitar with this effect: -- --
--   main = dac proc
--   
--   -- | Let's assume we read guitar from the first input of sound card
--   proc :: Sig2 -> SE Sig2
--   proc (x, _) = mul 1 $ hall 0.25 $
--            fmap ( fromMono . (adele 0.35 1 0.65 0.34) . (adele 0.35 0.25 0.75 0.34) .
--                   saturator 0.3  . tort 0.1 0.25 .
--                   magnus 2 0.25 1.1 0.6 0.4 1.8) $
--             ambiEnv 0.02 x
--   
-- -- So I've added a tape echo with magnus, then goes combo of saturator -- (compressor) and tort (distortion) then goes a couple of delays -- (adele) and the last part is sweet reverb (hall). ambiEnv :: Sig -> Sig -> SE Sig instance Data.Default.Class.Default Csound.Air.Misc.RazorPad -- | A multitap looper. module Csound.Air.Looper -- | The type for fine tuning of the looper. Let's review the values: -- -- data LoopSpec LoopSpec :: [Sig] -> [Fx2] -> [Fx2] -> [Sig] -> [Sig] -> Int -> [[Int]] -> [Sig] -> LoopControl -> LoopSpec [loopMixVal] :: LoopSpec -> [Sig] [loopPrefx] :: LoopSpec -> [Fx2] [loopPostfx] :: LoopSpec -> [Fx2] [loopPrefxVal] :: LoopSpec -> [Sig] [loopPostfxVal] :: LoopSpec -> [Sig] [loopInitInstr] :: LoopSpec -> Int [loopFades] :: LoopSpec -> [[Int]] [loopRepeatFades] :: LoopSpec -> [Sig] [loopControl] :: LoopSpec -> LoopControl -- | External controllers. We can control the looper with UI-widgets but -- sometimes it's convenient to control the loper with some external -- midi-device. This structure mocks all controls (except knobs for -- effects and mix). -- -- -- -- All values are wrapped in the Maybe type. If the value is -- Nothing in the given cell the looper is controled only with -- virtual widgets. -- -- There is an instance of Default for LoopControl with -- all values set to Nothing. It's useful when we want to -- control only a part of parameters externally. We can use the value -- def to set the rest parameters: -- --
--   def { loopTap = Just someEvt }
--   
data LoopControl LoopControl :: Maybe (Evt D) -> Maybe [Evt D] -> Maybe Tick -> Maybe (Evt D) -> LoopControl [loopTap] :: LoopControl -> Maybe (Evt D) [loopFade] :: LoopControl -> Maybe [Evt D] [loopDel] :: LoopControl -> Maybe Tick [loopThrough] :: LoopControl -> Maybe (Evt D) -- | Simple multitap Looper. We can create as many taps as we like also we -- can create fade outs/ins insert effects and control mix. -- --
--   sigLoop spec bpm times imputs
--   
-- -- Arguments: -- -- sigLoop :: LoopSpec -> D -> [D] -> [Sig2] -> Source Sig2 -- | The sigLoop that is adapted for usage with midi instruments. -- It takes a list of midi instruments in place of signal inputs. The -- rest is the same midiLoop :: LoopSpec -> D -> [D] -> [Msg -> SE Sig2] -> Source Sig2 -- | The midiLoop that is adapted for usage with soundfonts. It -- takes in a list of pairs of sound fonts as sound sources. The second -- value in the pair is the release time for the given sound font. sfLoop :: LoopSpec -> D -> [D] -> [(Sf, D)] -> Source Sig2 instance Data.Default.Class.Default Csound.Air.Looper.LoopSpec instance Data.Default.Class.Default Csound.Air.Looper.LoopControl -- | UIs for live performances module Csound.Air.Live -- | Widget that represents a mixer. mixer :: Sigs a => [(String, SE a)] -> Source a -- | Widget that represents a mixer with horizontal grouping of elements. hmixer :: Sigs a => [(String, SE a)] -> Source a -- | Transforms the mono signal to the stereo input for the mixer widget. mixMono :: String -> Sig -> (String, SE Sig2) -- | Creates a widget that represents a stereo signal processing function. -- The parameters of the widget are updated with sliders. For example -- let's create a simple gain widget. It can be encoded like this: -- --
--   uiGain :: Double -> Source FxFun
--   uiGain isOn gain = fxBox "Gain" fx isOn [("gain", gain)]
--      where
--          fx :: Sig -> Sig2 -> Sig2
--          fx = mul
--   
-- -- Let's look at the arguments of the function -- --
--   fxBox name fx isOn args
--   
-- -- -- -- It's cool to set the color of the widget with fxColor -- function. we can make our widgets much more intersting to look at. -- fxBox :: forall a. (FxUI a, Num (FxArg a), Tuple (FxArg a)) => -- String -> a -> Bool -> [(String, Double)] -> Source (Fx -- (FxArg a)) fxBox :: forall a. Sigs a => String -> ([Sig] -> Fx a) -> Bool -> [(String, Double)] -> Source (Fx a) -- | Creates an FX-box from the given visual representation. It inserts a -- big On/Off button atop of the GUI. uiBox :: Sigs a => String -> Source (Fx a) -> Bool -> Source (Fx a) -- | Colors the source widgets. fxColor :: Color -> Source a -> Source a -- | Groups the signal processing widgets. The functions are composed the -- visuals are grouped vertically. fxVer :: [Source (Fx a)] -> Source (Fx a) -- | Groups the signal processing widgets. The functions are composed the -- visuals are grouped horizontally. fxHor :: [Source (Fx a)] -> Source (Fx a) -- | Creates a matrix of fx-boxes. -- --
--   fxGrid columnsSize fxs
--   
-- -- first argument is a number of columns in each row. fxGrid :: Int -> [Source (Fx a)] -> Source (Fx a) -- | Scales the gui for signal processing widgets. fxSca :: Double -> Source (Fx a) -> Source (Fx a) -- | Applies a function to a signal processing function. fxMap :: Fx a -> Source (Fx a) -> Source (Fx a) -- | Applies FX with UI to the input argument. fxApply :: Source (a -> SE b) -> a -> Source b -- | Applies FX to the Patch. atFx :: Source (Fx a) -> Patch a -> Source (Patch a) -- | fxHor for chain that starts with mono effects and proceeds -- with stereo effects. The second argument can contain The transition -- widget (mono to stereo effect) or it can be empty. If it's empty -- automatic conversion will be inserted. fxHorMS :: [Source Fx1] -> Maybe (Source (Sig -> SE Sig2)) -> [Source Fx2] -> Source (Sig -> SE Sig2) -- | fxVer for chain that starts with mono effects and proceeds -- with stereo effects. The second argument can contain The transition -- widget (mono to stereo effect) or it can be empty. If it's empty -- automatic conversion will be inserted. fxVerMS :: [Source Fx1] -> Maybe (Source (Sig -> SE Sig2)) -> [Source Fx2] -> Source (Sig -> SE Sig2) -- | Creates a matrix of fx-boxes. Stacks a list of mono and stereo FXs. -- --
--   fxGrid columnsSize monoFxs maybeBridge stereoFxs
--   
-- -- first argument is a number of columns in each row. fxGridMS :: Int -> [Source Fx1] -> Maybe (Source (Sig -> SE Sig2)) -> [Source Fx2] -> Source (Sig -> SE Sig2) fromMonoFx :: Sigs a => (Sig -> Sig) -> Fx a -- | Chooses an instrument among several alternatives. It uses the -- hradio for GUI groupping. hinstrChooser :: Sigs b => [(String, a -> SE b)] -> Int -> Source (a -> SE b) -- | Chooses an instrument among several alternatives. It uses the -- vradio for GUI groupping. vinstrChooser :: Sigs b => [(String, a -> SE b)] -> Int -> Source (a -> SE b) -- | Chooses a midi instrument among several alternatives. It uses the -- hradio for GUI groupping. hmidiChooser :: Sigs a => [(String, Msg -> SE a)] -> Int -> Source a -- | Chooses a midi instrument among several alternatives. It uses the -- vradio for GUI groupping. vmidiChooser :: Sigs a => [(String, Msg -> SE a)] -> Int -> Source a -- | The distortion widget. The arguments are -- --
--   uiDistort isOn levelOfDistortion drive tone
--   
uiDistort :: Sigs a => Bool -> Double -> Double -> Double -> Source (Fx a) -- | The chorus widget. The arguments are -- --
--   uiChorus isOn mix rate depth width
--   
uiChorus :: Bool -> Double -> Double -> Double -> Double -> Source Fx2 -- | The flanger widget. The arguments are -- --
--   uiFlanger isOn  rate depth delay feedback
--   
uiFlanger :: Sigs a => Bool -> Double -> Double -> Double -> Double -> Source (Fx a) -- | The phaser widget. The arguments are -- --
--   uiPhaser isOn mix feedback rate depth frequency
--   
uiPhaser :: Sigs a => Bool -> Double -> Double -> Double -> Double -> Source (Fx a) -- | The delay widget. The arguments are -- --
--   uiDelay isOn mix feedback delayTime tone
--   
uiDelay :: Sigs a => Bool -> Double -> Double -> Double -> Double -> Source (Fx a) -- | The simplified delay widget. The arguments are -- --
--   uiEcho isOn maxDelayTime delayTime feedback
--   
uiEcho :: Sigs a => Bool -> D -> Double -> Double -> Source (Fx a) -- | The pair of low and high pass filters -- --
--   uiFilter isOn lowPassfrequency highPassFrequency gain
--   
uiFilter :: Sigs a => Bool -> Double -> Double -> Double -> Source (Fx a) -- | The reverb widget. The arguments are: -- --
--   uiReverb mix depth
--   
uiReverb :: Bool -> Double -> Double -> Source Fx2 -- | The gain widget, it's set to on by default. The arguments are -- --
--   uiGain amountOfGain
--   
uiGain :: Sigs a => Double -> Source (Fx a) -- | Compressor -- --
--   uiCompress thresh loknee hiknee ratio att rel gain
--   
uiCompress :: Sigs a => Double -> Double -> Double -> Double -> Double -> Double -> Double -> Source (Fx a) -- | The filtered white noize widget. The arguments are -- --
--   uiWhite isOn centerFreqOfFilter amountOfNoize
--   
uiWhite :: Sigs a => Bool -> Double -> Double -> Source (Fx a) -- | The filtered pink noize widget. The arguments are -- --
--   uiPink isOn centerFreqOfFilter amountOfNoize
--   
uiPink :: Sigs a => Bool -> Double -> Double -> Source (Fx a) -- | The constructor for signal processing functions with no arguments -- (controlls). uiFx :: Sigs a => String -> Fx a -> Bool -> Source (Fx a) uiDry :: Sigs a => Source (Fx a) -- | the widget for mixing in a signal to the signal. uiSig :: Sigs a => String -> Bool -> Source a -> Source (Fx a) -- | A mixer widget represented as an effect. The effect sums the signals -- with given wieghts. uiMix :: Sigs a => Bool -> [(String, SE a)] -> Source (Fx a) -- | Midi chooser implemented as FX-box. uiMidi :: Sigs a => [(String, Msg -> SE a)] -> Int -> Source (Fx a) data AdsrBound AdsrBound :: Double -> Double -> Double -> AdsrBound [attBound] :: AdsrBound -> Double [decBound] :: AdsrBound -> Double [relBound] :: AdsrBound -> Double data AdsrInit AdsrInit :: Double -> Double -> Double -> Double -> AdsrInit [attInit] :: AdsrInit -> Double [decInit] :: AdsrInit -> Double [susInit] :: AdsrInit -> Double [relInit] :: AdsrInit -> Double linAdsr :: String -> AdsrBound -> AdsrInit -> Source Sig expAdsr :: String -> AdsrBound -> AdsrInit -> Source Sig -- | A widget with four standard waveforms: pure tone, triangle, square and -- sawtooth. The last parameter is a default waveform (it's set at init -- time). classicWaves :: String -> Int -> Source (Sig -> Sig) -- | Slider for master volume masterVolume :: Source Sig -- | Knob for master volume masterVolumeKnob :: Source Sig -- | Clip and it's parameters data LiveClip LiveClip :: FilePath -> ClipParam -> LiveClip -- | path to the file of audio clip [liveClipFile] :: LiveClip -> FilePath -- | clip launch parameters [liveClipParam] :: LiveClip -> ClipParam data ClipParam ClipParam :: !Int -> !Int -> !Int -> !Int -> !Bool -> !Double -> ClipParam -- | Clip size in bars [clipParamSize] :: ClipParam -> !Int -- | Clip offset from beginning in bars [clipParamDel] :: ClipParam -> !Int -- | Clip skip time at the end of the clip [clipParamTail] :: ClipParam -> !Int -- | Next clip to play after this one is finished. If it's -1 then play the -- same clip [clipParamNext] :: ClipParam -> !Int -- | Should we retrigger clip from the start or continue play where we left -- out. [clipParamRetrig] :: ClipParam -> !Bool -- | Volume scaling factor for the clip [clipParamVol] :: ClipParam -> !Double -- | Live row triggers audio clips in sync. -- --
--   liveRow clips bpm barSize clipIndex
--   
-- -- liveRow :: [LiveClip] -> D -> D -> Sig -> Sig -- | Stereo version of liveRow liveRows :: [LiveClip] -> D -> D -> Sig -> Sig2 ambiRow :: [String] -> Sig -> Sig -> D -> SE Sig2 ambiRowMp3 :: [String] -> Sig -> Sig -> D -> SE Sig2 instance Data.Default.Class.Default Csound.Air.Live.ClipParam -- | A friendly family of effects. These functions are kindly provided by -- Iain McCurdy (designed in Csound). module Csound.Air.Fx.FxBox -- | Analog Delay line with low-pass filter in the feedback chain. The -- filter adds natural decay to the echoes. -- --
--   adele mixRatio delayTime feedback toneRatio ain
--   
-- -- Note that the center frequency of the filter is measured in normalized -- units (form 0 to 1). adele :: Sigs a => Balance -> DelayTime -> Feedback -> ToneSig -> a -> a -- | Ping-pong delay -- --
--   pongy kmix delayTime feedback tone ain
--   
pongy :: Sig2s a => Balance -> DelayTime -> Feedback -> ToneSig -> WidthSig -> a -> a -- | Distortion unit with low-pass filter. -- --
--   tort driveLevel toneRatio ain
--   
-- -- Note that the center frequency of the filter is measured in normalized -- units (form 0 to 1). tort :: Sigs a => DriveSig -> ToneSig -> a -> a -- | Envelope follower. -- --
--   fowler sensitivity baseFrequencyRatio resonance ain
--   
-- -- Arguments: -- -- fowler :: Sigs a => SensitivitySig -> BaseCps -> Resonance -> a -> a -- | An effect that reverses an audio stream in chunks -- --
--   revsy time
--   
-- -- time -- the size of the chunck in seconds. revsy :: Sigs a => TimeSig -> a -> a -- | A flanger effect following the typical design of a so called 'stomp -- box' -- --
--   flan rate depth delayTime feedback ain =
--   
-- -- Arguments -- -- flan :: Sigs a => RateSig -> DepthSig -> DelayTime -> Feedback -> a -> a -- | Phaser -- -- An phase shifting effect that mimics the design of a so called 'stomp -- box' -- --
--   phasy rate depth freq fback ain
--   
-- -- Arguments: -- -- phasy :: Sigs a => RateSig -> DepthSig -> BaseCps -> Feedback -> a -> a -- | LoFi (Bit Crusher) -- -- 'Low Fidelity' distorting effects of bit reduction and downsampling -- (foldover) -- --
--   crusher  bits fold ain = ...
--   
-- -- Arguments -- -- crusher :: Sigs a => BitsReductionSig -> FoldoverSig -> a -> a -- | Stereo Chorus -- -- A stereo chorus effect -- --
--   chory rate depth width (ainLeft, ainRight)
--   
-- -- Arguments -- -- chory :: RateSig -> DepthSig -> WidthSig -> Sig2 -> Sig2 -- | Auto pan -- --
--   pany wave rate depth ain
--   
-- -- ; Arguments: -- -- pany :: TremWaveSig -> DepthSig -> RateSig -> Sig2 -> Sig2 -- | Sine auto pan -- --
--   oscPany = pany 0
--   
oscPany :: DepthSig -> RateSig -> Sig2 -> Sig2 -- | Triangle auto pan -- --
--   triPany = pany 1
--   
triPany :: DepthSig -> RateSig -> Sig2 -> Sig2 -- | Square auto pan -- --
--   sqrPany = pany 2
--   
sqrPany :: DepthSig -> RateSig -> Sig2 -> Sig2 -- | Tremolo -- -- tremolo effect -- --
--   tremy wave rate depth ain
--   
-- -- ; Arguments: -- -- tremy :: Sigs a => TremWaveSig -> DepthSig -> RateSig -> a -> a -- | Sine tremolo -- --
--   oscTremy = tremy 0
--   
oscTremy :: Sigs a => DepthSig -> RateSig -> a -> a -- | Triangle tremolo -- --
--   triTremy = tremy 1
--   
triTremy :: Sigs a => DepthSig -> RateSig -> a -> a -- | Square tremolo -- --
--   sqrTremy = tremy 2
--   
sqrTremy :: Sigs a => DepthSig -> RateSig -> a -> a -- | RingModulator -- -- An ring modulating effect with an envelope follower -- --
--   ringo balance rate envelopeMod ain
--   
-- -- ringo :: Sigs a => Balance -> RateSig -> EnvelopeModSig -> a -> a type EnvelopeModSig = Sig -- | magnus - simulates magnetic tape echo/delay -- --
--   magnus size feedback echoGain tone randomSpread ain
--   
-- -- magnus :: Sigs a => D -> DelayTime -> Feedback -> EchoGain -> ToneSig -> RandomSpreadSig -> a -> a adele1 :: Sigs a => Balance -> DelayTime -> a -> a adele2 :: Sigs a => Balance -> DelayTime -> a -> a adele3 :: Sigs a => Balance -> DelayTime -> a -> a adele4 :: Sigs a => Balance -> DelayTime -> a -> a adele5 :: Sigs a => Balance -> DelayTime -> a -> a adele1b :: Sigs a => Balance -> DelayTime -> a -> a adele2b :: Sigs a => Balance -> DelayTime -> a -> a adele3b :: Sigs a => Balance -> DelayTime -> a -> a adele4b :: Sigs a => Balance -> DelayTime -> a -> a adele5b :: Sigs a => Balance -> DelayTime -> a -> a adele1m :: Sigs a => Balance -> DelayTime -> a -> a adele2m :: Sigs a => Balance -> DelayTime -> a -> a adele3m :: Sigs a => Balance -> DelayTime -> a -> a adele4m :: Sigs a => Balance -> DelayTime -> a -> a adele5m :: Sigs a => Balance -> DelayTime -> a -> a pongy1 :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy2 :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy3 :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy4 :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy5 :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy1b :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy2b :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy3b :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy4b :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy5b :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy1m :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy2m :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy3m :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy4m :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a pongy5m :: Sig2s a => Balance -> DelayTime -> WidthSig -> a -> a tort1 :: Sigs a => a -> a tort2 :: Sigs a => a -> a tort3 :: Sigs a => a -> a tort4 :: Sigs a => a -> a tort5 :: Sigs a => a -> a tort1b :: Sigs a => a -> a tort2b :: Sigs a => a -> a tort3b :: Sigs a => a -> a tort4b :: Sigs a => a -> a tort5b :: Sigs a => a -> a tort1m :: Sigs a => a -> a tort2m :: Sigs a => a -> a tort3m :: Sigs a => a -> a tort4m :: Sigs a => a -> a tort5m :: Sigs a => a -> a fowler' :: Sigs a => Sig -> a -> a fowler1 :: Sigs a => a -> a fowler2 :: Sigs a => a -> a fowler3 :: Sigs a => a -> a fowler4 :: Sigs a => a -> a fowler5 :: Sigs a => a -> a flan' :: Sigs a => Sig -> a -> a flan1 :: Sigs a => a -> a flan2 :: Sigs a => a -> a flan3 :: Sigs a => a -> a flan4 :: Sigs a => a -> a flan5 :: Sigs a => a -> a phasy' :: Sigs a => Sig -> a -> a phasy1 :: Sigs a => a -> a phasy2 :: Sigs a => a -> a phasy3 :: Sigs a => a -> a phasy4 :: Sigs a => a -> a phasy5 :: Sigs a => a -> a chory' :: Sig2s a => Sig -> a -> a chory1 :: Sig2s a => a -> a chory2 :: Sig2s a => a -> a chory3 :: Sig2s a => a -> a chory4 :: Sig2s a => a -> a chory5 :: Sig2s a => a -> a oscPany' :: Sig2s a => Sig -> a -> a oscPany1 :: Sig2s a => a -> a oscPany2 :: Sig2s a => a -> a oscPany3 :: Sig2s a => a -> a oscPany4 :: Sig2s a => a -> a oscPany5 :: Sig2s a => a -> a triPany' :: Sig2s a => Sig -> a -> a triPany1 :: Sig2s a => a -> a triPany2 :: Sig2s a => a -> a triPany3 :: Sig2s a => a -> a triPany4 :: Sig2s a => a -> a triPany5 :: Sig2s a => a -> a sqrPany' :: Sig2s a => Sig -> a -> a sqrPany1 :: Sig2s a => a -> a sqrPany2 :: Sig2s a => a -> a sqrPany3 :: Sig2s a => a -> a sqrPany4 :: Sig2s a => a -> a sqrPany5 :: Sig2s a => a -> a oscTremy' :: Sigs a => Sig -> a -> a oscTremy1 :: Sigs a => a -> a oscTremy2 :: Sigs a => a -> a oscTremy3 :: Sigs a => a -> a oscTremy4 :: Sigs a => a -> a oscTremy5 :: Sigs a => a -> a triTremy' :: Sigs a => Sig -> a -> a triTremy1 :: Sigs a => a -> a triTremy2 :: Sigs a => a -> a triTremy3 :: Sigs a => a -> a triTremy4 :: Sigs a => a -> a triTremy5 :: Sigs a => a -> a sqrTremy' :: Sigs a => Sig -> a -> a sqrTremy1 :: Sigs a => a -> a sqrTremy2 :: Sigs a => a -> a sqrTremy3 :: Sigs a => a -> a sqrTremy4 :: Sigs a => a -> a sqrTremy5 :: Sigs a => a -> a ringo' :: Sigs a => Sig -> a -> a ringo1 :: Sigs a => a -> a ringo2 :: Sigs a => a -> a ringo3 :: Sigs a => a -> a ringo4 :: Sigs a => a -> a ringo5 :: Sigs a => a -> a uiRoom :: Sig2s a => Double -> Source (Fx a) uiRoom1 :: Sig2s a => Source (Fx a) uiRoom2 :: Sig2s a => Source (Fx a) uiRoom3 :: Sig2s a => Source (Fx a) uiRoom4 :: Sig2s a => Source (Fx a) uiRoom5 :: Sig2s a => Source (Fx a) uiChamber :: Sig2s a => Double -> Source (Fx a) uiChamber1 :: Sig2s a => Source (Fx a) uiChamber2 :: Sig2s a => Source (Fx a) uiChamber3 :: Sig2s a => Source (Fx a) uiChamber4 :: Sig2s a => Source (Fx a) uiChamber5 :: Sig2s a => Source (Fx a) uiHall :: Sig2s a => Double -> Source (Fx a) uiHall1 :: Sig2s a => Source (Fx a) uiHall2 :: Sig2s a => Source (Fx a) uiHall3 :: Sig2s a => Source (Fx a) uiHall4 :: Sig2s a => Source (Fx a) uiHall5 :: Sig2s a => Source (Fx a) uiCave :: Sig2s a => Double -> Source (Fx a) uiCave1 :: Sig2s a => Source (Fx a) uiCave2 :: Sig2s a => Source (Fx a) uiCave3 :: Sig2s a => Source (Fx a) uiCave4 :: Sig2s a => Source (Fx a) uiCave5 :: Sig2s a => Source (Fx a) uiMonoRoom :: Double -> Source Fx1 uiRoom1m :: Source Fx1 uiRoom2m :: Source Fx1 uiRoom3m :: Source Fx1 uiRoom4m :: Source Fx1 uiRoom5m :: Source Fx1 uiMonoChamber :: Double -> Source Fx1 uiChamber1m :: Source Fx1 uiChamber2m :: Source Fx1 uiChamber3m :: Source Fx1 uiChamber4m :: Source Fx1 uiChamber5m :: Source Fx1 uiMonoHall :: Double -> Source Fx1 uiHall1m :: Source Fx1 uiHall2m :: Source Fx1 uiHall3m :: Source Fx1 uiHall4m :: Source Fx1 uiHall5m :: Source Fx1 uiMonoCave :: Double -> Source Fx1 uiCave1m :: Source Fx1 uiCave2m :: Source Fx1 uiCave3m :: Source Fx1 uiCave4m :: Source Fx1 uiCave5m :: Source Fx1 uiAdele1 :: Sigs a => Double -> Double -> Source (Fx a) uiAdele2 :: Sigs a => Double -> Double -> Source (Fx a) uiAdele3 :: Sigs a => Double -> Double -> Source (Fx a) uiAdele4 :: Sigs a => Double -> Double -> Source (Fx a) uiAdele5 :: Sigs a => Double -> Double -> Source (Fx a) uiAdele1b :: Sigs a => Double -> Double -> Source (Fx a) uiAdele2b :: Sigs a => Double -> Double -> Source (Fx a) uiAdele3b :: Sigs a => Double -> Double -> Source (Fx a) uiAdele4b :: Sigs a => Double -> Double -> Source (Fx a) uiAdele5b :: Sigs a => Double -> Double -> Source (Fx a) uiAdele1m :: Sigs a => Double -> Double -> Source (Fx a) uiAdele2m :: Sigs a => Double -> Double -> Source (Fx a) uiAdele3m :: Sigs a => Double -> Double -> Source (Fx a) uiAdele4m :: Sigs a => Double -> Double -> Source (Fx a) uiAdele5m :: Sigs a => Double -> Double -> Source (Fx a) uiMagnus :: Sigs a => Int -> Double -> Double -> Double -> Double -> Double -> Source (Fx a) uiPongy1 :: Sigs a => Double -> Double -> Source (Fx a) uiPongy2 :: Sigs a => Double -> Double -> Source (Fx a) uiPongy3 :: Sigs a => Double -> Double -> Source (Fx a) uiPongy4 :: Sigs a => Double -> Double -> Source (Fx a) uiPongy5 :: Sigs a => Double -> Double -> Source (Fx a) uiPongy1b :: Sigs a => Double -> Double -> Source (Fx a) uiPongy2b :: Sigs a => Double -> Double -> Source (Fx a) uiPongy3b :: Sigs a => Double -> Double -> Source (Fx a) uiPongy4b :: Sigs a => Double -> Double -> Source (Fx a) uiPongy5b :: Sigs a => Double -> Double -> Source (Fx a) uiPongy1m :: Sigs a => Double -> Double -> Source (Fx a) uiPongy2m :: Sigs a => Double -> Double -> Source (Fx a) uiPongy3m :: Sigs a => Double -> Double -> Source (Fx a) uiPongy4m :: Sigs a => Double -> Double -> Source (Fx a) uiPongy5m :: Sigs a => Double -> Double -> Source (Fx a) uiTort1 :: Sigs a => Source (Fx a) uiTort2 :: Sigs a => Source (Fx a) uiTort3 :: Sigs a => Source (Fx a) uiTort4 :: Sigs a => Source (Fx a) uiTort5 :: Sigs a => Source (Fx a) uiTort1b :: Sigs a => Source (Fx a) uiTort2b :: Sigs a => Source (Fx a) uiTort3b :: Sigs a => Source (Fx a) uiTort4b :: Sigs a => Source (Fx a) uiTort5b :: Sigs a => Source (Fx a) uiTort1m :: Sigs a => Source (Fx a) uiTort2m :: Sigs a => Source (Fx a) uiTort3m :: Sigs a => Source (Fx a) uiTort4m :: Sigs a => Source (Fx a) uiTort5m :: Sigs a => Source (Fx a) uiFowler' :: Sigs a => Source (Fx a) uiFowler1 :: Sigs a => Source (Fx a) uiFowler2 :: Sigs a => Source (Fx a) uiFowler3 :: Sigs a => Source (Fx a) uiFowler4 :: Sigs a => Source (Fx a) uiFowler5 :: Sigs a => Source (Fx a) uiFlan' :: Sigs a => Source (Fx a) uiFlan1 :: Sigs a => Source (Fx a) uiFlan2 :: Sigs a => Source (Fx a) uiFlan3 :: Sigs a => Source (Fx a) uiFlan4 :: Sigs a => Source (Fx a) uiFlan5 :: Sigs a => Source (Fx a) uiPhasy' :: Sigs a => Source (Fx a) uiPhasy1 :: Sigs a => Source (Fx a) uiPhasy2 :: Sigs a => Source (Fx a) uiPhasy3 :: Sigs a => Source (Fx a) uiPhasy4 :: Sigs a => Source (Fx a) uiPhasy5 :: Sigs a => Source (Fx a) uiChory' :: Sig2s a => Source (Fx a) uiChory1 :: Sig2s a => Source (Fx a) uiChory2 :: Sig2s a => Source (Fx a) uiChory3 :: Sig2s a => Source (Fx a) uiChory4 :: Sig2s a => Source (Fx a) uiChory5 :: Sig2s a => Source (Fx a) uiOscPany' :: Source Fx2 uiTriPany' :: Source Fx2 uiSqrPany' :: Source Fx2 uiOscPany1 :: Source Fx2 uiOscPany2 :: Source Fx2 uiOscPany3 :: Source Fx2 uiOscPany4 :: Source Fx2 uiOscPany5 :: Source Fx2 uiTriPany1 :: Source Fx2 uiTriPany2 :: Source Fx2 uiTriPany3 :: Source Fx2 uiTriPany4 :: Source Fx2 uiTriPany5 :: Source Fx2 uiSqrPany1 :: Source Fx2 uiSqrPany2 :: Source Fx2 uiSqrPany3 :: Source Fx2 uiSqrPany4 :: Source Fx2 uiSqrPany5 :: Source Fx2 uiOscTremy' :: Sigs a => Source (Fx a) uiTriTremy' :: Sigs a => Source (Fx a) uiSqrTremy' :: Sigs a => Source (Fx a) uiOscTremy1 :: Sigs a => Source (Fx a) uiOscTremy2 :: Sigs a => Source (Fx a) uiOscTremy3 :: Sigs a => Source (Fx a) uiOscTremy4 :: Sigs a => Source (Fx a) uiOscTremy5 :: Sigs a => Source (Fx a) uiTriTremy1 :: Sigs a => Source (Fx a) uiTriTremy2 :: Sigs a => Source (Fx a) uiTriTremy3 :: Sigs a => Source (Fx a) uiTriTremy4 :: Sigs a => Source (Fx a) uiTriTremy5 :: Sigs a => Source (Fx a) uiSqrTremy1 :: Sigs a => Source (Fx a) uiSqrTremy2 :: Sigs a => Source (Fx a) uiSqrTremy3 :: Sigs a => Source (Fx a) uiSqrTremy4 :: Sigs a => Source (Fx a) uiSqrTremy5 :: Sigs a => Source (Fx a) uiRevsy :: Sigs a => Double -> Source (Fx a) uiCrusher :: Sigs a => Double -> Double -> Source (Fx a) uiRingo' :: Sigs a => Source (Fx a) uiRingo1 :: Sigs a => Source (Fx a) uiRingo2 :: Sigs a => Source (Fx a) uiRingo3 :: Sigs a => Source (Fx a) uiRingo4 :: Sigs a => Source (Fx a) uiRingo5 :: Sigs a => Source (Fx a) -- | Ambient guitar patch. It uses ambiEnv with stack of delays -- and a bit of compression and distortion. No reverb is added. The -- reverb is for user to add. -- --
--   ambiGuitar thresh delayTime feedback tone driveLevel sig
--   
-- -- For thresh try out values like 0.01, 0.02 -- -- Example, we read guitar input from soundcard first input, apply -- ambient guitar effect and a bit of reverb: -- --
--   main = dac proc
--   
--   proc :: Sig2 -> SE Sig2
--   proc (x, _) = hall 0.25 $ ambiGuitar 0.02 1 0.7 0.4 0.1 x
--   
ambiGuitar :: ThreshSig -> DelayTime -> Feedback -> ToneSig -> DriveSig -> Sig -> SE Sig -- | Padsynth algorithm. See the details at: -- -- csound docs: -- http://csound.github.io/docs/manual/GENpadsynth.html -- -- original description: -- http://www.paulnasca.com/algorithms-created-by-me -- -- more detailed description: -- http://zynaddsubfx.sourceforge.net/doc/PADsynth/PADsynth.htm -- -- An example: -- --
--   harms = [
--       1, 0.7600046992, 0.6199994683, 0.9399998784, 0.4400023818, 0.0600003302,
--       0.8499968648, 0.0899999291, 0.8199964762, 0.3199984133,
--       0.9400014281, 0.3000001907, 0.120003365, 0.1799997687, 0.5200006366]
--   
--   spec = defPadsynthSpec 42.2 harms
--   
--   main = dac $ mul 0.4 $ mixAt 0.35 largeHall2 $ mixAt 0.45 (echo 0.25 0.75) $
--               midi $ onMsg $ mul (fades 0.5 0.7) . padsynthOsc2 spec
--   
module Csound.Air.Padsynth -- | Padsynth oscillator. -- -- padsynthOsc spec frequency -- -- It makes it easy to create padsynth sound waves (see Tab.padsynth). It -- creates a padsynth table and reads it with poscil at the right speed. padsynthOsc :: PadsynthSpec -> Sig -> SE Sig -- | Stereo padsynth oscillatro. It creates two padsynth ftables for left -- and right channels. padsynthOsc2 :: PadsynthSpec -> Sig -> SE Sig2 -- | Creates padsynth oscillator with given harmonics. -- --
--   bwOscBy harmonics bandwidth frequency
--   
bwOscBy :: [Double] -> Double -> Sig -> SE Sig -- | Creates padsynth oscillator with given odd harmonics. -- --
--   bwOddOscBy harmonics bandwidth frequency
--   
bwOddOscBy :: [Double] -> Double -> Sig -> SE Sig -- | Stereo version of bwOscBy. bwOscBy2 :: [Double] -> Double -> Sig -> SE Sig2 -- | Stereo version of bwOddOscBy. bwOddOscBy2 :: [Double] -> Double -> Sig -> SE Sig2 -- | Pure sine wave with padsynth wave table: -- --
--   bwOsc bandwidth frequency
--   
bwOsc :: Double -> Sig -> SE Sig -- | Triangle wave with padsynth wave table: -- --
--   bwTri bandwidth frequency
--   
bwTri :: Double -> Sig -> SE Sig -- | Square wave with padsynth wave table: -- --
--   bwSqr bandwidth frequency
--   
bwSqr :: Double -> Sig -> SE Sig -- | Saw-tooth wave with padsynth wave table: -- --
--   bwSaw bandwidth frequency
--   
bwSaw :: Double -> Sig -> SE Sig -- | Stereo version of bwOsc. bwOsc2 :: Double -> Sig -> SE Sig2 -- | Stereo version of bwTri. bwTri2 :: Double -> Sig -> SE Sig2 -- | Stereo version of bwSqr. bwSqr2 :: Double -> Sig -> SE Sig2 -- | Stereo version of bwSaw. bwSaw2 :: Double -> Sig -> SE Sig2 -- | It uses several padsynth tables. Each table is responsible for -- specific interval of frequencies. The list of pairs specifies the -- threshhold value and padsynth specification. The padsynth table is -- active for all frequencies that lie below the given threshold. -- --
--   padsynthOscMultiCps thresholdSpecPairs frequency = ...
--   
padsynthOscMultiCps :: [(Double, PadsynthSpec)] -> D -> SE Sig -- | Stereo version of padsynthOscMultiCps. padsynthOscMultiCps2 :: [(Double, PadsynthSpec)] -> D -> SE Sig2 -- | It behaves just like padsynthOscMultiCps but it spreads the -- padsynth tables among amplitude values. So the last input argument is -- a pair of amplitude and frequency: -- --
--   padsynthOscMultiVol thresholdSpecPairs (amplitude, frequency) = ...
--   
padsynthOscMultiVol :: [(Double, PadsynthSpec)] -> (D, Sig) -> SE Sig -- | Stereo version of padsynthOscMultiVol. padsynthOscMultiVol2 :: [(Double, PadsynthSpec)] -> (D, Sig) -> SE Sig2 -- | TODO (undefined function) -- -- With this function we can create square zones in the domain of -- (amplitude, frequency). We can assign a separate padsynth -- table for each zone. The list of pairs contains a pair of two -- threshold values (amplitude, frequency) and dedicated -- padsynth specification. -- --
--   padsynthOscMultiVolCps thresholdSpecPairs (amplitude, frequency) = ...
--   
padsynthOscMultiVolCps :: [((Double, Double), PadsynthSpec)] -> (D, D) -> SE Sig -- | TODO (undefined function) -- -- Stereo version of padsynthOscMultiVolCps. padsynthOscMultiVolCps2 :: [((Double, Double), PadsynthSpec)] -> (D, D) -> SE Sig2 -- | Combines morpheus oscillators with padsynth algorithm. It uses single -- table for granular synthesis. morphsynthOscMultiCps :: MorphSpec -> [(Double, PadsynthSpec)] -> D -> SE Sig2 -- | Combines morpheus oscillators with padsynth algorithm. It uses up to -- four tables for granular synthesis. quadMorphsynthOscMultiCps :: MorphSpec -> [[(Double, PadsynthSpec)]] -> (Sig, Sig) -> D -> SE Sig2 -- | The vital tools. module Csound.Air -- | Basic types and functions. -- -- This module re-exports everything. -- -- WARNING (for Csound users): the maximum amplitude is 1.0. There is no -- way to alter it. Don't define your amplitudes with 9000 or 11000. But -- the good news are: all signals are clipped by 1 so that you can not -- damage your ears and your speakers by a little typo. module Csound.Base -- | Replace all locations in the input with the same value. The default -- definition is fmap . const, but this may be -- overridden with a more efficient version. -- -- Using ApplicativeDo: 'a <$ bs' can be -- understood as the do expression -- --
--   do bs
--      pure a
--   
-- -- with an inferred Functor constraint. (<$) :: Functor f => a -> f b -> f a infixl 4 <$ -- | A functor with application, providing operations to -- -- -- -- A minimal complete definition must include implementations of -- pure and of either <*> or liftA2. If it -- defines both, then they must behave the same as their default -- definitions: -- --
--   (<*>) = liftA2 id
--   
-- --
--   liftA2 f x y = f <$> x <*> y
--   
-- -- Further, any definition must satisfy the following: -- -- -- -- The other methods have the following default definitions, which may be -- overridden with equivalent specialized implementations: -- -- -- -- As a consequence of these laws, the Functor instance for -- f will satisfy -- -- -- -- It may be useful to note that supposing -- --
--   forall x y. p (q x y) = f x . g y
--   
-- -- it follows from the above that -- --
--   liftA2 p (liftA2 q u v) = liftA2 f u . liftA2 g v
--   
-- -- If f is also a Monad, it should satisfy -- -- -- -- (which implies that pure and <*> satisfy the -- applicative functor laws). class Functor f => Applicative (f :: Type -> Type) -- | Lift a value. pure :: Applicative f => a -> f a -- | Sequential application. -- -- A few functors support an implementation of <*> that is -- more efficient than the default one. -- -- Using ApplicativeDo: 'fs <*> as' can be -- understood as the do expression -- --
--   do f <- fs
--      a <- as
--      pure (f a)
--   
(<*>) :: Applicative f => f (a -> b) -> f a -> f b -- | Lift a binary function to actions. -- -- Some functors support an implementation of liftA2 that is more -- efficient than the default one. In particular, if fmap is an -- expensive operation, it is likely better to use liftA2 than to -- fmap over the structure and then use <*>. -- -- This became a typeclass method in 4.10.0.0. Prior to that, it was a -- function defined in terms of <*> and fmap. -- -- Using ApplicativeDo: 'liftA2 f as bs' can be -- understood as the do expression -- --
--   do a <- as
--      b <- bs
--      pure (f a b)
--   
liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c -- | Sequence actions, discarding the value of the first argument. -- -- 'as *> bs' can be understood as the do -- expression -- --
--   do as
--      bs
--   
-- -- This is a tad complicated for our ApplicativeDo extension -- which will give it a Monad constraint. For an -- Applicative constraint we write it of the form -- --
--   do _ <- as
--      b <- bs
--      pure b
--   
(*>) :: Applicative f => f a -> f b -> f b infixl 4 *> infixl 4 <*> -- | One or none. optional :: Alternative f => f a -> f (Maybe a) newtype WrappedMonad (m :: Type -> Type) a WrapMonad :: m a -> WrappedMonad (m :: Type -> Type) a [unwrapMonad] :: WrappedMonad (m :: Type -> Type) a -> m a newtype WrappedArrow (a :: Type -> Type -> Type) b c WrapArrow :: a b c -> WrappedArrow (a :: Type -> Type -> Type) b c [unwrapArrow] :: WrappedArrow (a :: Type -> Type -> Type) b c -> a b c -- | Lists, but with an Applicative functor based on zipping. newtype ZipList a ZipList :: [a] -> ZipList a [getZipList] :: ZipList a -> [a] -- | The Const functor. newtype Const a (b :: k) Const :: a -> Const a (b :: k) [getConst] :: Const a (b :: k) -> a -- | An infix synonym for fmap. -- -- The name of this operator is an allusion to $. Note the -- similarities between their types: -- --
--    ($)  ::              (a -> b) ->   a ->   b
--   (<$>) :: Functor f => (a -> b) -> f a -> f b
--   
-- -- Whereas $ is function application, <$> is function -- application lifted over a Functor. -- --

Examples

-- -- Convert from a Maybe Int to a Maybe -- String using show: -- --
--   >>> show <$> Nothing
--   Nothing
--   
--   >>> show <$> Just 3
--   Just "3"
--   
-- -- Convert from an Either Int Int to an -- Either Int String using show: -- --
--   >>> show <$> Left 17
--   Left 17
--   
--   >>> show <$> Right 17
--   Right "17"
--   
-- -- Double each element of a list: -- --
--   >>> (*2) <$> [1,2,3]
--   [2,4,6]
--   
-- -- Apply even to the second element of a pair: -- --
--   >>> even <$> (2,2)
--   (2,True)
--   
(<$>) :: Functor f => (a -> b) -> f a -> f b infixl 4 <$> -- | Lift a ternary function to actions. -- -- Using ApplicativeDo: 'liftA3 f as bs cs' can -- be understood as the do expression -- --
--   do a <- as
--      b <- bs
--      c <- cs
--      pure (f a b c)
--   
liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d -- | Lift a function to actions. This function may be used as a value for -- fmap in a Functor instance. -- -- | Using ApplicativeDo: 'liftA f as' can be -- understood as the do expression -- --
--   do a <- as
--      pure (f a)
--   
-- -- with an inferred Functor constraint, weaker than -- Applicative. liftA :: Applicative f => (a -> b) -> f a -> f b -- | A variant of <*> with the arguments reversed. -- -- Using ApplicativeDo: 'as <**> fs' can -- be understood as the do expression -- --
--   do a <- as
--      f <- fs
--      pure (f a)
--   
(<**>) :: Applicative f => f a -> f (a -> b) -> f b infixl 4 <**> -- | A monoid on applicative functors. -- -- If defined, some and many should be the least solutions -- of the equations: -- -- class Applicative f => Alternative (f :: Type -> Type) -- | The identity of <|> empty :: Alternative f => f a -- | An associative binary operation (<|>) :: Alternative f => f a -> f a -> f a -- | One or more. some :: Alternative f => f a -> f [a] -- | Zero or more. many :: Alternative f => f a -> f [a] infixl 3 <|> -- | Writes to a zk variable at k-rate with mixing. -- --
--   zkwm  ksig, kndx [, imix]
--   
-- -- csound doc: http://csound.com/docs/manual/zkwm.html zkwm :: Sig -> Sig -> SE () -- | Writes to a zk variable at k-rate without mixing. -- --
--   zkw  ksig, kndx
--   
-- -- csound doc: http://csound.com/docs/manual/zkw.html zkw :: Sig -> Sig -> SE () -- | Reads from a location in zk space at k-rate. -- --
--   kres  zkr  kndx
--   
-- -- csound doc: http://csound.com/docs/manual/zkr.html zkr :: Sig -> Sig -- | Facilitates the modulation of one signal by another. -- --
--   kres  zkmod  ksig, kzkmod
--   
-- -- csound doc: http://csound.com/docs/manual/zkmod.html zkmod :: Sig -> Sig -> Sig -- | Clears one or more variables in the zk space. -- --
--   zkcl  kfirst, klast
--   
-- -- csound doc: http://csound.com/docs/manual/zkcl.html zkcl :: Sig -> Sig -> SE () -- | Writes to a zk variable to an i-rate variable with mixing. -- --
--   ziwm  isig, indx [, imix]
--   
-- -- csound doc: http://csound.com/docs/manual/ziwm.html ziwm :: D -> D -> SE () -- | Writes to a zk variable at i-rate without mixing. -- --
--   ziw  isig, indx
--   
-- -- csound doc: http://csound.com/docs/manual/ziw.html ziw :: D -> D -> SE () -- | Reads from a location in zk space at i-rate. -- --
--   ir  zir  indx
--   
-- -- csound doc: http://csound.com/docs/manual/zir.html zir :: D -> D -- | Writes to a za variable at a-rate with mixing. -- --
--   zawm  asig, kndx [, imix]
--   
-- -- csound doc: http://csound.com/docs/manual/zawm.html zawm :: Sig -> Sig -> SE () -- | Writes to a za variable at a-rate without mixing. -- --
--   zaw  asig, kndx
--   
-- -- csound doc: http://csound.com/docs/manual/zaw.html zaw :: Sig -> Sig -> SE () -- | Reads from a location in za space at a-rate, adds some gain. -- --
--   ares  zarg  kndx, kgain
--   
-- -- csound doc: http://csound.com/docs/manual/zarg.html zarg :: Sig -> Sig -> Sig -- | Reads from a location in za space at a-rate. -- --
--   ares  zar  kndx
--   
-- -- csound doc: http://csound.com/docs/manual/zar.html zar :: Sig -> Sig -- | Modulates one a-rate signal by a second one. -- --
--   ares  zamod  asig, kzamod
--   
-- -- csound doc: http://csound.com/docs/manual/zamod.html zamod :: Sig -> Sig -> Sig -- | Establishes zak space. -- -- Establishes zak space. Must be called only once. -- --
--   zakinit  isizea, isizek
--   
-- -- csound doc: http://csound.com/docs/manual/zakinit.html zakinit :: D -> D -> SE () -- | Clears one or more variables in the za space. -- --
--   zacl  kfirst, klast
--   
-- -- csound doc: http://csound.com/docs/manual/zacl.html zacl :: Sig -> Sig -> SE () -- | Cellular Automata -- -- Unidimensional Cellular Automata applied to Csound vectors -- --
--   vcella  ktrig, kreinit, ioutFunc, initStateFunc, \
--            iRuleFunc, ielements, irulelen [, iradius]
--   
-- -- csound doc: http://csound.com/docs/manual/vcella.html vcella :: Sig -> Sig -> D -> D -> D -> D -> D -> SE () -- | Cellular Automaton -- -- One-Dimensional Cellular Automaton. This opcode is the modified -- version of vcella by Gabriel Maldonado. -- --
--   cell  ktrig, kreinit, ioutFunc, initStateFunc, iRuleFunc, ielements
--   
-- -- csound doc: http://csound.com/docs/manual/cell.html cell :: Sig -> Sig -> D -> D -> D -> D -> SE () -- | Generate a sort of 'vectorial band-limited noise' -- --
--   vrandi   ifn,  krange, kcps, ielements [, idstoffset] [, iseed] \
--            [, isize] [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vrandi.html vrandi :: Tab -> Sig -> Sig -> D -> SE () -- | Generates a vector of random numbers stored into a table, holding the -- values for a period of time. -- -- 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   ifn,  krange, kcps, ielements [, idstoffset] [, iseed] \
--            [, isize] [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vrandh.html vrandh :: Tab -> Sig -> Sig -> D -> SE () -- | Vectorial Control-rate Delay Paths -- -- Generate a sort of vectorial portamento -- --
--   vport  ifn, khtime, ielements [, ifnInit]
--   
-- -- csound doc: http://csound.com/docs/manual/vport.html vport :: Tab -> Sig -> D -> SE () -- | Vectorial Control-rate Delay Paths -- -- Generate a sort of vectorial delay -- --
--   vecdelay   ifn, ifnIn, ifnDel, ielements, imaxdel [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/vecdelay.html vecdelay :: Tab -> Tab -> Tab -> D -> D -> SE () -- | k-rate variable time delay. -- -- Variable delay applied to a k-rate signal -- --
--   kout  vdelayk   ksig, kdel, imaxdel [, iskip, imode]
--   
-- -- csound doc: http://csound.com/docs/manual/vdelayk.html vdelayk :: Sig -> Sig -> D -> Sig -- | Limiting and Wrapping Vectorial Signals -- -- Wraps elements of vectorial control signals. -- --
--   vwrap   ifn, kmin, kmax, ielements
--   
-- -- csound doc: http://csound.com/docs/manual/vwrap.html vwrap :: Tab -> Sig -> Sig -> D -> SE () -- | Limiting and Wrapping Vectorial Signals -- -- Reflects elements of vectorial control signals on thresholds. -- --
--   vmirror   ifn, kmin, kmax, ielements
--   
-- -- csound doc: http://csound.com/docs/manual/vmirror.html vmirror :: Tab -> Sig -> Sig -> D -> SE () -- | Limiting and Wrapping Vectorial Signals -- -- Limits elements of vectorial control signals. -- --
--   vlimit   ifn, kmin, kmax, ielements
--   
-- -- csound doc: http://csound.com/docs/manual/vlimit.html vlimit :: Tab -> Sig -> Sig -> D -> SE () -- | Vectorial envelope generator -- -- Generate linear vectorial segments -- --
--   vlinseg   ifnout, ielements, ifn1, idur1, ifn2 [, idur2, ifn3 [...]]
--   
-- -- csound doc: http://csound.com/docs/manual/vlinseg.html vlinseg :: Tab -> D -> Tab -> D -> Tab -> SE () -- | Vectorial envelope generator -- -- Generate exponential vectorial segments -- --
--   vexpseg   ifnout, ielements, ifn1, idur1, ifn2 [, idur2, ifn3 [...]]
--   
-- -- csound doc: http://csound.com/docs/manual/vexpseg.html vexpseg :: Tab -> D -> Tab -> D -> Tab -> SE () -- | Performs subtraction between two vectorial control signals at init -- time. -- --
--   vsubv_i   ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vsubv_i.html vsubv_i :: Tab -> Tab -> D -> SE () -- | Performs subtraction between two vectorial control signals -- --
--   vsubv   ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vsubv.html vsubv :: Tab -> Tab -> Sig -> SE () -- | Performs power-of operations between two vectorial control signals at -- init time. -- --
--   vpowv_i  ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vpowv_i.html vpowv_i :: Tab -> Tab -> D -> SE () -- | Performs power-of operations between two vectorial control signals -- --
--   vpowv  ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vpowv.html vpowv :: Tab -> Tab -> Sig -> SE () -- | Performs mutiplication between two vectorial control signals at init -- time. -- --
--   vmultv_i   ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vmultv_i.html vmultv_i :: Tab -> Tab -> D -> SE () -- | Performs mutiplication between two vectorial control signals -- --
--   vmultv   ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vmultv.html vmultv :: Tab -> Tab -> Sig -> SE () -- | Maps elements from a vector according to indexes contained in another -- vector. -- -- Maps elements from a vector onto another according to the indexes of a -- this vector. -- --
--   vmap   ifn1, ifn2, ielements [,idstoffset, isrcoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vmap.html vmap :: Tab -> Tab -> D -> SE () -- | Performs exponential operations between two vectorial control signals -- at init time. -- --
--   vexpv_i   ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vexpv_i.html vexpv_i :: Tab -> Tab -> D -> SE () -- | Performs exponential operations between two vectorial control signals -- --
--   vexpv   ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vexpv.html vexpv :: Tab -> Tab -> Sig -> SE () -- | Performs division between two vectorial control signals at init time. -- --
--   vdivv_i   ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vdivv_i.html vdivv_i :: Tab -> Tab -> D -> SE () -- | Performs division between two vectorial control signals -- --
--   vdivv   ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vdivv.html vdivv :: Tab -> Tab -> Sig -> SE () -- | Copies a vector from one table to another. -- --
--   vcopy_i   ifn1, ifn2, ielements [,idstoffset, isrcoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vcopy_i.html vcopy_i :: Tab -> Tab -> D -> SE () -- | Copies between two vectorial control signals -- --
--   vcopy   ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [, kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vcopy.html vcopy :: Tab -> Tab -> Sig -> SE () -- | Performs addition between two vectorial control signals at init time. -- --
--   vaddv_i   ifn1, ifn2, ielements [, idstoffset] [, isrcoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vaddv_i.html vaddv_i :: Tab -> Tab -> D -> SE () -- | Performs addition between two vectorial control signals. -- --
--   vaddv   ifn1, ifn2, kelements [, kdstoffset] [, ksrcoffset] [,kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vaddv.html vaddv :: Tab -> Tab -> Sig -> SE () -- | Raises each element of a vector to a scalar power -- --
--   vpow_i   ifn, ival, ielements [, idstoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vpow_i.html vpow_i :: Tab -> D -> D -> SE () -- | Raises each element of a vector to a scalar power. -- --
--   vpow   ifn, kval, kelements [, kdstoffset] [, kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vpow.html vpow :: Tab -> Sig -> Sig -> SE () -- | Multiplies a vector in a table by a scalar value. -- --
--   vmult_i   ifn, ival, ielements [, idstoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vmult_i.html vmult_i :: Tab -> D -> D -> SE () -- | Multiplies a vector in a table by a scalar value. -- --
--   vmult   ifn, kval, kelements [, kdstoffset] [, kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vmult.html vmult :: Tab -> Sig -> Sig -> SE () -- | Performs power-of operations between a vector and a scalar -- --
--   vexp_i   ifn, ival, ielements[, idstoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vexp_i.html vexp_i :: Tab -> D -> D -> SE () -- | Performs power-of operations between a vector and a scalar -- --
--   vexp   ifn, kval, kelements [, kdstoffset] [, kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vexp.html vexp :: Tab -> Sig -> Sig -> SE () -- | Adds a scalar value to a vector in a table. -- --
--   vadd_i   ifn, ival, ielements [, idstoffset]
--   
-- -- csound doc: http://csound.com/docs/manual/vadd_i.html vadd_i :: Tab -> D -> D -> SE () -- | Adds a scalar value to a vector in a table. -- --
--   vadd   ifn, kval, kelements [, kdstoffset] [, kverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vadd.html vadd :: Tab -> Sig -> Sig -> SE () -- | Write vectors (to tables -or arrays of vectors). -- -- This opcode writes vectors to tables at k-rate. -- --
--   vtabwk   kndx, ifn, kinarg1 [, kinarg2, kinarg3 , .... , kinargN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtabwk.html vtabwk :: Sig -> Tab -> Sig -> SE () -- | Write vectors (to tables -or arrays of vectors). -- -- This opcode writes vectors to tables at init time. -- --
--   vtabwi   indx, ifn, inarg1 [, inarg2, inarg3 , .... , inargN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtabwi.html vtabwi :: D -> Tab -> D -> SE () -- | Write vectors (to tables -or arrays of vectors). -- -- This opcode writes vectors to tables at a-rate. -- --
--   vtabwa   andx, ifn, ainarg1 [, ainarg2, ainarg3 , .... , ainargN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtabwa.html vtabwa :: Sig -> Tab -> Sig -> SE () -- | Write vectors (to tables -or arrays of vectors). -- -- This opcode writes vectors to tables at k-rate. -- --
--   vtablewk   kndx, kfn, ixmode, kinarg1 [, kinarg2, kinarg3 , .... , kinargN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtablewk.html vtablewk :: Sig -> Tab -> D -> Sig -> SE () -- | Write vectors (to tables -or arrays of vectors). -- -- This opcode writes vectors to tables at init time. -- --
--   vtablewi   indx, ifn, ixmode, inarg1 [, inarg2, inarg3 , .... , inargN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtablewi.html vtablewi :: D -> Tab -> D -> D -> SE () -- | Write vectors (to tables -or arrays of vectors). -- -- This opcode writes vectors to tables at a-rate. -- --
--   vtablewa   andx, kfn, ixmode, ainarg1 [, ainarg2, ainarg3 , .... , ainargN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtablewa.html vtablewa :: Sig -> Tab -> D -> Sig -> SE () -- | Read vectors (from tables -or arrays of vectors). -- -- This opcode reads vectors from tables at k-rate. -- --
--   vtablek   kndx, kfn, kinterp, ixmode, kout1 [, kout2, kout3, .... , koutN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtablek.html vtablek :: Sig -> Tab -> Sig -> D -> Sig -> SE () -- | Read vectors (from tables -or arrays of vectors). -- -- This opcode reads vectors from tables. -- --
--   vtablei   indx, ifn, interp, ixmode, iout1 [, iout2, iout3, .... , ioutN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtablei.html vtablei :: D -> Tab -> D -> D -> D -> SE () -- | Read vectors (from tables -or arrays of vectors). -- -- This opcode reads vectors from tables at a-rate. -- --
--   vtablea   andx, kfn, kinterp, ixmode, aout1 [, aout2, aout3, .... , aoutN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtablea.html vtablea :: Sig -> Tab -> Sig -> D -> Sig -> SE () -- | Read a vector (several scalars simultaneously) from a table. -- -- This opcode reads vectors from tables at k-rate. -- --
--   vtable1k   kfn,kout1 [, kout2, kout3, .... , koutN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtable1k.html vtable1k :: Tab -> Sig -> SE () -- | Read vectors (from tables -or arrays of vectors). -- -- This opcode reads vectors from tables at k-rate. -- --
--   vtabk   kndx, ifn, kout1 [, kout2, kout3, .... , koutN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtabk.html vtabk :: Sig -> Tab -> Sig -> SE () -- | Read vectors (from tables -or arrays of vectors). -- -- This opcode reads vectors from tables. -- --
--   vtabi   indx, ifn, iout1 [, iout2, iout3, .... , ioutN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtabi.html vtabi :: D -> Tab -> D -> SE () -- | Read vectors (from tables -or arrays of vectors). -- -- This opcode reads vectors from tables at a-rate. -- --
--   vtaba   andx, ifn, aout1 [, aout2, aout3, .... , aoutN ]
--   
-- -- csound doc: http://csound.com/docs/manual/vtaba.html vtaba :: Sig -> Tab -> Sig -> SE () -- | Loads a sound file into memory for use by loscilx -- -- sndload loads a sound file into memory for use by loscilx. -- --
--   sndload  Sfname[, ifmt[, ichns[, isr[, ibas[, iamp[, istrt   \
--            [, ilpmod[, ilps[, ilpe]]]]]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/sndload.html sndload :: Str -> SE () -- | Fill a string variable with the arguments used to create a function -- table at k-rate. -- -- getftargs writes the arguments used to create a function table to a -- string variable. getftargs runs both at initialization and performance -- time. -- --
--   Sdst  getftargs  iftno, ktrig
--   
-- -- csound doc: http://csound.com/docs/manual/getftargs.html getftargs :: D -> Sig -> Str -- | Generate a score function table from within the orchestra, which is -- deleted at the end of the note. -- -- Generate a score function table from within the orchestra, which is -- optionally deleted at the end of the note. -- --
--   ifno  ftgentmp  ip1, ip2dummy, isize, igen, iarga, iargb, ...
--   
-- -- csound doc: http://csound.com/docs/manual/ftgentmp.html ftgentmp :: D -> D -> D -> D -> D -> [D] -> SE Tab -- | Generate a score function table from within the orchestra. -- --
--   gir  ftgen  ifn, itime, isize, igen, iarga [, iargb ] [...]
--   gir  ftgen  ifn, itime, isize, igen, iarray
--   
-- -- csound doc: http://csound.com/docs/manual/ftgen.html ftgen :: Tab -> D -> D -> D -> D -> SE D -- | Deletes function table. -- --
--   ftfree  ifno, iwhen
--   
-- -- csound doc: http://csound.com/docs/manual/ftfree.html ftfree :: Tab -> D -> SE () -- | Convert a string to upper case -- -- Convert Ssrc to upper case, and write the result to Sdst. strupperk -- runs both at init and performance time. -- --
--   Sdst  strupperk  Ssrc
--   
-- -- csound doc: http://csound.com/docs/manual/strupperk.html strupperk :: Str -> Str -- | Convert a string to upper case -- -- Convert Ssrc to upper case, and write the result to Sdst. strupper -- runs at init time only. -- --
--   Sdst  strupper  Ssrc
--   
-- -- csound doc: http://csound.com/docs/manual/strupper.html strupper :: Str -> Str -- | Converts a string to a signed integer (k-rate). -- -- Convert a string to a signed integer value at i- or k-rate. It is also -- possible to pass an strset index or a string p-field from the score -- instead of a string argument. If the string cannot be parsed as an -- integer number, an init or perf error occurs and the instrument is -- deactivated. -- --
--   kr  strtolk  Sstr
--   kr  strtolk  kndx
--   
-- -- csound doc: http://csound.com/docs/manual/strtolk.html strtolk :: Str -> Sig -- | Converts a string to a signed integer (i-rate). -- -- Convert a string to a signed integer value. It is also possible to -- pass an strset index or a string p-field from the score instead of a -- string argument. If the string cannot be parsed as an integer number, -- an init error occurs and the instrument is deactivated. -- --
--   ir  strtol  Sstr
--   ir  strtol  indx
--   
-- -- csound doc: http://csound.com/docs/manual/strtol.html strtol :: Str -> D -- | Converts a string to a float (k-rate). -- -- Convert a string to a floating point value at i- or k-rate. It is also -- possible to pass an strset index or a string p-field from the score -- instead of a string argument. If the string cannot be parsed as a -- floating point or integer number, an init or perf error occurs and the -- instrument is deactivated. -- --
--   kr  strtodk  Sstr
--   kr  strtodk  kndx
--   
-- -- csound doc: http://csound.com/docs/manual/strtodk.html strtodk :: Str -> Sig -- | Converts a string to a float (i-rate). -- -- Convert a string to a floating point value. It is also possible to -- pass an strset index or a string p-field from the score instead of a -- string argument. If the string cannot be parsed as a floating point or -- integer number, an init or perf error occurs and the instrument is -- deactivated. -- --
--   ir  strtod  Sstr
--   ir  strtod  indx
--   
-- -- csound doc: http://csound.com/docs/manual/strtod.html strtod :: Str -> D -- | Convert a string to lower case -- -- Convert Ssrc to lower case, and write the result to Sdst. strlowerk -- runs both at init and performance time. -- --
--   Sdst  strlowerk  Ssrc
--   
-- -- csound doc: http://csound.com/docs/manual/strlowerk.html strlowerk :: Str -> Str -- | Convert a string to lower case -- -- Convert Ssrc to lower case, and write the result to Sdst. strlower -- runs at init time only. -- --
--   Sdst  strlower  Ssrc
--   
-- -- csound doc: http://csound.com/docs/manual/strlower.html strlower :: Str -> Str -- | Return the ASCII code of a character in a string -- -- Return the ASCII code of the character in Sstr at kpos (defaults to -- zero which means the first character), or zero if kpos is out of -- range. strchark runs both at init and performance time. -- --
--   kchr  strchark  Sstr[, kpos]
--   
-- -- csound doc: http://csound.com/docs/manual/strchark.html strchark :: Str -> Sig -- | Return the ASCII code of a character in a string -- -- Return the ASCII code of the character in Sstr at ipos (defaults to -- zero which means the first character), or zero if ipos is out of -- range. strchar runs at init time only. -- --
--   ichr  strchar  Sstr[, ipos]
--   
-- -- csound doc: http://csound.com/docs/manual/strchar.html strchar :: Str -> D -- | Extract a substring -- -- Return a substring of the source string. strsubk runs both at init and -- performance time. -- --
--   Sdst  strsubk  Ssrc, kstart, kend
--   
-- -- csound doc: http://csound.com/docs/manual/strsubk.html strsubk :: Str -> Sig -> Sig -> Str -- | Extract a substring -- -- Return a substring of the source string. strsub runs at init time -- only. -- --
--   Sdst  strsub  Ssrc[, istart[, iend]]
--   
-- -- csound doc: http://csound.com/docs/manual/strsub.html strsub :: Str -> Str -- | Return the position of the last occurence of a string in another -- string -- -- Return the position of the last occurence of S2 in S1, or -1 if not -- found. If S2 is empty, the length of S1 is returned. strrindexk runs -- both at init and performance time. -- --
--   kpos  strrindexk  S1, S2
--   
-- -- csound doc: http://csound.com/docs/manual/strrindexk.html strrindexk :: Str -> Str -> Sig -- | Return the position of the last occurence of a string in another -- string -- -- Return the position of the last occurence of S2 in S1, or -1 if not -- found. If S2 is empty, the length of S1 is returned. strrindex runs at -- init time only. -- --
--   ipos  strrindex  S1, S2
--   
-- -- csound doc: http://csound.com/docs/manual/strrindex.html strrindex :: Str -> Str -> D -- | Return the length of a string -- -- Return the length of a string, or zero if it is empty. strlenk runs -- both at init and performance time. -- --
--   klen  strlenk  Sstr
--   
-- -- csound doc: http://csound.com/docs/manual/strlenk.html strlenk :: Str -> Sig -- | Return the length of a string -- -- Return the length of a string, or zero if it is empty. strlen runs at -- init time only. -- --
--   ilen  strlen  Sstr
--   
-- -- csound doc: http://csound.com/docs/manual/strlen.html strlen :: Str -> D -- | Return the position of the first occurence of a string in another -- string -- -- Return the position of the first occurence of S2 in S1, or -1 if not -- found. If S2 is empty, 0 is returned. strindexk runs both at init and -- performance time. -- --
--   kpos  strindexk  S1, S2
--   
-- -- csound doc: http://csound.com/docs/manual/strindexk.html strindexk :: Str -> Str -> Sig -- | Return the position of the first occurence of a string in another -- string -- -- Return the position of the first occurence of S2 in S1, or -1 if not -- found. If S2 is empty, 0 is returned. strindex runs at init time only. -- --
--   ipos  strindex  S1, S2
--   
-- -- csound doc: http://csound.com/docs/manual/strindex.html strindex :: Str -> Str -> D -- | Assign value to a string variable (k-rate) -- -- Assign to a string variable by copying the source which may be a -- constant or another string variable. strcpyk does the assignment both -- at initialization and performance time. -- --
--   Sdst  strcpyk  Ssrc
--   
-- -- csound doc: http://csound.com/docs/manual/strcpyk.html strcpyk :: Str -> Str -- | Assign value to a string variable -- -- Assign to a string variable by copying the source which may be a -- constant or another string variable. strcpy and = copy the string at -- i-time only. -- --
--   Sdst  strcpy  Ssrc
--   
-- -- csound doc: http://csound.com/docs/manual/strcpy.html strcpy :: Str -> Str -- | Compare strings -- -- Compare strings and set the result to -1, 0, or 1 if the first string -- is less than, equal to, or greater than the second, respectively. -- strcmpk does the comparison both at initialization and performance -- time. -- --
--   kres  strcmpk  S1, S2
--   
-- -- csound doc: http://csound.com/docs/manual/strcmpk.html strcmpk :: Str -> Str -> Sig -- | Compare strings -- -- Compare strings and set the result to -1, 0, or 1 if the first string -- is less than, equal to, or greater than the second, respectively. -- strcmp compares at i-time only. -- --
--   ires  strcmp  S1, S2
--   
-- -- csound doc: http://csound.com/docs/manual/strcmp.html strcmp :: Str -> Str -> D -- | Concatenate strings (k-rate) -- -- Concatenate two strings and store the result in a variable. strcatk -- does the concatenation both at initialization and performance time. It -- is allowed for any of the input arguments to be the same as the output -- variable. -- --
--   Sdst  strcatk  Ssrc1, Ssrc2
--   
-- -- csound doc: http://csound.com/docs/manual/strcatk.html strcatk :: Str -> Str -> Str -- | Concatenate strings -- -- Concatenate two strings and store the result in a variable. strcat -- runs at i-time only. It is allowed for any of the input arguments to -- be the same as the output variable. -- --
--   Sdst  strcat  Ssrc1, Ssrc2
--   
-- -- csound doc: http://csound.com/docs/manual/strcat.html strcat :: Str -> Str -> Str -- | printf-style formatted output to a string variable at k-rate. -- -- sprintfk writes printf-style formatted output to a string variable, -- similarly to the C function sprintf(). sprintfk runs both at -- initialization and performance time. -- --
--   Sdst  sprintfk  Sfmt, xarg1[, xarg2[, ... ]]
--   
-- -- csound doc: http://csound.com/docs/manual/sprintfk.html sprintfk :: Str -> Sig -> Str -- | printf-style formatted output to a string variable. -- -- sprintf write printf-style formatted output to a string variable, -- similarly to the C function sprintf(). sprintf runs at i-time only. -- --
--   Sdst  sprintf  Sfmt, xarg1[, xarg2[, ... ]]
--   
-- -- csound doc: http://csound.com/docs/manual/sprintf.html sprintf :: Str -> Sig -> Str -- | Print a string constant or variable -- -- puts prints a string with an optional newline at the end whenever the -- trigger signal is positive and changes. -- --
--   puts  Sstr, ktrig[, inonl]
--   
-- -- csound doc: http://csound.com/docs/manual/puts.html puts :: Str -> Sig -> SE () -- | Allows a string to be linked with a numeric value. -- --
--   strset  iarg, istring
--   
-- -- csound doc: http://csound.com/docs/manual/strset.html strset :: D -> D -> SE () -- | Set string variable to value from strset table or string p-field -- -- strget sets a string variable at initialization time to the value -- stored in strset table at the specified index, or a string p-field -- from the score. If there is no string defined for the index, the -- variable is set to an empty string. -- --
--   Sdst  strget  indx
--   
-- -- csound doc: http://csound.com/docs/manual/strget.html strget :: D -> Str -- | Set string variable to value read from an URL -- -- strfromurl sets a string variable at initialization time to the value -- found from reading an URL. -- --
--   Sdst  strfromurl  StringURL
--   
-- -- csound doc: http://csound.com/docs/manual/strfromurl.html strfromurl :: Str -> Str -- | Phase-locked vocoder processing with onset detection/processing, -- 'tempo-scaling'. -- -- temposcal implements phase-locked vocoder processing using function -- tables containing sampled-sound sources, with GEN01, and temposcal -- will accept deferred allocation tables. -- --
--   asig  temposcal  ktimescal, kamp, kpitch, ktab, klock [,ifftsize, idecim, ithresh]
--             
--   
-- -- csound doc: http://csound.com/docs/manual/temposcal.html temposcal :: Sig -> Sig -> Sig -> Tab -> Sig -> Sig -- | Extreme time-stretching algorithm by Nasca Octavian Paul. -- -- The paulstretch opcode is a lightweight implementation of the -- PaulStretch time-stretching algorithm by Nasca Octavian Paul. It is -- ideal for timestretching a signal by very large amounts. -- --
--   asig  paulstretch  istretch, iwindowsize, ift
--           
--   
-- -- csound doc: http://csound.com/docs/manual/paulstretch.html paulstretch :: D -> D -> D -> Sig -- | Phase-locked vocoder processing with onset detection/processing, -- 'tempo-scaling'. -- -- mp3scal implements phase-locked vocoder processing from mp3-format -- disk files, resampling if necessary. -- --
--   asig, asig2, ktime  mp3scal  Sfile, ktimescal, kpitch, kamp[, iskip, ifftsize, idecim, ilock]
--             
--   
-- -- csound doc: http://csound.com/docs/manual/mp3scal.html mp3scal :: Str -> Sig -> Sig -> Sig -> (Sig, Sig, Sig) -- | Phase-locked vocoder processing. -- -- mincer implements phase-locked vocoder processing using function -- tables containing sampled-sound sources, with GEN01, and mincer will -- accept deferred allocation tables. -- --
--   asig  mincer  atimpt, kamp, kpitch, ktab, klock[,ifftsize,idecim]
--             
--   
-- -- csound doc: http://csound.com/docs/manual/mincer.html mincer :: Sig -> Sig -> Sig -> Tab -> Sig -> Sig -- | Phase-locked vocoder processing with onset detection/processing, -- 'tempo-scaling'. -- -- filescal implements phase-locked vocoder processing from disk files, -- resampling if necessary. -- --
--   asig[,asig2]  filescal  ktimescal, kamp, kpitch, Sfile, klock [,ifftsize, idecim, ithresh]
--             
--   
-- -- csound doc: http://csound.com/docs/manual/filescal.html filescal :: Tuple a => Sig -> Sig -> Sig -> Str -> Sig -> a -- | Calculate the spectral centroid of a signal. -- -- Calculate the spectral centroid of an audio signal on a given trigger. -- --
--   kcent  centroid  asig, ktrig, ifftsize
--   
-- -- csound doc: http://csound.com/docs/manual/centroid.html centroid :: Sig -> Sig -> D -> Sig -- | 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 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  ktimpnt, ifilcod, istoreidx, kfreqenv, kampenv, kbwenv[, ifadetime]
--   
-- -- csound doc: http://csound.com/docs/manual/lorisread.html lorisread :: Sig -> Str -> D -> Sig -> Sig -> Sig -> SE () -- | 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 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. -- --
--   ar  lorisplay  ireadidx, kfreqenv, kampenv, kbwenv
--   
-- -- csound doc: http://csound.com/docs/manual/lorisplay.html lorisplay :: D -> Sig -> Sig -> Sig -> Sig -- | 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 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  isrcidx, itgtidx, istoreidx, kfreqmorphenv, kampmorphenv, kbwmorphenv
--   
-- -- csound doc: http://csound.com/docs/manual/lorismorph.html lorismorph :: D -> D -> D -> Sig -> Sig -> Sig -> SE () -- | uses the data from an ATS analysis file to perform resynthesis. -- -- ATSsinnoi reads data from an ATS data file and uses the information to -- synthesize sines and noise together. -- --
--   ar  ATSsinnoi  ktimepnt, ksinlev, knzlev, kfmod, iatsfile, ipartials \
--                 [, ipartialoffset, ipartialincr]
--   
-- -- csound doc: http://csound.com/docs/manual/ATSsinnoi.html atsSinnoi :: Sig -> Sig -> Sig -> Sig -> D -> D -> Sig -- | reads data from an ATS file. -- -- ATSreadnz returns the energy (kenergy) of a user specified noise band -- (1-25 bands) at the time indicated by the time pointer ktimepnt. -- --
--   kenergy  ATSreadnz  ktimepnt, iatsfile, iband
--   
-- -- csound doc: http://csound.com/docs/manual/ATSreadnz.html atsReadnz :: Sig -> D -> D -> Sig -- | reads data from an ATS file. -- -- 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. -- --
--   kfreq, kamp  ATSread  ktimepnt, iatsfile, ipartial
--   
-- -- csound doc: http://csound.com/docs/manual/ATSread.html atsRead :: Sig -> D -> D -> (Sig, Sig) -- | returns a frequency, amplitude pair from an ATSbufread opcode. -- -- ATSpartialtap takes a partial number and returns a frequency, -- amplitude pair. The frequency and amplitude data comes from an -- ATSbufread opcode. -- --
--   kfrq, kamp  ATSpartialtap  ipartialnum
--   
-- -- csound doc: http://csound.com/docs/manual/ATSpartialtap.html atsPartialtap :: D -> (Sig, Sig) -- | allows a user to determine the frequency envelope of any ATSbufread. -- -- ATSinterpread allows a user to determine the frequency envelope of any -- ATSbufread. -- --
--   kamp  ATSinterpread  kfreq
--   
-- -- csound doc: http://csound.com/docs/manual/ATSinterpread.html atsInterpread :: Sig -> Sig -- | reads data out of the header of an ATS file. -- -- atsinfo reads data out of the header of an ATS file. -- --
--   idata  ATSinfo  iatsfile, ilocation
--   
-- -- csound doc: http://csound.com/docs/manual/ATSinfo.html atsInfo :: D -> D -> D -- | perform cross synthesis from ATS analysis files. -- -- ATScross uses data from an ATS analysis file and data from an -- ATSbufread to perform cross synthesis. -- --
--   ar  ATScross  ktimepnt, kfmod, iatsfile, ifn, kmylev, kbuflev, ipartials \
--                 [, ipartialoffset, ipartialincr]
--   
-- -- csound doc: http://csound.com/docs/manual/ATScross.html atsCross :: Sig -> Sig -> D -> Tab -> Sig -> Sig -> D -> Sig -- | reads data from and ATS data file and stores it in an internal data -- table of frequency, amplitude pairs. -- -- ATSbufread reads data from and ATS data file and stores it in an -- internal data table of frequency, amplitude pairs. -- --
--   ATSbufread  ktimepnt, kfmod, iatsfile, ipartials[, ipartialoffset, \
--                ipartialincr]
--   
-- -- csound doc: http://csound.com/docs/manual/ATSbufread.html atsBufread :: Sig -> Sig -> D -> D -> SE () -- | uses the data from an ATS analysis file to perform noise resynthesis. -- -- ATSaddnz reads from an ATS analysis file and uses the data to perform -- additive synthesis using a modified randi function. -- --
--   ar  ATSaddnz  ktimepnt, iatsfile, ibands[, ibandoffset, ibandincr]
--   
-- -- csound doc: http://csound.com/docs/manual/ATSaddnz.html atsAddnz :: Sig -> D -> D -> Sig -- | uses the data from an ATS analysis file to perform additive synthesis. -- -- ATSadd reads from an ATS analysis file and uses the data to perform -- additive synthesis using an internal array of interpolating -- oscillators. -- --
--   ar  ATSadd  ktimepnt, kfmod, iatsfile, ifn, ipartials[, ipartialoffset, \
--               ipartialincr, igatefn]
--   
-- -- csound doc: http://csound.com/docs/manual/ATSadd.html atsAdd :: Sig -> Sig -> D -> Tab -> D -> Sig -- | Streaming partial track frequency splitting. -- -- The trsplit opcode takes an input containg a TRACKS pv streaming -- signal (as generated, for instance by partials) and splits it into two -- signals according to a k-rate frequency 'split point'. The first -- output will contain all tracks up from 0Hz to the split frequency and -- the second will contain the tracks from the split frequency up to the -- Nyquist. It can also, optionally, scale the gain of the output signals -- by a k-rate amount (default 1). The result is two output signals -- containing only part of the original spectrum. -- --
--   fsiglow, fsighi  trsplit  fin, ksplit[, kgainlow, kgainhigh]
--   
-- -- csound doc: http://csound.com/docs/manual/trsplit.html trsplit :: Spec -> Sig -> (Spec, Spec) -- | Streaming partial track frequency scaling. -- -- The trshift opcode takes an input containg a TRACKS pv streaming -- signal (as generated, for instance by partials) and shifts all -- frequencies by a k-rate frequency. It can also, optionally, scale the -- gain of the signal by a k-rate amount (default 1). The result is -- frequency shifting of the input tracks. -- --
--   fsig  trshift  fin, kpshift[, kgain]
--   
-- -- csound doc: http://csound.com/docs/manual/trshift.html trshift :: Spec -> Sig -> Spec -- | Streaming partial track frequency scaling. -- -- The trscale opcode takes an input containg a TRACKS pv streaming -- signal (as generated, for instance by partials) and scales all -- frequencies by a k-rate amount. It can also, optionally, scale the -- gain of the signal by a k-rate amount (default 1). The result is pitch -- shifting of the input tracks. -- --
--   fsig  trscale  fin, kpitch[, kgain]
--   
-- -- csound doc: http://csound.com/docs/manual/trscale.html trscale :: Spec -> Sig -> Spec -- | Streaming partial track mixing. -- -- The trmix opcode takes two inputs containg TRACKS pv streaming signals -- (as generated, for instance by partials) and mixes them into a single -- TRACKS stream. Tracks will be mixed up to the available space (defined -- by the original number of FFT bins in the analysed signals). If the -- sum of the input tracks exceeds this space, the higher-ordered tracks -- in the second input will be pruned. -- --
--   fsig  trmix  fin1, fin2 
--   
-- -- csound doc: http://csound.com/docs/manual/trmix.html trmix :: Spec -> Spec -> Spec -- | Extracts the lowest-frequency track from a streaming track input -- signal. -- -- The trlowest opcode takes an input containg TRACKS pv streaming -- signals (as generated, for instance by partials) and outputs only the -- lowest track. In addition it outputs two k-rate signals, corresponding -- to the frequency and amplitude of the lowest track signal. -- --
--   fsig, kfr, kamp  trlowest  fin1, kscal
--   
-- -- csound doc: http://csound.com/docs/manual/trlowest.html trlowest :: Spec -> Sig -> (Spec, Sig, Sig) -- | Extracts the highest-frequency track from a streaming track input -- signal. -- -- The trhighest opcode takes an input containg TRACKS pv streaming -- signals (as generated, for instance by partials) and outputs only the -- highest track. In addition it outputs two k-rate signals, -- corresponding to the frequency and amplitude of the highest track -- signal. -- --
--   fsig, kfr, kamp  trhighest  fin1, kscal
--   
-- -- csound doc: http://csound.com/docs/manual/trhighest.html trhighest :: Spec -> Sig -> (Spec, Sig, Sig) -- | Streaming partial track filtering. -- -- The trfilter opcode takes an input containg a TRACKS pv streaming -- signal (as generated, for instance by partials) and filters it using -- an amplitude response curve stored in a function table. The function -- table can have any size (no restriction to powers-of-two). The table -- lookup is done by linear-interpolation. It is possible to create -- time-varying filter curves by updating the amlitude response table -- with a table-writing opcode. -- --
--   fsig  trfilter  fin, kamnt, ifn
--   
-- -- csound doc: http://csound.com/docs/manual/trfilter.html trfilter :: Spec -> Sig -> Tab -> Spec -- | Streaming partial track cross-synthesis. -- -- The trcross opcode takes two inputs containg TRACKS pv streaming -- signals (as generated, for instance by partials) and cross-synthesises -- them into a single TRACKS stream. Two different modes of operation are -- used: mode 0, cross-synthesis by multiplication of the amplitudes of -- the two inputs and mode 1, cross-synthesis by the substititution of -- the amplitudes of input 1 by the input 2. Frequencies and phases of -- input 1 are preserved in the output. The cross-synthesis is done by -- matching tracks between the two inputs using a 'search interval'. The -- matching algorithm will look for tracks in the second input that are -- within the search interval around each track in the first input. This -- interval can be changed at the control rate. Wider search intervals -- will find more matches. -- --
--   fsig  trcross  fin1, fin2, ksearch, kdepth [, kmode] 
--   
-- -- csound doc: http://csound.com/docs/manual/trcross.html trcross :: Spec -> Spec -> Sig -> Sig -> Spec -- | Streaming partial track additive synthesis -- -- The tradsyn opcode takes an input containg a TRACKS pv streaming -- signal (as generated, for instance by partials),as described in -- Lazzarini et al, "Time-stretching using the Instantaneous Frequency -- Distribution and Partial Tracking", Proc.of ICMC05, Barcelona. It -- resynthesises the signal using linear amplitude and frequency -- interpolation to drive a bank of interpolating oscillators with -- amplitude and pitch scaling controls. -- --
--   asig  tradsyn  fin, kscal, kpitch, kmaxtracks, ifn
--   
-- -- csound doc: http://csound.com/docs/manual/tradsyn.html tradsyn :: Spec -> Sig -> Sig -> Sig -> Tab -> Sig -- | Instantaneous Frequency Distribution, magnitude and phase analysis. -- -- The tabifd opcode takes an input function table and performs an -- Instantaneous Frequency, magnitude and phase analysis, using the STFT -- and tabifd (Instantaneous Frequency Distribution), as described in -- Lazzarini et al, "Time-stretching using the Instantaneous Frequency -- Distribution and Partial Tracking", Proc.of ICMC05, Barcelona. It -- generates two PV streaming signals, one containing the amplitudes and -- frequencies (a similar output to pvsanal) and another containing -- amplitudes and unwrapped phases. -- --
--   ffr,fphs  tabifd  ktimpt, kamp, kpitch, ifftsize, ihopsize, iwintype,ifn
--   
-- -- csound doc: http://csound.com/docs/manual/tabifd.html tabifd :: Sig -> Sig -> Sig -> D -> D -> D -> Tab -> (Spec, Spec) -- | Streaming partial track additive synthesis with cubic phase -- interpolation -- -- The sinsyn opcode takes an input containg a TRACKS pv streaming signal -- (as generated, for instance by the partials opcode). It resynthesises -- the signal using linear amplitude and cubic phase interpolation to -- drive a bank of interpolating oscillators with amplitude scaling -- control. sinsyn attempts to preserve the phase of the partials in the -- original signal and in so doing it does not allow for pitch or -- timescale modifications of the signal. -- --
--   asig  sinsyn  fin, kscal, kmaxtracks, ifn
--   
-- -- csound doc: http://csound.com/docs/manual/sinsyn.html sinsyn :: Spec -> Sig -> Sig -> Tab -> Sig -- | Streaming partial track additive synthesis with cubic phase -- interpolation with pitch control and support for timescale-modified -- input -- -- The resyn opcode takes an input containg a TRACKS pv streaming signal -- (as generated, for instance by partials). It resynthesises the signal -- using linear amplitude and cubic phase interpolation to drive a bank -- of interpolating oscillators with amplitude and pitch scaling -- controls. Resyn is a modified version of sinsyn, allowing for the -- resynthesis of data with pitch and timescale changes. -- --
--   asig  resyn  fin, kscal, kpitch, kmaxtracks, ifn
--   
-- -- csound doc: http://csound.com/docs/manual/resyn.html resyn :: Spec -> Sig -> Sig -> Sig -> Tab -> Sig -- | Resynthesise using a FFT overlap-add. -- -- Resynthesise phase vocoder data (f-signal) using a FFT overlap-add. -- --
--   ares  pvsynth  fsrc, [iinit]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsynth.html pvsynth :: Spec -> Sig -- | Warp the spectral envelope of a PVS signal -- -- Warp the spectral envelope of a PVS signal by means of shifting and -- scaling. -- --
--   fsig  pvswarp  fsigin, kscal, kshift[, klowest, kmeth, kgain, kcoefs]
--   
-- -- csound doc: http://csound.com/docs/manual/pvswarp.html pvswarp :: Spec -> Sig -> Sig -> Spec -- | Combine the spectral envelope of one fsig with the excitation -- (frequencies) of another. -- -- This opcode provides support for cross-synthesis of amplitudes and -- frequencies. It takes the amplitudes of one input fsig and combines -- with frequencies from another. It is a spectral version of the -- well-known channel vocoder. -- --
--   fsig  pvsvoc  famp, fexc, kdepth, kgain [,kcoefs]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsvoc.html pvsvoc :: Spec -> Spec -> Sig -> Sig -> Spec -- | Retain only the N loudest bins. -- -- Process a PV stream by retaining only the N bins with the highest -- amplitude, zeroing the others. -- --
--   fsig  pvstrace  fsigin, kn 
--   
-- -- csound doc: http://csound.com/docs/manual/pvstrace.html pvstrace :: Spec -> Sig -> Spec -- | Transforms a pvoc stream according to a masking function table. -- -- Transforms a pvoc stream according to a masking function table; if the -- pvoc stream amplitude falls below the value of the function for a -- specific pvoc channel, it applies a gain to that channel. -- --
--   fsig  pvstencil  fsigin, kgain, klevel, iftable
--   
-- -- csound doc: http://csound.com/docs/manual/pvstencil.html pvstencil :: Spec -> Sig -> Sig -> D -> Spec -- | Phase vocoder analysis processing with onset detection/processing. -- -- pvstanal implements phase vocoder analysis by reading function tables -- containing sampled-sound sources, with GEN01, and pvstanal will accept -- deferred allocation tables. -- --
--   fsig  pvstanal  ktimescal, kamp, kpitch, ktab, [kdetect, kwrap, ioffset,ifftsize, ihop, idbthresh]
--             
--   
-- -- csound doc: http://csound.com/docs/manual/pvstanal.html pvstanal :: Sig -> Sig -> Sig -> Tab -> Spec -- | Track the pitch and amplitude of a PVS signal. -- -- Track the pitch and amplitude of a PVS signal as k-rate variables. -- --
--   kfr, kamp  pvspitch  fsig, kthresh
--   
-- -- csound doc: http://csound.com/docs/manual/pvspitch.html pvspitch :: Spec -> Sig -> (Sig, Sig) -- | Write a fsig to the pvs output bus. -- -- This opcode writes a fsig to a channel of the pvs output bus. Note -- that the pvs out bus and the pvs in bus are separate and independent. -- A new channel is created if non-existent. -- --
--   pvsout  fsig, kchan
--   
-- -- csound doc: http://csound.com/docs/manual/pvsout.html pvsout :: Spec -> Sig -> SE () -- | PVS-based oscillator simulator. -- -- Generates periodic signal spectra in AMP-FREQ format, with the option -- of four wave types: -- --
--   fsig  pvsosc  kamp, kfreq, ktype, isize [,ioverlap] [, iwinsize] [, iwintype] [, iformat]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsosc.html pvsosc :: Sig -> Sig -> Sig -> D -> Spec -- | Performs morphing (or interpolation) between two source fsigs. -- -- Performs morphing (or interpolation) between two source fsigs. -- --
--   fsig  pvsmorph  fsig1, fsig2, kampint, kfrqint
--   
-- -- csound doc: http://csound.com/docs/manual/pvsmorph.html pvsmorph :: Spec -> Spec -> Sig -> Sig -> Spec -- | Smooth the amplitude and frequency time functions of a pv stream using -- parallel 1st order lowpass IIR filters with time-varying cutoff -- frequency. -- -- Smooth the amplitude and frequency time functions of a pv stream using -- a 1st order lowpass IIR with time-varying cutoff frequency. This -- opcode uses the same filter as the tone opcode, but this time acting -- separately on the amplitude and frequency time functions that make up -- a pv stream. The cutoff frequency parameter runs at the control-rate, -- but unlike tone and tonek, it is not specified in Hz, but as fractions -- of 1/2 frame-rate (actually the pv stream sampling rate), which is -- easier to understand. This means that the highest cutoff frequency is -- 1 and the lowest 0; the lower the frequency the smoother the functions -- and more pronounced the effect will be. -- --
--   fsig  pvsmooth  fsigin, kacf, kfcf
--   
-- -- csound doc: http://csound.com/docs/manual/pvsmooth.html pvsmooth :: Spec -> Sig -> Sig -> Spec -- | Mix seamlessly two pv signals. -- -- Mix seamlessly two pv signals. This opcode combines the most -- prominent components of two pvoc streams into a single mixed stream. -- --
--   fsig  pvsmix  fsigin1, fsigin2
--   
-- -- csound doc: http://csound.com/docs/manual/pvsmix.html pvsmix :: Spec -> Spec -> Spec -- | Modify amplitudes using a function table, with dynamic scaling. -- -- Modify amplitudes of fsrc using function table, with dynamic scaling. -- --
--   fsig  pvsmaska  fsrc, ifn, kdepth
--   
-- -- csound doc: http://csound.com/docs/manual/pvsmaska.html pvsmaska :: Spec -> Tab -> Sig -> Spec -- | Frequency lock an input fsig -- -- This opcode searches for spectral peaks and then locks the frequencies -- around those peaks. This is similar to phase-locking in non-streaming -- PV processing. It can be used to improve timestretching and -- pitch-shifting quality in PV processing. -- --
--   fsig  pvslock  fsigin, klock
--   
-- -- csound doc: http://csound.com/docs/manual/pvslock.html pvslock :: Spec -> Sig -> Spec -- | Initialise a spectral (f) variable to zero. -- -- Performs the equivalent to an init operation on an f-variable. -- --
--   fsig  pvsinit  isize[, iolap, iwinsize, iwintype, iformat]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsinit.html pvsinit :: D -> Spec -- | Get information from a PVOC-EX formatted source. -- -- Get format information about fsrc, whether created by an opcode such -- as pvsanal, or obtained from a PVOCEX file by pvsfread. This -- information is available at init time, and can be used to set -- parameters for other pvs opcodes, and in particular for creating -- function tables (e.g. for pvsftw), or setting the number of -- oscillators for pvsadsyn. -- --
--   ioverlap, inumbins, iwinsize, iformat  pvsinfo  fsrc
--   
-- -- csound doc: http://csound.com/docs/manual/pvsinfo.html pvsinfo :: Spec -> (D, D, D, D) -- | Retrieve an fsig from the input software bus; a pvs equivalent to -- chani. -- -- This opcode retrieves an f-sig from the pvs in software bus, which can -- be used to get data from an external source, using the Csound 5 API. A -- channel is created if not already existing. The fsig channel is in -- that case initialised with the given parameters. It is important to -- note that the pvs input and output (pvsout opcode) busses are -- independent and data is not shared between them. -- --
--   fsig  pvsin  kchan[, isize, iolap, iwinsize, iwintype, iformat]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsin.html pvsin :: Sig -> Spec -- | Instantaneous Frequency Distribution, magnitude and phase analysis. -- -- The pvsifd opcode takes an input a-rate signal and performs an -- Instantaneous Frequency, magnitude and phase analysis, using the STFT -- and pvsifd (Instantaneous Frequency Distribution), as described in -- Lazzarini et al, "Time-stretching using the Instantaneous Frequency -- Distribution and Partial Tracking", Proc.of ICMC05, Barcelona. It -- generates two PV streaming signals, one containing the amplitudes and -- frequencies (a similar output to pvsanal) and another containing -- amplitudes and unwrapped phases. -- --
--   ffr,fphs  pvsifd  ain, ifftsize, ihopsize, iwintype[,iscal]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsifd.html pvsifd :: Sig -> D -> D -> D -> (Spec, Spec) -- | Shift the frequency components of a pv stream, stretching/compressing -- its spectrum. -- --
--   fsig  pvshift  fsigin, kshift, klowest[, kkeepform, igain, kcoefs]
--   
-- -- csound doc: http://csound.com/docs/manual/pvshift.html pvshift :: Spec -> Sig -> Sig -> Spec -- | Scale the amplitude of a pv stream. -- --
--   fsig  pvsgain  fsigin, kgain 
--   
-- -- csound doc: http://csound.com/docs/manual/pvsgain.html pvsgain :: Spec -> Sig -> Spec -- | Write a fsig to a PVOCEX file. -- -- This opcode writes a fsig to a PVOCEX file (which in turn can be read -- by pvsfread or other programs that support PVOCEX file input). -- --
--   pvsfwrite  fsig, ifile
--   
-- -- csound doc: http://csound.com/docs/manual/pvsfwrite.html pvsfwrite :: Spec -> Str -> SE () -- | Writes amplitude and/or frequency data to function tables. -- --
--   kflag  pvsftw  fsrc, ifna [, ifnf]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsftw.html pvsftw :: Spec -> Tab -> Sig -- | Reads amplitude and/or frequency data from function tables. -- --
--   pvsftr  fsrc, ifna [, ifnf]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsftr.html pvsftr :: Spec -> Tab -> SE () -- | Freeze the amplitude and frequency time functions of a pv stream -- according to a control-rate trigger. -- -- This opcodes freezes the evolution of pvs stream by locking -- into steady amplitude and/or frequency values for each bin. The -- freezing is controlled, independently for amplitudes and frequencies, -- by a control-rate trigger, which switches the freezing on if -- equal to or above 1 and off if below 1. -- --
--   fsig  pvsfreeze  fsigin, kfreeza, kfreezf
--   
-- -- csound doc: http://csound.com/docs/manual/pvsfreeze.html pvsfreeze :: Spec -> Sig -> Sig -> Spec -- | Read a selected channel from a PVOC-EX analysis file. -- -- Create an fsig stream by reading a selected channel from a PVOC-EX -- analysis file loaded into memory, with frame interpolation. Only -- format 0 files (amplitude+frequency) are currently supported. The -- operation of this opcode mirrors that of pvoc, but outputs an fsig -- instead of a resynthesized signal. -- --
--   fsig  pvsfread  ktimpt, ifn [, ichan]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsfread.html pvsfread :: Sig -> Tab -> Spec -- | Multiply amplitudes of a pvoc stream by those of a second pvoc stream, -- with dynamic scaling. -- --
--   fsig  pvsfilter  fsigin, fsigfil, kdepth[, igain]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsfilter.html pvsfilter :: Spec -> Spec -> Sig -> Spec -- | Displays a PVS signal as an amplitude vs. freq graph. -- -- This opcode will display a PVS signal fsig. Uses X11 or FLTK windows -- if enabled, else (or if -g flag is set) displays are approximated in -- ASCII characters. -- --
--   pvsdisp  fsig[, ibins, iwtflg] 
--   
-- -- csound doc: http://csound.com/docs/manual/pvsdisp.html pvsdisp :: Spec -> SE () -- | Read a selected channel from a PVOC-EX analysis file. -- -- Create an fsig stream by reading a selected channel from a PVOC-EX -- analysis file, with frame interpolation. -- --
--   fsig  pvsdiskin  SFname,ktscal,kgain[,ioffset, ichan]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsdiskin.html pvsdiskin :: Str -> Sig -> Sig -> Spec -- | Spectral azimuth-based de-mixing of stereo sources. -- -- Spectral azimuth-based de-mixing of stereo sources, with a -- reverse-panning result. This opcode implements the Azimuth -- Discrimination and Resynthesis (ADRess) algorithm, developed by Dan -- Barry (Barry et Al. "Sound Source Separation Azimuth Discrimination -- and Resynthesis". DAFx'04, Univ. of Napoli). The source separation, or -- de-mixing, is controlled by two parameters: an azimuth position (kpos) -- and a subspace width (kwidth). The first one is used to locate the -- spectral peaks of individual sources on a stereo mix, whereas the -- second widens the 'search space', including/exclufing the peaks around -- kpos. These two parameters can be used interactively to extract source -- sounds from a stereo mix. The algorithm is particularly successful -- with studio recordings where individual instruments occupy individual -- panning positions; it is, in fact, a reverse-panning algorithm. -- --
--   fsig  pvsdemix  fleft, fright, kpos, kwidth, ipoints
--   
-- -- csound doc: http://csound.com/docs/manual/pvsdemix.html pvsdemix :: Spec -> Spec -> Sig -> Sig -> D -> Spec -- | Performs cross-synthesis between two source fsigs. -- --
--   fsig  pvscross  fsrc, fdest, kamp1, kamp2
--   
-- -- csound doc: http://csound.com/docs/manual/pvscross.html pvscross :: Spec -> Spec -> Sig -> Sig -> Spec -- | Calculate the cepstrum of a pvs input, optionally liftering -- coefficients. pvsceps :: Spec -> Sig -- | Calculate the spectral centroid of a signal. -- -- Calculate the spectral centroid of a signal from its discrete Fourier -- transform. -- --
--   kcent  pvscent  fsig
--   
-- -- csound doc: http://csound.com/docs/manual/pvscent.html pvscent :: Spec -> Sig -- | Scale the frequency components of a pv stream. -- -- Scale the frequency components of a pv stream, resulting in pitch -- shift. Output amplitudes can be optionally modified in order to -- attempt formant preservation. -- --
--   fsig  pvscale  fsigin, kscal[, kkeepform, kgain, kcoefs]
--   
-- -- csound doc: http://csound.com/docs/manual/pvscale.html pvscale :: Spec -> Sig -> Spec -- | This opcode reads a circular buffer of f-signals (streaming PV -- signals), with binwise additional delays. -- -- This opcode reads from a circular buffer of length ilen (secs), taking -- a handle for the buffer and a time pointer, which holds the current -- read position (also in seconds). It is used in conjunction with a -- pvsbuffer opocde. Reading is circular, wrapping around at the end of -- the buffer. Extra delay times are taken from a function table, with -- each point on it defining a delay time in seconds affecting the -- corresponding bin. -- --
--   fsig  pvsbufread2   ktime, khandle, ift1, ift2 
--   
-- -- csound doc: http://csound.com/docs/manual/pvsbufread2.html pvsbufread2 :: Sig -> Sig -> D -> D -> Spec -- | This opcode reads a circular buffer of f-signals (streaming PV -- signals). -- -- This opcode reads from a circular buffer of length ilen (secs), taking -- a handle for the buffer and a time pointer, which holds the current -- read position (also in seconds). It is used in conjunction with a -- pvsbuffer opocde. Reading is circular, wrapping around at the end of -- the buffer. -- --
--   fsig  pvsbufread   ktime, khandle[, ilo, ihi, iclear] 
--   
-- -- csound doc: http://csound.com/docs/manual/pvsbufread.html pvsbufread :: Sig -> Sig -> Spec -- | This opcode creates and writes to a circular buffer for f-signals -- (streaming PV signals). -- -- This opcode sets up and writes to a circular buffer of length ilen -- (secs), giving a handle for the buffer and a time pointer, which holds -- the current write position (also in seconds). It can be used with one -- or more pvsbufread opcodes. Writing is circular, wrapping around at -- the end of the buffer. -- --
--   ihandle, ktime   pvsbuffer  fsig, ilen 
--   
-- -- csound doc: http://csound.com/docs/manual/pvsbuffer.html pvsbuffer :: Spec -> D -> (D, Sig) -- | Average the amp/freq time functions of each analysis channel for a -- specified time. -- -- Average the amp/freq time functions of each analysis channel for a -- specified time (truncated to number of frames). As a side-effect the -- input pvoc stream will be delayed by that amount. -- --
--   fsig  pvsblur  fsigin, kblurtime, imaxdel
--   
-- -- csound doc: http://csound.com/docs/manual/pvsblur.html pvsblur :: Spec -> Sig -> D -> Spec -- | Obtain the amp and freq values off a PVS signal bin. -- -- Obtain the amp and freq values off a PVS signal bin as k-rate -- variables. -- --
--   kamp, kfr  pvsbin  fsig, kbin
--   
-- -- csound doc: http://csound.com/docs/manual/pvsbin.html pvsbin :: Spec -> Sig -> (Sig, Sig) -- | A band reject filter working in the spectral domain. -- -- Filter the pvoc frames, rejecting bins whose frequency is within a -- band, and with linear interpolation for transitional bands. -- --
--   fsig  pvsbandr  fsigin, xlowcut, xlowfull, \
--             xhighfull, xhighcut[, ktype]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsbandr.html pvsbandr :: Spec -> Sig -> Sig -> Sig -> Sig -> Spec -- | A band pass filter working in the spectral domain. -- -- Filter the pvoc frames, passing bins whose frequency is within a band, -- and with linear interpolation for transitional bands. -- --
--   fsig  pvsbandp  fsigin, xlowcut, xlowfull, \
--             xhighfull, xhighcut[, ktype]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsbandp.html pvsbandp :: Spec -> Sig -> Sig -> Sig -> Sig -> Spec -- | Arpeggiate the spectral components of a streaming pv signal. -- -- This opcode arpeggiates spectral components, by amplifying one bin and -- attenuating all the others around it. Used with an LFO it will provide -- a spectral arpeggiator similar to Trevor Wishart's CDP program -- specarp. -- --
--   fsig  pvsarp  fsigin, kbin, kdepth, kgain
--   
-- -- csound doc: http://csound.com/docs/manual/pvsarp.html pvsarp :: Spec -> Sig -> Sig -> Sig -> Spec -- | Generate an fsig from a mono audio source ain, using phase vocoder -- overlap-add analysis. -- --
--   fsig  pvsanal  ain, ifftsize, ioverlap, iwinsize, iwintype [, iformat] [, iinit]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsanal.html pvsanal :: Sig -> D -> D -> D -> D -> Spec -- | Resynthesize using a fast oscillator-bank. -- --
--   ares  pvsadsyn  fsrc, inoscs, kfmod [, ibinoffset] [, ibinincr] [, iinit]
--   
-- -- csound doc: http://csound.com/docs/manual/pvsadsyn.html pvsadsyn :: Spec -> D -> Sig -> Sig -- | Partial track spectral analysis. -- -- The partials opcode takes two input PV streaming signals containg -- AMP_FREQ and AMP_PHASE signals (as generated for instance by pvsifd or -- in the first case, by pvsanal) and performs partial track analysis, as -- described in Lazzarini et al, "Time-stretching using the Instantaneous -- Frequency Distribution and Partial Tracking", Proc.of ICMC05, -- Barcelona. It generates a TRACKS PV streaming signal, containing -- amplitude, frequency, phase and track ID for each output track. This -- type of signal will contain a variable number of output tracks, up to -- the total number of analysis bins contained in the inputs (fftsize/2 + -- 1 bins). The second input (AMP_PHASE) is optional, as it can take the -- same signal as the first input. In this case, however, all phase -- information will be NULL and resynthesis using phase information -- cannot be performed. -- --
--   ftrks  partials  ffr, fphs, kthresh, kminpts, kmaxgap, imaxtracks
--   
-- -- csound doc: http://csound.com/docs/manual/partials.html partials :: Spec -> Spec -> Sig -> Sig -> Sig -> D -> Spec -- | Synthesis by additive synthesis and inverse FFT. Experimental and only -- available as source code at the moment. -- -- Synthesis by additive synthesis and inverse FFT. -- --
--   asig  cudasynth  kamp, kfreq, itab, iftab, iatab[, inum]
--   asig  cudasynth  fsig, kamp, kfreq[, inum]
--   asig  cudasynth  fsig
--   
-- -- csound doc: http://csound.com/docs/manual/cudasynth.html cudasynth :: Sig -> Sig -> Tab -> D -> D -> Sig -- | Perform sliding phase vocoder algorithm with simplified -- transformational FM using GPU hardware. Experimental and only -- available as source code at the moment. -- -- Perform sliding phase vocoder algorithm with simplified -- transformational FM using GPU hardware. -- --
--   asig  cudasliding  ain, amod, iwinsize
--   
-- -- csound doc: http://csound.com/docs/manual/cudasliding.html cudasliding :: Sig -> Sig -> D -> Sig -- | Generate an fsig from a mono audio source ain, using phase vocoder -- overlap-add analysis and GPU hardware. Experimental and only available -- as source code at the moment. -- -- Generate an fsig from a mono audio source ain, using phase vocoder -- overlap-add analysis and GPU hardware. -- --
--   fsig  cudanal  ain, ifftsize, ioverlap, iwinsize, iwintype [, iformat] [, iinit]
--   
-- -- csound doc: http://csound.com/docs/manual/cudanal.html cudanal :: Sig -> D -> D -> D -> D -> Spec -- | PVS tracks to amplitude+frequency conversion. -- -- The binit opcode takes an input containg a TRACKS pv streaming signal -- (as generated, for instance by partials) and converts it into a -- equal-bandwidth bin-frame containing amplitude and frequency pairs -- (PVS_AMP_FREQ), suitable for overlap-add resynthesis (such as -- performed by pvsynth) or further PVS streaming phase vocoder signal -- transformations. For each frequency bin, it will look for a suitable -- track signal to fill it; if not found, the bin will be empty (0 -- amplitude). If more than one track fits a certain bin, the one with -- highest amplitude will be chosen. This means that not all of the input -- signal is actually binned, the operation is lossy. However, -- in many situations this loss is not perceptually relevant. -- --
--   fsig  binit  fin, isize
--   
-- -- csound doc: http://csound.com/docs/manual/binit.html binit :: Spec -> D -> Spec -- | Generate a constant-Q, exponentially-spaced DFT. -- -- Generate a constant-Q, exponentially-spaced DFT across all octaves of -- a multiply-downsampled control or audio input signal. -- --
--   wsig  spectrum  xsig, iprd, iocts, ifrqa [, iq] [, ihann] [, idbout] \
--             [, idsprd] [, idsinrs]
--   
-- -- csound doc: http://csound.com/docs/manual/spectrum.html spectrum :: Sig -> D -> D -> D -> Wspec -- | Sums the magnitudes across all channels of the spectrum. -- --
--   ksum  specsum  wsig [, interp]
--   
-- -- csound doc: http://csound.com/docs/manual/specsum.html specsum :: Wspec -> Sig -- | Scales an input spectral datablock with spectral envelopes. -- --
--   wsig  specscal  wsigin, ifscale, ifthresh
--   
-- -- csound doc: http://csound.com/docs/manual/specscal.html specscal :: Wspec -> D -> D -> Wspec -- | Estimates the pitch of the most prominent complex tone in the -- spectrum. -- -- Estimate the pitch of the most prominent complex tone in the spectrum. -- --
--   koct, kamp  specptrk  wsig, kvar, ilo, ihi, istr, idbthresh, inptls, \
--             irolloff [, iodd] [, iconfs] [, interp] [, ifprd] [, iwtflg]
--   
-- -- csound doc: http://csound.com/docs/manual/specptrk.html specptrk :: Wspec -> Sig -> D -> D -> D -> D -> D -> D -> (Sig, Sig) -- | Accumulates the values of successive spectral frames. -- --
--   wsig  spechist  wsigin
--   
-- -- csound doc: http://csound.com/docs/manual/spechist.html spechist :: Wspec -> Wspec -- | Filters each channel of an input spectrum. -- --
--   wsig  specfilt  wsigin, ifhtim
--   
-- -- csound doc: http://csound.com/docs/manual/specfilt.html specfilt :: Wspec -> D -> Wspec -- | Displays the magnitude values of the spectrum. -- --
--   specdisp  wsig, iprd [, iwtflg]
--   
-- -- csound doc: http://csound.com/docs/manual/specdisp.html specdisp :: Wspec -> D -> SE () -- | Finds the positive difference values between consecutive spectral -- frames. -- --
--   wsig  specdiff  wsigin
--   
-- -- csound doc: http://csound.com/docs/manual/specdiff.html specdiff :: Wspec -> Wspec -- | Perform a weighted add of two input spectra. -- --
--   wsig  specaddm  wsig1, wsig2 [, imul2]
--   
-- -- csound doc: http://csound.com/docs/manual/specaddm.html specaddm :: Wspec -> Wspec -> Wspec -- | Selects the slot to be use by further lp opcodes. -- --
--   lpslot  islot
--   
-- -- csound doc: http://csound.com/docs/manual/lpslot.html lpslot :: D -> SE () -- | Resynthesises a signal from the data passed internally by a previous -- lpread. -- --
--   ares  lpreson  asig
--   
-- -- csound doc: http://csound.com/docs/manual/lpreson.html lpreson :: Sig -> Sig -- | Reads a control file of time-ordered information frames. -- --
--   krmsr, krmso, kerr, kcps  lpread  ktimpnt, ifilcod [, inpoles] [, ifrmrate]
--   
-- -- csound doc: http://csound.com/docs/manual/lpread.html lpread :: Sig -> Str -> (Sig, Sig, Sig, Sig) -- | Computes a new set of poles from the interpolation between two -- analysis. -- --
--   lpinterp  islot1, islot2, kmix
--   
-- -- csound doc: http://csound.com/docs/manual/lpinterp.html lpinterp :: D -> D -> Sig -> SE () -- | Resynthesises a signal from the data passed internally by a previous -- lpread, applying formant shifting. -- --
--   ares  lpfreson  asig, kfrqratio
--   
-- -- csound doc: http://csound.com/docs/manual/lpfreson.html lpfreson :: Sig -> Sig -> Sig -- | Implements signal reconstruction using an fft-based phase vocoder and -- an extra envelope. -- --
--   ares  vpvoc  ktimpnt, kfmod, ifile [, ispecwp] [, ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/vpvoc.html vpvoc :: Sig -> Sig -> Str -> Sig -- | Creates a new function table by making exponential segments between -- values in stored function tables. -- -- 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  ifn1, idur1, ifn2 [, idur2] [, ifn3] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/tablexseg.html tablexseg :: Tab -> D -> Tab -> SE () -- | Creates a new function table by making linear segments between values -- in stored function tables. -- -- 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  ifn1, idur1, ifn2 [, idur2] [, ifn3] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/tableseg.html tableseg :: Tab -> D -> Tab -> SE () -- | Reads from a phase vocoder analysis file and returns the frequency and -- amplitude from a single analysis channel or bin. -- -- 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. -- --
--   kfreq, kamp  pvread  ktimpnt, ifile, ibin
--   
-- -- csound doc: http://csound.com/docs/manual/pvread.html pvread :: Sig -> Str -> D -> (Sig, Sig) -- | Implements signal reconstruction using an fft-based phase vocoder. -- --
--   ares  pvoc  ktimpnt, kfmod, ifilcod [, ispecwp] [, iextractmode] \
--             [, ifreqlim] [, igatefn]
--   
-- -- csound doc: http://csound.com/docs/manual/pvoc.html pvoc :: Sig -> Sig -> Str -> Sig -- | Interpolates between the amplitudes and frequencies of two phase -- vocoder analysis files. -- -- 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. -- --
--   ares  pvinterp  ktimpnt, kfmod, ifile, kfreqscale1, kfreqscale2, \
--             kampscale1, kampscale2, kfreqinterp, kampinterp
--   
-- -- csound doc: http://csound.com/docs/manual/pvinterp.html pvinterp :: Sig -> Sig -> Str -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Applies the amplitudes from one phase vocoder analysis file to the -- data from a second file. -- -- 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. -- --
--   ares  pvcross  ktimpnt, kfmod, ifile, kampscale1, kampscale2 [, ispecwp]
--   
-- -- csound doc: http://csound.com/docs/manual/pvcross.html pvcross :: Sig -> Sig -> Str -> Sig -> Sig -> Sig -- | Reads from a phase vocoder analysis file and makes the retrieved data -- available. -- -- 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  ktimpnt, ifile
--   
-- -- csound doc: http://csound.com/docs/manual/pvbufread.html pvbufread :: Sig -> Str -> SE () -- | Reads from a pvoc file and uses the data to perform additive -- synthesis. -- -- 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. -- --
--   ares  pvadd  ktimpnt, kfmod, ifilcod, ifn, ibins [, ibinoffset] \
--             [, ibinincr] [, iextractmode] [, ifreqlim] [, igatefn]
--   
-- -- csound doc: http://csound.com/docs/manual/pvadd.html pvadd :: Sig -> Sig -> Str -> Tab -> D -> Sig -- | Deprecated. -- -- Deprecated. Use the tableseg opcode instead. -- --
--   ktableseg  ifn1, idur1, ifn2 [, idur2] [, ifn3] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/ktableseg.html ktableseg :: Tab -> D -> Tab -> SE () -- | Accumulates the minimum value of audio signals. -- -- minaccum compares two audio-rate variables and stores the minimum -- value between them into the first. -- --
--   minaccum  aAccumulator, aInput
--   
-- -- csound doc: http://csound.com/docs/manual/minaccum.html minaccum :: Sig -> Sig -> SE () -- | Accumulates the minimum of the absolute values of audio signals. -- -- minabsaccum compares two audio-rate variables and stores the minimum -- of their absolute values into the first. -- --
--   minabsaccum  aAccumulator, aInput
--   
-- -- csound doc: http://csound.com/docs/manual/minabsaccum.html minabsaccum :: Sig -> Sig -> SE () -- | Produces a signal that is the minimum of the absolute values of any -- number of input signals. -- -- 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). -- --
--   amin  minabs  ain1, ain2 [, ain3] [, ain4] [...]
--   kmin  minabs  kin1, kin2 [, kin3] [, kin4] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/minabs.html minabs :: [Sig] -> Sig -- | Produces a signal that is the minimum of any number of input signals. -- -- The min opcode takes any number of a-rate, k-rate or i-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). -- --
--   amin  min  ain1, ain2 [, ain3] [, ain4] [...]
--   kmin  min  kin1, kin2 [, kin3] [, kin4] [...]
--   imin  min  iin1, iin2 [, iin3] [, iin4] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/min.html min' :: [Sig] -> Sig -- | Accumulates the maximum value of audio signals. -- -- maxaccum compares two audio-rate variables and stores the maximum -- value between them into the first. -- --
--   maxaccum  aAccumulator, aInput
--   
-- -- csound doc: http://csound.com/docs/manual/maxaccum.html maxaccum :: Sig -> Sig -> SE () -- | Accumulates the maximum of the absolute values of audio signals. -- -- maxabsaccum compares two audio-rate variables and stores the maximum -- of their absolute values into the first. -- --
--   maxabsaccum  aAccumulator, aInput
--   
-- -- csound doc: http://csound.com/docs/manual/maxabsaccum.html maxabsaccum :: Sig -> Sig -> SE () -- | Produces a signal that is the maximum of the absolute values of any -- number of input signals. -- -- 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). -- --
--   amax  maxabs  ain1, ain2 [, ain3] [, ain4] [...]
--   kmax  maxabs  kin1, kin2 [, kin3] [, kin4] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/maxabs.html maxabs :: [Sig] -> Sig -- | Local maximum (or minimum) value of an incoming asig signal -- -- 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. -- --
--   knumkout  max_k  asig, ktrig, itype
--   
-- -- csound doc: http://csound.com/docs/manual/max_k.html max_k :: Sig -> Sig -> D -> Sig -- | Produces a signal that is the maximum of any number of input signals. -- -- The max opcode takes any number of a-rate, k-rate or i-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). -- --
--   amax  max  ain1, ain2 [, ain3] [, ain4] [...]
--   kmax  max  kin1, kin2 [, kin3] [, kin4] [...]
--   imax  max  iin1, iin2 [, iin3] [, iin4] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/max.html max' :: [Sig] -> Sig -- | Compares two audio signals -- -- Compares two audio signals using the standard math operators -- --
--   aout  cmp  aL, S_operator, aR
--   
-- -- csound doc: http://csound.com/docs/manual/cmp.html cmp :: Sig -> Str -> Sig -> Sig -- | Waveshapes a signal by raising it to a variable exponent. -- -- 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. -- --
--   aout  powershape  ain, kShapeAmount [, ifullscale]
--   
-- -- csound doc: http://csound.com/docs/manual/powershape.html powershape :: Sig -> Sig -> Sig -- | Distorts a phasor for reading two unequal portions of a table in equal -- periods. -- -- 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. -- --
--   aout  pdhalfy  ain, kShapeAmount [, ibipolar [, ifullscale]]
--   
-- -- csound doc: http://csound.com/docs/manual/pdhalfy.html pdhalfy :: Sig -> Sig -> Sig -- | Distorts a phasor for reading the two halves of a table at different -- rates. -- -- 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. -- --
--   aout  pdhalf  ain, kShapeAmount [, ibipolar [, ifullscale]]
--   
-- -- csound doc: http://csound.com/docs/manual/pdhalf.html pdhalf :: Sig -> Sig -> Sig -- | Performs linear clipping on an audio signal or a phasor. -- -- 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. -- --
--   aout  pdclip  ain, kWidth, kCenter [, ibipolar [, ifullscale]]
--   
-- -- csound doc: http://csound.com/docs/manual/pdclip.html pdclip :: Sig -> Sig -> Sig -> Sig -- | Efficiently evaluates the sum of Chebyshev polynomials of arbitrary -- order. -- -- 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. -- --
--   aout  chebyshevpoly  ain, k0 [, k1 [, k2 [...]]]
--   
-- -- csound doc: http://csound.com/docs/manual/chebyshevpoly.html chebyshevpoly :: Sig -> [Sig] -> Sig -- | A model of beaten plate consisting of two parallel delay-lines and two -- first-order lowpass filters. -- --
--   ares  wguide2  asig, xfreq1, xfreq2, kcutoff1, kcutoff2, \
--             kfeedback1, kfeedback2
--   
-- -- csound doc: http://csound.com/docs/manual/wguide2.html wguide2 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | A simple waveguide model consisting of one delay-line and one -- first-order lowpass filter. -- --
--   ares  wguide1  asig, xfreq, kcutoff, kfeedback
--   
-- -- csound doc: http://csound.com/docs/manual/wguide1.html wguide1 :: Sig -> Sig -> Sig -> Sig -> Sig -- | Performs filtering using a transposed form-II digital filter lattice -- with radial pole-shearing and angular pole-warping. -- -- General purpose custom filter with time-varying pole control. The -- filter coefficients implement the following difference equation: -- --
--   ares  zfilter2  asig, kdamp, kfreq, iM, iN, ib0, ib1, ..., ibM, \
--             ia1,ia2, ..., iaN
--   
-- -- csound doc: http://csound.com/docs/manual/zfilter2.html zfilter2 :: Sig -> Sig -> Sig -> D -> D -> [D] -> Sig -- | Parametric equalizer and filter opcode with 7 filter types, based on -- algorithm by Robert Bristow-Johnson. -- -- Parametric equalizer and filter opcode with 7 filter types, based on -- algorithm by Robert Bristow-Johnson. -- --
--   ar  rbjeq  asig, kfco, klvl, kQ, kS[, imode]
--   
-- -- csound doc: http://csound.com/docs/manual/rbjeq.html rbjeq :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Implementation of Zoelzer's parametric equalizer filters. -- -- Implementation of Zoelzer's parametric equalizer filters, with some -- modifications by the author. -- --
--   ares  pareq  asig, kc, kv, kq [, imode] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/pareq.html pareq :: Sig -> Sig -> Sig -> Sig -> Sig -- | A filter with a non-linear effect and blowup protection. -- -- Implements the filter: -- --
--   ares  nlfilt2  ain, ka, kb, kd, kC, kL
--   
-- -- csound doc: http://csound.com/docs/manual/nlfilt2.html nlfilt2 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | A filter with a non-linear effect. -- -- Implements the filter: -- --
--   ares  nlfilt  ain, ka, kb, kd, kC, kL
--   
-- -- csound doc: http://csound.com/docs/manual/nlfilt.html nlfilt :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | A Hilbert rransformer. -- -- A DFT-based implementation of a Hilbert transformer. -- --
--   ar1, ar2  hilbert2  asig, ifftsize, ihopsize
--   
-- -- csound doc: http://csound.com/docs/manual/hilbert2.html hilbert2 :: Sig -> D -> D -> (Sig, Sig) -- | A Hilbert transformer. -- -- An IIR implementation of a Hilbert transformer. -- --
--   ar1, ar2  hilbert  asig
--   
-- -- csound doc: http://csound.com/docs/manual/hilbert.html hilbert :: Sig -> (Sig, Sig) -- | Formant filter. -- -- 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(?). -- --
--   asig  fofilter  ain, xcf, xris, xdec[, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/fofilter.html fofilter :: Sig -> Sig -> Sig -> Sig -> Sig -- | AM/FM analysis from quadrature signal. -- -- This opcode attempts to extract the AM and FM signals off a quadrature -- signal (e.g. from a Hilbert transform). -- --
--   am, af  fmanal  are, aim
--   
-- -- csound doc: http://csound.com/docs/manual/fmanal.html fmanal :: Sig -> Sig -> (Sig, Sig) -- | Performs filtering using a transposed form-II digital filter lattice -- with no time-varying control. -- -- General purpose custom filter with no time-varying pole control. The -- filter coefficients implement the following difference equation: -- --
--   ares  filter2  asig, iM, iN, ib0, ib1, ..., ibM, ia1, ia2, ..., iaN
--   kres  filter2  ksig, iM, iN, ib0, ib1, ..., ibM, ia1, ia2, ..., iaN
--   
-- -- csound doc: http://csound.com/docs/manual/filter2.html filter2 :: Sig -> D -> D -> [D] -> Sig -- | Equalizer filter -- -- 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. -- --
--   asig  eqfil  ain, kcf, kbw, kgain[, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/eqfil.html eqfil :: Sig -> Sig -> Sig -> Sig -> Sig -- | A DC blocking filter. -- -- Implements a DC blocking filter with improved DC attenuation. -- --
--   ares  dcblock2  ain [, iorder] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/dcblock2.html dcblock2 :: Sig -> Sig -- | A DC blocking filter. -- -- Implements the DC blocking filter -- --
--   ares  dcblock  ain [, igain]
--   
-- -- csound doc: http://csound.com/docs/manual/dcblock.html dcblock :: Sig -> Sig -- | A first-order recursive low-pass filter with variable frequency -- response. -- --
--   kres  tonek  ksig, khp [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/tonek.html tonek :: Sig -> Sig -> Sig -- | Generate glissandos starting from a control signal. -- -- Generate glissandos starting from a control signal with a trigger. -- --
--   kres  tlineto  ksig, ktime, ktrig
--   
-- -- csound doc: http://csound.com/docs/manual/tlineto.html tlineto :: Sig -> Sig -> Sig -> Sig -- | Timed trigger -- -- Timed trigger. Port of Supercollider's Trig ugen -- --
--   aout  sc_trig  ain, kdur
--   kout  sc_trig  kin, kdur
--   
-- -- csound doc: http://csound.com/docs/manual/sc_trig.html sc_trig :: Sig -> Sig -> Sig -- | Exponential Lag -- -- Exponential lag with different smoothing time for up- and downgoing -- signals. Port of Supercollider's LagUD -- --
--   aout  sc_lagud  ain, klagup, klagdown
--   kout  sc_lagud  kin, klagup, klagdown
--   
-- -- csound doc: http://csound.com/docs/manual/sc_lagud.html sc_lagud :: Sig -> Sig -> Sig -> Sig -- | Exponential Lag -- -- Exponential lag with 60dB lag time. Port of Supercollider's Lag -- --
--   aout  sc_lag  ain, klagtime [, initialvalue=0]
--   kout  sc_lag  kin, klagtime [, initialvalue=0]
--   
-- -- csound doc: http://csound.com/docs/manual/sc_lag.html sc_lag :: Sig -> Sig -> Sig -- | Control signal resonant filter stack. -- -- 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. -- --
--   kres  resonxk  ksig, kcf, kbw[, inumlayer, iscl, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/resonxk.html resonxk :: Sig -> Sig -> Sig -> Sig -- | A second-order resonant filter. -- --
--   kres  resonk  ksig, kcf, kbw [, iscl] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/resonk.html resonk :: Sig -> Sig -> Sig -> Sig -- | Applies portamento to a step-valued control signal. -- --
--   kres  portk  ksig, khtim [, isig]
--   
-- -- csound doc: http://csound.com/docs/manual/portk.html portk :: Sig -> Sig -> Sig -- | Applies portamento to a step-valued control signal. -- --
--   kres  port  ksig, ihtim [, isig]
--   
-- -- csound doc: http://csound.com/docs/manual/port.html port :: Sig -> D -> Sig -- | Generate glissandos starting from a control signal. -- --
--   kres  lineto  ksig, ktime
--   
-- -- csound doc: http://csound.com/docs/manual/lineto.html lineto :: Sig -> Sig -> Sig -- | A hi-pass filter whose transfer functions are the complements of the -- tonek opcode. -- --
--   kres  atonek  ksig, khp [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/atonek.html atonek :: Sig -> Sig -> Sig -- | A notch filter whose transfer functions are the complements of the -- reson opcode. -- --
--   kres  aresonk  ksig, kcf, kbw [, iscl] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/aresonk.html aresonk :: Sig -> Sig -> Sig -> Sig -- | A bank of filters in which the cutoff frequency can be separated under -- user control. -- -- A bank of filters in which the cutoff frequency can be separated under -- user control -- --
--   ares  vlowres  asig, kfco, kres, iord, ksep
--   
-- -- csound doc: http://csound.com/docs/manual/vlowres.html vlowres :: Sig -> Sig -> Sig -> D -> Sig -> Sig -- | Models some of the filter characteristics of a Roland TB303 -- voltage-controlled filter. -- -- 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. -- --
--   ares  tbvcf  asig, xfco, xres, kdist, kasym [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/tbvcf.html tbvcf :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | A resonant second order filter, with simultaneous lowpass, highpass -- and bandpass outputs. -- -- Implementation of a resonant second order filter, with simultaneous -- lowpass, highpass and bandpass outputs. -- --
--   alow, ahigh, aband  svfilter   asig, kcf, kq [, iscl] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/svfilter.html svfilter :: Sig -> Sig -> Sig -> (Sig, Sig, Sig) -- | State-variable filter. -- -- 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. -- --
--   ahp,alp,abp,abr  statevar  ain, xcf, xq [, iosamps, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/statevar.html statevar :: Sig -> Sig -> Sig -> (Sig, Sig, Sig, Sig) -- | A resonant low-pass filter. -- --
--   ares  rezzy  asig, xfco, xres [, imode, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/rezzy.html rezzy :: Sig -> Sig -> Sig -> Sig -- | A bandpass filter with variable frequency response. -- -- Implementations of a second-order, two-pole two-zero bandpass filter -- with variable frequency response. -- --
--   ares  resonz  asig, xcf, xbw [, iscl] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/resonz.html resonz :: Sig -> Sig -> Sig -> Sig -- | A bank of second-order bandpass filters, connected in parallel. -- --
--   ares  resony  asig, kbf, kbw, inum, ksep [, isepmode] [, iscl] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/resony.html resony :: Sig -> Sig -> Sig -> D -> Sig -> Sig -- | Emulates a stack of filters using the reson opcode. -- -- 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. -- --
--   ares  resonx  asig, xcf, xbw [, inumlayer] [, iscl] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/resonx.html resonx :: Sig -> Sig -> Sig -> Sig -- | A bandpass filter with variable frequency response. -- -- Implementations of a second-order, two-pole two-zero bandpass filter -- with variable frequency response. -- --
--   ares  resonr  asig, xcf, xbw [, iscl] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/resonr.html resonr :: Sig -> Sig -> Sig -> Sig -- | A second-order resonant filter. -- --
--   ares  reson  asig, xcf, xbw [, iscl] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/reson.html reson :: Sig -> Sig -> Sig -> Sig -- | Moog voltage-controlled lowpass filter emulation. -- -- Mvclpf4 is an digital implementation of the 4th-order (24 dB/oct) Moog -- ladder filter originally written by Fons Andriaensen. It is a version -- of the mvclpf3 opcode with four outputs, for 6dB, 12dB, 18dB, and 24 -- dB/octave responses. -- --
--   asig1,asig2,asig3,asig4  mvclpf4  ain, xcf, xres[, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/mvclpf4.html mvclpf4 :: Sig -> Sig -> Sig -> (Sig, Sig, Sig, Sig) -- | Moog voltage-controlled lowpass filter emulation. -- -- Mvclpf3 is an digital implementation of the 4th-order (24 dB/oct) Moog -- ladder filter originally written by Fons Andriaensen. According to the -- author, mvclpf3 "is based on mvclpf2 , with two differences. It uses -- the the technique described by Stilson and Smith to extend the -- constant-Q range, and the internal sample frequency is doubled, giving -- a better approximation to the non-linear behaviour at high freqencies. -- This version has high Q over the entire frequency range and will -- oscillate up to above 10 kHz, while the two others show a decreasing Q -- at high frequencies. Mvclpf3 is reasonably well tuned, and can be -- played as a VCO up to at least 5 kHz". -- --
--   asig  mvclpf3  ain, xcf, xres[, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/mvclpf3.html mvclpf3 :: Sig -> Sig -> Sig -> Sig -- | Moog voltage-controlled lowpass filter emulation. -- -- Mvclpf2 is an digital implementation of the 4th-order (24 dB/oct) Moog -- ladder filter originally written by Fons Andriaensen. According to the -- author, mvclpf2 "uses five non-linear elements, in the input and in -- all four filter sections. It works by using the derivative of the -- nonlinearity (for which 1 / (1 + x * x) is reasonable approximation). -- The main advantage of this is that only one evaluation of the -- non-linear function is required for each section". -- --
--   asig  mvclpf2  ain, xcf, xres[, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/mvclpf2.html mvclpf2 :: Sig -> Sig -> Sig -> Sig -- | Moog voltage-controlled lowpass filter emulation. -- -- Mvclpf1 is an digital implementation of the 4th-order (24 dB/oct) Moog -- ladder filter originally written by Fons Andriaensen. According to the -- author, mvclpf1 "is a fairly simple design, and it does not even -- pretend to come close the 'real thing'. It uses a very crude -- approximation of the non-linear resistor in the first filter section -- only. [...] [I]t's [a] cheap (in terms of CPU usage) general purpose -- 24 dB/oct lowpass filter that could be useful". -- --
--   asig  mvclpf1  ain, xcf, xres[,istor]
--   
-- -- csound doc: http://csound.com/docs/manual/mvclpf1.html mvclpf1 :: Sig -> Sig -> Sig -> Sig -- | Moog voltage-controlled highpass filter emulation. -- -- Mvchpf is an digital implementation of the 4th-order (24 dB/oct) Moog -- high-pass filter, originally written by Fons Andriaensen. According to -- the author, mvchpf "...is based on the voltage controlled highpass -- filter by Robert Moog. again with some attention to the nonlinear -- effects." -- --
--   asig  mvchpf  ain, xcf[, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/mvchpf.html mvchpf :: Sig -> Sig -> Sig -- | A digital emulation of the Moog diode ladder filter configuration. -- --
--   ares  moogvcf2  asig, xfco, xres [,iscale, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/moogvcf2.html moogvcf2 :: Sig -> Sig -> Sig -> Sig -- | A digital emulation of the Moog diode ladder filter configuration. -- --
--   ares  moogvcf  asig, xfco, xres [,iscale, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/moogvcf.html moogvcf :: Sig -> Sig -> Sig -> Sig -- | Moog ladder lowpass filter. -- -- Moogladder2 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 uses -- approximations to the tanh function and so is faster but less accurate -- than moogladder. -- --
--   asig  moogladder2  ain, kcf, kres[, istor]
--   asig  moogladder2  ain, acf, kres[, istor]
--   asig  moogladder2  ain, kcf, ares[, istor]
--   asig  moogladder2  ain, acf, ares[, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/moogladder2.html moogladder2 :: Sig -> Sig -> Sig -> Sig -- | Moog ladder lowpass filter. -- -- 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. -- --
--   asig  moogladder  ain, kcf, kres[, istor]
--   asig  moogladder  ain, acf, kres[, istor]
--   asig  moogladder  ain, kcf, ares[, istor]
--   asig  moogladder  ain, acf, ares[, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/moogladder.html moogladder :: Sig -> Sig -> Sig -> Sig -- | A 3-pole sweepable resonant lowpass filter. -- -- Implementation of a 3 pole sweepable resonant lowpass filter. -- --
--   ares  lpf18  asig, xfco, xres, xdist [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/lpf18.html lpf18 :: Sig -> Sig -> Sig -> Sig -> Sig -- | Simulates layers of serially connected resonant lowpass filters. -- -- lowresx is equivalent to more layers of lowres with the same arguments -- serially connected. -- --
--   ares  lowresx  asig, xcutoff, xresonance [, inumlayer] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/lowresx.html lowresx :: Sig -> Sig -> Sig -> Sig -- | Another resonant lowpass filter. -- -- lowres is a resonant lowpass filter. -- --
--   ares  lowres  asig, kcutoff, kresonance [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/lowres.html lowres :: Sig -> Sig -> Sig -> Sig -- | A resonant lowpass filter. -- -- Implementation of a resonant second-order lowpass filter. -- --
--   ares  lowpass2  asig, kcf, kq [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/lowpass2.html lowpass2 :: Sig -> Sig -> Sig -> Sig -- | A second-order multi-mode filter. -- --
--   ares  bqrez  asig, xfco, xres [, imode] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/bqrez.html bqrez :: Sig -> Sig -> Sig -> Sig -- | A notch filter whose transfer functions are the complements of the -- reson opcode. -- --
--   ares  areson  asig, kcf, kbw [, iscl] [, iskip]
--   ares  areson  asig, acf, kbw [, iscl] [, iskip]
--   ares  areson  asig, kcf, abw [, iscl] [, iskip]
--   ares  areson  asig, acf, abw [, iscl] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/areson.html areson :: Sig -> Sig -> Sig -> Sig -- | Zero-delay feedback implementation of 4 pole ladder filter. -- -- Zero-delay feedback implementation of a 4 pole (24 dB/oct) low-pass -- filter based on the Moog ladder filter. -- --
--   asig  zdf_ladder  ain, xcf, xQ [, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/zdf_ladder.html zdf_ladder :: Sig -> Sig -> Sig -> Sig -- | Zero-delay feedback implementation of 2 pole filter with multimode -- output. -- -- Zero-delay feedback implementation of a 2 pole (12 dB/oct) filter. -- Offers low-pass, band-pass, and high-pass output. -- --
--   alp, abp, ahp  zdf_2pole_mode  ain, xcf, Q [, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/zdf_2pole_mode.html zdf_2pole_mode :: Sig -> Sig -> Sig -> (Sig, Sig, Sig) -- | Zero-delay feedback implementation of 2 pole filter. -- -- Zero-delay feedback implementation of a 2 pole (12 dB/oct) filter. -- Offers low-pass (default), high-pass, and allpass output modes. -- --
--   asig  zdf_2pole  ain, xcf, xQ [, kmode, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/zdf_2pole.html zdf_2pole :: Sig -> Sig -> Sig -> Sig -- | Zero-delay feedback implementation of 1 pole filter with multimode -- output. -- -- Zero-delay feedback implementation of a 1 pole (6 dB/oct) filter. -- Offers low-pass and high-pass output. -- --
--   alp, ahp  zdf_1pole_mode  ain, xcf [, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/zdf_1pole_mode.html zdf_1pole_mode :: Sig -> Sig -> (Sig, Sig) -- | Zero-delay feedback implementation of 1 pole filter. -- -- Zero-delay feedback implementation of a 1 pole (6 dB/oct) filter. -- Offers low-pass (default), high-pass, and allpass output modes. -- --
--   asig  zdf_1pole  ain, xcf [, kmode, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/zdf_1pole.html zdf_1pole :: Sig -> Sig -> Sig -- | Emulates a stack of filters using the tone opcode. -- -- 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. -- --
--   ares  tonex   asig, khp [, inumlayer] [, iskip]
--   ares  tonex   asig, ahp [, inumlayer] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/tonex.html tonex :: Sig -> Sig -> Sig -- | A first-order recursive low-pass filter with variable frequency -- response. -- --
--   ares  tone  asig, khp [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/tone.html tone :: Sig -> Sig -> Sig -- | A filter that simulates a mass-spring-damper system -- -- Filters the incoming signal with the specified resonance frequency and -- quality factor. It can also be seen as a signal generator for high -- quality factor, with an impulse for the excitation. You can combine -- several modes to built complex instruments such as bells or guitar -- tables. -- --
--   aout  mode  ain, xfreq, xQ [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/mode.html mode :: Sig -> Sig -> Sig -> Sig -- | A median filter, a variant FIR lowpass filter. -- -- Implementation of a median filter. -- --
--   kres  mediank  kin, ksize, imaxsize [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/mediank.html mediank :: Sig -> Sig -> D -> Sig -- | A median filter, a variant FIR lowpass filter. -- -- Implementation of a median filter. -- --
--   ares  median  asig, ksize, imaxsize [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/median.html median :: Sig -> Sig -> D -> Sig -- | Zero-delay feedback implementation of Korg35 resonant low-pass filter. -- -- Zero-delay feedback implementation of Korg35 resonant low-pass filter. -- This filter design is found in the Korg MS10, early MS20, and Monotron -- series. -- --
--   asig  K35_lpf  ain, xcf, xQ [, inlp, isaturation, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/k35_lpf.html k35_lpf :: Sig -> Sig -> Sig -> Sig -- | Zero-delay feedback implementation of Korg35 resonant high-pass -- filter. -- -- Zero-delay feedback implementation of Korg35 resonant high-pass -- filter. This filter design is found in the Korg MS10 early MS20. -- --
--   asig  K35_hpf  ain, xcf, xQ [, inlp, isaturation, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/k35_hpf.html k35_hpf :: Sig -> Sig -> Sig -> Sig -- | A fast and robust method for approximating sound propagation, -- achieving convincing Doppler shifts without having to solve equations. -- -- A fast and robust method for approximating sound propagation, -- achieving convincing Doppler shifts without having to solve equations. -- The method computes frequency shifts based on reading an input delay -- line at a delay time computed from the distance between source and mic -- and the speed of sound. One instance of the opcode is required for -- each dimension of space through which the sound source moves. If the -- source sound moves at a constant speed from in front of the -- microphone, through the microphone, to behind the microphone, then the -- output will be frequency shifted above the source frequency at a -- constant frequency while the source approaches, then discontinuously -- will be shifted below the source frequency at a constant frequency as -- the source recedes from the microphone. If the source sound moves at a -- constant speed through a point to one side of the microphone, then the -- rate of change of position will not be constant, and the familiar -- Doppler frequency shift typical of a siren or engine approaching and -- receding along a road beside a listener will be heard. -- --
--   ashifted  doppler  asource, ksourceposition, kmicposition [, isoundspeed, ifiltercutoff]
--   
-- -- csound doc: http://csound.com/docs/manual/doppler.html doppler :: Sig -> Sig -> Sig -> Sig -- | Zero-delay feedback implementation of 4 pole diode ladder filter. -- -- Zero-delay feedback implementation of a 4 pole (24 dB/oct) diode -- low-pass filter. This filter design was originally used in the EMS -- VCS3 and was the resonant filter in the Roland TB-303. -- --
--   asig  diode_ladder  ain, xcf, xk [, inlp, isaturation, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/diode_ladder.html diode_ladder :: Sig -> Sig -> Sig -> Sig -- | Implements low-pass and high-pass filters of different styles. -- -- 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. -- --
--   ares  clfilt  asig, kfreq, itype, inpol [, ikind] [, ipbr] [, isba] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/clfilt.html clfilt :: Sig -> Sig -> D -> D -> Sig -- | A low-pass Butterworth filter. -- -- Implementation of a second-order low-pass Butterworth filter. This -- opcode can also be written as butlp. -- --
--   ares  butterlp  asig, kfreq [, iskip]
--   ares  butterlp  asig, afreq [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/butterlp.html butterlp :: Sig -> Sig -> Sig -- | A high-pass Butterworth filter. -- -- Implementation of second-order high-pass Butterworth filter. This -- opcode can also be written as buthp. -- --
--   ares  butterhp  asig, kfreq [, iskip]
--   ares  butterhp  asig, afreq [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/butterhp.html butterhp :: Sig -> Sig -> Sig -- | A band-reject Butterworth filter. -- -- Implementation of a second-order band-reject Butterworth filter. This -- opcode can also be written as butbr. -- --
--   ares  butterbr  asig, xfreq, xband [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/butterbr.html butterbr :: Sig -> Sig -> Sig -> Sig -- | A band-pass Butterworth filter. -- -- Implementation of a second-order band-pass Butterworth filter. This -- opcode can also be written as butbp. -- --
--   ares  butterbp  asig, xfreq, xband [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/butterbp.html butterbp :: Sig -> Sig -> Sig -> Sig -- | Same as the butterlp opcode. -- --
--   ares  butlp  asig, kfreq [, iskip]
--   ares  butlp  asig, afreq [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/butlp.html butlp :: Sig -> Sig -> Sig -- | Same as the butterhp opcode. -- --
--   ares  buthp  asig, kfreq [, iskip]
--   ares  buthp  asig, afreq [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/buthp.html buthp :: Sig -> Sig -> Sig -- | Same as the butterbr opcode. -- --
--   ares  butbr  asig, kfreq, kband [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/butbr.html butbr :: Sig -> Sig -> Sig -> Sig -- | Same as the butterbp opcode. -- --
--   ares  butbp  asig, kfreq, kband [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/butbp.html butbp :: Sig -> Sig -> Sig -> Sig -- | A sweepable general purpose biquadratic digital filter with a-rate -- parameters. -- -- A sweepable general purpose biquadratic digital filter. -- --
--   ares  biquada  asig, ab0, ab1, ab2, aa0, aa1, aa2 [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/biquada.html biquada :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | A sweepable general purpose biquadratic digital filter. -- --
--   ares  biquad  asig, kb0, kb1, kb2, ka0, ka1, ka2 [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/biquad.html biquad :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Emulates a stack of filters using the atone opcode. -- -- 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. -- --
--   ares  atonex  asig, khp [, inumlayer] [, iskip]
--   ares  atonex  asig, ahp [, inumlayer] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/atonex.html atonex :: Sig -> Sig -> Sig -- | A hi-pass filter whose transfer functions are the complements of the -- tone opcode. -- --
--   ares  atone  asig, khp [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/atone.html atone :: Sig -> Sig -> Sig -- | Second-order allpass filters arranged in a series. -- -- An implementation of iord number of second-order allpass filters in -- series. -- --
--   ares  phaser2  asig, kfreq, kq, kord, kmode, ksep, kfeedback
--   
-- -- csound doc: http://csound.com/docs/manual/phaser2.html phaser2 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | First-order allpass filters arranged in a series. -- -- An implementation of iord number of first-order allpass filters in -- series. -- --
--   ares  phaser1  asig, kfreq, kord, kfeedback [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/phaser1.html phaser1 :: Sig -> Sig -> Sig -> Sig -> Sig -- | Analyze an audio input and generate harmonizing voices in synchrony -- with formants preserved. -- -- Generate harmonizing voices with formants preserved. -- --
--   ares  harmon4  asig, koct, kfrq1, \
--           kfrq2, kfrq3, kfrq4, icpsmode, ilowest[, ipolarity]
--   
-- -- csound doc: http://csound.com/docs/manual/harmon2.html harmon4 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> Sig -- | Analyze an audio input and generate harmonizing voices in synchrony -- with formants preserved. -- -- Generate harmonizing voices with formants preserved. -- --
--   ares  harmon3  asig, koct, kfrq1, \
--           kfrq2, kfrq3, icpsmode, ilowest[, ipolarity]
--   
-- -- csound doc: http://csound.com/docs/manual/harmon2.html harmon3 :: Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> Sig -- | Analyze an audio input and generate harmonizing voices in synchrony -- with formants preserved. -- -- Generate harmonizing voices with formants preserved. -- --
--   ares  harmon2  asig, koct, kfrq1, kfrq2, icpsmode, ilowest[, ipolarity]
--   
-- -- csound doc: http://csound.com/docs/manual/harmon2.html harmon2 :: Sig -> Sig -> Sig -> Sig -> D -> D -> Sig -- | Analyze an audio input and generate harmonizing voices in synchrony. -- --
--   ares  harmon  asig, kestfrq, kmaxvar, kgenfreq1, kgenfreq2, imode, \
--             iminfrq, iprd
--   
-- -- csound doc: http://csound.com/docs/manual/harmon.html harmon :: Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> D -> Sig -- | A user controlled flanger. -- --
--   ares  flanger  asig, adel, kfeedback [, imaxd]
--   
-- -- csound doc: http://csound.com/docs/manual/flanger.html flanger :: Sig -> Sig -> Sig -> Sig -- | Modified hyperbolic tangent distortion. -- -- Implementation of modified hyperbolic tangent distortion. distort1 can -- be used to generate wave shaping distortion based on a modification of -- the tanh function. -- --
--   ares  distort1  asig, kpregain, kpostgain, kshape1, kshape2[, imode]
--   
-- -- csound doc: http://csound.com/docs/manual/distort1.html distort1 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Distort an audio signal via waveshaping and optional clipping. -- --
--   ar  distort  asig, kdist, ifn[, ihp, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/distort.html distort :: Sig -> Sig -> Tab -> Sig -- | Wraps-around the signal that exceeds the low and high thresholds. -- --
--   ares  wrap  asig, klow, khigh
--   ires  wrap  isig, ilow, ihigh
--   kres  wrap  ksig, klow, khigh
--   
-- -- csound doc: http://csound.com/docs/manual/wrap.html wrap :: Sig -> Sig -> Sig -> Sig -- | Reflects the signal that exceeds the low and high thresholds. -- --
--   ares  mirror  asig, klow, khigh
--   ires  mirror  isig, ilow, ihigh
--   kres  mirror  ksig, klow, khigh
--   
-- -- csound doc: http://csound.com/docs/manual/mirror.html mirror :: Sig -> Sig -> Sig -> Sig -- | Sets the lower and upper limits of the value it processes. -- --
--   ares  limit  asig, klow, khigh
--   ires  limit  isig, ilow, ihigh
--   kres  limit  ksig, klow, khigh
--   ires[]  limit  isig[], ilow, ihigh
--   kres[]  limit  ksig[], klow, khigh
--   
-- -- csound doc: http://csound.com/docs/manual/limit.html limit :: Sig -> Sig -> Sig -> Sig -- | Write value of into the current buffer of an a-rate variable by index. -- -- 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  kval, kndx, avar
--   
-- -- csound doc: http://csound.com/docs/manual/vaset.html vaset :: Sig -> Sig -> Sig -> SE () -- | Access values of the current buffer of an a-rate variable by indexing. -- -- 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. -- --
--   kval  vaget  kndx, avar
--   
-- -- csound doc: http://csound.com/docs/manual/vaget.html vaget :: Sig -> Sig -> Sig -- | Modify a signal by up-sampling. -- --
--   ares  upsamp  ksig
--   
-- -- csound doc: http://csound.com/docs/manual/upsamp.html upsamp :: Sig -> Sig -- | Performs a sample-and-hold operation on its input. -- --
--   ares  samphold  asig, agate [, ival] [, ivstor]
--   kres  samphold  ksig, kgate [, ival] [, ivstor]
--   
-- -- csound doc: http://csound.com/docs/manual/samphold.html samphold :: Sig -> Sig -> Sig -- | Calculates the weighted mean value of two input signals. -- -- Calculates the weighted mean value (i.e. linear interpolation) of two -- input signals -- --
--   ares  ntrpol  asig1, asig2, kpoint [, imin] [, imax]
--   ires  ntrpol  isig1, isig2, ipoint [, imin] [, imax]
--   kres  ntrpol  ksig1, ksig2, kpoint [, imin] [, imax]
--   
-- -- csound doc: http://csound.com/docs/manual/ntrpol.html ntrpol :: Sig -> Sig -> Sig -> Sig -- | Converts a control signal to an audio signal using linear -- interpolation. -- --
--   ares  interp  ksig [, iskip] [, imode]
--           [, ivalue]
--   
-- -- csound doc: http://csound.com/docs/manual/interp.html interp :: Sig -> Sig -- | Modify a signal by integration. -- --
--   ares  integ  asig [, iskip]
--   kres  integ  ksig [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/integ.html integ :: Sig -> Sig -- | Adds artificial foldover to an audio signal. -- --
--   ares  fold  asig, kincr
--   
-- -- csound doc: http://csound.com/docs/manual/fold.html fold :: Sig -> Sig -> Sig -- | Modify a signal by down-sampling. -- --
--   kres  downsamp  asig [, iwlen]
--   
-- -- csound doc: http://csound.com/docs/manual/downsamp.html downsamp :: Sig -> Sig -- | Modify a signal by differentiation. -- --
--   ares  diff  asig [, iskip]
--   kres  diff  ksig [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/diff.html diff :: Sig -> Sig -- | Mixes low level noise to a list of a-rate signals -- -- 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  a1[, a2[, a3[, ... ]]]
--   
-- -- csound doc: http://csound.com/docs/manual/denorm.html denorm :: [Sig] -> SE () -- | Variably reverberates an input signal with a “colored” frequency -- response. -- --
--   ares  vcomb  asig, krvt, xlpt, imaxlpt [, iskip] [, insmps]
--   
-- -- csound doc: http://csound.com/docs/manual/vcomb.html vcomb :: Sig -> Sig -> Sig -> D -> Sig -- | Variably reverberates an input signal with a flat frequency response. -- --
--   ares  valpass  asig, krvt, xlpt, imaxlpt [, iskip] [, insmps]
--   
-- -- csound doc: http://csound.com/docs/manual/valpass.html valpass :: Sig -> Sig -> Sig -> D -> Sig -- | 8 delay line stereo FDN reverb, based on work by Sean Costello -- -- 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. -- --
--   aoutL, aoutR  reverbsc  ainL, ainR, kfblvl, kfco[, israte[, ipitchm[, iskip]]] 
--   
-- -- csound doc: http://csound.com/docs/manual/reverbsc.html reverbsc :: Sig -> Sig -> Sig -> Sig -> (Sig, Sig) -- | Same as the nreverb opcode. -- --
--   ares  reverb2  asig, ktime, khdif [, iskip] [,inumCombs] \
--             [, ifnCombs] [, inumAlpas] [, ifnAlpas]
--   
-- -- csound doc: http://csound.com/docs/manual/reverb2.html reverb2 :: Sig -> Sig -> Sig -> Sig -- | Reverberates an input signal with a “natural room” frequency -- response. -- --
--   ares  reverb  asig, krvt [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/reverb.html reverb :: Sig -> Sig -> Sig -- | Models the reverberation of a metal plate. -- -- Models the reverberation of a rectangular metal plate with settable -- physical characteristics when excited by audio signal(s). -- --
--   a1[, a2, ...]  platerev  itabexcite. itabouts, kbndry, iaspect, istiff, idecay, iloss, aexcite1[, aexcite2, ...]
--   
-- -- csound doc: http://csound.com/docs/manual/platerev.html platerev :: Tuple a => D -> D -> Sig -> D -> D -> D -> D -> [Sig] -> a -- | A reverberator consisting of 6 parallel comb-lowpass filters. -- -- 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. -- --
--   ares  nreverb  asig, ktime, khdif [, iskip] [,inumCombs] [, ifnCombs] \
--             [, inumAlpas] [, ifnAlpas]
--   
-- -- csound doc: http://csound.com/docs/manual/nreverb.html nreverb :: Sig -> Sig -> Sig -> Sig -- | Three different nested all-pass filters. -- -- Three different nested all-pass filters, useful for implementing -- reverbs. -- --
--   ares  nestedap  asig, imode, imaxdel, idel1, igain1 [, idel2] [, igain2] \
--             [, idel3] [, igain3] [, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/nestedap.html nestedap :: Sig -> D -> D -> D -> D -> Sig -- | Opcode version of Jezar's Freeverb -- -- 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. -- --
--   aoutL, aoutR  freeverb  ainL, ainR, kRoomSize, kHFDamp[, iSRate[, iSkip]] 
--   
-- -- csound doc: http://csound.com/docs/manual/freeverb.html freeverb :: Sig -> Sig -> Sig -> Sig -> (Sig, Sig) -- | Reverberates an input signal with a “colored” frequency response. -- -- Reverberates an input signal with a “colored” frequency response -- with a FIR filter. -- --
--   ares  combinv  asig, krvt, ilpt [, iskip] [, insmps]
--   
-- -- csound doc: http://csound.com/docs/manual/combinv.html combinv :: Sig -> Sig -> D -> Sig -- | Reverberates an input signal with a “colored” frequency response. -- --
--   ares  comb  asig, krvt, ilpt [, iskip] [, insmps]
--   
-- -- csound doc: http://csound.com/docs/manual/comb.html comb :: Sig -> Sig -> D -> Sig -- | A physical model reverberator. -- -- 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. -- --
--   a1, a2  babo  asig, ksrcx, ksrcy, ksrcz, irx, iry, irz [, idiff] [, ifno]
--   
-- -- csound doc: http://csound.com/docs/manual/babo.html babo :: Sig -> Sig -> Sig -> Sig -> D -> D -> D -> (Sig, Sig) -- | Reverberates an input signal with a flat frequency response. -- --
--   ares  alpass  asig, xrvt, ilpt [, iskip] [, insmps]
--   
-- -- csound doc: http://csound.com/docs/manual/alpass.html alpass :: Sig -> Sig -> D -> Sig -- | Writes a multi-channel audio signal to a ZAK array with moving virtual -- sources. -- --
--   vbapzmove  inumchnls, istartndx, asig, idur, ispread, ifldnum, ifld1, \
--            ifld2, [...]
--   
-- -- csound doc: http://csound.com/docs/manual/vbapzmove.html vbapzmove :: Sig -> D -> D -> D -> [D] -> SE () -- | Writes a multi-channel audio signal to a ZAK array. -- --
--   vbapz  inumchnls, istartndx, asig, kazim [, kelev] [, kspread]
--   
-- -- csound doc: http://csound.com/docs/manual/vbapz.html vbapz :: D -> D -> Sig -> Sig -> SE () -- | Distributes an audio signal among many channels with moving virtual -- sources. -- -- Distributes an audio signal among upto 64 channels with moving virtual -- sources. -- --
--   ar1[, ar2...]  vbapmove  asig, idur, ispread, ifldnum, ifld1 \
--             [, ifld2] [...]
--   aarray[]  vbapmove  asig, idur, ispread, ifldnum, ifld1 \
--             [, ifld2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/vbapmove.html vbapmove :: Tuple a => Sig -> D -> D -> D -> [D] -> a -- | Configures VBAP output according to loudspeaker parameters. -- --
--   vbaplsinit  idim, ilsnum [, idir1] [, idir2] [...] [, idir32]
--   vbaplsinit  idim, ilsnum, ilsarray
--   
-- -- csound doc: http://csound.com/docs/manual/vbaplsinit.html vbaplsinit :: D -> D -> SE () -- | Calculates the gains for a sound location between multiple channels -- with moving virtual sources. -- --
--   kr1[, kr2...]  vbapgmove  idur, ispread, ifldnum, ifld1 \
--             [, ifld2] [...]
--   karray[]  vbapgmove  idur, ispread, ifldnum, ifld1 \
--             [, ifld2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/vbapgmove.html vbapgmove :: Tuple a => D -> D -> D -> D -> a -- | Calculates the gains for a sound location between multiple channels. -- -- Calculates the gains for a sound location for up to 64. -- --
--   k1[, k2...]  vbapg  kazim [,kelev] [, kspread] [, ilayout]
--   karray[]  vbapg  kazim [,kelev] [, kspread] [, ilayout]
--   
-- -- csound doc: http://csound.com/docs/manual/vbapg.html vbapg :: Tuple a => Sig -> a -- | Distributes an audio signal among 8 channels with moving virtual -- sources. -- --
--   ar1, ..., ar8  vbap8move  asig, idur, ispread, ifldnum, ifld1 \
--             [, ifld2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/vbap8move.html vbap8move :: Tuple a => Sig -> D -> D -> D -> [D] -> a -- | Distributes an audio signal among 8 channels. -- --
--   ar1, ..., ar8  vbap8  asig, kazim [, kelev] [, kspread]
--   
-- -- csound doc: http://csound.com/docs/manual/vbap8.html vbap8 :: Tuple a => Sig -> Sig -> a -- | Distributes an audio signal among 4 channels with moving virtual -- sources. -- --
--   ar1, ar2, ar3, ar4  vbap4move  asig, idur, ispread, ifldnum, ifld1 \
--             [, ifld2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/vbap4move.html vbap4move :: Tuple a => Sig -> D -> D -> D -> [D] -> a -- | Distributes an audio signal among 4 channels. -- --
--   ar1, ar2, ar3, ar4  vbap4  asig, kazim [, kelev] [, kspread]
--   
-- -- csound doc: http://csound.com/docs/manual/vbap4.html vbap4 :: Sig -> Sig -> (Sig, Sig, Sig, Sig) -- | Distribute an audio signal among 16 channels with moving virtual -- sources. -- --
--   ar1, ..., ar16  vbap16move  asig, idur, ispread, ifldnum, ifld1 \
--             [, ifld2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/vbap16move.html vbap16move :: Tuple a => Sig -> D -> D -> D -> [D] -> a -- | Distributes an audio signal among 16 channels. -- --
--   ar1, ..., ar16  vbap16  asig, kazim [, kelev] [, kspread]
--   
-- -- csound doc: http://csound.com/docs/manual/vbap16.html vbap16 :: Tuple a => Sig -> Sig -> a -- | Distributes an audio signal among many channels. -- -- Distributes an audio signal amongmany channels, up to 64 in the first -- form, arbitrary in the second. -- --
--   ar1[, ar2...]  vbap  asig, kazim [,
--           kelev] [, kspread] [, ilayout]
--   array[]  vbap  asig, kazim [,
--           kelev] [, kspread] [, ilayout]
--   
-- -- csound doc: http://csound.com/docs/manual/vbap.html vbap :: Tuple a => Sig -> Sig -> a -- | Generates output signals based on a previously defined space opcode. -- -- 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). -- --
--   a1, a2, a3, a4  spsend 
--   
-- -- csound doc: http://csound.com/docs/manual/spsend.html spsend :: (Sig, Sig, Sig, Sig) -- | Calculates distance values from xy coordinates. -- -- 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. -- --
--   k1  spdist  ifn, ktime, kx, ky
--   
-- -- csound doc: http://csound.com/docs/manual/spdist.html spdist :: Tab -> Sig -> Sig -> Sig -> Sig -- | Can be used to render an impulse response for a 3D space at i-time. -- -- 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  ioutft, iX, iY, iZ, idist, ift, imode, irlen [, iftnocl]
--   
-- -- csound doc: http://csound.com/docs/manual/spat3dt.html spat3dt :: D -> D -> D -> D -> D -> D -> D -> D -> SE () -- | Positions the input sound in a 3D space with the sound source position -- set at i-time. -- -- 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. -- --
--   aW, aX, aY, aZ  spat3di  ain, iX, iY, iZ, idist, ift, imode [, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/spat3di.html spat3di :: Sig -> D -> D -> D -> D -> D -> D -> (Sig, Sig, Sig, Sig) -- | Positions the input sound in a 3D space and allows moving the sound at -- k-rate. -- -- 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). -- --
--   aW, aX, aY, aZ  spat3d  ain, kX, kY, kZ, idist, ift, imode, imdel, iovr [, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/spat3d.html spat3d :: Sig -> Sig -> Sig -> Sig -> D -> D -> D -> D -> D -> (Sig, Sig, Sig, Sig) -- | Distribute an audio signal across two channels. -- -- Distribute an audio signal across two channels with a choice of -- methods. -- --
--   a1, a2  pan2  asig, xp [, imode]
--   
-- -- csound doc: http://csound.com/docs/manual/pan2.html pan2 :: Sig -> Sig -> (Sig, Sig) -- | Distribute an audio signal amongst four channels. -- -- Distribute an audio signal amongst four channels with localization -- control. -- --
--   a1, a2, a3, a4  pan  asig, kx, ky, ifn [, imode] [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/pan.html pan :: Sig -> Sig -> Sig -> Tab -> (Sig, Sig, Sig, Sig) -- | Takes an input signal and distributes between 2 or 4 channels. -- -- 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. -- --
--   a1, a2  locsig  asig, kdegree, kdistance, kreverbsend
--   a1, a2,  a3, a4  locsig  asig, kdegree, kdistance, kreverbsend
--   
-- -- csound doc: http://csound.com/docs/manual/locsig.html locsig :: Sig -> Sig -> Sig -> Sig -> (Sig, Sig, Sig, Sig) -- | Distributes the audio signals of a previous locsig opcode. -- -- 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!). -- --
--   a1, a2  locsend 
--   a1, a2,  a3, a4  locsend 
--   
-- -- csound doc: http://csound.com/docs/manual/locsend.html locsend :: (Sig, Sig, Sig, Sig) -- | Generates static 3d binaural audio for headphones using a Woodworth -- based spherical head model with improved low frequency phase accuracy. -- -- 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,. -- --
--   aleft, aright  hrtfstat  asrc, iAz, iElev, ifilel, ifiler [,iradius, isr]
--     
--   
-- -- csound doc: http://csound.com/docs/manual/hrtfstat.html hrtfstat :: Sig -> D -> D -> D -> D -> (Sig, Sig) -- | A binaural, dynamic FDN based diffuse-field reverberator. The opcode -- works independently as an efficient, flexible reverberator. -- -- A frequency-dependent, efficient reverberant field is created based on -- low and high frequency desired reverb times. The opcode is designed to -- work with hrtfearly, ideally using its outputs as inputs. However, -- hrtfreverb can be used as a standalone tool. Stability is enforced. -- --
--   aleft, aright, idel  hrtfreverb  asrc, ilowrt60, ihighrt60, ifilel, ifiler [,isr, imfp, iorder]
--   
-- -- csound doc: http://csound.com/docs/manual/hrtfreverb.html hrtfreverb :: Sig -> D -> D -> D -> D -> (Sig, Sig, D) -- | Generates dynamic 3d binaural audio for headphones using a Woodworth -- based spherical head model with improved low frequency phase accuracy. -- -- 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. -- --
--   aleft, aright  hrtfmove2  asrc, kAz, kElev, ifilel, ifiler [,ioverlap, iradius, isr]
--   
-- -- csound doc: http://csound.com/docs/manual/hrtfmove2.html hrtfmove2 :: Sig -> Sig -> Sig -> D -> D -> (Sig, Sig) -- | Generates dynamic 3d binaural audio for headphones using magnitude -- interpolation and phase truncation. -- -- 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. -- --
--   aleft, aright  hrtfmove  asrc, kAz, kElev, ifilel, ifiler [, imode, ifade, isr]
--   
-- -- csound doc: http://csound.com/docs/manual/hrtfmove.html hrtfmove :: Sig -> Sig -> Sig -> D -> D -> (Sig, Sig) -- | Generates 3D binaural audio with high-fidelity early reflections in a -- parametric room using a Phase Truncation algorithm. -- -- This opcode essentially nests the hrtfmove opcode in an image model -- for a user-definable shoebox-shaped room. A default room can be -- selected, or advanced room parameters can be used. Room surfaces can -- be controlled with high and low-frequency absorption coefficients and -- gain factors of a three-band equaliser. -- --
--   aleft, aright, irt60low, irt60high, imfp  hrtfearly  asrc, ksrcx, ksrcy, ksrcz, klstnrx, klstnry, klstnrz, \
--             ifilel, ifiler, idefroom [,ifade, isr, iorder, ithreed, kheadrot, iroomx, iroomy, iroomz, iwallhigh, \
--             iwalllow, iwallgain1, iwallgain2, iwallgain3, ifloorhigh, ifloorlow, ifloorgain1, ifloorgain2, \
--             ifloorgain3, iceilinghigh, iceilinglow, iceilinggain1, iceilinggain2, iceilinggain3]
--   
-- -- csound doc: http://csound.com/docs/manual/hrtfearly.html hrtfearly :: Tuple a => Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> D -> a -- | Codes a signal into the ambisonic B format. -- -- Codes a signal into the ambisonic B format -- --
--   aw, ax, ay, az  bformenc1  asig, kalpha, kbeta
--   aw, ax, ay, az, ar, as, at, au, av  bformenc1  asig, kalpha, kbeta
--   aw, ax, ay, az, ar, as, at, au, av, ak, al, am, an, ao, ap, aq  bformenc1  \
--             asig, kalpha, kbeta
--   aarray[]  bformenc1  asig, kalpha, kbeta
--   
-- -- csound doc: http://csound.com/docs/manual/bformenc1.html bformenc1 :: Tuple a => Sig -> Sig -> Sig -> a -- | Deprecated. Codes a signal into the ambisonic B format. -- -- 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. -- --
--   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
--   
-- -- csound doc: http://csound.com/docs/manual/bformenc.html bformenc :: Tuple a => Sig -> Sig -> Sig -> Sig -> Sig -> a -- | Decodes an ambisonic B format signal -- -- Decodes an ambisonic B format signal into loudspeaker specific -- signals. -- --
--   ao1, ao2  bformdec1  isetup, aw, ax, ay, az [, ar, as, at, au, av \
--             [, abk, al, am, an, ao, ap, aq]]
--   ao1, ao2, ao3, ao4  bformdec1  isetup, aw, ax, ay, az [, ar, as, at, \
--             au, av [, abk, al, am, an, ao, ap, aq]]
--   ao1, ao2, ao3, ao4, ao5  bformdec1  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  bformdec1  isetup, aw, ax, ay, az \
--             [, ar, as, at, au, av [, abk, al, am, an, ao, ap,
--           aq]]]
--   aout[]  bformdec1  isetup, abform[]
--   
-- -- csound doc: http://csound.com/docs/manual/bformdec1.html bformdec1 :: Tuple a => D -> Sig -> Sig -> Sig -> Sig -> a -- | Deprecated. Decodes an ambisonic B format signal. -- -- 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. -- --
--   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]]]
--   
-- -- csound doc: http://csound.com/docs/manual/bformdec.html bformdec :: Tuple a => D -> Sig -> Sig -> Sig -> Sig -> a -- | Variable delay opcodes with high quality interpolation. -- --
--   aout1, aout2  vdelayxws  ain1, ain2, adl, imd, iws [, ist]
--   
-- -- csound doc: http://csound.com/docs/manual/vdelayxws.html vdelayxws :: Sig -> Sig -> Sig -> D -> D -> (Sig, Sig) -- | Variable delay opcodes with high quality interpolation. -- --
--   aout1, aout2, aout3, aout4  vdelayxwq  ain1, ain2, ain3, ain4, adl, \
--             imd, iws [, ist]
--   
-- -- csound doc: http://csound.com/docs/manual/vdelayxwq.html vdelayxwq :: Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> (Sig, Sig, Sig, Sig) -- | Variable delay opcodes with high quality interpolation. -- --
--   aout  vdelayxw  ain, adl, imd, iws [, ist]
--   
-- -- csound doc: http://csound.com/docs/manual/vdelayxw.html vdelayxw :: Sig -> Sig -> D -> D -> Sig -- | A stereo variable delay opcode with high quality interpolation. -- --
--   aout1, aout2  vdelayxs  ain1, ain2, adl, imd, iws [, ist]
--   
-- -- csound doc: http://csound.com/docs/manual/vdelayxs.html vdelayxs :: Sig -> Sig -> Sig -> D -> D -> (Sig, Sig) -- | A 4-channel variable delay opcode with high quality interpolation. -- --
--   aout1, aout2, aout3, aout4  vdelayxq  ain1, ain2, ain3, ain4, adl, imd, iws [, ist]
--   
-- -- csound doc: http://csound.com/docs/manual/vdelayxq.html vdelayxq :: Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> (Sig, Sig, Sig, Sig) -- | A variable delay opcode with high quality interpolation. -- --
--   aout  vdelayx  ain, adl, imd, iws [, ist]
--   
-- -- csound doc: http://csound.com/docs/manual/vdelayx.html vdelayx :: Sig -> Sig -> D -> D -> Sig -- | A variable time delay with cubic interpolation. -- -- vdelay3 is experimental. It is the same as vdelay except that it uses -- cubic interpolation. (New in Version 3.50.) -- --
--   ares  vdelay3  asig, adel, imaxdel [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/vdelay3.html vdelay3 :: Sig -> Sig -> D -> Sig -- | An interpolating variable time delay. -- -- This is an interpolating variable time delay, it is not very different -- from the existing implementation (deltapi), it is only easier to use. -- --
--   ares  vdelay  asig, adel, imaxdel [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/vdelay.html vdelay :: Sig -> Sig -> D -> Sig -- | Multitap delay line implementation. -- --
--   ares  multitap  asig [, itime1, igain1] [, itime2, igain2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/multitap.html multitap :: Sig -> [D] -> Sig -- | Mixes the input signal to a delay line. -- -- 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  ain, adel, iwsize
--   
-- -- csound doc: http://csound.com/docs/manual/deltapxw.html deltapxw :: Sig -> Sig -> D -> SE () -- | Read from or write to a delay line with interpolation. -- -- 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. -- --
--   aout  deltapx  adel, iwsize
--   
-- -- csound doc: http://csound.com/docs/manual/deltapx.html deltapx :: Sig -> D -> SE Sig -- | Taps a delay line at variable offset times. -- -- Tap a delay line at variable offset times. -- --
--   ares  deltapn  xnumsamps
--   
-- -- csound doc: http://csound.com/docs/manual/deltapn.html deltapn :: Sig -> Sig -- | Taps a delay line at variable offset times, uses interpolation. -- --
--   ares  deltapi  xdlt
--   
-- -- csound doc: http://csound.com/docs/manual/deltapi.html deltapi :: Sig -> SE Sig -- | Taps a delay line at variable offset times, uses cubic interpolation. -- --
--   ares  deltap3  xdlt
--   
-- -- csound doc: http://csound.com/docs/manual/deltap3.html deltap3 :: Sig -> SE Sig -- | Taps a delay line at variable offset times. -- -- Tap a delay line at variable offset times. -- --
--   ares  deltap  kdlt
--   
-- -- csound doc: http://csound.com/docs/manual/deltap.html deltap :: Sig -> SE Sig -- | Writes the audio signal to a digital delay line. -- --
--   delayw  asig
--   
-- -- csound doc: http://csound.com/docs/manual/delayw.html delayw :: Sig -> SE () -- | Reads from an automatically established digital delay line. -- --
--   ares  delayr  idlt [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/delayr.html delayr :: D -> SE Sig -- | Delays an input signal by some time interval. -- -- k-rate delay opcodes -- --
--   kr  vdel_k   ksig, kdel, imdel[, imode]
--   
-- -- csound doc: http://csound.com/docs/manual/delayk.html vdel_k :: Sig -> Sig -> D -> Sig -- | Delays an input signal by some time interval. -- -- k-rate delay opcodes -- --
--   kr  delayk   ksig, idel[, imode]
--   
-- -- csound doc: http://csound.com/docs/manual/delayk.html delayk :: Sig -> D -> Sig -- | Delays an input signal by one sample. -- --
--   ares  delay1  asig [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/delay1.html delay1 :: Sig -> Sig -- | A time-varying convolution (FIR filter) opcode. -- -- An opcode that takes two incoming signals and interprets one of them -- as the coefficients of linear time-variable finite impulse response -- filter. This is implemented via direct convolution (for partition -- sizes of 1 sample) or DFT-based partitioned convolution. The signals -- can be frozen (i.e. the filter coefficients are kept the -- same) at any point in time, at a-rate or k-rate. -- --
--   ares  tvconv  asig1, asig2, xfreez1,
--           xfreez2, iparts, ifils
--   
-- -- csound doc: http://csound.com/docs/manual/tvconv.html tvconv :: Sig -> Sig -> Sig -> Sig -> D -> D -> Sig -- | Convolution based on a uniformly partitioned overlap-save algorithm -- -- Convolution based on a uniformly partitioned overlap-save algorithm. -- Compared to the convolve opcode, pconvolve has these benefits: -- --
--   ar1 [, ar2] [, ar3] [, ar4]  pconvolve  ain, ifilcod [, ipartitionsize, ichannel]
--   
-- -- csound doc: http://csound.com/docs/manual/pconvolve.html pconvolve :: Tuple a => Sig -> Str -> a -- | Partitioned convolution with dynamically reloadable impulse response -- -- Computationally efficient, partitioned convolution, using a function -- table as impulse response (IR) source, similar to the ftconv opcode. -- The liveconv opcode allows dynamic reload of IR data at any time while -- the convolution is running, controlled by the kupdate parameter. Due -- to the manner in which the IR is updated, the operation can be done -- without audio artifacts in the convolution output. -- --
--   ares  liveconv  ain, ift, iplen, kupdate, kclear
--   
-- -- csound doc: http://csound.com/docs/manual/liveconv.html liveconv :: Sig -> D -> D -> Sig -> Sig -> Sig -- | Morphs between multiple ftables as specified in a list. -- -- 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  kftndx, iftfn, iresfn
--   
-- -- csound doc: http://csound.com/docs/manual/ftmorf.html ftmorf :: Sig -> Tab -> Tab -> SE () -- | Low latency multichannel convolution, using a function table as -- impulse response source. -- -- 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. -- --
--   a1[, a2[, a3[, ... a8]]]  ftconv  ain, ift, iplen[, iskipsamples \
--             [, iirlen[, iskipinit]]]
--   
-- -- csound doc: http://csound.com/docs/manual/ftconv.html ftconv :: Tuple a => Sig -> D -> D -> a -- | A direct convolution opcode. -- --
--   ares  dconv  asig, isize, ifn
--   
-- -- csound doc: http://csound.com/docs/manual/dconv.html dconv :: Sig -> D -> Tab -> Sig -- | Cross synthesis using FFT's. -- -- This is an implementation of cross synthesis using FFT's. -- --
--   ares  cross2  ain1, ain2, isize, ioverlap, iwin, kbias
--   
-- -- csound doc: http://csound.com/docs/manual/cross2.html cross2 :: Sig -> Sig -> D -> D -> D -> Sig -> Sig -- | Convolves a signal and an impulse response. -- -- 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. -- --
--   ar1 [, ar2] [, ar3] [, ar4]  convolve  ain, ifilcod [, ichannel]
--   
-- -- csound doc: http://csound.com/docs/manual/convolve.html convolve :: Tuple a => Sig -> Str -> a -- | Adjusts the amplitude audio signal according to a root-mean-square -- value. -- --
--   ares  gain  asig, krms [, ihp] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/gain.html gain :: Sig -> Sig -> Sig -- | A dynamic compressor/expander. -- -- 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. -- --
--   ares  dam  asig, kthreshold, icomp1, icomp2, irtime, iftime
--   
-- -- csound doc: http://csound.com/docs/manual/dam.html dam :: Sig -> Sig -> D -> D -> D -> D -> Sig -- | Compress, limit, expand, duck or gate an audio signal. -- -- 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. -- --
--   ar  compress2  aasig, acsig, kthresh, kloknee, khiknee, kratio, katt, krel, ilook
--   
-- -- csound doc: http://csound.com/docs/manual/compress2.html compress2 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> Sig -- | Compress, limit, expand, duck or gate an audio signal. -- -- 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. -- --
--   ar  compress  aasig, acsig, kthresh, kloknee, khiknee, kratio, katt, krel, ilook
--   
-- -- csound doc: http://csound.com/docs/manual/compress.html compress :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> Sig -- | Clips a signal to a predefined limit. -- -- Clips an a-rate signal to a predefined limit, in a “soft” manner, -- using one of three methods. -- --
--   ares  clip  asig, imeth, ilimit [, iarg]
--   
-- -- csound doc: http://csound.com/docs/manual/clip.html clip :: Sig -> D -> D -> Sig -- | Adjust one audio signal according to the values of another. -- -- The rms power of asig can be interrogated, set, or adjusted to match -- that of a comparator signal. -- --
--   ares  balance  asig, acomp [, ihp] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/balance.html balance :: Sig -> Sig -> Sig -- | Returns the length of an MP3 sound file. -- --
--   ir  mp3len  ifilcod
--   
-- -- csound doc: http://csound.com/docs/manual/mp3len.html mp3len :: Str -> D -- | Checks that a file can be used. -- -- Returns 1 if the sound file is valid, or 0 if not. -- --
--   ir  filevalid  ifilcod
--   
-- -- csound doc: http://csound.com/docs/manual/filevalid.html filevalid :: Str -> D -- | Returns the sample rate of a sound file. -- --
--   ir  filesr  ifilcod [, iallowraw]
--   
-- -- csound doc: http://csound.com/docs/manual/filesr.html filesr :: Str -> D -- | Returns the peak absolute value of a sound file. -- --
--   ir  filepeak  ifilcod [, ichnl]
--   
-- -- csound doc: http://csound.com/docs/manual/filepeak.html filepeak :: Str -> D -- | Returns the number of channels in a sound file. -- --
--   ir  filenchnls  ifilcod [, iallowraw]
--   
-- -- csound doc: http://csound.com/docs/manual/filenchnls.html filenchnls :: Str -> D -- | Returns the length of a sound file. -- --
--   ir  filelen  ifilcod, [iallowraw]
--   
-- -- csound doc: http://csound.com/docs/manual/filelen.html filelen :: Str -> D -- | Returns the number of bits in each sample in a sound file. -- --
--   ir  filebit  ifilcod [, iallowraw]
--   
-- -- csound doc: http://csound.com/docs/manual/filebit.html filebit :: Str -> D -- | Prints at init-time using a printf() style syntax. -- --
--   prints  "string" [, kval1] [, kval2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/prints.html prints :: Str -> [Sig] -> SE () -- | Prints a new value every time a control variable changes using a -- printf() style syntax. -- --
--   printks2  "string", kval
--   
-- -- csound doc: http://csound.com/docs/manual/printks2.html printks2 :: Str -> Sig -> SE () -- | Prints at k-rate using a printf() style syntax. -- --
--   printks  "string", itime [, kval1] [, kval2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/printks.html printks :: Str -> D -> [Sig] -> SE () -- | Prints a new value every time a control variable changes. -- --
--   printk2  kvar [, inumspaces]
--   
-- -- csound doc: http://csound.com/docs/manual/printk2.html printk2 :: Sig -> SE () -- | Prints one k-rate value at specified intervals. -- --
--   printk  itime, kval [, ispace]
--   
-- -- csound doc: http://csound.com/docs/manual/printk.html printk :: D -> Sig -> SE () -- | printf-style formatted output -- -- 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  Sfmt, ktrig, [xarg1[, xarg2[, ... ]]]
--   
-- -- csound doc: http://csound.com/docs/manual/printf.html printf :: Str -> Sig -> [Sig] -> SE () -- | printf-style formatted output -- -- 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  Sfmt, itrig, [iarg1[, iarg2[, ... ]]]
--   
-- -- csound doc: http://csound.com/docs/manual/printf.html printf_i :: Str -> D -> [D] -> SE () -- | Displays the values init (i-rate) variables. -- -- These units will print orchestra init-values. -- --
--   print  iarg [, iarg1] [, iarg2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/print.html print' :: [D] -> SE () -- | Allows text to be displayed from instruments like sliders -- -- Allows text to be displayed from instruments like sliders etc. (only -- on Unix and Windows at present) -- --
--   flashtxt   iwhich, String
--   
-- -- csound doc: http://csound.com/docs/manual/flashtxt.html flashtxt :: D -> Str -> SE () -- | Displays the Fourier Transform of an audio or control signal. -- -- 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  xsig, iprd, iwsiz [, iwtyp] [, idbout] [, iwtflg] [,imin] [,imax]
--   
-- -- csound doc: http://csound.com/docs/manual/dispfft.html dispfft :: Sig -> D -> D -> SE () -- | Retrieves variables from a user-defined opcode block, -- -- The xin and xout opcodes copy variables to and from the opcode -- definition, allowing communication with the calling instrument. -- --
--   xout  xoutarg1 [, xoutarg2] ... [, xoutargN]
--   
-- -- csound doc: http://csound.com/docs/manual/xout.html xout :: [Sig] -> SE () -- | Passes variables to a user-defined opcode block, -- -- The xin and xout opcodes copy variables to and from the opcode -- definition, allowing communication with the calling instrument. -- --
--   xinarg1 [, xinarg2] ... [xinargN]  xin 
--   
-- -- csound doc: http://csound.com/docs/manual/xin.html xin :: Tuple a => a -- | Sets the local ksmps value in an instrument or user-defined opcode -- block -- -- Sets the local ksmps value in an instrument or user-defined opcode -- block. -- --
--   setksmps  iksmps
--   
-- -- csound doc: http://csound.com/docs/manual/setksmps.html setksmps :: D -> SE () -- | Writes data to the named software bus. -- -- 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). -- --
--   chnsetks  Sval, Sname
--   
-- -- csound doc: http://csound.com/docs/manual/chnset.html chnsetks :: Str -> Str -> SE () -- | Writes data to the named software bus. -- -- 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). -- --
--   chnset  ival, Sname
--   chnset  kval, Sname
--   chnset  aval, Sname
--   chnset  Sval, Sname
--   
-- -- csound doc: http://csound.com/docs/manual/chnset.html chnset :: D -> Str -> SE () -- | Query parameters of a channel. -- -- Query parameters of a channel (if it does not exist, all returned -- values are zero). -- --
--   itype, imode, ictltype, idflt, imin, imax  chnparams  Sname
--   
-- -- csound doc: http://csound.com/docs/manual/chnparams.html chnparams :: Tuple a => Str -> a -- | Writes audio data to the named software bus, mixing to the previous -- output. -- -- Adds an audio signal to a channel of the named software bus. Implies -- declaring the channel with imode=2 (see also chn_a). -- --
--   chnmix  aval, Sname
--   
-- -- csound doc: http://csound.com/docs/manual/chnmix.html chnmix :: Sig -> Str -> SE () -- | Reads data from the software bus. -- -- 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). -- --
--   Sval  chngetks  Sname
--   
-- -- csound doc: http://csound.com/docs/manual/chnget.html chngetks :: Str -> Str -- | Reads data from the software bus. -- -- 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). -- --
--   ival  chnget  Sname
--   kval  chnget  Sname
--   aval  chnget  Sname
--   Sval  chnget  Sname
--   
-- -- csound doc: http://csound.com/docs/manual/chnget.html chnget :: Str -> SE Str -- | Export a global variable as a channel of the bus. -- -- Export a global variable as a channel of the bus; the channel should -- not already exist, otherwise an init error occurs. This opcode is -- normally called from the orchestra header, and allows the host -- application to read or write orchestra variables directly, without -- having to use chnget or chnset to copy data. -- --
--   gival  chnexport  Sname, imode[, itype, idflt, imin, imax]
--   gkval  chnexport  Sname, imode[, itype, idflt, imin, imax]
--   gaval  chnexport  Sname, imode
--   gSval  chnexport  Sname, imode
--   
-- -- csound doc: http://csound.com/docs/manual/chnexport.html chnexport :: Str -> D -> Str -- | Clears an audio output channel of the named software bus. -- -- Clears an audio channel of the named software bus to zero. Implies -- declaring the channel with imode=2 (see also chn_a). -- --
--   chnclear  Sname
--   
-- -- csound doc: http://csound.com/docs/manual/chnclear.html chnclear :: Str -> SE () -- | Declare a channel of the named software bus. -- -- 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  Sname, imode
--   
-- -- csound doc: http://csound.com/docs/manual/chn.html chn_S :: Str -> D -> SE () -- | Declare a channel of the named software bus. -- -- 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  Sname, imode
--   
-- -- csound doc: http://csound.com/docs/manual/chn.html chn_a :: Str -> D -> SE () -- | Declare a channel of the named software bus. -- -- 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  Sname, imode[, itype, idflt, imin, ima, ix, iy, iwidth, iheight, Sattributes]
--   
-- -- csound doc: http://csound.com/docs/manual/chn.html chn_k :: Str -> D -> SE () -- | Send data to the outwards software bus -- -- Send data to a channel of the outward software bus. -- --
--   chano  kval, kchan
--   chano  aval, kchan
--   
-- -- csound doc: http://csound.com/docs/manual/chano.html chano :: Sig -> Sig -> SE () -- | Reads data from the software bus -- -- Reads data from a channel of the inward software bus. -- --
--   kval  chani  kchan
--   aval  chani  kchan
--   
-- -- csound doc: http://csound.com/docs/manual/chani.html chani :: Sig -> SE Sig -- | Deprecated. Writes audio output to a disk file. -- -- The usage of soundouts is discouraged. Please use fout instead. -- --
--   soundouts   asigl, asigr, ifilcod [, iformat]
--   
-- -- csound doc: http://csound.com/docs/manual/soundouts.html soundouts :: Sig -> Sig -> Str -> SE () -- | Deprecated. Writes audio output to a disk file. -- -- The usage of soundout is discouraged. Please use fout instead. -- --
--   soundout   asig1, ifilcod [, iformat]
--   
-- -- csound doc: http://csound.com/docs/manual/soundout.html soundout :: Sig -> Str -> SE () -- | Writes multi-channel audio data from a ZAK array to an external device -- or stream. -- --
--   outz  ksig1
--   
-- -- csound doc: http://csound.com/docs/manual/outz.html outz :: Sig -> SE () -- | Writes 16-channel audio data to an external device or stream. -- --
--   outx  asig1, asig2, asig3, asig4, asig5, asig6, asig7, asig8, \
--            asig9, asig10, asig11, asig12, asig13, asig14, asig15, asig16
--   
-- -- csound doc: http://csound.com/docs/manual/outx.html outx :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Sends an i-rate or k-rate signal or string to a user-defined channel. -- -- Sends an irate or k-rate signal or string to a user-defined channel. -- --
--   outvalue  "channel name", ivalue
--   outvalue  "channel name", kvalue
--   outvalue  "channel name", "string"
--   
-- -- csound doc: http://csound.com/docs/manual/outvalue.html outvalue :: Str -> D -> SE () -- | Writes samples to stereo channel 2 of an external device or stream. -- --
--   outs2  asig
--   
-- -- csound doc: http://csound.com/docs/manual/outs2.html outs2 :: Sig -> SE () -- | Writes samples to stereo channel 1 of an external device or stream. -- --
--   outs1  asig
--   
-- -- csound doc: http://csound.com/docs/manual/outs1.html outs1 :: Sig -> SE () -- | Writes stereo audio data to an external device or stream. -- --
--   outs  asig1, asig2
--   
-- -- csound doc: http://csound.com/docs/manual/outs.html outs :: Sig -> Sig -> SE () -- | Allow output to a range of adjacent audio channels on the audio output -- device -- -- outrg outputs audio to a range of adjacent audio channels on the audio -- output device. -- --
--   outrg  kstart, aout1 [,aout2, aout3, ..., aoutN]
--   
-- -- csound doc: http://csound.com/docs/manual/outrg.html outrg :: Sig -> [Sig] -> SE () -- | Writes samples to quad channel 4 of an external device or stream. -- --
--   outq4  asig
--   
-- -- csound doc: http://csound.com/docs/manual/outq4.html outq4 :: Sig -> SE () -- | Writes samples to quad channel 3 of an external device or stream. -- --
--   outq3  asig
--   
-- -- csound doc: http://csound.com/docs/manual/outq3.html outq3 :: Sig -> SE () -- | Writes samples to quad channel 2 of an external device or stream. -- --
--   outq2  asig
--   
-- -- csound doc: http://csound.com/docs/manual/outq2.html outq2 :: Sig -> SE () -- | Writes samples to quad channel 1 of an external device or stream. -- --
--   outq1  asig
--   
-- -- csound doc: http://csound.com/docs/manual/outq1.html outq1 :: Sig -> SE () -- | Writes 4-channel audio data to an external device or stream. -- --
--   outq  asig1, asig2, asig3, asig4
--   
-- -- csound doc: http://csound.com/docs/manual/outq.html outq :: Sig -> Sig -> Sig -> Sig -> SE () -- | Writes 8-channel audio data to an external device or stream. -- --
--   outo  asig1, asig2, asig3, asig4, asig5, asig6, asig7, asig8
--   
-- -- csound doc: http://csound.com/docs/manual/outo.html outo :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Writes 6-channel audio data to an external device or stream. -- --
--   outh  asig1, asig2, asig3, asig4, asig5, asig6
--   
-- -- csound doc: http://csound.com/docs/manual/outh.html outh :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Writes multi-channel audio data, with user-controllable channels, to -- an external device or stream. -- --
--   outch  kchan1, asig1 [, kchan2] [, asig2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/outch.html outch :: Sig -> [Sig] -> SE () -- | Writes audio data with an arbitrary number of channels to an external -- device or stream. -- --
--   outc  asig1 [, asig2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/outc.html outc :: [Sig] -> SE () -- | Writes 32-channel audio data to an external device or stream. -- --
--   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
--   
-- -- csound doc: http://csound.com/docs/manual/out32.html out32 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Writes audio data to an external device or stream. -- -- Writes audio data to an external device or stream, either from audio -- variables or from an audio array. -- --
--   out  asig1[, asig2,....]
--   out  aarray
--   
-- -- csound doc: http://csound.com/docs/manual/out.html out :: Sig -> SE () -- | Returns the audio spout frame. -- -- Returns the audio spout frame (if active), otherwise it returns zero. -- --
--   aout1 [,aout2 ... aoutX]  monitor 
--   aarra  monitor 
--   
-- -- csound doc: http://csound.com/docs/manual/monitor.html monitor :: Tuple a => a -- | A MIDI delay opcode. -- --
--   mdelay  kstatus, kchan, kd1, kd2, kdelay
--   
-- -- csound doc: http://csound.com/docs/manual/mdelay.html mdelay :: Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Reads audio data from an external device or stream. -- -- Reads audio data from an external device or stream. Up to 24 channels -- may be read before v5.14, extended to 40 in later versions. -- --
--   ar1[, ar2[, ar3[, ... a24]]]  soundin  ifilcod [, iskptim] [, iformat] \
--             [, iskipinit] [, ibufsize]
--   
-- -- csound doc: http://csound.com/docs/manual/soundin.html soundin :: Tuple a => Str -> a -- | Reads mono or stereo audio data from an external MP3 file. -- --
--   ar1, ar2  mp3in  ifilcod[, iskptim, iformat, iskipinit, ibufsize]
--   ar1  mp3in  ifilcod[, iskptim, iformat, iskipinit, ibufsize]
--   
-- -- csound doc: http://csound.com/docs/manual/mp3in.html mp3in :: Str -> (Sig, Sig) -- | Reads multi-channel audio samples into a ZAK array from an external -- device or stream. -- --
--   inz  ksig1
--   
-- -- csound doc: http://csound.com/docs/manual/inz.html inz :: Sig -> SE () -- | Reads a 16-channel audio signal from an external device or stream. -- --
--   ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9, ar10, ar11, ar12, \
--             ar13, ar14, ar15, ar16  inx 
--   
-- -- csound doc: http://csound.com/docs/manual/inx.html inx :: Tuple a => a -- | Reads a k-rate signal from a user-defined channel. -- -- Reads a k-rate or i-rate signal or string from a user-defined channel. -- --
--   ivalue  invalue  "channel name"
--   kvalue  invalue  "channel name"
--   Sname  invalue  "channel name"
--   
-- -- csound doc: http://csound.com/docs/manual/invalue.html invalue :: Str -> Str -- | Reads stereo audio data from an external device or stream. -- --
--   ar1, ar2  ins 
--   
-- -- csound doc: http://csound.com/docs/manual/ins.html ins :: (Sig, Sig) -- | Allow input from a range of adjacent audio channels from the audio -- input device -- -- inrg reads audio from a range of adjacent audio channels from the -- audio input device. -- --
--   inrg  kstart, ain1 [,ain2, ain3, ..., ainN]
--   
-- -- csound doc: http://csound.com/docs/manual/inrg.html inrg :: Sig -> [Sig] -> SE () -- | Reads quad audio data from an external device or stream. -- --
--   ar1, ar2,  ar3, a4  inq 
--   
-- -- csound doc: http://csound.com/docs/manual/inq.html inq :: (Sig, Sig, Sig, Sig) -- | Reads eight-channel audio data from an external device or stream. -- --
--   ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8  ino 
--   
-- -- csound doc: http://csound.com/docs/manual/ino.html ino :: Tuple a => a -- | Reads six-channel audio data from an external device or stream. -- --
--   ar1, ar2, ar3, ar4, ar5, ar6  inh 
--   
-- -- csound doc: http://csound.com/docs/manual/inh.html inh :: Tuple a => a -- | Reads from numbered channels in an external audio signal or stream. -- --
--   ain1[, ...]  inch  kchan1[,...]
--   
-- -- csound doc: http://csound.com/docs/manual/inch.html inch :: Tuple a => [Sig] -> a -- | Reads a 32-channel audio signal from an external device or stream. -- --
--   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 
--   
-- -- csound doc: http://csound.com/docs/manual/in32.html in32 :: Tuple a => a -- | Reads mono audio data from an external device or stream. -- -- Reads audio data from an external device or stream. -- --
--   ar1  in 
--   aarray  in 
--   
-- -- csound doc: http://csound.com/docs/manual/in.html in' :: Sig -- | 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. -- -- 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 in -- versions before 5.14, and 40 after. -- --
--   a1[, a2[, ... aN]]  diskin2  ifilcod[, kpitch[, iskiptim \
--             [, iwrap[, iformat[, iwsize[, ibufsize[, iskipinit]]]]]]]
--   ar1[]  diskin2  ifilcod[, kpitch[, iskiptim \
--             [, iwrap[, iformat[, iwsize[, ibufsize[, iskipinit]]]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/diskin2.html diskin2 :: Tuple a => Str -> a -- | Reads audio data from an external device or stream and can alter its -- pitch. -- --
--   ar1 [, ar2 [, ar3 [, ... arN]]]  diskin  ifilcod[, kpitch[, iskiptim \
--             [, iwraparound[, iformat[, iskipinit]]]]]
--   ar1[]  diskin  ifilcod[, kpitch[, iskiptim \
--             [, iwraparound[, iformat[, iskipinit]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/diskin.html diskin :: Tuple a => Str -> a -- | Periodically reads four orchestra control-signal values from an -- external file. -- --
--   kr1, kr2, kr3, kr4  readk4  ifilname, iformat, iprd
--   
-- -- csound doc: http://csound.com/docs/manual/readk4.html readk4 :: Str -> D -> D -> (Sig, Sig, Sig, Sig) -- | Periodically reads three orchestra control-signal values from an -- external file. -- --
--   kr1, kr2, kr3  readk3  ifilname, iformat, iprd
--   
-- -- csound doc: http://csound.com/docs/manual/readk3.html readk3 :: Str -> D -> D -> (Sig, Sig, Sig) -- | Periodically reads two orchestra control-signal values from an -- external file. -- --
--   kr1, kr2  readk2  ifilname, iformat, iprd
--   
-- -- csound doc: http://csound.com/docs/manual/readk2.html readk2 :: Str -> D -> D -> (Sig, Sig) -- | Periodically reads an orchestra control-signal value from an external -- file. -- -- Periodically reads an orchestra control-signal value from a named -- external file in a specific format. -- --
--   kres  readk  ifilname, iformat, iprd
--   
-- -- csound doc: http://csound.com/docs/manual/readk.html readk :: Str -> D -> D -> Sig -- | Read a line of text from an external file. -- -- Read a line of text from an external file once on initialisation. -- --
--   Sres, iline  readfi  ifilname
--   
-- -- csound doc: http://csound.com/docs/manual/readfi.html readfi :: Str -> (Str, D) -- | Read a line of text from an external file. -- -- Read a line of text from an external file once each k-cycle. -- --
--   Sres, kline  readf  ifilname
--   
-- -- csound doc: http://csound.com/docs/manual/readf.html readf :: Str -> (Str, Sig) -- | Write signals and arrays to an hdf5 file. -- -- hdf5write writes N signals and arrays to a specified hdf5 file. -- --
--   hdf5write  ifilename, xout1[, xout2, xout3, ..., xoutN]
--   
-- -- csound doc: http://csound.com/docs/manual/hdf5write.html hdf5write :: Str -> Sig -> SE () -- | Read signals and arrays from an hdf5 file. -- -- hdf5read reads N signals and arrays from a specified hdf5 file. -- --
--   xout1[, xout2, xout3, ..., xoutN]  hdf5read  ifilename, ivariablename1[, ivariablename2, ivariablename3, ..., ivariablenameN]
--   
-- -- csound doc: http://csound.com/docs/manual/hdf5read.html hdf5read :: Tuple a => Str -> D -> a -- | Similar to prints but prints to a file. -- --
--   fprints  "filename", "string" [, ival1] [, ival2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/fprints.html fprints :: Str -> Str -> [D] -> SE () -- | Similar to printks but prints to a file. -- --
--   fprintks  "filename", "string", [, kval1] [, kval2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/fprintks.html fprintks :: Str -> Str -> [Sig] -> SE () -- | Outputs k-rate signals of an arbitrary number of channels to a -- specified file, in raw (headerless) format. -- -- foutk outputs N k-rate signals to a specified file of N channels. -- --
--   foutk  ifilename, iformat, kout1 [, kout2, kout3,....,koutN]
--   
-- -- csound doc: http://csound.com/docs/manual/foutk.html foutk :: Str -> D -> [Sig] -> SE () -- | Outputs i-rate signals from an arbitrary number of channels to a -- specified file. -- -- foutir output N i-rate signals to a specified file of N channels. -- --
--   foutir  ihandle, iformat, iflag, iout1 [, iout2, iout3,....,ioutN]
--   
-- -- csound doc: http://csound.com/docs/manual/foutir.html foutir :: Str -> D -> D -> [D] -> SE () -- | Outputs i-rate signals of an arbitrary number of channels to a -- specified file. -- -- fouti output N i-rate signals to a specified file of N channels. -- --
--   fouti  ihandle, iformat, iflag, iout1 [, iout2, iout3,....,ioutN]
--   
-- -- csound doc: http://csound.com/docs/manual/fouti.html fouti :: Str -> D -> D -> [D] -> SE () -- | Outputs a-rate signals to an arbitrary number of channels. -- -- fout outputs N a-rate signals to a specified file of N channels. -- --
--   fout  ifilename, iformat, aout1 [, aout2, aout3,...,aoutN]
--   fout  ifilename, iformat, array[]
--   
-- -- csound doc: http://csound.com/docs/manual/fout.html fout :: Str -> D -> [Sig] -> SE () -- | Opens a file in a specific mode. -- -- fiopen can be used to open a file in one of the specified modes. -- --
--   ihandle  fiopen  ifilename, imode
--   
-- -- csound doc: http://csound.com/docs/manual/fiopen.html fiopen :: Str -> D -> SE D -- | Read signals from a file at k-rate. -- --
--   fink  ifilename, iskipframes, iformat, kin1 [, kin2] [, kin3] [,...]
--   
-- -- csound doc: http://csound.com/docs/manual/fink.html fink :: Str -> D -> D -> [Sig] -> SE () -- | Read signals from a file at i-rate. -- --
--   fini  ifilename, iskipframes, iformat, in1 [, in2] [, in3] [, ...]
--   
-- -- csound doc: http://csound.com/docs/manual/fini.html fini :: Str -> D -> D -> [D] -> SE () -- | Read signals from a file at a-rate. -- --
--   fin  ifilename, iskipframes, iformat, ain1 [, ain2] [, ain3] [,...]
--   fin  ifilename, iskipframes, iformat, arr[]
--   
-- -- csound doc: http://csound.com/docs/manual/fin.html fin :: Str -> D -> D -> [Sig] -> SE () -- | Closes a previously opened file. -- -- ficlose can be used to close a file which was opened with fiopen. -- --
--   ficlose  ihandle
--   ficlose  Sfilename
--   
-- -- csound doc: http://csound.com/docs/manual/ficlose.html ficlose :: D -> SE () -- | Periodically writes four orchestra control-signal values to an -- external file. -- -- Periodically writes four orchestra control-signal values to a named -- external file in a specific format. -- --
--   dumpk4  ksig1, ksig2, ksig3, ksig4, ifilname, iformat, iprd
--   
-- -- csound doc: http://csound.com/docs/manual/dumpk4.html dumpk4 :: Sig -> Sig -> Sig -> Sig -> Str -> D -> D -> SE () -- | Periodically writes three orchestra control-signal values to an -- external file. -- -- Periodically writes three orchestra control-signal values to a named -- external file in a specific format. -- --
--   dumpk3  ksig1, ksig2, ksig3, ifilname, iformat, iprd
--   
-- -- csound doc: http://csound.com/docs/manual/dumpk3.html dumpk3 :: Sig -> Sig -> Sig -> Str -> D -> D -> SE () -- | Periodically writes two orchestra control-signal values to an external -- file. -- -- Periodically writes two orchestra control-signal values to a named -- external file in a specific format. -- --
--   dumpk2  ksig1, ksig2, ifilname, iformat, iprd
--   
-- -- csound doc: http://csound.com/docs/manual/dumpk2.html dumpk2 :: Sig -> Sig -> Str -> D -> D -> SE () -- | Periodically writes an orchestra control-signal value to an external -- file. -- -- Periodically writes an orchestra control-signal value to a named -- external file in a specific format. -- --
--   dumpk   ksig, ifilname, iformat, iprd
--   
-- -- csound doc: http://csound.com/docs/manual/dumpk.html dumpk :: Sig -> Str -> D -> D -> SE () -- | Physical model of the plucked string. -- -- 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. -- --
--   ares  wgpluck2  iplk, kamp, icps, kpick, krefl
--   
-- -- csound doc: http://csound.com/docs/manual/wgpluck2.html wgpluck2 :: D -> Sig -> D -> Sig -> Sig -> Sig -- | A high fidelity simulation of a plucked string. -- -- A high fidelity simulation of a plucked string, using interpolating -- delay-lines. -- --
--   ares  wgpluck  icps, iamp, kpick, iplk, idamp, ifilt, axcite
--   
-- -- csound doc: http://csound.com/docs/manual/wgpluck.html wgpluck :: D -> D -> Sig -> D -> D -> D -> Sig -> Sig -- | Creates a tone similar to a flute. -- -- Audio output is a tone similar to a flute, using a physical model -- developed from Perry Cook, but re-coded for Csound. -- --
--   ares  wgflute  kamp, kfreq, kjet, iatt,
--           idetk, kngain, kvibf, kvamp [, ifn] [, iminfreq] [, ijetrf] [, iendrf]
--   
-- -- csound doc: http://csound.com/docs/manual/wgflute.html wgflute :: Sig -> Sig -> Sig -> D -> D -> Sig -> Sig -> Sig -> Sig -- | Creates a tone similar to a clarinet. -- -- Audio output is a tone similar to a clarinet, using a physical model -- developed from Perry Cook, but re-coded for Csound. -- --
--   ares  wgclar  kamp, kfreq, kstiff, \
--           iatt, idetk, kngain, kvibf, kvamp [, ifn] [, iminfreq]
--   
-- -- csound doc: http://csound.com/docs/manual/wgclar.html wgclar :: Sig -> Sig -> Sig -> D -> D -> Sig -> Sig -> Sig -> Sig -- | Creates a tone related to a brass instrument. -- -- Audio output is a tone related to a brass instrument, using a physical -- model developed from Perry Cook, but re-coded for Csound. -- --
--   ares  wgbrass  kamp, kfreq, ktens, iatt, kvibf, kvamp \
--           [, ifn] [, iminfreq]
--   
-- -- csound doc: http://csound.com/docs/manual/wgbrass.html wgbrass :: Sig -> Sig -> Sig -> D -> Sig -> Sig -> Sig -- | A physical model of a bowed bar. -- -- A physical model of a bowed bar, belonging to the Perry Cook family of -- waveguide instruments. -- --
--   ares  wgbowedbar  kamp, kfreq, kpos, kbowpres, kgain [, iconst] [, itvel] \
--             [, ibowpos] [, ilow]
--   
-- -- csound doc: http://csound.com/docs/manual/wgbowedbar.html wgbowedbar :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Creates a tone similar to a bowed string. -- -- Audio output is a tone similar to a bowed string, using a physical -- model developed from Perry Cook, but re-coded for Csound. -- --
--   ares  wgbow  kamp, kfreq, kpres, krat, kvibf, kvamp \
--           [, ifn] [, iminfreq]
--   
-- -- csound doc: http://csound.com/docs/manual/wgbow.html wgbow :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | A string resonator with variable fundamental frequency. -- -- An audio signal is modified by a string resonator with variable -- fundamental frequency. -- --
--   ares  streson  asig, kfr, kfdbgain
--   
-- -- csound doc: http://csound.com/docs/manual/streson.html streson :: Sig -> Sig -> Sig -> Sig -- | Physical model of the plucked string. -- -- 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. -- --
--   ares  repluck  iplk, kamp, icps, kpick, krefl, axcite
--   
-- -- csound doc: http://csound.com/docs/manual/repluck.html repluck :: D -> Sig -> D -> Sig -> Sig -> Sig -> Sig -- | Produces a naturally decaying plucked string or drum sound. -- -- Audio output is a naturally decaying plucked string or drum sound -- based on the Karplus-Strong algorithms. -- --
--   ares  pluck  kamp, kcps, icps, ifn, imeth [, iparm1] [, iparm2]
--   
-- -- csound doc: http://csound.com/docs/manual/pluck.html pluck :: Sig -> Sig -> D -> Tab -> D -> Sig -- | A simple wave-terrain synthesis opcode. -- --
--   aout  wterrain  kamp, kpch, k_xcenter, k_ycenter, k_xradius, k_yradius, \
--             itabx, itaby
--   
-- -- csound doc: http://csound.com/docs/manual/wterrain.html wterrain :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> Sig -- | Accesses table values by direct indexing with linear interpolation. -- --
--   ares  tablei  andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires  tablei  indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres  tablei  kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://csound.com/docs/manual/tablei.html tablei :: SigOrD a => a -> Tab -> a -- | Accesses table values by direct indexing with cubic interpolation. -- --
--   ares  table3  andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires  table3  indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres  table3  kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://csound.com/docs/manual/table3.html table3 :: SigOrD a => a -> Tab -> a -- | Accesses table values by direct indexing. -- --
--   ares  table  andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires  table  indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres  table  kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://csound.com/docs/manual/table.html table :: SigOrD a => a -> Tab -> a -- | Fast table opcodes. -- -- 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  ksig, kndx, ifn [,ixmode]
--   tabw  asig, andx, ifn [,ixmode]
--   
-- -- csound doc: http://csound.com/docs/manual/tab.html tabw :: Sig -> Sig -> Tab -> SE () -- | Fast table opcodes. -- -- 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  isig, indx, ifn [,ixmode]
--   
-- -- csound doc: http://csound.com/docs/manual/tab.html tabw_i :: D -> D -> Tab -> SE () -- | Fast table opcodes. -- -- 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). -- --
--   kr  tab  kndx, ifn[, ixmode]
--   ar  tab  xndx, ifn[, ixmode]
--   
-- -- csound doc: http://csound.com/docs/manual/tab.html tab :: Sig -> Tab -> Sig -- | Fast table opcodes. -- -- 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). -- --
--   ir  tab_i  indx, ifn[, ixmode]
--   
-- -- csound doc: http://csound.com/docs/manual/tab.html tab_i :: D -> Tab -> D -- | Accesses table values by direct indexing with linear interpolation. -- --
--   ares  ptablei  andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires  ptablei  indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres  ptablei  kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://csound.com/docs/manual/ptablei.html ptablei :: Sig -> Tab -> Sig -- | Accesses table values by direct indexing with cubic interpolation. -- --
--   ares  ptable3  andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires  ptable3  indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres  ptable3  kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://csound.com/docs/manual/ptable3.html ptable3 :: Sig -> Tab -> Sig -- | Accesses table values by direct indexing. -- --
--   ares  ptable  andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires  ptable  indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres  ptable  kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- csound doc: http://csound.com/docs/manual/ptable.html ptable :: Sig -> Tab -> Sig -- | Accesses table values by incremental sampling with linear -- interpolation. -- --
--   kres  oscil1i  idel, kamp, idur [, ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/oscil1i.html oscil1i :: D -> Sig -> D -> Sig -- | Accesses table values by incremental sampling. -- --
--   kres  oscil1  idel, kamp, idur [, ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/oscil1.html oscil1 :: D -> Sig -> D -> Sig -- | STKWurley simulates a Wurlitzer electric piano FM synthesis -- instrument. -- -- STKWurley simulates a Wurlitzer electric piano FM synthesis -- instrument. It uses two simple FM Pairs summed together, also referred -- to as algorithm 5 of the TX81Z. -- --
--   asignal  STKWurley  ifrequency, iamplitude, [kmod, kv1[, kcross, kv2[, klfo, kv3[, klfodepth, kv4[, kadsr, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKWurley.html stkWurley :: D -> D -> Sig -- | STKWhistle produces whistle sounds. -- -- STKWhistle produces (police) whistle sounds. It uses a hybrid -- physical/spectral model of a police whistle (a la Cook). -- --
--   asignal  STKWhistle  ifrequency, iamplitude, [kmod, kv1[, knoise, kv2[, kfipfreq, kv3[, kfipgain, kv4[, kvol, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKWhistle.html stkWhistle :: D -> D -> Sig -- | STKVoicForm is a four formant synthesis instrument. -- -- STKVoicForm is a four formant synthesis instrument. This instrument -- contains an excitation singing wavetable (looping wave with random and -- periodic vibrato, smoothing on frequency, etc.), excitation noise, and -- four sweepable complex resonances. Measured formant data is included, -- and enough data is there to support either parallel or cascade -- synthesis. In the floating point case cascade synthesis is the most -- natural so that's what you'll find here. -- --
--   asignal  STKVoicForm  ifrequency, iamplitude, [kmix, kv1[, ksel, kv2[, klfo, kv3[, klfodepth, kv4[, kloud, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKVoicForm.html stkVoicForm :: D -> D -> Sig -- | STKTubeBell is a tubular bell (orchestral chime) FM synthesis -- instrument. -- -- STKTubeBell is a tubular bell (orchestral chime) FM synthesis -- instrument. It uses two simple FM Pairs summed together, also referred -- to as algorithm 5 of the TX81Z. -- --
--   asignal  STKTubeBell  ifrequency, iamplitude, [kmod, kv1[, kcross, kv2[, klfo, kv3[, klfodepth, kv4[, kadsr, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKTubeBell.html stkTubeBell :: D -> D -> Sig -- | STKStifKarp is a plucked stiff string instrument. -- -- STKStifKarp is a plucked stiff string instrument. It a simple plucked -- string algorithm (Karplus Strong) with enhancements, including string -- stiffness and pluck position controls. The stiffness is modeled with -- allpass filters. -- --
--   asignal  STKStifKarp  ifrequency, iamplitude, [kpos, kv1[, ksus, kv2[, kstretch, kv3]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKStifKarp.html stkStifKarp :: D -> D -> Sig -- | STKSitar uses a plucked string physical model. -- -- STKSitar uses a plucked string physical model based on the -- Karplus-Strong algorithm. -- --
--   asignal  STKSitar  ifrequency, iamplitude
--   
-- -- csound doc: http://csound.com/docs/manual/STKSitar.html stkSitar :: D -> D -> Sig -- | STKSimple is a wavetable/noise instrument. -- -- STKSimple is a wavetable/noise instrument. It combines a looped wave, -- a noise source, a biquad resonance filter, a one-pole filter, and an -- ADSR envelope to create some interesting sounds. -- --
--   asignal  STKSimple  ifrequency, iamplitude, [kpos, kv1[, kcross, kv2[, kenv, kv3[, kgain, kv4]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKSimple.html stkSimple :: D -> D -> Sig -- | STKShakers is an instrument that simulates environmental sounds or -- collisions of multiple independent sound producing objects. -- -- STKShakers are a set of PhISEM and PhOLIES instruments: PhISEM -- (Physically Informed Stochastic Event Modeling) is an algorithmic -- approach for simulating collisions of multiple independent sound -- producing objects. It can simulate a Maraca, Sekere, Cabasa, Bamboo -- Wind Chimes, Water Drops, Tambourine, Sleighbells, and a Guiro. On -- http://soundlab.cs.princeton.edu/research/controllers/shakers/ -- PhOLIES (Physically-Oriented Library of Imitated Environmental Sounds) -- there is a similar approach for the synthesis of environmental sounds. -- It simulates of breaking sticks, crunchy snow (or not), a wrench, -- sandpaper, and more.. -- --
--   asignal  STKShakers  ifrequency, iamplitude, [kenerg, kv1[, kdecay, kv2[, kshake, kv3[, knum, kv4[, kres, kv5[, kinstr, kv6]]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKShakers.html stkShakers :: D -> D -> Sig -- | STKSaxofony is a faux conical bore reed instrument. -- -- STKSaxofony is a faux conical bore reed instrument. This opcode uses a -- "hybrid" digital waveguide instrument that can generate a variety of -- wind-like sounds. It has also been referred to as the "blowed string" -- model. The waveguide section is essentially that of a string, with one -- rigid and one lossy termination. The non-linear function is a reed -- table. The string can be "blown" at any point between the -- terminations, though just as with strings, it is impossible to excite -- the system at either end. If the excitation is placed at the string -- mid-point, the sound is that of a clarinet. At points closer to the -- "bridge", the sound is closer to that of a saxophone. -- --
--   asignal  STKSaxofony 
--        ifrequency, iamplitude, [kstiff, kv1[, kapert, kv2[, kblow, kv3[, 
--       knoise, kv4[, klfo, kv5[, klfodepth, kv6[, kbreath, kv7]]]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKSaxofony.html stkSaxofony :: D -> D -> Sig -- | STK Fender Rhodes-like electric piano FM synthesis instrument. -- --
--   asignal  STKRhodey  ifrequency, iamplitude, [kmod, kv1[, kcross, kv2[, klfo, kv3[, klfodepth, kv4[, kadsr, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKRhodey.html stkRhodey :: D -> D -> Sig -- | STKResonate is a noise driven formant filter. -- -- STKResonate is a noise driven formant filter. This instrument contains -- a noise source, which excites a biquad resonance filter, with volume -- controlled by an ADSR. -- --
--   asignal  STKResonate  ifrequency, iamplitude, [kfreq, kv1[, kpole, kv2[, knotch, kv3[, kzero, kv4[, kenv, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKResonate.html stkResonate :: D -> D -> Sig -- | STKPlucked uses a plucked string physical model. -- -- STKPlucked uses a plucked string physical model based on the -- Karplus-Strong algorithm. -- --
--   asignal  STKPlucked  ifrequency, iamplitude
--   
-- -- csound doc: http://csound.com/docs/manual/STKPlucked.html stkPlucked :: D -> D -> Sig -- | STKPercFlut is a percussive flute FM synthesis instrument. -- -- STKPercFlut is a percussive flute FM synthesis instrument. The -- instrument uses an algorithm like the algorithm 4 of the TX81Z. -- --
--   asignal  STKPercFlut  ifrequency, iamplitude, [kmod, kv1[, kcross, kv2[, klfo, kv3[, klfodepth, kv4[, kadsr, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKPercFlut.html stkPercFlut :: D -> D -> Sig -- | STKMoog produces moog-like swept filter sounds. -- -- STKMoog produces moog-like swept filter sounds, using one attack wave, -- one looped wave, and an ADSR envelope and adds two sweepable formant -- filters. -- --
--   asignal  STKMoog  ifrequency, iamplitude, [kq, kv1[, krate, kv2[, klfo, kv3[, klfodepth, kv4[, kvol, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKMoog.html stkMoog :: D -> D -> Sig -- | STKModalBar is a resonant bar instrument. -- -- This opcode is a resonant bar instrument.It has a number of different -- struck bar instruments. -- --
--   asignal  STKModalBar  ifrequency, iamplitude, [khard, kv1[, kpos, kv2[, klfo, kv3[, klfodepth, kv4[, kmix, kv5[, kvol, kv6[, kinstr, kv7]]]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKModalBar.html stkModalBar :: D -> D -> Sig -- | STKMandolin produces mamdolin-like sounds. -- -- STKMandolin produces mamdolin-like sounds, using "commuted synthesis" -- techniques to model a mandolin instrument. -- --
--   asignal  STKMandolin  ifrequency, iamplitude, [kbody, kv1[, kpos, kv2[, ksus, kv3[, kdetune, kv4[, kmic, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKMandolin.html stkMandolin :: D -> D -> Sig -- | STKHevyMetl produces metal sounds. -- -- STKHevyMetl produces metal sounds, using FM synthesis. It uses 3 -- cascade operators with feedback modulation, also referred to as -- algorithm 3 of the TX81Z. -- --
--   asignal  STKHevyMetl  ifrequency, iamplitude, [kmod, kv1[, kcross, kv2[, klfo, kv3[, klfodepth, kv4[, kadsr, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKHevyMetl.html stkHevyMetl :: D -> D -> Sig -- | STKFlute uses a simple flute physical model. -- -- STKFlute uses a simple flute physical model. The jet model uses a -- polynomial, a la Cook. -- --
--   asignal  STKFlute  ifrequency, iamplitude, [kjet, kv1[, knoise, kv2[, klfo, kv3[, klfodepth, kv4[, kbreath, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKFlute.html stkFlute :: D -> D -> Sig -- | STKFMVoices is a singing FM synthesis instrument. -- -- STKFMVoices is a singing FM synthesis instrument. It has 3 carriers -- and a common modulator, also referred to as algorithm 6 of the TX81Z. -- --
--   asignal  STKFMVoices  ifrequency, iamplitude, [kvowel, kv1[, kspec, kv2[, klfo, kv3[, klfodepth, kv4[, kadsr, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKFMVoices.html stkFMVoices :: D -> D -> Sig -- | STKDrummer is a drum sampling synthesizer. -- -- STKDrummer is a drum sampling synthesizer using raw waves and one-pole -- filters, The drum rawwave files are sampled at 22050 Hz, but will be -- appropriately interpolated for other sample rates. -- --
--   asignal  STKDrummer  ifrequency, iamplitude
--   
-- -- csound doc: http://csound.com/docs/manual/STKDrummer.html stkDrummer :: D -> D -> Sig -- | STKClarinet uses a simple clarinet physical model. -- --
--   asignal  STKClarinet  ifrequency, iamplitude, [kstiff, kv1[, knoise, kv2[, klfo, kv3[, klfodepth, kv4[, kbreath, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKClarinet.html stkClarinet :: D -> D -> Sig -- | STKBrass is a simple brass instrument. -- -- STKBrass uses a simple brass instrument waveguide model, a la Cook. -- --
--   asignal  STKBrass  ifrequency, iamplitude, [klip, kv1[, kslide, kv2[, klfo, kv3[, klfodepth, kv4[, kvol, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKBrass.html stkBrass :: D -> D -> Sig -- | STKBowed is a bowed string instrument. -- -- STKBowed is a bowed string instrument, using a waveguide model. -- --
--   asignal  STKBowed  ifrequency, iamplitude, [kpress, kv1[, kpos, kv2[, klfo, kv3[, klfodepth, kv4[, kvol, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKBowed.html stkBowed :: D -> D -> Sig -- | STK clarinet physical model with one register hole and one tonehole. -- -- This opcode is based on the clarinet model, with the addition of a -- two-port register hole and a three-port dynamic tonehole -- implementation. -- --
--   asignal  STKBlowHole  ifrequency, iamplitude, [kreed, kv1[, knoise, kv2[, khole, kv3[, kreg, kv4[, kbreath, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKBlowHole.html stkBlowHole :: D -> D -> Sig -- | STKBlowBotl uses a helmholtz resonator (biquad filter) with a -- polynomial jet excitation. -- -- This opcode implements a helmholtz resonator (biquad filter) with a -- polynomial jet excitation (a la Cook). -- --
--   asignal  STKBlowBotl  ifrequency, iamplitude, [knoise, kv1[, klfo, kv2[, klfodepth, kv3[, kvol, kv4]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKBlowBotl.html stkBlowBotl :: D -> D -> Sig -- | STK Hammond-oid organ-like FM synthesis instrument. -- --
--   asignal  STKBeeThree  ifrequency, iamplitude, [kop4, kv1[, kop3, kv2[, klfo, kv3[, klfodepth, kv4[, kadsr, kv5]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKBeeThree.html stkBeeThree :: D -> D -> Sig -- | STKBandedWG uses banded waveguide techniques to model a variety of -- sounds. -- -- This opcode uses banded waveguide techniques to model a variety of -- sounds, including bowed bars, glasses, and bowls. -- --
--   asignal  STKBandedWG  ifrequency, iamplitude, [kpress, kv1[, kmot, kv2[, klfo, kv3[, klfodepth, kv4[, kvel, kv5[, kstrk, kv6[, kinstr, kv7]]]]]]]
--   
-- -- csound doc: http://csound.com/docs/manual/STKBandedWG.html stkBandedWG :: D -> D -> Sig -- | Compute the waveform and the wavetable for use in scanned synthesis. -- -- 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  init, irate, ifnvel, ifnmass, ifnstif, ifncentr, ifndamp, kmass, \
--            kstif, kcentr, kdamp, ileft, iright, kpos, kstrngth, ain, idisp, id
--   
-- -- csound doc: http://csound.com/docs/manual/xscanu.html xscanu :: D -> D -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -> Sig -> Sig -> Sig -> D -> D -> Sig -> Sig -> Sig -> D -> D -> SE () -- | Allows the position and velocity of a node in a scanned process to be -- read. -- --
--   xscansmap  kpos, kvel, iscan, kamp, kvamp [, iwhich]
--   
-- -- csound doc: http://csound.com/docs/manual/xscansmap.html xscansmap :: Sig -> Sig -> D -> Sig -> Sig -> SE () -- | Fast scanned synthesis waveform and the wavetable generator. -- -- 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. -- --
--   ares  xscans  kamp, kfreq, ifntraj, id [, iorder]
--   
-- -- csound doc: http://csound.com/docs/manual/xscans.html xscans :: Sig -> Sig -> Tab -> D -> Sig -- | Allows the position and velocity of a node in a scanned process to be -- read. -- --
--   kpos, kvel  xscanmap  iscan, kamp, kvamp [, iwhich]
--   
-- -- csound doc: http://csound.com/docs/manual/xscanmap.html xscanmap :: D -> Sig -> Sig -> (Sig, Sig) -- | Compute the waveform and the wavetable for use in scanned synthesis. -- --
--   scanu  init, irate, ifnvel, ifnmass, ifnstif, ifncentr, ifndamp, kmass, \
--            kstif, kcentr, kdamp, ileft, iright, kpos, kstrngth, ain, idisp, id
--   
-- -- csound doc: http://csound.com/docs/manual/scanu.html scanu :: D -> D -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -> Sig -> Sig -> Sig -> D -> D -> Sig -> Sig -> Sig -> D -> D -> SE () -- | A simpler scanned synthesis implementation. -- -- 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. -- --
--   aout  scantable  kamp, kpch, ipos, imass, istiff, idamp, ivel
--   
-- -- csound doc: http://csound.com/docs/manual/scantable.html scantable :: Sig -> Sig -> D -> D -> D -> D -> D -> Sig -- | Generate audio output using scanned synthesis. -- --
--   ares  scans  kamp, kfreq, ifn, id [, iorder]
--   
-- -- csound doc: http://csound.com/docs/manual/scans.html scans :: Sig -> Sig -> Tab -> D -> Sig -- | Copies from one table to another with a gain control. -- -- 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  isrc, idst, ipos, imult
--   
-- -- csound doc: http://csound.com/docs/manual/scanhammer.html scanhammer :: D -> D -> D -> D -> SE () -- | A simple time stretch by repeating cycles. -- --
--   ares  waveset  ain, krep [, ilen]
--   
-- -- csound doc: http://csound.com/docs/manual/waveset.html waveset :: Sig -> Sig -> Sig -- | A sound looper with pitch control. -- -- 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. -- --
--   asig, krec  sndloop  ain, kpitch, ktrig, idur, ifad
--   
-- -- csound doc: http://csound.com/docs/manual/sndloop.html sndloop :: Sig -> Sig -> Sig -> D -> D -> (Sig, Sig) -- | Assigns an existing preset of a SoundFont2 (SF2) sample file to an -- index number. -- -- 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. -- --
--   ir  sfpreset  iprog, ibank, ifilhandle, ipreindex
--   
-- -- csound doc: http://csound.com/docs/manual/sfpreset.html sfpreset :: D -> D -> Sf -> Sf -> D -- | Prints a list of all presets of a SoundFont2 (SF2) sample file. -- -- 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  ifilhandle
--   
-- -- csound doc: http://csound.com/docs/manual/sfplist.html sfplist :: Sf -> SE () -- | Plays a SoundFont2 (SF2) sample preset, generating a mono sound. -- -- 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. -- --
--   ares  sfplaym  ivel, inotenum, xamp, xfreq, ipreindex [, iflag] [, ioffset] [, ienv]
--   
-- -- csound doc: http://csound.com/docs/manual/sfplaym.html sfplaym :: D -> D -> Sig -> Sig -> Sf -> Sig -- | Plays a SoundFont2 (SF2) sample preset, generating a mono sound with -- cubic interpolation. -- -- 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. -- --
--   ares  sfplay3m  ivel, inotenum, xamp, xfreq, ipreindex [, iflag] [, ioffset] [, ienv]
--   
-- -- csound doc: http://csound.com/docs/manual/sfplay3m.html sfplay3m :: D -> D -> Sig -> Sig -> Sf -> Sig -- | Plays a SoundFont2 (SF2) sample preset, generating a stereo sound with -- cubic interpolation. -- -- 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. -- --
--   ar1, ar2  sfplay3  ivel, inotenum, xamp, xfreq, ipreindex [, iflag] [, ioffset] [, ienv]
--   
-- -- csound doc: http://csound.com/docs/manual/sfplay3.html sfplay3 :: D -> D -> Sig -> Sig -> Sf -> (Sig, Sig) -- | Plays a SoundFont2 (SF2) sample preset, generating a stereo sound. -- -- 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. -- --
--   ar1, ar2  sfplay  ivel, inotenum, xamp, xfreq, ipreindex [, iflag] [, ioffset] [, ienv]
--   
-- -- csound doc: http://csound.com/docs/manual/sfplay.html sfplay :: D -> D -> Sig -> Sig -> Sf -> (Sig, Sig) -- | Assigns all presets of a SoundFont2 (SF2) sample file to a sequence of -- progressive index numbers. -- -- 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  istartindex, ifilhandle[, imsgs]
--   
-- -- csound doc: http://csound.com/docs/manual/sfpassign.html sfpassign :: D -> Sf -> SE () -- | Plays a SoundFont2 (SF2) sample preset, generating a stereo sound, -- with user-defined time-varying crossfade looping. -- -- 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. -- --
--   ar1, ar2  sflooper  ivel, inotenum, kamp, kpitch, ipreindex, kloopstart, kloopend, kcrossfade \
--             [, istart, imode, ifenv, iskip] 
--   
-- -- csound doc: http://csound.com/docs/manual/sflooper.html sflooper :: D -> D -> Sig -> Sig -> Sf -> Sig -> Sig -> Sig -> (Sig, Sig) -- | Loads an entire SoundFont2 (SF2) sample file into memory. -- -- 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. -- --
--   ir  sfload  "filename"
--   
-- -- csound doc: http://csound.com/docs/manual/sfload.html sfload :: Str -> D -- | Plays a SoundFont2 (SF2) sample instrument, generating a mono sound. -- -- 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. -- --
--   ares  sfinstrm  ivel, inotenum, xamp, xfreq, instrnum, ifilhandle \
--             [, iflag] [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/sfinstrm.html sfinstrm :: D -> D -> Sig -> Sig -> D -> Sf -> Sig -- | Plays a SoundFont2 (SF2) sample instrument, generating a mono sound -- with cubic interpolation. -- -- 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. -- --
--   ares  sfinstr3m  ivel, inotenum, xamp, xfreq, instrnum, ifilhandle \
--             [, iflag] [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/sfinstr3m.html sfinstr3m :: D -> D -> Sig -> Sig -> D -> Sf -> Sig -- | Plays a SoundFont2 (SF2) sample instrument, generating a stereo sound -- with cubic interpolation. -- -- 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. -- --
--   ar1, ar2  sfinstr3  ivel, inotenum, xamp, xfreq, instrnum, ifilhandle \
--             [, iflag] [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/sfinstr3.html sfinstr3 :: D -> D -> Sig -> Sig -> D -> Sf -> (Sig, Sig) -- | Plays a SoundFont2 (SF2) sample instrument, generating a stereo sound. -- -- 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. -- --
--   ar1, ar2  sfinstr  ivel, inotenum, xamp, xfreq, instrnum, ifilhandle \
--             [, iflag] [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/sfinstr.html sfinstr :: D -> D -> Sig -> Sig -> D -> Sf -> (Sig, Sig) -- | Prints a list of all instruments of a previously loaded SoundFont2 -- (SF2) file. -- -- 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  ifilhandle
--   
-- -- csound doc: http://csound.com/docs/manual/sfilist.html sfilist :: Sf -> SE () -- | Read stereo sampled sound from a table with looping and high -- precision. -- -- lposcilsa2 reads stereo sampled sound from a table with looping and -- high precision. -- --
--   ar1, ar2  lposcilsa2  aamp, kfreqratio, kloop, kend, ift [,iphs] 
--   
-- -- csound doc: http://csound.com/docs/manual/lposcilsa2.html lposcilsa2 :: Sig -> Sig -> Sig -> Sig -> D -> (Sig, Sig) -- | Read stereo sampled sound from a table with looping and high -- precision. -- -- lposcilsa reads stereo sampled sound from a table with looping and -- high precision. -- --
--   ar1, ar2  lposcilsa  aamp, kfreqratio, kloop, kend, ift [,iphs] 
--   
-- -- csound doc: http://csound.com/docs/manual/lposcilsa.html lposcilsa :: Sig -> Sig -> Sig -> Sig -> D -> (Sig, Sig) -- | Read sampled sound from a table with looping and high precision. -- -- lposcila reads sampled sound from a table with looping and high -- precision. -- --
--   ar  lposcila  aamp, kfreqratio, kloop, kend, ift [,iphs] 
--   
-- -- csound doc: http://csound.com/docs/manual/lposcila.html lposcila :: Sig -> Sig -> Sig -> Sig -> D -> Sig -- | Read sampled sound from a table with high precision and cubic -- interpolation. -- -- Read sampled sound (mono or stereo) from a table, with looping, and -- high precision. lposcil3 uses cubic interpolation. -- --
--   ares  lposcil3  kamp, kfreqratio, kloop, kend, ifn [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/lposcil3.html lposcil3 :: Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | Read sampled sound from a table with looping and high precision. -- -- Read sampled sound (mono or stereo) from a table, with looping, and -- high precision. -- --
--   ares  lposcil  kamp, kfreqratio, kloop, kend, ifn [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/lposcil.html lposcil :: Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | Generates a table index for sample playback -- -- This opcode can be used to generate table index for sample playback -- (e.g. tablexkt). -- --
--   ares  lphasor  xtrns [, ilps] [, ilpe] [, imode] [, istrt] [, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/lphasor.html lphasor :: Sig -> Sig -- | Read multi-channel sampled sound from a table. -- -- Read sampled sound (up to 16 channels) from a table, with optional -- sustain and release looping. -- --
--   ar1 [, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9, ar10, ar11, ar12, ar13, ar14, \
--             ar15, ar16]  loscilx  xamp, kcps, ifn \
--             [, iwsize, ibas, istrt, imod, ibeg, iend]
--   
-- -- csound doc: http://csound.com/docs/manual/loscilx.html loscilx :: Tuple a => Sig -> Sig -> Tab -> a -- | Read sampled sound from a table using cubic interpolation. -- -- Read sampled sound (mono or stereo) from a table, with optional -- sustain and release looping, using cubic interpolation. -- --
--   ar1 [,ar2]  loscil3  xamp, kcps, ifn [, ibas] [, imod1] [, ibeg1] [, iend1] \
--             [, imod2] [, ibeg2] [, iend2]
--   
-- -- csound doc: http://csound.com/docs/manual/loscil3.html loscil3 :: Tuple a => Sig -> Sig -> Tab -> a -- | Read sampled sound from a table. -- -- Read sampled sound (mono or stereo) from a table, with optional -- sustain and release looping. -- --
--   ar1 [,ar2]  loscil  xamp, kcps, ifn [, ibas] [, imod1] [, ibeg1] [, iend1] \
--             [, imod2] [, ibeg2] [, iend2]
--   
-- -- csound doc: http://csound.com/docs/manual/loscil.html loscil :: Tuple a => Sig -> Sig -> Tab -> a -- | Set interpolation method for channel in Fluid Engine -- -- 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  ienginenum, ichannelnum, iInterpMethod
--   
-- -- csound doc: -- http://csound.com/docs/manual/fluidSetInterpMethod.html fluidSetInterpMethod :: D -> D -> D -> SE () -- | Assigns a preset from a SoundFont to a channel on a fluidEngine. -- --
--   fluidProgramSelect  ienginenum, ichannelnum, isfnum, ibanknum, ipresetnum
--   
-- -- csound doc: -- http://csound.com/docs/manual/fluidProgramSelect.html fluidProgramSelect :: D -> D -> Tab -> D -> D -> SE () -- | Outputs sound from a given fluidEngine -- -- Outputs the sound from a fluidEngine. -- --
--   aleft, aright  fluidOut  ienginenum
--   
-- -- csound doc: http://csound.com/docs/manual/fluidOut.html fluidOut :: D -> (Sig, Sig) -- | Plays a note on a channel in a fluidSynth engine. -- -- Plays a note at imidikey pitch and imidivel velocity on ichannelnum -- channel of number ienginenum fluidEngine. -- --
--   fluidNote  ienginenum, ichannelnum, imidikey, imidivel
--   
-- -- csound doc: http://csound.com/docs/manual/fluidNote.html fluidNote :: D -> D -> D -> D -> SE () -- | Loads a SoundFont into a fluidEngine, optionally listing SoundFont -- contents. -- -- Loads a SoundFont into an instance of a fluidEngine, optionally -- listing banks and presets for SoundFont. -- --
--   isfnum  fluidLoad  soundfont, ienginenum[, ilistpresets]
--   
-- -- csound doc: http://csound.com/docs/manual/fluidLoad.html fluidLoad :: D -> D -> Tab -- | Instantiates a fluidsynth engine. -- -- 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. -- --
--   ienginenum  fluidEngine  [iReverbEnabled] [, iChorusEnabled] [,iNumChannels] [, iPolyphony] 
--   
-- -- csound doc: http://csound.com/docs/manual/fluidEngine.html fluidEngine :: D -- | Sends MIDI note on, note off, and other messages to a SoundFont -- preset. -- -- 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  ienginenum, kstatus, kchannel, kdata1, kdata2
--   
-- -- csound doc: http://csound.com/docs/manual/fluidControl.html fluidControl :: D -> Sig -> Sig -> Sig -> Sig -> SE () -- | Sends a MIDI controller data message to fluid. -- -- 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  iEngineNumber, iChannelNumber, iControllerNumber, kValue
--   
-- -- csound doc: http://csound.com/docs/manual/fluidCCk.html fluidCCk :: D -> D -> D -> Sig -> SE () -- | Sends a MIDI controller data message to fluid. -- -- 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  iEngineNumber, iChannelNumber, iControllerNumber, iValue
--   
-- -- csound doc: http://csound.com/docs/manual/fluidCCi.html fluidCCi :: D -> D -> D -> D -> SE () -- | Collects all audio from all Fluidsynth engines in a performance -- --
--   aleft, aright  fluidAllOut 
--   
-- -- csound doc: http://csound.com/docs/manual/fluidAllOut.html fluidAllOut :: (Sig, Sig) -- | Function-table-based crossfading looper. -- -- 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, with one or two -- channels. -- --
--   asig1[,asig2]  flooper2  kamp, kpitch, kloopstart, kloopend, kcrossfade, ifn \
--             [, istart, imode, ifenv, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/flooper2.html flooper2 :: Tuple a => Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> a -- | Function-table-based crossfading looper. -- -- 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, with one or two channels. -- --
--   asig1[, asig2]  flooper  kamp, kpitch, istart, idur, ifad, ifn
--   
-- -- csound doc: http://csound.com/docs/manual/flooper.html flooper :: Tuple a => Sig -> Sig -> D -> D -> D -> Tab -> a -- | Generates breakbeat-style cut-ups of a stereo audio stream. -- -- 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. -- --
--   a1,a2  bbcuts  asource1, asource2, ibps, isubdiv, ibarlength, iphrasebars, \
--             inumrepeats [, istutterspeed] [, istutterchance] [, ienvchoice]
--   
-- -- csound doc: http://csound.com/docs/manual/bbcuts.html bbcuts :: Sig -> Sig -> D -> D -> D -> D -> D -> (Sig, Sig) -- | Generates breakbeat-style cut-ups of a mono audio stream. -- -- 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. -- --
--   a1  bbcutm  asource, ibps, isubdiv, ibarlength, iphrasebars, inumrepeats \
--             [, istutterspeed] [, istutterchance] [, ienvchoice ]
--   
-- -- csound doc: http://csound.com/docs/manual/bbcutm.html bbcutm :: Sig -> D -> D -> D -> D -> D -> Sig -- | Weibull distribution random number generator (positive values only). -- -- Weibull distribution random number generator (positive values only). -- This is an x-class noise generator -- --
--   ares  weibull  ksigma, ktau
--   ires  weibull  ksigma, ktau
--   kres  weibull  ksigma, ktau
--   
-- -- csound doc: http://csound.com/docs/manual/weibull.html weibull :: SigOrD a => a -> a -> SE a -- | truly random opcodes with controllable range. -- -- Truly random opcodes with controllable range. These units are for -- Unix-like systems only and use devurandom to construct Csound -- random values -- --
--   ax  urandom  [imin, imax]
--   ix  urandom  [imin, imax]
--   kx  urandom  [imin, imax]
--   
-- -- csound doc: http://csound.com/docs/manual/urandom.html urandom :: SigOrD a => SE a -- | Uniform distribution random number generator (positive values only). -- -- Uniform distribution random number generator (positive values only). -- This is an x-class noise generator. -- --
--   ares  unirand  krange
--   ires  unirand  krange
--   kres  unirand  krange
--   
-- -- csound doc: http://csound.com/docs/manual/unirand.html unirand :: SigOrD a => a -> SE a -- | Triangular distribution random number generator -- -- Triangular distribution random number generator. This is an x-class -- noise generator. -- --
--   ares  trirand  krange
--   ires  trirand  krange
--   kres  trirand  krange
--   
-- -- csound doc: http://csound.com/docs/manual/trirand.html trirand :: SigOrD a => a -> SE a -- | Generates a controlled pseudo-random number series between min and max -- values according to a trigger. -- -- Generates a controlled pseudo-random number series between min and max -- values at k-rate whenever the trigger parameter is different to 0. -- --
--   kout  trandom  ktrig, kmin, kmax
--   
-- -- csound doc: http://csound.com/docs/manual/trandom.html trandom :: Sig -> Sig -> Sig -> SE Sig -- | Sets the global seed value. -- -- 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
--   
-- -- csound doc: http://csound.com/docs/manual/seed.html seed :: D -> SE () -- | Generate random spline curves. -- --
--   ares  rspline  xrangeMin, xrangeMax, kcpsMin, kcpsMax
--   kres  rspline  krangeMin, krangeMax, kcpsMin, kcpsMax
--   
-- -- csound doc: http://csound.com/docs/manual/rspline.html rspline :: Sig -> Sig -> Sig -> Sig -> SE Sig -- | 31-bit bipolar random opcodes with controllable distribution. -- -- 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. -- --
--   ax  rnd31  kscl, krpow [, iseed]
--   ix  rnd31  iscl, irpow [, iseed]
--   kx  rnd31  kscl, krpow [, iseed]
--   
-- -- csound doc: http://csound.com/docs/manual/rnd31.html rnd31 :: SigOrD a => a -> a -> SE a -- | Generates a user-controlled random number series with interpolation -- between each new number. -- --
--   ares  randomi  kmin, kmax, xcps [,imode] [,ifirstval]
--   kres  randomi  kmin, kmax, kcps [,imode] [,ifirstval]
--   
-- -- csound doc: http://csound.com/docs/manual/randomi.html randomi :: Sig -> Sig -> Sig -> SE Sig -- | Generates random numbers with a user-defined limit and holds them for -- a period of time. -- --
--   ares  randomh  kmin, kmax, xcps [,imode] [,ifirstval]
--   kres  randomh  kmin, kmax, kcps [,imode] [,ifirstval]
--   
-- -- csound doc: http://csound.com/docs/manual/randomh.html randomh :: Sig -> Sig -> Sig -> SE Sig -- | Generates a controlled pseudo-random number series between min and max -- values. -- -- Generates is a controlled pseudo-random number series between min and -- max values. -- --
--   ares  random  kmin, kmax
--   ires  random  imin, imax
--   kres  random  kmin, kmax
--   
-- -- csound doc: http://csound.com/docs/manual/random.html random :: SigOrD a => a -> a -> SE a -- | Generates a controlled random number series with interpolation between -- each new number. -- --
--   ares  randi  xamp, xcps [, iseed] [, isize] [, ioffset]
--   kres  randi  kamp, kcps [, iseed] [, isize] [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/randi.html randi :: Sig -> Sig -> SE Sig -- | Generates random numbers and holds them for a period of time. -- --
--   ares  randh  xamp, xcps [, iseed] [, isize] [, ioffset]
--   kres  randh  kamp, kcps [, iseed] [, isize] [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/randh.html randh :: Sig -> Sig -> SE Sig -- | Generates a controlled random number series. -- -- Output is a controlled random number series between -amp and +amp -- --
--   ares  rand  xamp [, iseed] [, isel] [, ioffset]
--   kres  rand  xamp [, iseed] [, isel] [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/rand.html rand :: Sig -> SE Sig -- | Poisson distribution random number generator (positive values only). -- -- Poisson distribution random number generator (positive values only). -- This is an x-class noise generator. -- --
--   ares  poisson  klambda
--   ires  poisson  klambda
--   kres  poisson  klambda
--   
-- -- csound doc: http://csound.com/docs/manual/poisson.html poisson :: SigOrD a => a -> SE a -- | Generates approximate pink noise. -- -- Generates approximate pink noise (-3dB/oct response) by one of two -- different methods: -- --
--   ares  pinkish  xin [, imethod] [, inumbands] [, iseed] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/pinkish.html pinkish :: Sig -> SE Sig -- | Generates pink noise. -- -- Generates pink noise (-3dB/oct response) by the New Shade of Pink -- algorithm of Stefan Stenzel. -- --
--   ares  pinker 
--   
-- -- csound doc: http://csound.com/docs/manual/pinker.html pinker :: SE Sig -- | Cauchy distribution random number generator (positive values only). -- -- Cauchy distribution random number generator (positive values only). -- This is an x-class noise generator. -- --
--   ares  pcauchy  kalpha
--   ires  pcauchy  kalpha
--   kres  pcauchy  kalpha
--   
-- -- csound doc: http://csound.com/docs/manual/pcauchy.html pcauchy :: SigOrD a => a -> SE a -- | A white noise generator with an IIR lowpass filter. -- --
--   ares  noise  xamp, kbeta
--   
-- -- csound doc: http://csound.com/docs/manual/noise.html noise :: Sig -> Sig -> SE Sig -- | Linear distribution random number generator (positive values only). -- -- Linear distribution random number generator (positive values only). -- This is an x-class noise generator. -- --
--   ares  linrand  krange
--   ires  linrand  krange
--   kres  linrand  krange
--   
-- -- csound doc: http://csound.com/docs/manual/linrand.html linrand :: SigOrD a => a -> SE a -- | A jitter-spline generator. -- --
--   ares  jspline  xamp, kcpsMin, kcpsMax
--   kres  jspline  kamp, kcpsMin, kcpsMax
--   
-- -- csound doc: http://csound.com/docs/manual/jspline.html jspline :: Sig -> Sig -> Sig -> SE Sig -- | Generates a segmented line with user-controllable random segments. -- --
--   kout  jitter2  ktotamp, kamp1, kcps1,
--           kamp2, kcps2, kamp3, kcps3[ , iopt]
--   
-- -- csound doc: http://csound.com/docs/manual/jitter2.html jitter2 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE Sig -- | Generates a segmented line whose segments are randomly generated. -- --
--   kout  jitter  kamp, kcpsMin, kcpsMax
--   
-- -- csound doc: http://csound.com/docs/manual/jitter.html jitter :: Sig -> Sig -> Sig -> SE Sig -- | Reads the global seed value. -- -- Returns the global seed value used for all x-class noise generators. -- --
--   ians getseed 
--   kans getseed 
--   
-- -- csound doc: http://csound.com/docs/manual/getseed.html getseed :: SE Sig -- | Random impulses around a certain frequency. -- -- Generates random impulses around a certain frequency. -- --
--   ares  gausstrig  kamp, kcps, kdev [, imode] [, ifrst1]
--   kres  gausstrig  kamp, kcps, kdev [, imode] [, ifrst1]
--   
-- -- csound doc: http://csound.com/docs/manual/gausstrig.html gausstrig :: Sig -> Sig -> Sig -> SE Sig -- | Gaussian distribution random number generator with interpolation. -- -- Gaussian distribution random number generator with controlled -- interpolation between values. This is an x-class noise generator. -- --
--   ares  gaussi  krange, xamp, xcps
--   ires  gaussi  krange, xamp, xcps
--   kres  gaussi  krange, xamp, xcps
--   
-- -- csound doc: http://csound.com/docs/manual/gaussi.html gaussi :: SigOrD a => a -> a -> a -> SE a -- | Gaussian distribution random number generator. -- -- Gaussian distribution random number generator. This is an x-class -- noise generator. -- --
--   ares  gauss  krange
--   ires  gauss  krange
--   kres  gauss  krange
--   
-- -- csound doc: http://csound.com/docs/manual/gauss.html gauss :: Sig -> SE Sig -- | A fractal noise generator. -- -- A fractal noise generator implemented as a white noise filtered by a -- cascade of 15 first-order filters. -- --
--   ares  fractalnoise  kamp, kbeta
--   
-- -- csound doc: http://csound.com/docs/manual/fractalnoise.html fractalnoise :: Sig -> Sig -> SE Sig -- | Exponential distribution random number generator with interpolation -- (positive values only). -- -- Exponential distribution random number generator with controlled -- interpolation between values (positive values only). This is an -- x-class noise generator. -- --
--   ares  exprandi  klambda, xamp, xcps
--   ires  exprandi  klambda, xamp, xcps
--   kres  exprandi  klambda, xamp, xcps
--   
-- -- csound doc: http://csound.com/docs/manual/exprandi.html exprandi :: SigOrD a => a -> a -> a -> SE a -- | Exponential distribution random number generator (positive values -- only). -- -- Exponential distribution random number generator (positive values -- only). This is an x-class noise generator. -- --
--   ares  exprand  klambda
--   ires  exprand  klambda
--   kres  exprand  klambda
--   
-- -- csound doc: http://csound.com/docs/manual/exprand.html exprand :: SigOrD a => a -> SE a -- | Random impulses. -- -- Generates random impulses from -1 to 1. -- --
--   ares  dust2  kamp, kdensity
--   kres  dust2  kamp, kdensity
--   
-- -- csound doc: http://csound.com/docs/manual/dust2.html dust2 :: Sig -> Sig -> SE Sig -- | Cauchy distribution random number generator with interpolation. -- -- Cauchy distribution random number generator with controlled -- interpolation between values. This is an x-class noise generator. -- --
--   ares  cauchyi  klambda, xamp, xcps
--   ires  cauchyi  klambda, xamp, xcps
--   kres  cauchyi  klambda, xamp, xcps
--   
-- -- csound doc: http://csound.com/docs/manual/cauchyi.html cauchyi :: SigOrD a => a -> a -> a -> SE a -- | Cauchy distribution random number generator. -- -- Cauchy distribution random number generator. This is an x-class noise -- generator. -- --
--   ares  cauchy  kalpha
--   ires  cauchy  kalpha
--   kres  cauchy  kalpha
--   
-- -- csound doc: http://csound.com/docs/manual/cauchy.html cauchy :: SigOrD a => a -> SE a -- | Exponential distribution random number generator. -- -- Exponential distribution random number generator. This is an x-class -- noise generator. -- --
--   ares  bexprnd  krange
--   ires  bexprnd  krange
--   kres  bexprnd  krange
--   
-- -- csound doc: http://csound.com/docs/manual/bexprnd.html bexprnd :: SigOrD a => a -> SE a -- | Beta distribution random number generator (positive values only). -- -- Beta distribution random number generator (positive values only). This -- is an x-class noise generator. -- --
--   ares  betarand  krange, kalpha, kbeta
--   ires  betarand  krange, kalpha, kbeta
--   kres  betarand  krange, kalpha, kbeta
--   
-- -- csound doc: http://csound.com/docs/manual/betarand.html betarand :: SigOrD a => a -> a -> a -> SE a -- | Produces a normalized moving phase value with sync input and output. -- -- 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. -- --
--   aphase, asyncout  syncphasor  xcps, asyncin, [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/syncphasor.html syncphasor :: Sig -> Sig -> (Sig, Sig) -- | A resettable linear ramp between two levels -- -- A resettable linear ramp between two levels. Port of Supercollider's -- Phasor. -- --
--   aindex  sc_phasor  xtrig, xrate, kstart, kend [, kresetPos] 
--   kindex  sc_phasor  xtrig, xrate, kstart, kend [, kresetPos] 
--   
-- -- csound doc: http://csound.com/docs/manual/sc_phasor.html sc_phasor :: Sig -> Sig -> Sig -> Sig -> Sig -- | Produce an arbitrary number of normalized moving phase values. -- -- Produce an arbitrary number of normalized moving phase values, -- accessable by an index. -- --
--   ares  phasorbnk  xcps, kndx, icnt [, iphs]
--   kres  phasorbnk  kcps, kndx, icnt [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/phasorbnk.html phasorbnk :: Sig -> Sig -> D -> Sig -- | Produce a normalized moving phase value. -- --
--   ares  phasor  xcps [, iphs]
--   kres  phasor  kcps [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/phasor.html phasor :: Sig -> Sig -- | An emulation of a human voice. -- --
--   ares  voice  kamp, kfreq, kphoneme, kform, kvibf, kvamp, ifn, ivfn
--   
-- -- csound doc: http://csound.com/docs/manual/voice.html voice :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Sig -- | Physical model related to the striking of a metal block. -- -- 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. -- --
--   ares  vibes  kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivibfn, idec
--   
-- -- csound doc: http://csound.com/docs/manual/vibes.html vibes :: Sig -> Sig -> D -> D -> D -> Sig -> Sig -> Tab -> D -> Sig -- | Semi-physical model of a tambourine sound. -- -- 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. -- --
--   ares  tambourine  kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] \
--             [, ifreq1] [, ifreq2]
--   
-- -- csound doc: http://csound.com/docs/manual/tambourine.html tambourine :: Sig -> D -> Sig -- | Semi-physical model of a stick sound. -- -- 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. -- --
--   ares  stix  iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- csound doc: http://csound.com/docs/manual/stix.html stix :: D -> D -> Sig -- | Semi-physical model of a sleighbell sound. -- -- 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. -- --
--   ares  sleighbells  kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] \
--             [, ifreq1] [, ifreq2]
--   
-- -- csound doc: http://csound.com/docs/manual/sleighbells.html sleighbells :: Sig -> D -> Sig -- | Sounds like the shaking of a maraca or similar gourd instrument. -- -- 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. -- --
--   ares  shaker  kamp, kfreq, kbeans, kdamp, ktimes [, idecay]
--   
-- -- csound doc: http://csound.com/docs/manual/shaker.html shaker :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Semi-physical model of a sekere sound. -- -- 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. -- --
--   ares  sekere  iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- csound doc: http://csound.com/docs/manual/sekere.html sekere :: D -> D -> Sig -- | Semi-physical model of a sandpaper sound. -- -- 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. -- --
--   ares  sandpaper  iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- csound doc: http://csound.com/docs/manual/sandpaper.html sandpaper :: D -> D -> Sig -- | Creates a tone similar to a piano string prepared in a Cageian -- fashion. -- -- 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. -- --
--   ares  prepiano  ifreq, iNS, iD, iK, \
--           iT30,iB, kbcl, kbcr, imass, ihvfreq, iinit, ipos, ivel, isfreq, \
--           isspread[, irattles, irubbers]
--   al,ar  prepiano  ifreq, iNS, iD, iK, \
--           iT30,iB, kbcl, kbcr, imass, ihvfreq, iinit, ipos, ivel, isfreq, \
--           isspread[, irattles, irubbers]
--   
-- -- csound doc: http://csound.com/docs/manual/prepiano.html prepiano :: D -> D -> D -> D -> D -> D -> Sig -> Sig -> D -> D -> D -> D -> D -> D -> D -> (Sig, Sig) -- | Simulates a planet orbiting in a binary star system. -- -- 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. -- --
--   ax, ay, az  planet  kmass1, kmass2, ksep, ix, iy, iz, ivx, ivy, ivz, idelta \
--             [, ifriction] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/planet.html planet :: Sig -> Sig -> Sig -> D -> D -> D -> D -> D -> D -> D -> (Sig, Sig, Sig) -- | An emulation of a mini-Moog synthesizer. -- --
--   ares  moog  kamp, kfreq, kfiltq, kfiltrate, kvibf, kvamp, iafn, iwfn, ivfn
--   
-- -- csound doc: http://csound.com/docs/manual/moog.html moog :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Sig -- | Physical model related to the striking of a wooden block. -- -- 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. -- --
--   ares  marimba  kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivibfn, idec \
--             [, idoubles] [, itriples]
--   
-- -- csound doc: http://csound.com/docs/manual/marimba.html marimba :: Sig -> Sig -> D -> D -> D -> Sig -> Sig -> Tab -> D -> Sig -- | An emulation of a mandolin. -- --
--   ares  mandol  kamp, kfreq, kpluck, kdetune, kgain, ksize \
--           [, ifn] [, iminfreq]
--   
-- -- csound doc: http://csound.com/docs/manual/mandol.html mandol :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Mandelbrot set -- -- Returns the number of iterations corresponding to a given point of -- complex plane by applying the Mandelbrot set formula. -- --
--   kiter, koutrig  mandel   ktrig, kx, ky, kmaxIter
--   
-- -- csound doc: http://csound.com/docs/manual/mandel.html mandel :: Sig -> Sig -> Sig -> Sig -> (Sig, Sig) -- | Implements the Lorenz system of equations. -- -- 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. -- --
--   ax, ay, az  lorenz  ksv, krv, kbv, kh, ix, iy, iz, iskip [, iskipinit]
--   
-- -- csound doc: http://csound.com/docs/manual/lorenz.html lorenz :: Sig -> Sig -> Sig -> Sig -> D -> D -> D -> D -> (Sig, Sig, Sig) -- | Semi-physical model of a guiro sound. -- -- 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. -- --
--   ares  guiro  kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] [, ifreq1]
--   
-- -- csound doc: http://csound.com/docs/manual/guiro.html guiro :: Sig -> D -> Sig -- | Audio output is a tone related to the striking of a cow bell or -- similar. -- -- 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. -- --
--   ares  gogobel  kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivfn
--   
-- -- csound doc: http://csound.com/docs/manual/gogobel.html gogobel :: Sig -> Sig -> D -> D -> D -> Sig -> Sig -> Tab -> Sig -- | Variation of the dynamic stochastic approach to waveform synthesis -- conceived by Iannis Xenakis. -- -- gendyx (gendy eXtended) is an implementation of the Génération -- Dynamique Stochastique (GENDYN), a dynamic stochastic approach to -- waveform synthesis conceived by Iannis Xenakis, using curves instead -- of segments. -- --
--   ares  gendyx  kamp, kampdist, kdurdist, kadpar, kddpar, kminfreq, kmaxfreq, \
--                   kampscl, kdurscl, kcurveup, kcurvedown [, initcps] [, knum]
--   kres  gendyx  kamp, kampdist, kdurdist, kadpar, kddpar, kminfreq, kmaxfreq, \
--                   kampscl, kdurscl, kcurveup, kcurvedown [, initcps] [, knum]
--   
-- -- csound doc: http://csound.com/docs/manual/gendyx.html gendyx :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Dynamic stochastic approach to waveform synthesis using cubic -- interpolation. -- -- Implementation with cubic interpolation of the Génération Dynamique -- Stochastique (GENDYN), a dynamic stochastic approach to waveform -- synthesis conceived by Iannis Xenakis. -- --
--   ares  gendyc  kamp, kampdist, kdurdist, kadpar, kddpar, kminfreq, kmaxfreq, \
--                   kampscl, kdurscl [, initcps] [, knum]
--   kres  gendyc  kamp, kampdist, kdurdist, kadpar, kddpar, kminfreq, kmaxfreq, \
--                   kampscl, kdurscl [, initcps] [, knum]
--   
-- -- csound doc: http://csound.com/docs/manual/gendyc.html gendyc :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Dynamic stochastic approach to waveform synthesis conceived by Iannis -- Xenakis. -- -- Implementation of the Génération Dynamique Stochastique (GENDYN), a -- dynamic stochastic approach to waveform synthesis conceived by Iannis -- Xenakis. -- --
--   ares  gendy  kamp, kampdist, kdurdist, kadpar, kddpar, kminfreq, kmaxfreq, \
--                  kampscl, kdurscl [, initcps] [, knum]
--   kres  gendy  kamp, kampdist, kdurdist, kadpar, kddpar, kminfreq, kmaxfreq, \
--                  kampscl, kdurscl [, initcps] [, knum]
--   
-- -- csound doc: http://csound.com/docs/manual/gendy.html gendy :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Semi-physical model of a water drop. -- -- 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. -- --
--   ares  dripwater  kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] \
--             [, ifreq1] [, ifreq2]
--   
-- -- csound doc: http://csound.com/docs/manual/dripwater.html dripwater :: Sig -> D -> Sig -- | Semi-physical model of a crunch sound. -- -- 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. -- --
--   ares  crunch  iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- csound doc: http://csound.com/docs/manual/crunch.html crunch :: D -> D -> Sig -- | 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. -- --
--   aI3, aV2, aV1  chuap  kL, kR0, kC1, kG, kGa, kGb, kE, kC2, iI3, iV2, iV1, ktime_step
--   
-- -- csound doc: http://csound.com/docs/manual/chuap.html chuap :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> D -> Sig -> (Sig, Sig, Sig) -- | Semi-physical model of a cabasa sound. -- -- 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. -- --
--   ares  cabasa  iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- csound doc: http://csound.com/docs/manual/cabasa.html cabasa :: D -> D -> Sig -- | Creates a tone similar to a struck metal bar. -- -- 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. -- --
--   ares  barmodel  kbcL, kbcR, iK, ib, kscan, iT30, ipos, ivel, iwid
--   
-- -- csound doc: http://csound.com/docs/manual/barmodel.html barmodel :: Sig -> Sig -> D -> D -> Sig -> D -> D -> D -> D -> Sig -- | Semi-physical model of a bamboo sound. -- -- 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. -- --
--   ares  bamboo  kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] \
--             [, ifreq1] [, ifreq2]
--   
-- -- csound doc: http://csound.com/docs/manual/bamboo.html bamboo :: Sig -> D -> Sig -- | Calculates the classical ADSR envelope. -- -- Calculates the classical ADSR envelope -- --
--   ares  xadsr  iatt, idec, islev, irel [, idel]
--   kres  xadsr  iatt, idec, islev, irel [, idel]
--   
-- -- csound doc: http://csound.com/docs/manual/xadsr.html xadsr :: D -> D -> D -> D -> Sig -- | Calculates the classical ADSR envelope using the expsegr mechanism. -- --
--   ares  mxadsr  iatt, idec, islev, irel [, idel] [, ireltim]
--   kres  mxadsr  iatt, idec, islev, irel [, idel] [, ireltim]
--   
-- -- csound doc: http://csound.com/docs/manual/mxadsr.html mxadsr :: D -> D -> D -> D -> Sig -- | Calculates the classical ADSR envelope using the linsegr mechanism. -- --
--   ares  madsr  iatt, idec, islev, irel [, idel] [, ireltim]
--   kres  madsr  iatt, idec, islev, irel [, idel] [, ireltim]
--   
-- -- csound doc: http://csound.com/docs/manual/madsr.html madsr :: D -> D -> D -> D -> Sig -- | The linen opcode extended with a final release segment. -- -- 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. -- --
--   ares  linenr  xamp, irise, idec, iatdec
--   kres  linenr  kamp, irise, idec, iatdec
--   
-- -- csound doc: http://csound.com/docs/manual/linenr.html linenr :: Sig -> D -> D -> D -> Sig -- | Applies a straight line rise and decay pattern to an input amp signal. -- -- linen -- apply a straight line rise and decay pattern to an input amp -- signal. -- --
--   ares  linen  xamp, irise, idur, idec
--   kres  linen  kamp, irise, idur, idec
--   
-- -- csound doc: http://csound.com/docs/manual/linen.html linen :: Sig -> D -> D -> D -> Sig -- | The envlpx opcode with a final release segment. -- -- 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. -- --
--   ares  envlpxr  xamp, irise, idec, ifn, iatss, iatdec [, ixmod] [,irind]
--   kres  envlpxr  kamp, irise, idec, ifn, iatss, iatdec [, ixmod] [,irind]
--   
-- -- csound doc: http://csound.com/docs/manual/envlpxr.html envlpxr :: Sig -> D -> D -> Tab -> D -> D -> Sig -- | Applies an envelope consisting of 3 segments. -- -- envlpx -- apply an envelope consisting of 3 segments: -- --
--   ares  envlpx  xamp, irise, idur, idec, ifn, iatss, iatdec [, ixmod]
--   kres  envlpx  kamp, irise, idur, idec, ifn, iatss, iatdec [, ixmod]
--   
-- -- csound doc: http://csound.com/docs/manual/envlpx.html envlpx :: Sig -> D -> D -> D -> Tab -> D -> D -> Sig -- | Calculates the classical ADSR envelope using linear segments. -- --
--   ares  adsr  iatt, idec, islev, irel [, idel]
--   kres  adsr  iatt, idec, islev, irel [, idel]
--   
-- -- csound doc: http://csound.com/docs/manual/adsr.html adsr :: D -> D -> D -> D -> Sig -- | 2D linear interpolation -- -- 2D linear interpolation between 4 points at (0,0), (1,0), (0,1), (1,1) -- --
--   kout  xyscale  kx, ky, k00, k10, k01, k11
--   
-- -- csound doc: http://csound.com/docs/manual/xyscale.html xyscale :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Constructs a user-definable envelope with extended release segment. -- -- Constructs a user-definable envelope. It is the same as transeg, with -- an extended release segment. -- --
--   ares  transegr  ia, idur, itype, ib [, idur2] [, itype] [, ic] ...
--   kres  transegr  ia, idur, itype, ib [, idur2] [, itype] [, ic] ...
--   
-- -- csound doc: http://csound.com/docs/manual/transegr.html transegr :: [D] -> D -> D -> D -> Sig -- | Constructs a user-definable envelope in absolute time. -- --
--   ares  transegb  ia, itim, itype, ib [, itim2] [, itype] [, ic] ...
--   kres  transegb  ia, itim, itype, ib [, itim2] [, itype] [, ic] ...
--   
-- -- csound doc: http://csound.com/docs/manual/transegb.html transegb :: [D] -> Sig -- | Constructs a user-definable envelope. -- --
--   ares  transeg  ia, idur, itype, ib [, idur2] [, itype] [, ic] ...
--   kres  transeg  ia, idur, itype, ib [, idur2] [, itype] [, ic] ...
--   
-- -- csound doc: http://csound.com/docs/manual/transeg.html transeg :: [D] -> Sig -- | Arbitrary signal scaling. -- -- Scales incoming value to user-definable range. Similar to scale object -- found in popular dataflow languages. -- --
--   kscl  scale  kinput, kmax, kmin
--   
-- -- csound doc: http://csound.com/docs/manual/scale.html scale :: Sig -> Sig -> Sig -> Sig -- | Control signals based on held segments. -- -- 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. -- --
--   ksig  lpsholdp   kphase, kvalue0, ktime0  [, kvalue1] [, ktime1] \
--             [, kvalue2] [, ktime2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/lpsholdp.html lpsholdp :: Sig -> Sig -> [Sig] -> Sig -- | Generate control signal consisting of exponential or linear segments -- delimited by two or more specified points. -- -- Generate control signal consisting of controllable exponential -- segments or 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. -- --
--   ksig  looptseg  kfreq, ktrig, iphase, kvalue0, ktype0, ktime0, [, kvalue1] [,ktype1] [, ktime1] \
--             [, kvalue2] [,ktype2] [, ktime2] [...] [, kvalueN] [,ktypeN] [, ktimeN]
--   
-- -- csound doc: http://csound.com/docs/manual/looptseg.html looptseg :: Sig -> Sig -> [Sig] -> Sig -- | Control signals based on linear segments. -- -- 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. -- --
--   ksig  loopsegp   kphase, kvalue0, kdur0, kvalue1 \
--             [, kdur1, ... , kdurN-1, kvalueN]
--   
-- -- csound doc: http://csound.com/docs/manual/loopsegp.html loopsegp :: Sig -> [Sig] -> Sig -- | This opcode implements a formula for generating a normalised -- logarithmic curve in range 0 - 1. It is based on the Max / MSP work of -- Eric Singer (c) 1994. -- -- 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. -- --
--   kout  logcurve  kindex, ksteepness
--   
-- -- csound doc: http://csound.com/docs/manual/logcurve.html logcurve :: Sig -> Sig -> Sig -- | Trace a series of line segments between specified points including a -- release segment. -- --
--   ares  linsegr  ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   kres  linsegr  ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   
-- -- csound doc: http://csound.com/docs/manual/linsegr.html linsegr :: [D] -> D -> D -> Sig -- | Trace a series of line segments between specified absolute points. -- --
--   ares  linsegb  ia, itim1, ib [, itim2] [, ic] [...]
--   kres  linsegb  ia, itim1, ib [, itim2] [, ic] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/linsegb.html linsegb :: [D] -> Sig -- | Trace a series of line segments between specified points. -- --
--   ares  linseg  ia, idur1, ib [, idur2] [, ic] [...]
--   kres  linseg  ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/linseg.html linseg :: [D] -> Sig -- | Linear to linear interpolation -- -- Maps a linear range of values to another linear range of values. -- --
--   kout  linlin  kin, ksrclo, ksrchi, kdstlo, kdsthi
--   
-- -- csound doc: http://csound.com/docs/manual/linlin.html linlin :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | An implementation of a logarithmic gain curve which is similar to the -- gainslider~ object from Cycling 74 Max / MSP. -- -- 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. -- --
--   kout  gainslider  kindex
--   
-- -- csound doc: http://csound.com/docs/manual/gainslider.html gainslider :: Sig -> Sig -- | Trace a series of exponential segments between specified points -- including a release segment. -- --
--   ares  expsegr  ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   kres  expsegr  ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   
-- -- csound doc: http://csound.com/docs/manual/expsegr.html expsegr :: [D] -> D -> D -> Sig -- | An exponential segment generator operating at a-rate with absolute -- times. -- -- An exponential segment generator operating at a-rate. This unit is -- almost identical to expsegb, but more precise when defining segments -- with very short durations (i.e., in a percussive attack phase) at -- audio rate. -- --
--   ares  expsegba  ia, itim1, ib [, itim2] [, ic] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/expsegba.html expsegba :: D -> D -> D -> Sig -- | Trace a series of exponential segments between specified absolute -- points. -- --
--   ares  expsegb  ia, itim1, ib [, itim2] [, ic] [...]
--   kres  expsegb  ia, itim1, ib [, itim2] [, ic] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/expsegb.html expsegb :: [D] -> Sig -- | An exponential segment generator operating at a-rate. -- -- 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. -- --
--   ares  expsega  ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/expsega.html expsega :: [D] -> Sig -- | Trace a series of exponential segments between specified points. -- --
--   ares  expseg  ia, idur1, ib [, idur2] [, ic] [...]
--   kres  expseg  ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/expseg.html expseg :: [D] -> Sig -- | Trace an exponential curve between specified points. -- --
--   ares  expon  ia, idur, ib
--   kres  expon  ia, idur, ib
--   
-- -- csound doc: http://csound.com/docs/manual/expon.html expon :: D -> D -> D -> Sig -- | This opcode implements a formula for generating a normalised -- exponential curve in range 0 - 1. It is based on the Max / MSP work of -- Eric Singer (c) 1994. -- -- 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. -- --
--   kout  expcurve  kindex, ksteepness
--   
-- -- csound doc: http://csound.com/docs/manual/expcurve.html expcurve :: Sig -> Sig -> Sig -- | Trace a series of line segments between specified points with cosine -- interpolation, including a release segment. -- --
--   ares  cossegr  ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   kres  cossegr  ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   
-- -- csound doc: http://csound.com/docs/manual/cossegr.html cossegr :: [D] -> D -> D -> Sig -- | Trace a series of line segments between specified absolute points with -- cosine interpolation. -- --
--   ares  cossegb  ia, itim1, ib [, itim2] [, ic] [...]
--   kres  cossegb  ia, itim1, ib [, itim2] [, ic] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/cossegb.html cossegb :: [D] -> Sig -- | Trace a series of line segments between specified points with cosine -- interpolation. -- --
--   ares  cosseg  ia, idur1, ib [, idur2] [, ic] [...]
--   kres  cosseg  ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/cosseg.html cosseg :: [D] -> Sig -- | Break point function with linear interpolation -- -- Break-point function with linear interpolation. Useful when defining a -- table with GEN27 and scaling the x value would be overkill. -- --
--   ky  bpf  kx, kx1, ky1, kx2, ..., kxn, kyn
--   
-- -- csound doc: http://csound.com/docs/manual/bpf.html bpf :: Sig -> Sig -> Sig -> [Sig] -> Sig -- | Allows three-dimensional Hyper Vectorial Synthesis (HVS) controlled by -- externally-updated k-variables. -- -- hvs3 allows three-dimensional Hyper Vectorial Synthesis (HVS) -- controlled by externally-updated k-variables. -- --
--   hvs3  kx, ky, kz, inumParms, inumPointsX, inumPointsY, inumPointsZ, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--   
-- -- csound doc: http://csound.com/docs/manual/hvs3.html hvs3 :: Sig -> Sig -> Sig -> D -> D -> D -> D -> D -> D -> D -> SE () -- | Allows two-dimensional Hyper Vectorial Synthesis (HVS) controlled by -- externally-updated k-variables. -- -- hvs2 allows two-dimensional Hyper Vectorial Synthesis (HVS) controlled -- by externally-updated k-variables. -- --
--   hvs2  kx, ky, inumParms, inumPointsX, inumPointsY, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--   
-- -- csound doc: http://csound.com/docs/manual/hvs2.html hvs2 :: Sig -> Sig -> D -> D -> D -> D -> D -> D -> SE () -- | Allows one-dimensional Hyper Vectorial Synthesis (HVS) controlled by -- externally-updated k-variables. -- -- hvs1 allows one-dimensional Hyper Vectorial Synthesis (HVS) controlled -- by externally-updated k-variables. -- --
--   hvs1  kx, inumParms, inumPointsX, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]
--   
-- -- csound doc: http://csound.com/docs/manual/hvs1.html hvs1 :: Sig -> D -> D -> D -> D -> D -> SE () -- | Simple vocal simulation based on glottal pulses with formant -- characteristics. -- -- 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. -- --
--   ar  vosim  kamp, kFund, kForm, kDecay, kPulseCount, kPulseFactor, ifn [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/vosim.html vosim :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | Synchronous granular synthesis. -- -- 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. -- --
--   asig  syncloop  kamp, kfreq, kpitch, kgrsize, kprate, klstart, \
--             klend, ifun1, ifun2, iolaps[,istart, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/syncloop.html syncloop :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> D -> Sig -- | Outputs partikkel's grain scheduler clock pulse and phase to -- synchronize several instances of the partikkel opcode to the same -- clock source. -- -- 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. -- --
--   async [,aphase]  partikkelsync  iopcode_id
--   
-- -- csound doc: http://csound.com/docs/manual/partikkelsync.html partikkelsync :: Tuple a => D -> a -- | Set mask index for a specific mask parameter of a running partikkel -- instance. -- -- partikkelset is an opcode for setting the partikkel mask index for a -- specific parameter. Used together with partikkelget, it can be used to -- synchronize partikkel masking between several running instances of the -- partikkel opcode. It can also be used to set the internal mask index -- basaed on other processes, for example to create more complex masking -- patterns than is available with the regular grain masking system. -- --
--   partikkelset  kparameterindex, kmaskindex, iopcode_id
--   
-- -- csound doc: http://csound.com/docs/manual/partikkelset.html partikkelset :: Sig -> Sig -> D -> SE () -- | Get mask index for a specific mask parameter of a running partikkel -- instance. -- -- partikkelget is an opcode for outputting partikkel mask index for a -- specific parameter. Used together with partikkelset, it can be used to -- synchronize partikkel masking between several running instances of the -- partikkel opcode. It can also be used to control other processes based -- on the internal mask index, for example to create more complex masking -- patterns than is available with the regular grain masking system. -- --
--   kindex  partikkelget  kparameterindex, iopcode_id
--   
-- -- csound doc: http://csound.com/docs/manual/partikkelget.html partikkelget :: Sig -> D -> Sig -- | Generate granular synthesis textures with more user control. -- -- Generate granular synthesis textures. grain2 is simpler to use but -- grain3 offers more control. -- --
--   ares  grain3  kcps, kphs, kfmd, kpmd, kgdur, kdens, imaxovr, kfn, iwfn, \
--             kfrpow, kprpow [, iseed] [, imode]
--   
-- -- csound doc: http://csound.com/docs/manual/grain3.html grain3 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> Tab -> Tab -> Sig -> Sig -> Sig -- | Easy-to-use granular synthesis texture generator. -- -- Generate granular synthesis textures. grain2 is simpler to use, but -- grain3 offers more control. -- --
--   ares  grain2  kcps, kfmd, kgdur, iovrlp, kfn, iwfn [, irpow] \
--             [, iseed] [, imode]
--   
-- -- csound doc: http://csound.com/docs/manual/grain2.html grain2 :: Sig -> Sig -> Sig -> D -> Tab -> Tab -> Sig -- | Generates granular synthesis textures. -- --
--   ares  grain  xamp, xpitch, xdens, kampoff, kpitchoff, kgdur, igfn, \
--             iwfn, imgdur [, igrnd]
--   
-- -- csound doc: http://csound.com/docs/manual/grain.html grain :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> D -> Sig -- | Audio output is a succession of grains derived from data in a stored -- function table -- -- 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. -- --
--   ares  fog  xamp, xdens, xtrans, aspd, koct, kband, kris, kdur, kdec, \
--             iolaps, ifna, ifnb, itotdur [, iphs] [, itmode] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/fog.html fog :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> Tab -> Tab -> D -> Sig -- | Produces sinusoid bursts useful for formant and granular synthesis. -- -- 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. -- --
--   ares  fof  xamp, xfund, xform, koct, kband, kris, kdur, kdec, iolaps, \
--             ifna, ifnb, itotdur [, iphs] [, ifmode] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/fof.html fof :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> Tab -> Tab -> D -> Sig -- | Synchronous granular synthesis, using a soundfile as source. -- -- diskgrain implements synchronous granular synthesis. The source sound -- for the grains is obtained by reading a soundfile containing the -- samples of the source waveform. -- --
--   asig  diskgrain  Sfname, kamp, kfreq, kpitch, kgrsize, kprate, \
--             ifun, iolaps [,imaxgrsize , ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/diskgrain.html diskgrain :: Str -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> Sig -- | Basic frequency modulated oscillator with linear interpolation. -- --
--   ares  foscili  xamp, kcps, xcar, xmod, kndx, ifn [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/foscili.html foscili :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | A basic frequency modulated oscillator. -- --
--   ares  foscil  xamp, kcps, xcar, xmod, kndx, ifn [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/foscil.html foscil :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | Uses FM synthesis to create a Wurlitzer electric piano sound. -- -- 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. -- --
--   ares  fmwurlie  kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, \
--             ifn4, ivfn
--   
-- -- csound doc: http://csound.com/docs/manual/fmwurlie.html fmwurlie :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -- | FM Singing Voice Synthesis -- --
--   ares  fmvoice  kamp, kfreq, kvowel, ktilt, kvibamt, kvibrate[, ifn1, \
--             ifn2, ifn3, ifn4, ivibfn]
--   
-- -- csound doc: http://csound.com/docs/manual/fmvoice.html fmvoice :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Uses FM synthesis to create a Fender Rhodes electric piano sound. -- -- 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. -- --
--   ares  fmrhode  kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, \
--             ifn3, ifn4, ivfn
--   
-- -- csound doc: http://csound.com/docs/manual/fmrhode.html fmrhode :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -- | Uses FM synthesis to create a percussive flute sound. -- -- 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. -- --
--   ares  fmpercfl  kamp, kfreq, kc1, kc2, kvdepth, kvrate[, ifn1, ifn2, \
--             ifn3, ifn4, ivfn]
--   
-- -- csound doc: http://csound.com/docs/manual/fmpercfl.html fmpercfl :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Uses FM synthesis to create a “Heavy Metal” sound. -- -- 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. -- --
--   ares  fmmetal  kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, \
--             ifn4, ivfn
--   
-- -- csound doc: http://csound.com/docs/manual/fmmetal.html fmmetal :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -- | Uses FM synthesis to create a tublar bell sound. -- -- 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. -- --
--   ares  fmbell  kamp, kfreq, kc1, kc2, kvdepth, kvrate[, ifn1, ifn2, ifn3, \
--             ifn4, ivfn, isus]
--   
-- -- csound doc: http://csound.com/docs/manual/fmbell.html fmbell :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Uses FM synthesis to create a Hammond B3 organ sound. -- -- 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. -- --
--   ares  fmb3  kamp, kfreq, kc1, kc2, kvdepth, kvrate[, ifn1, ifn2, ifn3, \
--             ifn4, ivfn]
--   
-- -- csound doc: http://csound.com/docs/manual/fmb3.html fmb3 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Two mutually frequency and/or phase modulated oscillators. -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- --
--   a1, a2  crossfmpmi  xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- csound doc: http://csound.com/docs/manual/crossfm.html crossfmpmi :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) -- | Two mutually frequency and/or phase modulated oscillators. -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- --
--   a1, a2  crossfmpm  xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- csound doc: http://csound.com/docs/manual/crossfm.html crossfmpm :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) -- | Two mutually frequency and/or phase modulated oscillators. -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- --
--   a1, a2  crosspmi  xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- csound doc: http://csound.com/docs/manual/crossfm.html crosspmi :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) -- | Two mutually frequency and/or phase modulated oscillators. -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- --
--   a1, a2  crosspm  xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- csound doc: http://csound.com/docs/manual/crossfm.html crosspm :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) -- | Two mutually frequency and/or phase modulated oscillators. -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- --
--   a1, a2  crossfmi  xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- csound doc: http://csound.com/docs/manual/crossfm.html crossfmi :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) -- | Two mutually frequency and/or phase modulated oscillators. -- -- Two oscillators, mutually frequency and/or phase modulated by each -- other. -- --
--   a1, a2  crossfm  xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
--   
-- -- csound doc: http://csound.com/docs/manual/crossfm.html crossfm :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) -- | Calculates tables for use by vco2 opcode. -- -- 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. -- --
--   ifn  vco2init  iwave [, ibasfn] [, ipmul] [, iminsiz] [, imaxsiz] [, isrcft]
--   
-- -- csound doc: http://csound.com/docs/manual/vco2init.html vco2init :: D -> SE Tab -- | Returns a table number at i-time for a given oscillator frequency and -- wavform. -- -- 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). -- --
--   ifn  vco2ift  icps, iwave [, inyx]
--   
-- -- csound doc: http://csound.com/docs/manual/vco2ift.html vco2ift :: D -> D -> Tab -- | Returns a table number at k-time for a given oscillator frequency and -- wavform. -- -- 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). -- --
--   kfn  vco2ft  kcps, iwave [, inyx]
--   
-- -- csound doc: http://csound.com/docs/manual/vco2ft.html vco2ft :: Sig -> D -> Tab -- | Implementation of a band-limited oscillator using pre-calculated -- tables. -- -- 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. -- --
--   ares  vco2  kamp, kcps [, imode] [, kpw] [, kphs] [, inyx]
--   
-- -- csound doc: http://csound.com/docs/manual/vco2.html vco2 :: Sig -> Sig -> Sig -- | Implementation of a band limited, analog modeled oscillator. -- -- 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. -- --
--   ares  vco  xamp, xcps, iwave, kpw [, ifn] [, imaxd] [, ileak] [, inyx] \
--             [, iphs] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/vco.html vco :: Sig -> Sig -> D -> Sig -> Sig -- | A mostly bandlimited shape-shifting square-pulse-saw-sinewave -- oscillator with hardsync. -- -- This oscillator generates a variable shape waveform that can morph -- freely between classical shapes sine, square, pulse and saw. The shape -- is controlled by two interacting values: clip (squareness) and "skew" -- (symmetry). All shapes use a minimum number of samples per transition -- (ie, the sharp end of a saw or a pulse uses minimum N samples), this -- makes output bandlimited. At higher frequency, the minimum sweep rate -- takes over, so over a certain pitch all shapes "degrade" to sinewave. -- The minimum sweep rate is i-time configurable. Hardsync (a very quick -- sweep to phase=0) is supported, and a sync signal is output once per -- cycle. -- --
--   aout [, asyncout]  squinewave  acps, aClip, aSkew [, asyncin] [, iMinSweep] [, iphase]
--   
-- -- csound doc: http://csound.com/docs/manual/squinewave.html squinewave :: Tuple a => Sig -> Sig -> Sig -> a -- | Generates a set of impulses. -- -- 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. -- --
--   ares  mpulse  kamp, kintvl [, ioffset]
--   
-- -- csound doc: http://csound.com/docs/manual/mpulse.html mpulse :: Sig -> Sig -> Sig -- | Output is a set of harmonically related cosine partials. -- --
--   ares  gbuzz  xamp, xcps, knh, klh, kmul, ifn [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/gbuzz.html gbuzz :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | Output is a set of harmonically related sine partials. -- --
--   ares  buzz  xamp, xcps, knh, ifn [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/buzz.html buzz :: Sig -> Sig -> Sig -> Tab -> Sig -- | Generates a natural-sounding user-controllable vibrato. -- --
--   kout  vibrato  kAverageAmp, kAverageFreq, kRandAmountAmp, kRandAmountFreq, kAmpMinRate, kAmpMaxRate, kcpsMinRate, kcpsMaxRate, ifn [, iphs
--   
-- -- csound doc: http://csound.com/docs/manual/vibrato.html vibrato :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | Easier-to-use user-controllable vibrato. -- --
--   kout  vibr  kAverageAmp, kAverageFreq, ifn
--   
-- -- csound doc: http://csound.com/docs/manual/vibr.html vibr :: Sig -> Sig -> Tab -> Sig -- | High precision oscillator with cubic interpolation. -- --
--   ares  poscil3  aamp, acps [, ifn, iphs]
--   ares  poscil3  aamp, kcps [, ifn, iphs]
--   ares  poscil3  kamp, acps [, ifn, iphs]
--   ares  poscil3  kamp, kcps [, ifn, iphs]
--   ires  poscil3  kamp, kcps [, ifn, iphs]
--   kres  poscil3  kamp, kcps [, ifn, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/poscil3.html poscil3 :: Sig -> Sig -> Tab -> Sig -- | High precision oscillator. -- --
--   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]
--   
-- -- csound doc: http://csound.com/docs/manual/poscil.html poscil :: Sig -> Sig -> Tab -> Sig -- | A simple, fast sine oscillator -- -- 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. -- --
--   ares  oscils  iamp, icps, iphs [, iflg]
--   
-- -- csound doc: http://csound.com/docs/manual/oscils.html oscils :: D -> D -> D -> Sig -- | Accesses table values at a user-defined frequency. -- -- Accesses table values at a user-defined frequency. This opcode can -- also be written as oscilx. -- --
--   ares  osciln  kamp, ifrq, ifn, itimes
--   
-- -- csound doc: http://csound.com/docs/manual/osciln.html osciln :: Sig -> D -> Tab -> D -> Sig -- | A linearly interpolated oscillator with sync status that allows -- changing the table number at k-rate. -- -- 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. -- --
--   ares  oscilikts  xamp, xcps, kfn, async, kphs [, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/oscilikts.html oscilikts :: Sig -> Sig -> Tab -> Sig -> Sig -> Sig -- | A linearly interpolated oscillator that allows allows phase -- modulation. -- -- 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. -- --
--   ares  osciliktp  kcps, kfn, kphs [, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/osciliktp.html osciliktp :: Sig -> Tab -> Sig -> Sig -- | A linearly interpolated oscillator that allows changing the table -- number at k-rate. -- -- 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. -- --
--   ares  oscilikt  xamp, xcps, kfn [, iphs] [, istor]
--   kres  oscilikt  kamp, kcps, kfn [, iphs] [, istor]
--   
-- -- csound doc: http://csound.com/docs/manual/oscilikt.html oscilikt :: Sig -> Sig -> Tab -> Sig -- | A simple oscillator with linear interpolation. -- -- 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. -- --
--   ares  oscili  xamp, xcps[, ifn, iphs]
--   kres  oscili  kamp, kcps[, ifn, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/oscili.html oscili :: Sig -> Sig -> Tab -> Sig -- | A simple oscillator with cubic interpolation. -- -- 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. -- --
--   ares  oscil3  xamp, xcps [, ifn, iphs]
--   kres  oscil3  kamp, kcps [, ifn, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/oscil3.html oscil3 :: Sig -> Sig -> Tab -> Sig -- | A simple oscillator. -- -- oscil reads table ifn sequentially and repeatedly at a frequency xcps. -- The amplitude is scaled by xamp. -- --
--   ares  oscil  xamp, xcps [, ifn, iphs]
--   kres  oscil  kamp, kcps [, ifn, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/oscil.html oscil :: Sig -> Sig -> Tab -> Sig -- | Mixes the output of any number of oscillators. -- -- 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. -- --
--   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]
--   
-- -- csound doc: http://csound.com/docs/manual/oscbnk.html oscbnk :: Sig -> Sig -> Sig -> Sig -> D -> D -> Sig -> Sig -> Sig -> Sig -> D -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> Tab -> Sig -- | An oscillator which takes tonality and brightness as arguments. -- -- An oscillator which takes tonality and brightness as arguments, -- relative to a base frequency. -- --
--   ares  hsboscil  kamp, ktone, kbrite, ibasfreq, iwfn, ioctfn \
--                      [, ioctcnt] [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/hsboscil.html hsboscil :: Sig -> Sig -> Sig -> D -> Tab -> Tab -> Sig -- | Performs additive synthesis with an arbitrary number of partials -not -- necessarily harmonic- with interpolation. -- -- Performs additive synthesis with an arbitrary number of partials, not -- necessarily harmonic. (see adsynt for detailed manual) -- --
--   ar  adsynt2  kamp, kcps, iwfn, ifreqfn, iampfn, icnt [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/adsynt2.html adsynt2 :: Sig -> Sig -> Tab -> Tab -> Tab -> D -> Sig -- | Performs additive synthesis with an arbitrary number of partials, not -- necessarily harmonic. -- --
--   ares  adsynt  kamp, kcps, iwfn, ifreqfn, iampfn, icnt [, iphs]
--   
-- -- csound doc: http://csound.com/docs/manual/adsynt.html adsynt :: Sig -> Sig -> Tab -> Tab -> Tab -> D -> Sig -- | Output is an additive set of individually controlled sinusoids, using -- an oscillator bank. -- --
--   ares  adsyn  kamod, kfmod, ksmod, ifilcod
--   
-- -- csound doc: http://csound.com/docs/manual/adsyn.html adsyn :: Sig -> Sig -> Sig -> Str -> Sig -- | Sends an arate array signal out from an instrument to a named port. -- --
--   outletv Sname, array
--   
-- -- csound doc: http://csound.com/docs/manual/outletv.html outletv :: Str -> Sig -> SE () -- | Sends a krate signal out from an instrument to a named port. -- --
--   outletkid Sname, SinstanceID, ksignal
--   
-- -- csound doc: http://csound.com/docs/manual/outletkid.html outletkid :: Str -> Str -> Sig -> SE () -- | Sends a krate signal out from an instrument to a named port. -- --
--   outletk Sname, ksignal
--   
-- -- csound doc: http://csound.com/docs/manual/outletk.html outletk :: Str -> Sig -> SE () -- | Sends a frate signal (fsig) out from an instrument to a named port. -- --
--   outletf Sname, fsignal
--   
-- -- csound doc: http://csound.com/docs/manual/outletf.html outletf :: Str -> Spec -> SE () -- | Sends an arate signal out from an instrument to a named port. -- --
--   outleta Sname, asignal
--   
-- -- csound doc: http://csound.com/docs/manual/outleta.html outleta :: Str -> Sig -> SE () -- | Receives an arate array signal into an instrument through a named -- port. -- --
--   array  inletv Sname
--   
-- -- csound doc: http://csound.com/docs/manual/inletv.html inletv :: Str -> Sig -- | Receives a krate signal into an instrument from a named port. -- --
--   ksignal  inletkid Sname, SinstanceID
--   
-- -- csound doc: http://csound.com/docs/manual/inletkid.html inletkid :: Str -> Str -> Sig -- | Receives a krate signal into an instrument from a named port. -- --
--   ksignal  inletk Sname
--   
-- -- csound doc: http://csound.com/docs/manual/inletk.html inletk :: Str -> Sig -- | Receives an frate signal (fsig) into an instrument from a named port. -- --
--   fsignal  inletf Sname
--   
-- -- csound doc: http://csound.com/docs/manual/inletf.html inletf :: Str -> Spec -- | Receives an arate signal into an instrument through a named port. -- --
--   asignal  inleta Sname
--   
-- -- csound doc: http://csound.com/docs/manual/inleta.html inleta :: Str -> Sig -- | Generate a function table from within an instrument definition, -- without duplication of data. -- -- Enables the creation of function tables entirely inside instrument -- definitions, without any duplication of data. -- --
--   ifno  ftgenonce  ip1, ip2dummy, isize, igen, iarga, iargb, ...
--   
-- -- csound doc: http://csound.com/docs/manual/ftgenonce.html ftgenonce :: D -> D -> D -> D -> D -> [D] -> SE Tab -- | Write data to a serial port. -- -- Write data to a serial port for arduino. -- --
--   serialWrite_i  iPort, iByte
--   serialWrite_i  iPort, SBytes
--   
-- -- csound doc: http://csound.com/docs/manual/serialWrite_i.html serialWrite_i :: D -> D -> SE () -- | Write data to a serial port. -- -- Write data to a serial port for arduino. -- --
--   serialWrite  iPort, iByte
--   serialWrite  iPort, kByte
--   serialWrite  iPort, SBytes
--   
-- -- csound doc: http://csound.com/docs/manual/serialWrite.html serialWrite :: D -> D -> SE () -- | Read data from a serial port. -- -- Read data from a serial port for arduino. -- --
--   kByte  serialRead  iPort
--   
-- -- csound doc: http://csound.com/docs/manual/serialRead.html serialRead :: D -> Sig -- | Print data from a serial port. -- -- Print to the screen any bytes (up to 32k) in the input buffer. Note -- that these bytes will be cleared from the buffer. use this opcode -- mainly for debugging messages. If you want to mix debugging and other -- communication messages over the same port, you will need to manually -- parse the data with the serialRead opcode. -- --
--   serialPrint  iPort
--   
-- -- csound doc: http://csound.com/docs/manual/serialPrint.html serialPrint :: D -> SE () -- | Flush data from a serial port. -- -- Flush to the screen any bytes (up to 32k) in the input buffer. Note -- that these bytes will be cleared from the buffer. use this opcode -- mainly for debugging messages. If you want to mix debugging and other -- communication messages over the same port, you will need to manually -- parse the data with the serialRead opcode. -- --
--   serialFlush  iPort
--   
-- -- csound doc: http://csound.com/docs/manual/serialFlush.html serialFlush :: D -> SE () -- | Close a serial port. -- -- Close a serial port for arduino. -- --
--   serialEnd  iPort
--   
-- -- csound doc: http://csound.com/docs/manual/serialEnd.html serialEnd :: D -> SE () -- | Open a serial port. -- -- Open a serial port for arduino. -- --
--   iPort  serialBegin  SPortName [, ibaudRate]
--   
-- -- csound doc: http://csound.com/docs/manual/serialBegin.html serialBegin :: Str -> SE D -- | An opcode which can be used to implement a remote midi orchestra. This -- opcode will send midi events from a source machine to one destination. -- -- With the midremot and midglobal opcodes you are able to perform -- instruments on remote machines and control them from a master machine. -- The remote opcodes are implemented using the master/client model. All -- the machines involved contain the same orchestra but only the master -- machine contains the information of the midi score. During the -- performance the master machine sends the midi events to the clients. -- The midremot opcode will send events from a source machine to one -- destination if you want to send events to many destinations -- (broadcast) use the midglobal opcode instead. These two opcodes can be -- used in combination. -- --
--   midremot  idestination, isource, instrnum [,instrnum...] 
--   
-- -- csound doc: http://csound.com/docs/manual/midremot.html midremot :: D -> D -> D -> SE () -- | An opcode which can be used to implement a remote midi orchestra. This -- opcode will broadcast the midi events to all the machines involved in -- the remote concert. -- -- With the midremot and midglobal opcodes you are able to perform -- instruments on remote machines and control them from a master machine. -- The remote opcodes are implemented using the master/client model. All -- the machines involved contain the same orchestra but only the master -- machine contains the information of the midi score. During the -- performance the master machine sends the midi events to the clients. -- The midglobal opcode sends the events to all the machines involved in -- the remote concert. These machines are determined by the midremot -- definitions made above the midglobal command. To send events to only -- one machine use midremot. -- --
--   midglobal  isource, instrnum [,instrnum...] 
--   
-- -- csound doc: http://csound.com/docs/manual/midglobal.html midglobal :: D -> D -> SE () -- | An opcode which can be used to implement a remote orchestra. This -- opcode will send note events from a source machine to one destination. -- -- With the insremot and insglobal opcodes you are able to perform -- instruments on remote machines and control them from a master machine. -- The remote opcodes are implemented using the master/client model. All -- the machines involved contain the same orchestra but only the master -- machine contains the information of the score. During the performance -- the master machine sends the note events to the clients. The insremot -- opcode will send events from a source machine to one destination if -- you want to send events to many destinations (broadcast) use the -- insglobal opcode instead. These two opcodes can be used in -- combination. -- --
--   insremot  idestination, isource, instrnum [,instrnum...] 
--   
-- -- csound doc: http://csound.com/docs/manual/insremot.html insremot :: D -> D -> D -> SE () -- | An opcode which can be used to implement a remote orchestra. This -- opcode will send note events from a source machine to many -- destinations. -- -- With the insremot and insglobal opcodes you are able to perform -- instruments on remote machines and control them from a master machine. -- The remote opcodes are implemented using the master/client model. All -- the machines involved contain the same orchestra but only the master -- machine contains the information of the score. During the performance -- the master machine sends the note events to the clients. The insglobal -- opcode sends the events to all the machines involved in the remote -- concert. These machines are determined by the insremot definitions -- made above the insglobal command. To send events to only one machine -- use insremot. -- --
--   insglobal  isource, instrnum [,instrnum...] 
--   
-- -- csound doc: http://csound.com/docs/manual/insglobal.html insglobal :: D -> D -> SE () -- | Send system real-time messages to the MIDI OUT port. -- --
--   mrtmsg  imsgtype
--   
-- -- csound doc: http://csound.com/docs/manual/mrtmsg.html mrtmsg :: D -> SE () -- | Sends a MIDI CLOCK message. -- --
--   mclock  ifreq
--   
-- -- csound doc: http://csound.com/docs/manual/mclock.html mclock :: D -> SE () -- | Gets a MIDI program change value. -- -- 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  xprogram
--   
-- -- csound doc: -- http://csound.com/docs/manual/midiprogramchange.html midiprogramchange :: Sig -> SE () -- | Gets a MIDI polyphonic aftertouch value. -- -- 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  xpolyaftertouch, xcontrollervalue [, ilow] [, ihigh]
--   
-- -- csound doc: -- http://csound.com/docs/manual/midipolyaftertouch.html midipolyaftertouch :: Sig -> Sig -> SE () -- | Gets a MIDI pitchbend value. -- -- 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  xpitchbend [, ilow] [, ihigh]
--   
-- -- csound doc: http://csound.com/docs/manual/midipitchbend.html midipitchbend :: Sig -> SE () -- | Gets a MIDI note number as a pitch-class value. -- -- 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  xpch, xvelocity
--   
-- -- csound doc: http://csound.com/docs/manual/midinoteonpch.html midinoteonpch :: Sig -> Sig -> SE () -- | Gets a MIDI note number value as octave-point-decimal value. -- -- 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  xoct, xvelocity
--   
-- -- csound doc: http://csound.com/docs/manual/midinoteonoct.html midinoteonoct :: Sig -> Sig -> SE () -- | Gets a MIDI note number value. -- -- 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  xkey, xvelocity
--   
-- -- csound doc: http://csound.com/docs/manual/midinoteonkey.html midinoteonkey :: Sig -> Sig -> SE () -- | Gets a MIDI note number as a cycles-per-second frequency. -- -- 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  xcps, xvelocity
--   
-- -- csound doc: http://csound.com/docs/manual/midinoteoncps.html midinoteoncps :: Sig -> Sig -> SE () -- | Gets a MIDI noteoff value. -- -- 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  xkey, xvelocity
--   
-- -- csound doc: http://csound.com/docs/manual/midinoteoff.html midinoteoff :: Sig -> Sig -> SE () -- | Changes values, depending on MIDI activation. -- -- 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  xdefault, xvalue
--   
-- -- csound doc: http://csound.com/docs/manual/mididefault.html mididefault :: Sig -> Sig -> SE () -- | Gets a MIDI control change value. -- -- 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  xcontroller, xcontrollervalue [, ilow] [, ihigh]
--   
-- -- csound doc: -- http://csound.com/docs/manual/midicontrolchange.html midicontrolchange :: Sig -> Sig -> SE () -- | Returns the MIDI channel number from which the note was activated. -- -- midichn returns the MIDI channel number (1 - 16) from which the note -- was activated. In the case of score notes, it returns 0. -- --
--   ichn  midichn 
--   
-- -- csound doc: http://csound.com/docs/manual/midichn.html midichn :: D -- | Gets a MIDI channel's aftertouch value. -- -- 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  xchannelaftertouch [, ilow] [, ihigh]
--   
-- -- csound doc: -- http://csound.com/docs/manual/midichannelaftertouch.html midichannelaftertouch :: Sig -> SE () -- | Sends a noteon and a noteoff MIDI message both with the same channel, -- number and velocity. -- --
--   noteondur2  ichn, inum, ivel, idur
--   
-- -- csound doc: http://csound.com/docs/manual/noteondur2.html noteondur2 :: D -> D -> D -> D -> SE () -- | Sends a noteon and a noteoff MIDI message both with the same channel, -- number and velocity. -- --
--   noteondur  ichn, inum, ivel, idur
--   
-- -- csound doc: http://csound.com/docs/manual/noteondur.html noteondur :: D -> D -> D -> D -> SE () -- | Send a noteon message to the MIDI OUT port. -- --
--   noteon  ichn, inum, ivel
--   
-- -- csound doc: http://csound.com/docs/manual/noteon.html noteon :: D -> D -> D -> SE () -- | Send a noteoff message to the MIDI OUT port. -- --
--   noteoff  ichn, inum, ivel
--   
-- -- csound doc: http://csound.com/docs/manual/noteoff.html noteoff :: D -> D -> D -> SE () -- | Sends a stream of the MIDI notes. -- --
--   moscil  kchn, knum, kvel, kdur, kpause
--   
-- -- csound doc: http://csound.com/docs/manual/moscil.html moscil :: Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Sends noteon and noteoff messages to the MIDI OUT port. -- -- Sends noteon and noteoff messages to the MIDI OUT port when triggered -- by a value different than zero. -- --
--   midion2  kchn, knum, kvel, ktrig
--   
-- -- csound doc: http://csound.com/docs/manual/midion2.html midion2 :: Sig -> Sig -> Sig -> Sig -> SE () -- | Generates MIDI note messages at k-rate. -- --
--   midion  kchn, knum, kvel
--   
-- -- csound doc: http://csound.com/docs/manual/midion.html midion :: Sig -> Sig -> Sig -> SE () -- | Extend the duration of real-time generated events. -- -- 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  iextradur
--   
-- -- csound doc: http://csound.com/docs/manual/xtratim.html xtratim :: D -> SE () -- | Indicates whether a note is in its “release” stage. -- -- 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. -- --
--   kflag  release 
--   
-- -- csound doc: http://csound.com/docs/manual/release.html release :: Sig -- | Sends a generic MIDI message to the MIDI OUT port. -- --
--   midiout_i  istatus, ichan, idata1, idata2
--   
-- -- csound doc: http://csound.com/docs/manual/midiout_i.html midiout_i :: D -> D -> D -> D -> SE () -- | Sends a generic MIDI message to the MIDI OUT port. -- --
--   midiout  kstatus, kchan, kdata1, kdata2
--   
-- -- csound doc: http://csound.com/docs/manual/midiout.html midiout :: Sig -> Sig -> Sig -> Sig -> SE () -- | Returns a generic MIDI message received by the MIDI IN port. -- -- Returns a generic MIDI message received by the MIDI IN port -- --
--   kstatus, kchan, kdata1, kdata2  midiin 
--   
-- -- csound doc: http://csound.com/docs/manual/midiin.html midiin :: (Sig, Sig, Sig, Sig) -- | Get the note number of the current MIDI event and modify it by the -- current pitch-bend value, express it in pitch-class units. -- --
--   ipch  pchmidib  [irange]
--   kpch  pchmidib  [irange]
--   
-- -- csound doc: http://csound.com/docs/manual/pchmidib.html pchmidib :: Msg -> Sig -- | Get the note number of the current MIDI event, expressed in -- pitch-class units. -- --
--   ipch  pchmidi 
--   
-- -- csound doc: http://csound.com/docs/manual/pchmidi.html pchmidi :: Msg -> D -- | Get the note number of the current MIDI event and modify it by the -- current pitch-bend value, express it in octave-point-decimal. -- --
--   ioct  octmidib  [irange]
--   koct  octmidib  [irange]
--   
-- -- csound doc: http://csound.com/docs/manual/octmidib.html octmidib :: Msg -> Sig -- | Get the note number, in octave-point-decimal units, of the current -- MIDI event. -- --
--   ioct  octmidi 
--   
-- -- csound doc: http://csound.com/docs/manual/octmidi.html octmidi :: Msg -> D -- | Get a MIDI note number (allows customized micro-tuning scales). -- -- This unit is similar to cpsmidi, but allows fully customized -- micro-tuning scales. -- --
--   icps  cpstmid  ifn
--   
-- -- csound doc: http://csound.com/docs/manual/cpstmid.html cpstmid :: Msg -> Tab -> D -- | Get the note number of the current MIDI event and modify it by the -- current pitch-bend value, express it in cycles-per-second. -- --
--   icps  cpsmidib  [irange]
--   kcps  cpsmidib  [irange]
--   
-- -- csound doc: http://csound.com/docs/manual/cpsmidib.html cpsmidib :: Msg -> Sig -- | Get the note number of the current MIDI event, expressed in -- cycles-per-second. -- --
--   icps  cpsmidi 
--   
-- -- csound doc: http://csound.com/docs/manual/cpsmidi.html cpsmidi :: Msg -> D -- | Musically map MIDI velocity to peak amplitude within a specified -- dynamic range in decibels. -- --
--   iamplitude  ampmidid  ivelocity, idecibels
--   kamplitude  ampmidid  kvelocity, idecibels
--   
-- -- csound doc: http://csound.com/docs/manual/ampmidid.html ampmidid :: D -> D -> Sig -- | Get the velocity of the current MIDI event. -- --
--   iamp  ampmidi  iscal [, ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/ampmidi.html ampmidi :: Msg -> D -> D -- | Sends MIDI program change messages at k-rate. -- --
--   outkpc  kchn, kprog, kmin, kmax
--   
-- -- csound doc: http://csound.com/docs/manual/outkpc.html outkpc :: Sig -> Sig -> Sig -> Sig -> SE () -- | Sends MIDI pitch-bend messages at k-rate. -- --
--   outkpb  kchn, kvalue, kmin, kmax
--   
-- -- csound doc: http://csound.com/docs/manual/outkpb.html outkpb :: Sig -> Sig -> Sig -> Sig -> SE () -- | Sends polyphonic MIDI aftertouch messages at k-rate. -- --
--   outkpat  kchn, knotenum, kvalue, kmin, kmax
--   
-- -- csound doc: http://csound.com/docs/manual/outkpat.html outkpat :: Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Sends 14-bit MIDI controller output at k-rate. -- --
--   outkc14  kchn, kmsb, klsb, kvalue, kmin, kmax
--   
-- -- csound doc: http://csound.com/docs/manual/outkc14.html outkc14 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Sends MIDI controller messages at k-rate. -- --
--   outkc  kchn, knum, kvalue, kmin, kmax
--   
-- -- csound doc: http://csound.com/docs/manual/outkc.html outkc :: Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Sends MIDI aftertouch messages at k-rate. -- --
--   outkat  kchn, kvalue, kmin, kmax
--   
-- -- csound doc: http://csound.com/docs/manual/outkat.html outkat :: Sig -> Sig -> Sig -> Sig -> SE () -- | Sends MIDI program change messages at i-rate -- --
--   outipc  ichn, iprog, imin, imax
--   
-- -- csound doc: http://csound.com/docs/manual/outipc.html outipc :: D -> D -> D -> D -> SE () -- | Sends MIDI pitch-bend messages at i-rate. -- --
--   outipb  ichn, ivalue, imin, imax
--   
-- -- csound doc: http://csound.com/docs/manual/outipb.html outipb :: D -> D -> D -> D -> SE () -- | Sends polyphonic MIDI aftertouch messages at i-rate. -- --
--   outipat  ichn, inotenum, ivalue, imin, imax
--   
-- -- csound doc: http://csound.com/docs/manual/outipat.html outipat :: D -> D -> D -> D -> D -> SE () -- | Sends 14-bit MIDI controller output at i-rate. -- --
--   outic14  ichn, imsb, ilsb, ivalue, imin, imax
--   
-- -- csound doc: http://csound.com/docs/manual/outic14.html outic14 :: D -> D -> D -> D -> D -> D -> SE () -- | Sends MIDI controller output at i-rate. -- --
--   outic  ichn, inum, ivalue, imin, imax
--   
-- -- csound doc: http://csound.com/docs/manual/outic.html outic :: D -> D -> D -> D -> D -> SE () -- | Sends MIDI aftertouch messages at i-rate. -- --
--   outiat  ichn, ivalue, imin, imax
--   
-- -- csound doc: http://csound.com/docs/manual/outiat.html outiat :: D -> D -> D -> D -> SE () -- | Sends a Non-Registered Parameter Number to the MIDI OUT port. -- -- Sends a NPRN (Non-Registered Parameter Number) message to the MIDI OUT -- port each time one of the input arguments changes. -- --
--   nrpn  kchan, kparmnum, kparmvalue
--   
-- -- csound doc: http://csound.com/docs/manual/nrpn.html nrpn :: Sig -> Sig -> Sig -> SE () -- | Get the velocity from a MIDI event. -- --
--   ival  veloc  [ilow] [, ihigh]
--   
-- -- csound doc: http://csound.com/docs/manual/veloc.html veloc :: Msg -> D -- | Returns the polyphonic after-touch pressure of the selected note -- number. -- -- polyaft returns the polyphonic pressure of the selected note number, -- optionally mapped to an user-specified range. -- --
--   ires  polyaft  inote [, ilow] [, ihigh]
--   kres  polyaft  inote [, ilow] [, ihigh]
--   
-- -- csound doc: http://csound.com/docs/manual/polyaft.html polyaft :: D -> Sig -- | Assigns an instrument number to a specified MIDI program. -- -- Assigns an instrument number to a specified (or all) MIDI program(s). -- --
--   pgmassign  ipgm, inst[, ichn]
--   pgmassign  ipgm, "insname"[, ichn]
--   
-- -- csound doc: http://csound.com/docs/manual/pgmassign.html pgmassign :: D -> D -> SE () -- | Get the current pitch-bend value for this channel. -- --
--   ibend  pchbend  [imin] [, imax]
--   kbend  pchbend  [imin] [, imax]
--   
-- -- csound doc: http://csound.com/docs/manual/pchbend.html pchbend :: Msg -> Sig -- | Get a note number from a MIDI event. -- --
--   ival  notnum 
--   
-- -- csound doc: http://csound.com/docs/manual/notnum.html notnum :: Msg -> D -- | Get the current value (0-127) of a specified MIDI controller. -- --
--   ival  midictrl  inum [, imin] [, imax]
--   kval  midictrl  inum [, imin] [, imax]
--   
-- -- csound doc: http://csound.com/docs/manual/midictrl.html midictrl :: D -> Sig -- | Allows a floating-point 7-bit MIDI signal scaled with a minimum and a -- maximum range. -- --
--   idest  midic7  ictlno, imin, imax [, ifn]
--   kdest  midic7  ictlno, kmin, kmax [, ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/midic7.html midic7 :: D -> D -> D -> Sig -- | Allows a floating-point 21-bit MIDI signal scaled with a minimum and a -- maximum range. -- --
--   idest  midic21  ictlno1, ictlno2, ictlno3, imin, imax [, ifn]
--   kdest  midic21  ictlno1, ictlno2, ictlno3, kmin, kmax [, ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/midic21.html midic21 :: D -> D -> D -> D -> D -> Sig -- | Allows a floating-point 14-bit MIDI signal scaled with a minimum and a -- maximum range. -- --
--   idest  midic14  ictlno1, ictlno2, imin, imax [, ifn]
--   kdest  midic14  ictlno1, ictlno2, kmin, kmax [, ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/midic14.html midic14 :: D -> D -> D -> D -> Sig -- | Assigns a MIDI channel number to a Csound instrument. -- --
--   massign  ichnl, insnum[, ireset]
--   massign  ichnl, "insname"[, ireset]
--   
-- -- csound doc: http://csound.com/docs/manual/massign.html massign :: D -> D -> SE () -- | Initializes the controllers used to create a 21-bit MIDI value. -- --
--   initc21  ichan, ictlno1, ictlno2, ictlno3, ivalue
--   
-- -- csound doc: http://csound.com/docs/manual/initc21.html initc21 :: D -> D -> D -> D -> D -> SE () -- | Initializes the controllers used to create a 14-bit MIDI value. -- --
--   initc14  ichan, ictlno1, ictlno2, ivalue
--   
-- -- csound doc: http://csound.com/docs/manual/initc14.html initc14 :: D -> D -> D -> D -> SE () -- | Sets the initial values for a set of MIDI controllers. -- --
--   ctrlinit  ichnl, ictlno1, ival1 [, ictlno2] [, ival2] [, ictlno3] \
--            [, ival3] [,...ival32]
--   
-- -- csound doc: http://csound.com/docs/manual/ctrlinit.html ctrlinit :: [D] -> SE () -- | Allows a floating-point 21-bit MIDI signal scaled with a minimum and a -- maximum range. -- --
--   idest  ctrl21  ichan, ictlno1, ictlno2, ictlno3, imin, imax [, ifn]
--   kdest  ctrl21  ichan, ictlno1, ictlno2, ictlno3, kmin, kmax [, ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/ctrl21.html ctrl21 :: D -> D -> D -> D -> D -> D -> Sig -- | Allows a floating-point 14-bit MIDI signal scaled with a minimum and a -- maximum range. -- --
--   idest  ctrl14  ichan, ictlno1, ictlno2, imin, imax [, ifn]
--   kdest  ctrl14  ichan, ictlno1, ictlno2, kmin, kmax [, ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/ctrl14.html ctrl14 :: D -> D -> D -> D -> D -> Sig -- | Get the current value of a MIDI channel controller. -- -- Get the current value of a controller and optionally map it onto -- specified range. -- --
--   ival  chanctrl  ichnl, ictlno [, ilow] [, ihigh]
--   kval  chanctrl  ichnl, ictlno [, ilow] [, ihigh]
--   
-- -- csound doc: http://csound.com/docs/manual/chanctrl.html chanctrl :: D -> D -> Sig -- | Get the current after-touch value for this channel. -- --
--   kaft  aftouch  [imin] [, imax]
--   
-- -- csound doc: http://csound.com/docs/manual/aftouch.html aftouch :: Sig -- | Loads parameter banks to a VST plugin. -- -- vstprogset sets one of the programs in an .fxb bank. -- --
--   vstprogset  instance, kprogram
--   
-- -- csound doc: http://csound.com/docs/manual/vstprogset.html vstprogset :: D -> Sig -> SE () -- | Used for parameter comunication to and from a VST plugin. -- -- vstparamset and vstparamget are used for parameter comunication to and -- from a VST plugin. -- --
--   kvalue  vstparamget instance, kparam
--   
-- -- csound doc: http://csound.com/docs/manual/vstparamset.html vstparamget :: D -> Sig -> Sig -- | Used for parameter comunication to and from a VST plugin. -- -- vstparamset and vstparamget are used for parameter comunication to and -- from a VST plugin. -- --
--   vstparamset instance, kparam, kvalue
--   
-- -- csound doc: http://csound.com/docs/manual/vstparamset.html vstparamset :: D -> Sig -> Sig -> SE () -- | Sends a MIDI note with definite duration to a VST plugin. -- -- vstnote sends a MIDI note with definite duration to a VST plugin. -- --
--   vstnote  instance, kchan, knote, kveloc, kdur
--          
--   
-- -- csound doc: http://csound.com/docs/manual/vstnote.html vstnote :: D -> Sig -> Sig -> Sig -> Sig -> SE () -- | Sends MIDI information to a VST plugin. -- -- vstmidiout is used for sending MIDI information to a VST plugin. -- --
--   vstmidiout  instance, kstatus, kchan, kdata1, kdata2
--   
-- -- csound doc: http://csound.com/docs/manual/vstmidiout.html vstmidiout :: D -> Sig -> Sig -> Sig -> Sig -> SE () -- | Load a VST plugin into memory for use with the other vst4cs opcodes. -- -- 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. -- --
--   instance  vstinit  ilibrarypath [,iverbose]
--   
-- -- csound doc: http://csound.com/docs/manual/vstinit.html vstinit :: D -> SE D -- | Displays the parameters and the programs of a VST plugin. -- -- vstinfo displays the parameters and the programs of a VST plugin. -- --
--   vstinfo  instance
--   
-- -- csound doc: http://csound.com/docs/manual/vstinfo.html vstinfo :: D -> SE () -- | Opens the GUI editor window for a VST plugin. -- -- vstedit opens the custom GUI editor window 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  instance
--   
-- -- csound doc: http://csound.com/docs/manual/vstedit.html vstedit :: D -> SE () -- | Loads parameter banks to a VST plugin. -- -- vstbankload is used for loading parameter banks to a VST plugin. -- --
--   vstbankload  instance, ipath
--   
-- -- csound doc: http://csound.com/docs/manual/vstbankload.html vstbankload :: D -> D -> SE () -- | VST audio output. -- -- vstaudio and vstaudiog are used for sending and receiving audio from a -- VST plugin. -- --
--   aout1,aout2  vstaudiog  instance, [ain1, ain2]
--   
-- -- csound doc: http://csound.com/docs/manual/vstaudio.html vstaudiog :: D -> (Sig, Sig) -- | VST audio output. -- -- vstaudio and vstaudiog are used for sending and receiving audio from a -- VST plugin. -- --
--   aout1,aout2  vstaudio  instance, [ain1, ain2]
--   
-- -- csound doc: http://csound.com/docs/manual/vstaudio.html vstaudio :: D -> (Sig, Sig) -- | Lists all available DSSI and LADSPA plugins. -- -- dssilist checks the variables DSSI_PATH and LADSPA_PATH and lists all -- plugins available in all plugin libraries there. -- --
--   dssilist 
--   
-- -- csound doc: http://csound.com/docs/manual/dssilist.html dssilist :: SE () -- | Loads a DSSI or LADSPA plugin. -- -- 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. -- --
--   ihandle  dssiinit  ilibraryname, iplugindex [, iverbose] 
--   
-- -- csound doc: http://csound.com/docs/manual/dssiinit.html dssiinit :: D -> D -> SE D -- | Send control information to a LADSPA or DSSI plugin. -- -- dssictls sends control values to a plugin's control port -- --
--   dssictls  ihandle, iport, kvalue, ktrigger 
--   
-- -- csound doc: http://csound.com/docs/manual/dssictls.html dssictls :: D -> D -> Sig -> Sig -> SE () -- | Processes audio using a LADSPA or DSSI plugin. -- -- dssiaudio generates audio by processing an input signal through a -- LADSPA plugin. -- --
--   [aout1, aout2, ..., aout9]  dssiaudio  ihandle, [ain1, ain2, ..., ain9]
--   
-- -- csound doc: http://csound.com/docs/manual/dssiaudio.html dssiaudio :: Tuple a => D -> [Sig] -> a -- | Activates or deactivates a DSSI or LADSPA plugin. -- -- 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  ihandle, ktoggle 
--   
-- -- csound doc: http://csound.com/docs/manual/dssiactivate.html dssiactivate :: D -> Sig -> SE () -- | Converts a pitch-class value into cycles-per-second (Hz) for equal -- divisions of any interval. -- -- 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. -- --
--   icps  cpsxpch  ipch, iequal, irepeat, ibase
--   
-- -- csound doc: http://csound.com/docs/manual/cpsxpch.html cpsxpch :: D -> D -> D -> D -> D -- | Returns micro-tuning values at init-rate. -- --
--   icps  cpstuni  index, ifn
--   
-- -- csound doc: http://csound.com/docs/manual/cpstuni.html cpstuni :: D -> Tab -> D -- | Returns micro-tuning values at k-rate. -- --
--   kcps  cpstun  ktrig, kindex, kfn
--   
-- -- csound doc: http://csound.com/docs/manual/cpstun.html cpstun :: Sig -> Sig -> Tab -> Sig -- | Converts a pitch-class value into cycles-per-second (Hz) for equal -- divisions of the octave. -- --
--   icps  cps2pch  ipch, iequal
--   
-- -- csound doc: http://csound.com/docs/manual/cps2pch.html cps2pch :: D -> D -> D -- | Calculates a factor to raise/lower a frequency by a given amount of -- semitones. -- --
--   semitone (x)
--   
-- -- csound doc: http://csound.com/docs/manual/semitone.html semitone :: SigOrD a => a -> a -- | Convert pch to midi note number -- -- Convert pch to midi note number. pch representation has the form -- Octave.pitchclass, pitchclass being a number between 00 and 12. -- --
--   imidi  pchtom  ipch
--   kmidi  pchtom  kpch
--   
-- -- csound doc: http://csound.com/docs/manual/pchtom.html pchtom :: D -> Sig -- | Converts an octave-point-decimal value to pitch-class. -- --
--   pchoct  (oct)  (init- or control-rate args only)
--   
-- -- csound doc: http://csound.com/docs/manual/pchoct.html pchoct :: SigOrD a => a -> a -- | Converts a Midi note number value to octave point pitch-class units. -- --
--   pchmidinn  (MidiNoteNumber)  (init- or control-rate args only)
--   
-- -- csound doc: http://csound.com/docs/manual/pchmidinn.html pchmidinn :: SigOrD a => a -> a -- | Converts a pitch-class value to octave-point-decimal. -- --
--   octpch  (pch)  (init- or control-rate args only)
--   
-- -- csound doc: http://csound.com/docs/manual/octpch.html octpch :: SigOrD a => a -> a -- | Converts a Midi note number value to octave-point-decimal. -- --
--   octmidinn  (MidiNoteNumber)  (init- or control-rate args only)
--   
-- -- csound doc: http://csound.com/docs/manual/octmidinn.html octmidinn :: SigOrD a => a -> a -- | Converts a cycles-per-second value to octave-point-decimal. -- --
--   octcps  (cps)  (init- or control-rate args only)
--   
-- -- csound doc: http://csound.com/docs/manual/octcps.html octcps :: SigOrD a => a -> a -- | Calculates a factor to raise/lower a frequency by a given amount of -- octaves. -- --
--   octave (x)
--   
-- -- csound doc: http://csound.com/docs/manual/octave.html octave :: SigOrD a => a -> a -- | Convert note name to midi note number -- -- Convert note name to midi note number. It allows note name to include -- microtones or a deviation in cents. -- --
--   kmidi  ntom  Snote
--   imidi  ntom  Snote
--   
-- -- csound doc: http://csound.com/docs/manual/ntom.html ntom :: Str -> D -- | Convert midi note number to string note name -- -- Convert midi note number to string note name, with an accuracy of 1 -- cent. -- --
--   Snote  mton  kmidi
--   Snote  mton  imidi
--   
-- -- csound doc: http://csound.com/docs/manual/mton.html mton :: Sig -> Str -- | Convert a midi to frequency -- -- Convert a midi note number value to cycles per second, taking global -- value of A4 into account. -- --
--   ifreq  mtof  imidi
--   kfreq  mtof  kmidi
--   
-- -- csound doc: http://csound.com/docs/manual/mtof.html mtof :: D -> Sig -- | Convert frequency to midi -- -- Convert frequency to midi note number, taking global value of A4 into -- account. -- --
--   imidi  ftom  ifreq
--   kmidi  ftom  kfreq
--   
-- -- csound doc: http://csound.com/docs/manual/ftom.html ftom :: D -> Sig -- | Converts a pitch-class value to cycles-per-second. -- --
--   cpspch  (pch)  (init- or control-rate args only)
--   
-- -- csound doc: http://csound.com/docs/manual/cpspch.html cpspch :: SigOrD a => a -> a -- | Converts an octave-point-decimal value to cycles-per-second. -- --
--   cpsoct  (oct)  (no rate restriction)
--   
-- -- csound doc: http://csound.com/docs/manual/cpsoct.html cpsoct :: SigOrD a => a -> a -- | Converts a Midi note number value to cycles-per-second. -- --
--   cpsmidinn  (MidiNoteNumber)  (init- or control-rate args only)
--   
-- -- csound doc: http://csound.com/docs/manual/cpsmidinn.html cpsmidinn :: SigOrD a => a -> a -- | Calculates a factor to raise/lower a frequency by a given amount of -- cents. -- --
--   cent (x) 
--   
-- -- csound doc: http://csound.com/docs/manual/cent.html cent :: SigOrD a => a -> a -- | Listen for all OSC messages at a given port. -- -- On each k-cycle looks to see if an OSC message has been received at a -- given port and copies its contents to a string array. All messages are -- copied. If a bundle of messages is received, the output array will -- contain all of the messages in it. -- --
--   Smess[],klen  OSCraw  iport
--   
-- -- csound doc: http://csound.com/docs/manual/OSCraw.html oscRaw :: Tuple a => D -> a -- | Sends data to other processes using the low-level UDP or TCP protocols -- -- 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. -- --
--   stsend  asig, Sipaddr, iport
--   
-- -- csound doc: http://csound.com/docs/manual/socksend.html stsend :: Sig -> Str -> D -> SE () -- | Sends data to other processes using the low-level UDP or TCP protocols -- -- 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. -- --
--   socksends  asigl, asigr, Sipaddr, iport,
--          ilength
--   
-- -- csound doc: http://csound.com/docs/manual/socksend.html socksends :: Sig -> Sig -> Str -> D -> D -> SE () -- | Sends data to other processes using the low-level UDP or TCP protocols -- -- 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  asig, Sipaddr, iport, ilength
--   socksend  ksig, Sipaddr, iport, ilength
--   
-- -- csound doc: http://csound.com/docs/manual/socksend.html socksend :: Sig -> Str -> D -> D -> SE () -- | Receives data from other processes using the low-level UDP or TCP -- protocols -- -- 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. -- --
--   asig  strecv  Sipaddr, iport
--   
-- -- csound doc: http://csound.com/docs/manual/sockrecv.html strecv :: Str -> D -> Sig -- | Receives data from other processes using the low-level UDP or TCP -- protocols -- -- 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. -- --
--   asigl, asigr  sockrecvs  iport, ilength
--   
-- -- csound doc: http://csound.com/docs/manual/sockrecv.html sockrecvs :: D -> D -> (Sig, Sig) -- | Receives data from other processes using the low-level UDP or TCP -- protocols -- -- 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. -- --
--   asig  sockrecv  iport, ilength
--   ksig  sockrecv  iport, ilength
--   
-- -- csound doc: http://csound.com/docs/manual/sockrecv.html sockrecv :: D -> D -> Sig -- | Defines the port for use with the remote system. -- -- Defines the port for use with the insremot, midremot, insglobal and -- midglobal opcodes. -- --
--   remoteport  iportnum
--   
-- -- csound doc: http://csound.com/docs/manual/remoteport.html remoteport :: D -> SE () -- | Sets the level of a send to a buss. -- -- 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  isend, ibuss, igain
--   
-- -- csound doc: http://csound.com/docs/manual/MixerSetLevel_i.html mixerSetLevel_i :: D -> D -> D -> SE () -- | Sets the level of a send to a buss. -- -- 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  isend, ibuss, kgain
--   
-- -- csound doc: http://csound.com/docs/manual/MixerSetLevel.html mixerSetLevel :: D -> D -> Sig -> SE () -- | Mixes an arate signal into a channel of a buss. -- --
--   MixerSend  asignal, isend, ibuss, ichannel
--   
-- -- csound doc: http://csound.com/docs/manual/MixerSend.html mixerSend :: Sig -> D -> D -> D -> SE () -- | Receives an arate signal from a channel of a buss. -- -- Receives an arate signal that has been mixed onto a channel of a buss. -- --
--   asignal  MixerReceive  ibuss, ichannel
--   
-- -- csound doc: http://csound.com/docs/manual/MixerReceive.html mixerReceive :: D -> D -> SE Sig -- | Gets the level of a send to a buss. -- -- 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. -- --
--   kgain  MixerGetLevel  isend, ibuss
--   
-- -- csound doc: http://csound.com/docs/manual/MixerGetLevel.html mixerGetLevel :: D -> D -> SE Sig -- | Resets all channels of a buss to 0. -- --
--   MixerClear 
--   
-- -- csound doc: http://csound.com/docs/manual/MixerClear.html mixerClear :: SE () -- | shuffles the content of a function table so that each element of the -- source table is put into a different random position. -- -- This opcode can be used in order to shuffle the content of function -- tables into a random order but without loosing any of the elements. -- Imagine shuffling a deck of cards. Each element of the table is copied -- to a different random position. If that position was already chosen -- before then the next free position is chosen. The length of the table -- remains the same. -- --
--   tableshufflei  itablenum
--   
-- -- csound doc: http://csound.com/docs/manual/tableshuffle.html tableshufflei :: D -> SE () -- | shuffles the content of a function table so that each element of the -- source table is put into a different random position. -- -- This opcode can be used in order to shuffle the content of function -- tables into a random order but without loosing any of the elements. -- Imagine shuffling a deck of cards. Each element of the table is copied -- to a different random position. If that position was already chosen -- before then the next free position is chosen. The length of the table -- remains the same. -- --
--   tableshuffle  ktablenum
--   
-- -- csound doc: http://csound.com/docs/manual/tableshuffle.html tableshuffle :: Sig -> SE () -- | Call an external program via the system call -- -- 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. -- --
--   kres  system  ktrig, Scmd, [knowait]
--   
-- -- csound doc: http://csound.com/docs/manual/system.html system :: Sig -> Str -> Sig -- | Call an external program via the system call -- -- 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. -- --
--   ires  system_i  itrig, Scmd, [inowait]
--   
-- -- csound doc: http://csound.com/docs/manual/system.html system_i :: D -> Str -> D -- | Select sample value based on audio-rate comparisons. -- -- Select sample value from three based on audio-rate comparisons of two -- signals. -- --
--   aout  select  a1, a2, aless, aequal, amore
--   
-- -- csound doc: http://csound.com/docs/manual/select.html select :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Asks the underlying operating system for the current directory name as -- a string. -- -- pwd call the operating system to determine the current directory -- (folder). pwd runs at i-time only. -- --
--   Sres  pwd 
--   
-- -- csound doc: http://csound.com/docs/manual/pwd.html pwd :: Str -- | Modulation matrix opcode with optimizations for sparse matrices. -- -- 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  iresfn, isrcmodfn, isrcparmfn, imodscale, inum_mod, \\
--      inum_parm, kupdate
--   
-- -- csound doc: http://csound.com/docs/manual/modmatrix.html modmatrix :: Tab -> Tab -> Tab -> D -> D -> D -> Sig -> SE () -- | returns the length of a Farey Sequence. -- -- This opcode can be used in conjunction with GENfarey. It calculates -- the length of Farey Sequence Fn. Its length is given by: |Fn| = 1 + -- SUM over n phi(m) where phi(m) is Euler's totient function, which -- gives the number of integers ≤ m that are coprime to m. -- --
--   ifl  fareyleni  ifn
--   
-- -- csound doc: http://csound.com/docs/manual/fareyleni.html fareyleni :: Tab -> D -- | returns the length of a Farey Sequence. -- -- This opcode can be used in conjunction with GENfarey. It calculates -- the length of Farey Sequence Fn. Its length is given by: |Fn| = 1 + -- SUM over n phi(m) where phi(m) is Euler's totient function, which -- gives the number of integers ≤ m that are coprime to m. -- --
--   kfl  fareylen  kfn
--   
-- -- csound doc: http://csound.com/docs/manual/fareylen.html fareylen :: Tab -> Sig -- | Reads a directory and outputs to a string array a list of file names. -- -- Reads a directory for files and passes them to a string array. Users -- can set the file type by passing a file extension as a string. -- --
--   SFiles[]  directory  SDirectory[, SExtention]
--   
-- -- csound doc: http://csound.com/docs/manual/directory.html directory :: Str -> Str -- | Returns an arctangent. -- -- Returns the arctangent of iyix, kykx, or ay/ax. -- --
--   ares  taninv2  ay, ax
--   ires  taninv2  iy, ix
--   kres  taninv2  ky, kx
--   ... taninv2 (ky, kx)... (no rate restriction)
--   
-- -- csound doc: http://csound.com/docs/manual/taninv2.html taninv2 :: SigOrD a => a -> a -> a -- | Sums any number of a-rate signals, or array elements. -- --
--   ares  sum  asig1 [, asig2] [, asig3] [...]
--   kres  sum  karr
--   ires  sum  iarr
--   
-- -- csound doc: http://csound.com/docs/manual/sum.html sum' :: [Sig] -> Sig -- | Multiplies any number of a-rate signals. -- --
--   ares  product  asig1, asig2 [, asig3] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/product.html product' :: [Sig] -> Sig -- | Computes one argument to the power of another argument. -- -- Computes xarg to the power of kpow (or ipow) and scales the result by -- inorm. -- --
--   ares  pow  aarg, kpow [, inorm]
--   ires  pow  iarg, ipow [, inorm]
--   kres  pow  karg, kpow [,
--           inorm]
--   ires[]  pow  iarg[], ipow[] 
--   kres[]  pow  karg[], kpow[]
--   ires[]  pow  iarg[], ipow 
--   kres[]  pow  karg[], kpow 
--   
-- -- csound doc: http://csound.com/docs/manual/pow.html pow :: Sig -> Sig -> Sig -- | Efficiently evaluates a polynomial of arbitrary order. -- -- 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. -- --
--   aout  polynomial  ain, k0 [, k1 [, k2 [...]]]
--   
-- -- csound doc: http://csound.com/docs/manual/polynomial.html polynomial :: Sig -> [Sig] -> Sig -- | Multiply and accumulate a-rate signals only. -- --
--   ares  maca  asig1 , asig2 [, asig3] [, asig4] [, asig5] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/maca.html maca :: [Sig] -> Sig -- | Multiplies and accumulates a- and k-rate signals. -- --
--   ares  mac  ksig1, asig1 [, ksig2] [, asig2] [, ksig3] [, asig3] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/mac.html mac :: [Sig] -> Sig -- | Safely divides two numbers. -- --
--   ares  divz  xa, xb, ksubst
--   ires  divz  ia, ib, isubst
--   kres  divz  ka, kb, ksubst
--   ... divz (ka, kb, ksubst)... (no rate restriction)
--   
-- -- csound doc: http://csound.com/docs/manual/divz.html divz :: SigOrD a => a -> a -> a -- | Returns a random number in a unipolar range at the rate given by the -- input argument. -- --
--   rnd (x) (init- or control-rate only)
--   
-- -- csound doc: http://csound.com/docs/manual/rnd.html rnd :: SigOrD a => a -> SE a -- | Returns a random number in a bi-polar range. -- --
--   birnd (x) (init- or control-rate only)
--   
-- -- csound doc: http://csound.com/docs/manual/birnd.html birnd :: SigOrD a => a -> SE a -- | Returns the decibel equivalent of the raw amplitude x, relative to -- full scale amplitude. -- -- 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 (x)  (init-rate or control-rate args only)
--   
-- -- csound doc: http://csound.com/docs/manual/dbfsamp.html dbfsamp :: SigOrD a => a -> a -- | Returns the decibel equivalent of the raw amplitude x. -- --
--   dbamp (x)  (init-rate or control-rate args only)
--   
-- -- csound doc: http://csound.com/docs/manual/dbamp.html dbamp :: SigOrD a => a -> a -- | Returns the amplitude equivalent (in 16-bit signed integer scale) of -- the full scale decibel (dB FS) value x. -- -- 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)  (no rate restriction)
--   
-- -- csound doc: http://csound.com/docs/manual/ampdbfs.html ampdbfs :: SigOrD a => a -> a -- | Returns the amplitude equivalent of the decibel value x. -- -- Returns the amplitude equivalent of the decibel value x. Thus: -- --
--   ampdb (x)  (no rate restriction)
--   
-- -- csound doc: http://csound.com/docs/manual/ampdb.html ampdb :: SigOrD a => a -> a -- | Accumulates audio signals. -- -- vincr increments one audio variable with another signal, i.e. it -- accumulates output. -- --
--   vincr  accum, aincr
--   
-- -- csound doc: http://csound.com/docs/manual/vincr.html vincr :: Sig -> Sig -> SE () -- | Zeroes a list of audio signals. -- -- clear zeroes a list of audio signals. -- --
--   clear  avar1 [, avar2] [, avar3] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/clear.html clear :: [Sig] -> SE () -- | Control the Jack transport. -- -- Starts, stops, or repositions the Jack transport. This is useful, -- e.g., for starting an external sequencer playing to send MIDI messages -- to Csound. -- --
--   JackoTransport  kcommand, [kposition]
--   
-- -- csound doc: http://csound.com/docs/manual/JackoTransport.html jackoTransport :: Sig -> SE () -- | Enables or disables all Jack ports. -- -- In the orchestra header, after all Jack connections have been created, -- enables or disables all Jack input and output opcodes inside this -- instance of Csound to read or write data. -- --
--   JackoOn [iactive] 
--   
-- -- csound doc: http://csound.com/docs/manual/JackoOn.html jackoOn :: SE () -- | Sends a MIDI channel message to a Jack port. -- -- Sends a MIDI channel message to a Jack MIDI output port inside this -- instance of Csound, and in turn to its connected external Jack MIDI -- input port. -- --
--   JackoNoteOut  ScsoundPortName, kstatus, kchannel, kdata1[, kdata2]
--   
-- -- csound doc: http://csound.com/docs/manual/JackoNoteOut.html jackoNoteOut :: Str -> Sig -> Sig -> Sig -> SE () -- | Creates a MIDI connection from Csound to a Jack port. -- -- In the orchestra header, creates a connection from a Jack MIDI output -- port inside this instance of Csound to an external Jack MIDI input -- port. -- --
--   JackoMidiOutConnect ScsoundPortName, SexternalPortName
--   
-- -- csound doc: -- http://csound.com/docs/manual/JackoMidiOutConnect.html jackoMidiOutConnect :: Str -> Str -> SE () -- | Sends a MIDI channel message to a Jack port. -- -- Sends a MIDI channel message to a Jack MIDI output port inside this -- instance of Csound, and in turn to its connected external Jack MIDI -- input port. -- --
--   JackoMidiOut  ScsoundPortName, kstatus, kchannel, kdata1[, kdata2]
--   
-- -- csound doc: http://csound.com/docs/manual/JackoMidiOut.html jackoMidiOut :: Str -> Sig -> Sig -> Sig -> SE () -- | Creates a MIDI connection from a Jack port to Csound. -- -- In the orchestra header, creates a MIDI connection from an external -- Jack MIDI output port to this instance of Csound. -- --
--   JackoMidiInConnect SexternalPortName, ScsoundPortName
--   
-- -- csound doc: -- http://csound.com/docs/manual/JackoMidiInConnect.html jackoMidiInConnect :: Str -> Str -> SE () -- | Initializes Csound as a Jack client. -- -- Initializes this instance of Csound as a Jack client. -- --
--   JackoInit ServerName, SclientName
--   
-- -- csound doc: http://csound.com/docs/manual/JackoInit.html jackoInit :: Str -> Str -> SE () -- | Creates an audio connection from Csound to a Jack port. -- -- In the orchestra header, creates an audio connection from a Jack audio -- output port inside this instance of Csound to an external Jack audio -- input port. -- --
--   JackoAudioOutConnect ScsoundPortName, SexternalPortName
--   
-- -- csound doc: -- http://csound.com/docs/manual/JackoAudioOutConnect.html jackoAudioOutConnect :: Str -> Str -> SE () -- | Sends an audio signal to a Jack port. -- -- Sends an audio signal to an internal Jack audio output port, and in -- turn to its connected external Jack audio input port. -- --
--   JackoAudioOut  ScsoundPortName, asignal
--   
-- -- csound doc: http://csound.com/docs/manual/JackoAudioOut.html jackoAudioOut :: Str -> Sig -> SE () -- | Creates an audio connection from a Jack port to Csound. -- -- In the orchestra header, creates an audio connection from an external -- Jack audio output port to a Jack audio input port inside this instance -- of Csound. -- --
--   JackoAudioInConnect SexternalPortName, ScsoundPortName
--   
-- -- csound doc: -- http://csound.com/docs/manual/JackoAudioInConnect.html jackoAudioInConnect :: Str -> Str -> SE () -- | Receives an audio signal from a Jack port. -- -- Receives an audio signal from a Jack audio input port inside this -- instance of Csound, which in turn has received the signal from its -- connected external Jack audio output port. -- --
--   asignal  JackoAudioIn ScsoundPortName
--   
-- -- csound doc: http://csound.com/docs/manual/JackoAudioIn.html jackoAudioIn :: Str -> SE Sig -- | Read absolute time in seconds. -- -- Read absolute time, in seconds, since the start of the performance. -- --
--   ires  times 
--   kres  times 
--   
-- -- csound doc: http://csound.com/docs/manual/times.html times :: SE Sig -- | Read absolute time in k-rate cycles. -- -- Read absolute time, in k-rate cycles, since the start of the -- performance. -- --
--   ires  timek 
--   kres  timek 
--   
-- -- csound doc: http://csound.com/docs/manual/timek.html timek :: SE Sig -- | Read absolute time in seconds. -- -- Read absolute time, in seconds, since the start of an instance of an -- instrument. -- --
--   kres  timeinsts 
--   
-- -- csound doc: http://csound.com/docs/manual/timeinsts.html timeinsts :: Sig -- | Read absolute time in k-rate cycles. -- -- 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. -- --
--   kres  timeinstk 
--   
-- -- csound doc: http://csound.com/docs/manual/timeinstk.html timeinstk :: Sig -- | Read the real time clock from the operating system. -- -- Read the real-time clock from the operating system. -- --
--   ires  rtclock 
--   kres  rtclock 
--   
-- -- csound doc: http://csound.com/docs/manual/rtclock.html rtclock :: Sig -- | Reads the value of an internal clock. -- --
--   ir  readclock  inum
--   
-- -- csound doc: http://csound.com/docs/manual/readclock.html readclock :: D -> D -- | Returns as a string the date and time specified. -- --
--   Sir  dates  [ itime]
--   
-- -- csound doc: http://csound.com/docs/manual/dates.html dates :: Str -- | Returns the number seconds since a base date. -- -- Returns the number seconds since a base date, using the operating -- system's clock. The base is 1 January 1970 for Csound using doubles, -- and 1 January 2010 for versions using floats. On operating systemms -- with sufficient resolution the date includes fractional seconds. -- --
--   ir[, inano]  date 
--   kr[, knano]  date 
--   
-- -- csound doc: http://csound.com/docs/manual/date.html date :: Tuple a => a -- | Creates and runs a numbered instrument instance at init-time. -- -- Same as subinstr, but init-time only and has no output arguments. -- --
--   subinstrinit  instrnum [, p4] [, p5] [...]
--   subinstrinit  "insname" [, p4] [, p5] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/subinstrinit.html subinstrinit :: D -> [D] -> SE () -- | Creates and runs a numbered instrument instance. -- -- Creates an instance of another instrument and is used as if it were an -- opcode. -- --
--   a1, [...] [, a8]  subinstr  instrnum [, p4] [, p5] [...]
--   a1, [...] [, a8]  subinstr  "insname" [, p4] [, p5] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/subinstr.html subinstr :: Tuple a => D -> [D] -> a -- | Initializes the stack. Deprecated. -- -- Initializes and sets the size of the global stack. -- --
--   stack   iStackSize
--   
-- -- csound doc: http://csound.com/docs/manual/stack.html stack :: D -> SE () -- | Pushes an f-sig frame into the global stack. Deprecated. -- -- Pushes an f-sig frame into the global stack. -- --
--   push_f   fsig
--   
-- -- csound doc: http://csound.com/docs/manual/push_f.html push_f :: Spec -> SE () -- | Pushes a value into the global stack. Deprecated. -- -- Pushes a value into the global stack. -- --
--   push   xval1, [xval2, ... , xval31]
--   push   ival1, [ival2, ... , ival31]
--   
-- -- csound doc: http://csound.com/docs/manual/push.html push :: [Sig] -> SE () -- | Pops an f-sig frame from the global stack. Deprecated. -- -- Pops an f-sig frame from the global stack. -- --
--   fsig  pop_f 
--   
-- -- csound doc: http://csound.com/docs/manual/pop_f.html pop_f :: Spec -- | Pops values from the global stack. Deprecated. -- -- Pops values from the global stack. -- --
--   xval1, [xval2, ... , xval31]  pop 
--   ival1, [ival2, ... , ival31]  pop 
--   
-- -- csound doc: http://csound.com/docs/manual/pop.html pop :: Tuple a => a -- | Sense the cursor position in an output window -- -- 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. -- --
--   kx, ky  xyin  iprd, ixmin, ixmax, iymin, iymax [, ixinit] [, iyinit]
--   
-- -- csound doc: http://csound.com/docs/manual/xyin.html xyin :: D -> D -> D -> D -> D -> (Sig, Sig) -- | writes a value into the scratchpad of the instance of an instrument. -- -- The writescratch opcode writes one of four scalar values to be stored -- in the instance of an instrument. -- --
--   writescratch ival[, index]
--   
-- -- csound doc: http://csound.com/docs/manual/writescratch.html writescratch :: D -> SE () -- | Sends data to one of a number of external Nintendo Wiimote -- controllers. -- --
--   kres  wiisend  kcontrol, kvalue[, knum]
--   
-- -- csound doc: http://csound.com/docs/manual/wiisend.html wiisend :: Sig -> Sig -> Sig -- | Sets scaling and range limits for certain Wiimote fields. -- --
--   wiirange  icontrol, iminimum, imaximum[, inum]
--   
-- -- csound doc: http://csound.com/docs/manual/wiirange.html wiirange :: D -> D -> D -> SE () -- | Reads data fields from a number of external Nintendo Wiimote -- controllers. -- -- Reads data fields from upto four external Nintendo Wiimote -- controllers. -- --
--   kres  wiidata  kcontrol[, knum]
--   
-- -- csound doc: http://csound.com/docs/manual/wiidata.html wiidata :: Sig -> Sig -- | Reads data from a number of external Nintendo Wiimote controllers. -- -- Opens and at control-rate polls up to four external Nintendo Wiimote -- controllers. -- --
--   ires  wiiconnect  [itimeout, imaxnum]
--   
-- -- csound doc: http://csound.com/docs/manual/wiiconnect.html wiiconnect :: D -- | Envelope follower unit generator. -- -- Envelope follower unit generator emmulating a Perkin Elmer Vactrole -- VTL5C3/2. -- --
--   ares  vactrol  asig [iup, idown]
--   
-- -- csound doc: http://csound.com/docs/manual/vactrol.html vactrol :: Sig -> Sig -- | Accepts a trigger signal as input and outputs a group of values. -- --
--   trigseq  ktrig_in, kstart, kloop, kinitndx, kfn_values, kout1 [, kout2] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/trigseq.html trigseq :: Sig -> Sig -> Sig -> Sig -> Tab -> [Sig] -> SE () -- | Informs when a krate signal crosses a threshold. -- --
--   kout  trigger  ksig, kthreshold, kmode
--   
-- -- csound doc: http://csound.com/docs/manual/trigger.html trigger :: Sig -> Sig -> Sig -> Sig -- | Time Variant Sequencer -- -- An event-sequencer in which time can be controlled by a time-pointer. -- Sequence data are stored into a table. -- --
--   ktrig   timedseq   ktimpnt, ifn, kp1 [,kp2, kp3, ...,kpN]
--   
-- -- csound doc: http://csound.com/docs/manual/timedseq.html timedseq :: Sig -> Tab -> [Sig] -> Sig -- | Reads the current value of the tempo. -- --
--   kres  tempoval 
--   
-- -- csound doc: http://csound.com/docs/manual/tempoval.html tempoval :: Sig -- | Apply tempo control to an uninterpreted score. -- --
--   tempo  ktempo, istartempo
--   
-- -- csound doc: http://csound.com/docs/manual/tempo.html tempo :: Sig -> D -> SE () -- | Estimate the tempo of beat patterns in a control signal. -- --
--   ktemp  tempest  kin, iprd, imindur, imemdur, ihp, ithresh, ihtim, ixfdbak, \
--             istartempo, ifn [, idisprd] [, itweek]
--   
-- -- csound doc: http://csound.com/docs/manual/tempest.html tempest :: Sig -> D -> D -> D -> D -> D -> D -> D -> D -> Tab -> Sig -- | Split a trigger signal -- -- splitrig splits a trigger signal (i.e. a timed sequence of -- control-rate impulses) into several channels following a structure -- designed by the user. -- --
--   splitrig  ktrig, kndx, imaxtics, ifn, kout1 [,kout2,...,koutN]
--   
-- -- csound doc: http://csound.com/docs/manual/splitrig.html splitrig :: Sig -> Sig -> D -> Tab -> [Sig] -> SE () -- | Sets the playback position of the current score performance to a given -- position. -- --
--   setscorepos  ipos
--   
-- -- csound doc: http://csound.com/docs/manual/setscorepos.html setscorepos :: D -> SE () -- | Configurable slider controls for realtime user input. -- -- 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  inum, ival, itype
--   
-- -- csound doc: http://csound.com/docs/manual/setctrl.html setctrl :: D -> D -> D -> SE () -- | Generates a trigger signal according to the values stored in a table. -- --
--   ktrig_out  seqtime2  ktrig_in, ktime_unit, kstart, kloop, kinitndx, kfn_times
--   
-- -- csound doc: http://csound.com/docs/manual/seqtime2.html seqtime2 :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | Generates a trigger signal according to the values stored in a table. -- --
--   ktrig_out  seqtime  ktime_unit, kstart, kloop, kinitndx, kfn_times
--   
-- -- csound doc: http://csound.com/docs/manual/seqtime.html seqtime :: Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | Returns the ASCII code of a key that has been pressed. -- -- Returns the ASCII code of a key that has been pressed, or -1 if no key -- has been pressed. -- --
--   kres[, kkeydown]  sensekey 
--   
-- -- csound doc: http://csound.com/docs/manual/sensekey.html sensekey :: Tuple a => a -- | Determines the root-mean-square amplitude of an audio signal. -- -- 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. -- --
--   kres  rms  asig [, ihp] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/rms.html rms :: Sig -> Sig -- | Rewinds the playback position of the current score performance. -- -- Rewinds the playback position of the current score performance.. -- --
--   rewindscore 
--   
-- -- csound doc: http://csound.com/docs/manual/rewindscore.html rewindscore :: SE () -- | returns a value stored in the instance of an instrument. -- -- The readscratch opcode returns one of four scalar values stored in the -- instance of an instrument. -- --
--   ival  readscratch [index]
--   
-- -- csound doc: http://csound.com/docs/manual/readscratch.html readscratch :: D -- | Tracks the pitch of a signal. -- -- 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. -- --
--   kcps, kamp  ptrack  asig, ihopsize[,ipeaks]
--   
-- -- csound doc: http://csound.com/docs/manual/ptrack.html ptrack :: Sig -> D -> (Sig, Sig) -- | Tracks the pitch of a signal. -- -- plltrack, a pitch tracker based on a phase-locked loop algorithm, -- described in Zolzer, U, Sankarababu, S.V. and Moller, S, "PLL-based -- Pitch Detection and Tracking for Audio Signals. Proc. of IIH-MSP -- 2012". -- --
--   acps, alock  plltrack  asig, kd [, kloopf, kloopq, klf, khf, kthresh]
--   
-- -- csound doc: http://csound.com/docs/manual/plltrack.html plltrack :: Sig -> Sig -> (Sig, Sig) -- | Follows the pitch of a signal based on the AMDF method. -- -- 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. -- --
--   kcps, krms  pitchamdf  asig, imincps, imaxcps [, icps] [, imedi] \
--             [, idowns] [, iexcps] [, irmsmedi]
--   
-- -- csound doc: http://csound.com/docs/manual/pitchamdf.html pitchamdf :: Sig -> D -> D -> (Sig, Sig) -- | Tracks the pitch of a signal. -- -- Using the same techniques as spectrum and specptrk, pitch tracks the -- pitch of the signal in octave point decimal form, and amplitude in dB. -- --
--   koct, kamp  pitch  asig, iupdte, ilo, ihi, idbthresh [, ifrqs] [, iconf] \
--             [, istrt] [, iocts] [, iq] [, inptls] [, irolloff] [, iskip]
--   
-- -- csound doc: http://csound.com/docs/manual/pitch.html pitch :: Sig -> D -> D -> D -> D -> (Sig, Sig) -- | Returns the value of a specified pfield. -- -- pindex returns the value of a specified pfield. -- --
--   ivalue  pindex  ipfieldIndex
--   
-- -- csound doc: http://csound.com/docs/manual/pindex.html pindex :: D -> D -- | Maintains the output equal to the highest absolute value received. -- -- These opcodes maintain the output k-rate variable as the peak absolute -- level so far received. -- --
--   kres  peak  asig
--   kres  peak  ksig
--   
-- -- csound doc: http://csound.com/docs/manual/peak.html peak :: Sig -> Sig -- | Returns the number of pfields belonging to a note event. -- -- pcount returns the number of pfields belonging to a note event. -- --
--   icount  pcount 
--   
-- -- csound doc: http://csound.com/docs/manual/pcount.html pcount :: D -- | Reads data fields from an external P5 Glove. -- -- Reads data fields from a P5 Glove controller. -- --
--   kres  p5gdata  kcontrol
--   
-- -- csound doc: http://csound.com/docs/manual/p5gdata.html p5gdata :: Sig -> Sig -- | Reads data from a P5 Glove controller. -- -- Opens and at control-rate polls a P5 Glove controller. -- --
--   p5gconnect 
--   
-- -- csound doc: http://csound.com/docs/manual/p5gconnect.html p5gconnect :: SE () -- | Returns the current tempo at k-rate, of either the MIDI file (if -- available) or the score -- --
--   ksig   miditempo 
--   
-- -- csound doc: http://csound.com/docs/manual/miditempo.html miditempo :: Sig -- | Returns the playback status of MIDI file input. -- -- Returns the current playback status at k-rate, of the input MIDI file, -- 1 if file is playing, 0 if the end-of-the file has been reached. -- --
--   ksig   midifilestatus 
--   
-- -- csound doc: http://csound.com/docs/manual/midifilestatus.html midifilestatus :: Sig -- | Reads data from a joystick controller. -- -- Reads data from a Linux joystick controller -- --
--   kres  joystick  kdevice ktab
--   
-- -- csound doc: http://csound.com/docs/manual/joystick.html joystick :: Sig -> Tab -> Sig -- | Return Csound settings. -- -- Return various configuration settings in Svalue as a string at init -- time. -- --
--   Svalue  getcfg  iopt
--   
-- -- csound doc: http://csound.com/docs/manual/getcfg.html getcfg :: D -> Str -- | Another controllable envelope extractor. -- -- A controllable envelope extractor using the algorithm attributed to -- Jean-Marc Jot. -- --
--   ares  follow2  asig, katt, krel
--   
-- -- csound doc: http://csound.com/docs/manual/follow2.html follow2 :: Sig -> Sig -> Sig -> Sig -- | Envelope follower unit generator. -- --
--   ares  follow  asig, idt
--   
-- -- csound doc: http://csound.com/docs/manual/follow.html follow :: Sig -> D -> Sig -- | Configurable slider controls for realtime user input. -- -- Configurable slider controls for realtime user input. Requires -- Winsound or TCL/TK. control reads a slider's value. -- --
--   kres  control  knum
--   
-- -- csound doc: http://csound.com/docs/manual/control.html control :: Sig -> Sig -- | Sense on-screen controls. -- -- Sense on-screen controls. Requires Winsound or TCL/TK. -- --
--   kres  checkbox  knum
--   
-- -- csound doc: http://csound.com/docs/manual/checkbox.html checkbox :: Sig -> Sig -- | k-rate signal change detector. -- -- This opcode outputs a trigger signal that informs when any one of its -- k-rate arguments has changed, or a value in an array. Useful with -- valuator widgets or MIDI controllers. -- --
--   ktrig  changed2  kvar1 [, kvar2,..., kvarN]
--   ktrig  changed2  karr[]
--   ktrig  changed2  aarr[]
--   
-- -- csound doc: http://csound.com/docs/manual/changed2.html changed2 :: Sig -> Sig -- | k-rate signal change detector. -- -- 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. -- --
--   ktrig  changed  kvar1 [, kvar2,..., kvarN]
--   
-- -- csound doc: http://csound.com/docs/manual/changed.html changed :: [Sig] -> Sig -- | Creates space for instruments but does not run them. -- --
--   prealloc  insnum, icount
--   prealloc  "insname", icount
--   
-- -- csound doc: http://csound.com/docs/manual/prealloc.html prealloc :: D -> D -> SE () -- | Limits the number of allocations of an instrument. -- --
--   maxalloc  insnum, icount
--   maxalloc  Sinsname, icount
--   
-- -- csound doc: http://csound.com/docs/manual/maxalloc.html maxalloc :: D -> D -> SE () -- | Start/stop jack_transport and can optionally relocate the playback -- head. -- --
--   jacktransport  icommand [, ilocation]
--   
-- -- csound doc: http://csound.com/docs/manual/jacktransport.html jacktransport :: D -> SE () -- | Exit Csound as fast as possible, with no cleaning up. -- -- In Csound4 calls an exit function to leave Csound as fast as possible. -- On Csound5 exits back to the driving code. -- --
--   exitnow  [ivalue]
--   
-- -- csound doc: http://csound.com/docs/manual/exitnow.html exitnow :: SE () -- | Control allocation of cpu resources on a per-instrument basis, to -- optimize realtime output. -- --
--   cpuprc  insnum, ipercent
--   cpuprc  Sinsname, ipercent
--   
-- -- csound doc: http://csound.com/docs/manual/cpuprc.html cpuprc :: D -> D -> SE () -- | Reports the usage of cpu either total or per core. -- -- Reports the usage of cpu either total or per core to monitor how close -- to max-out the processing is. -- --
--   ktot[,kcpu1, kcpu2,...] cpumeter  ifreq
--   
-- -- csound doc: http://csound.com/docs/manual/cpumeter.html cpumeter :: Tuple a => D -> a -- | Returns the number of active instances of an instrument. -- -- Returns the number of active instances of an instrument with options -- to ignore releasing instances. -- --
--   ir  active  insnum [,iopt [,inorel]]
--   ir  active  Sinsname [,iopt [,inorel]]
--   kres  active  kinsnum [,iopt [,inorel]]
--   
-- -- csound doc: http://csound.com/docs/manual/active.html active :: D -> Sig -- | Issues one or more score line events from an instrument at i-time. -- -- 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  Sin
--   
-- -- csound doc: http://csound.com/docs/manual/scoreline_i.html scoreline_i :: Str -> SE () -- | Issues one or more score line events from an instrument. -- -- 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  Sin, ktrig
--   
-- -- csound doc: http://csound.com/docs/manual/scoreline.html scoreline :: Str -> Sig -> SE () -- | Adds a new score event. -- --
--   schedwhen  ktrigger, kinsnum, kwhen, kdur [, ip4] [, ip5] [...]
--   schedwhen  ktrigger, "insname", kwhen, kdur [, ip4] [, ip5] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/schedwhen.html schedwhen :: Sig -> Sig -> Sig -> Sig -> SE () -- | Adds a new score event. -- --
--   schedule  insnum, iwhen, idur [, ip4] [, ip5] [...]
--   schedule  "insname", iwhen, idur [, ip4] [, ip5] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/schedule.html schedule :: D -> D -> D -> SE () -- | Similar to schedkwhen but uses a named instrument at init-time. -- --
--   schedkwhennamed  ktrigger, kmintim, kmaxnum, "name", kwhen, kdur \
--            [, ip4] [, ip5] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/schedkwhennamed.html schedkwhennamed :: Sig -> Sig -> Sig -> Str -> Sig -> Sig -> SE () -- | Adds a new score event generated by a k-rate trigger. -- --
--   schedkwhen  ktrigger, kmintim, kmaxnum, kinsnum, kwhen, kdur \
--            [, ip4] [, ip5] [...]
--   schedkwhen  ktrigger, kmintim, kmaxnum, "insname", kwhen, kdur \
--            [, ip4] [, ip5] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/schedkwhen.html schedkwhen :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Removes the definition of an instrument. -- -- Removes the definition of an instrument as long as it is not in use. -- --
--   remove  insnum
--   
-- -- csound doc: http://csound.com/docs/manual/remove.html remove :: D -> SE () -- | Read, preprocess and schedule a score from an input string. -- -- Readscore will issue one or more score events. It can handle strings -- in the same conditions as the standard score, including preprocessing -- (carry, sort, ramp, etc). Multi-line strings are accepted, using {{ }} -- to enclose the string. -- --
--   readscore  Sin 
--   
-- -- csound doc: http://csound.com/docs/manual/readscore.html readscore :: Str -> SE () -- | Schedules a new instrument instance, storing the instance handle in a -- variable. -- -- Schedules a new instrument nstance, returning a handle that can be -- used later to refer directly to the running nstance. This opcode is -- similar to schedule, but has the added facility of retrieving the -- nstance handle. -- --
--   iHandle  nstance  insnum, iwhen, idur [, ip4] [, ip5] [...]
--   iHandle  nstance  "insname", iwhen, idur [, ip4] [, ip5] [...]
--   
-- -- csound doc: http://csound.com/docs/manual/nstance.html nstance :: D -> D -> D -> D -- | Mutes/unmutes new instances of a given instrument. -- --
--   mute  insnum [, iswitch]
--   mute  "insname" [, iswitch]
--   
-- -- csound doc: http://csound.com/docs/manual/mute.html mute :: D -> SE () -- | Generates a score event from an instrument. -- --
--   event_i  "scorechar", iinsnum, idelay, idur, [, ip4] [, ip5] [, ...]
--   event_i  "scorechar", "insname", idelay, idur, [, ip4] [, ip5] [, ...]
--   
-- -- csound doc: http://csound.com/docs/manual/event_i.html event_i :: Str -> D -> D -> D -> [D] -> SE () -- | Generates a score event from an instrument. -- --
--   event  "scorechar", kinsnum, kdelay, kdur, [, kp4] [, kp5] [, ...]
--   event  "scorechar", "insname", kdelay, kdur, [, kp4] [, kp5] [, ...]
--   
-- -- csound doc: http://csound.com/docs/manual/event.html event :: Str -> Sig -> Sig -> Sig -> [Sig] -> SE () -- | Activate an instrument for an indefinite time. -- --
--   turnon  insnum [, itime]
--   
-- -- csound doc: http://csound.com/docs/manual/turnon.html turnon :: D -> SE () -- | Enables an instrument to turn itself off or to turn an instance of -- another instrument off. -- --
--   turnoff 
--   turnoff  inst
--   turnoff  knst
--   
-- -- csound doc: http://csound.com/docs/manual/turnoff.html turnoff :: SE () -- | Creates a held note. -- -- Causes a finite-duration note to become a “held” note -- --
--   ihold 
--   
-- -- csound doc: http://csound.com/docs/manual/ihold.html ihold :: SE () -- | Evalstrs evaluates a string containing Csound code, returning a value. -- -- Evalstr compiles and runs Csound code and returns a value from the -- global space (instr 0). This opcode can be also used to compile new -- instruments (as compilestr). -- --
--   ires  evalstr  Scode 
--   kres  evalstr  Scode, ktrig 
--   
-- -- csound doc: http://csound.com/docs/manual/evalstr.html evalstr :: Str -> Sig -- | compiles a new orchestra passed in as an ASCII string -- -- Compilestr will compile one or more instruments at init time, which -- will be added to the running engine. In case of existing instrument -- numbers or names, these will be replaced, but any instance still -- running of the old instrument definition will still perform until it -- terminates. Only new instances will use the new definition. Multi-line -- strings are accepted, using {{ }} to enclose the string. -- --
--   ires  compilestr  Sorch
--   
-- -- csound doc: http://csound.com/docs/manual/compilestr.html compilestr :: Str -> D -- | compiles a new orchestra from an ASCII file -- -- Compileorc will compile one or more instruments at init time, which -- will be added to the running engine. In case of existing instrument -- numbers or names, these will be replaced, but any instance still -- running of the old instrument definition will still perform until it -- terminates. -- --
--   ires  compileorc  Sfilename
--   
-- -- csound doc: http://csound.com/docs/manual/compileorc.html compileorc :: Str -> D -- | compiles a new orchestra from an ASCII file -- -- Compilecsd will read a CSD file and compile one or more instruments at -- init time, which will be added to the running engine. In case of -- existing instrument numbers or names, these will be replaced, but any -- instance still running of the old instrument definition will still -- perform until it terminates. In addition, it will read the score (if -- it exists) contained in the CSD file and add it to the list of events -- to be performed by Csound. The opcode ignores any section in the CSD -- file that is not the orchestra or the score. -- --
--   ires  compilecsd  Sfilename
--   
-- -- csound doc: http://csound.com/docs/manual/compilecsd.html compilecsd :: Str -> D -- | Starts one of a number of internal clocks. -- --
--   clockon  inum
--   
-- -- csound doc: http://csound.com/docs/manual/clockon.html clockon :: D -> SE () -- | Stops one of a number of internal clocks. -- --
--   clockoff  inum
--   
-- -- csound doc: http://csound.com/docs/manual/clockoff.html clockoff :: D -> SE () -- | Return the width and height of a previously opened or created image. -- -- 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. -- --
--   iwidth, iheight  imagesize  iimagenum
--   
-- -- csound doc: http://csound.com/docs/manual/imagesize.html imagesize :: D -> (D, D) -- | Set the RGB value of a pixel inside a previously opened or created -- image. -- -- Set the RGB value of a pixel inside a previously opened or created -- image. An image can be loaded with imageload. An empty image can be -- created with imagecreate and saved with imagesave. -- --
--   imagesetpixel  iimagenum, ax, ay, ared, agreen, ablue
--   imagesetpixel  iimagenum, kx, ky, kred, kgreen, kblue
--   
-- -- csound doc: http://csound.com/docs/manual/imagesetpixel.html imagesetpixel :: D -> Sig -> Sig -> Sig -> Sig -> Sig -> SE () -- | Save a previously created image. -- -- Save a previously created image. An empty image can be created with -- imagecreate and its pixel RGB values can be set with imagesetpixel. -- The image will be saved in PNG format. -- --
--   imagesave  iimagenum, filename
--   
-- -- csound doc: http://csound.com/docs/manual/imagesave.html imagesave :: D -> Spec -> SE () -- | Load an image. -- -- Load an image and return a reference to it. Individual pixel values -- can then be accessed with imagegetpixel. -- --
--   iimagenum  imageload  filename
--   
-- -- csound doc: http://csound.com/docs/manual/imageload.html imageload :: Spec -> SE D -- | Return the RGB pixel values of a previously opened or created image. -- -- 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. -- --
--   ared, agreen, ablue  imagegetpixel  iimagenum, ax, ay
--   kred, kgreen, kblue  imagegetpixel  iimagenum, kx, ky
--   
-- -- csound doc: http://csound.com/docs/manual/imagegetpixel.html imagegetpixel :: D -> Sig -> Sig -> (Sig, Sig, Sig) -- | Frees memory allocated for a previously loaded or created image. -- --
--   imagefree  iimagenum
--   
-- -- csound doc: http://csound.com/docs/manual/imagefree.html imagefree :: D -> SE () -- | Create an empty image of a given size. -- -- Create an empty image of a given size. Individual pixel values can -- then be set with. imagegetpixel. -- --
--   iimagenum  imagecreate  iwidth, iheight
--   
-- -- csound doc: http://csound.com/docs/manual/imagecreate.html imagecreate :: D -> D -> SE D -- | Adjusts a given control in a Faust DSP instance. -- -- Faustctl will set a given control in a running faust program -- --
--   faustctl  idsp,Scontrol,kval 
--   
-- -- csound doc: http://csound.com/docs/manual/faustctl.html faustctl :: D -> Str -> Sig -> SE () -- | Restores the visibility of a previously hidden FLTK widget. -- -- FLshow restores the visibility of a previously hidden widget. -- --
--   FLshow  ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLshow.html flShow :: D -> SE () -- | Sets some font attributes of the text label of a FLTK widget. -- -- FLsetTextType sets some attributes related to the fonts of the text -- label of the target widget. -- --
--   FLsetTextType  itype, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetTextType.html flSetTextType :: D -> D -> SE () -- | Sets the size of the text label of a FLTK widget. -- -- FLsetTextSize sets the size of the text label of the target widget. -- --
--   FLsetTextSize  isize, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetTextSize.html flSetTextSize :: D -> D -> SE () -- | Sets the color of the text label of a FLTK widget. -- -- FLsetTextColor sets the color of the text label of the target widget. -- --
--   FLsetTextColor  ired, iblue, igreen, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetTextColor.html flSetTextColor :: D -> D -> D -> D -> SE () -- | Sets the label of a FLTK widget. -- -- FLsetText sets the label of the target widget to the double-quoted -- text string provided with the itext argument. -- --
--   FLsetText  "itext", ihandle
--   FLsetText  istr, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetText.html flSetText :: Str -> D -> SE () -- | Resizes a FLTK widget. -- -- FLsetSize resizes the target widget (not the size of its text) -- according to the iwidth and iheight arguments. -- --
--   FLsetSize  iwidth, iheight, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetSize.html flSetSize :: D -> D -> D -> SE () -- | Sets the position of a FLTK widget. -- -- FLsetPosition sets the position of the target widget according to the -- ix and iy arguments. -- --
--   FLsetPosition  ix, iy, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetPosition.html flSetPosition :: D -> D -> D -> SE () -- | Sets the font type of a FLTK widget. -- -- FLsetFont sets the font type of the target widget. -- --
--   FLsetFont  ifont, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetFont.html flSetFont :: D -> D -> SE () -- | Sets the secondary (or selection) color of a FLTK widget. -- -- FLsetColor2 sets the secondary (or selection) color of the target -- widget. -- --
--   FLsetColor2  ired, igreen, iblue, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetColor2.html flSetColor2 :: D -> D -> D -> D -> SE () -- | Sets the primary color of a FLTK widget. -- -- FLsetColor sets the primary color of the target widget. -- --
--   FLsetColor  ired, igreen, iblue, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetColor.html flSetColor :: D -> D -> D -> D -> SE () -- | Sets the appearance of a box surrounding a FLTK widget. -- -- FLsetBox sets the appearance of a box surrounding the target widget. -- --
--   FLsetBox  itype, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetBox.html flSetBox :: D -> D -> SE () -- | Sets the text alignment of a label of a FLTK widget. -- -- FLsetAlign sets the text alignment of the label of the target widget. -- --
--   FLsetAlign  ialign, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetAlign.html flSetAlign :: D -> D -> SE () -- | A FLTK opcode that modifies the appearance of a text label. -- -- 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  isize, ifont, ialign, ired, igreen, iblue
--   
-- -- csound doc: http://csound.com/docs/manual/FLlabel.html flLabel :: D -> D -> D -> D -> D -> D -> SE () -- | Hides the target FLTK widget. -- -- Hides the target FLTK widget, making it invisible. -- --
--   FLhide  ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLhide.html flHide :: D -> SE () -- | A FLTK opcode that sets the secondary (selection) color. -- -- FLcolor2 is the same of FLcolor except it affects the secondary -- (selection) color. -- --
--   FLcolor2  ired, igreen, iblue
--   
-- -- csound doc: http://csound.com/docs/manual/FLcolor2.html flColor2 :: D -> D -> D -> SE () -- | A FLTK opcode that sets the primary colors. -- -- Sets the primary colors to RGB values given by the user. -- --
--   FLcolor  ired, igreen, iblue [, ired2, igreen2, iblue2]
--   
-- -- csound doc: http://csound.com/docs/manual/FLcolor.html flColor :: D -> D -> D -> SE () -- | Allows one-dimensional HVS (Hyper-Vectorial Synthesis). -- -- vphaseseg allows one-dimensional HVS (Hyper-Vectorial Synthesis). -- --
--   vphaseseg  kphase, ioutab, ielems, itab1,idist1,itab2 \
--            [,idist2,itab3, ... ,idistN-1,itabN]
--   
-- -- csound doc: http://csound.com/docs/manual/vphaseseg.html vphaseseg :: Sig -> D -> D -> [D] -> SE () -- | Senses the mouse cursor position in a user-defined area inside an -- FLpanel. -- -- Similar to xyin, sense the mouse cursor position in a user-defined -- area inside an FLpanel. -- --
--   koutx, kouty, kinside   FLxyin  ioutx_min, ioutx_max, iouty_min, iouty_max, \
--             iwindx_min, iwindx_max, iwindy_min, iwindy_max [, iexpx, iexpy, ioutx, iouty]
--   
-- -- csound doc: http://csound.com/docs/manual/FLxyin.html flXyin :: D -> D -> D -> D -> D -> D -> D -> D -> SE (Sig, Sig, Sig) -- | A FLTK widget containing a bank of vertical sliders. -- -- FLvslidBnk2 is a widget containing a bank of vertical sliders. -- --
--   FLvslidBnk2  "names", inumsliders, ioutable, iconfigtable [,iwidth, iheight, ix, iy, istart_index]
--   
-- -- csound doc: http://csound.com/docs/manual/FLvslidBnk2.html flVslidBnk2 :: Str -> D -> D -> D -> SE () -- | A FLTK widget containing a bank of vertical sliders. -- -- FLvslidBnk is a widget containing a bank of vertical sliders. -- --
--   FLvslidBnk  "names", inumsliders [, ioutable] [, iwidth] [, iheight] [, ix] \
--            [, iy] [, itypetable] [, iexptable] [, istart_index] [, iminmaxtable]
--   
-- -- csound doc: http://csound.com/docs/manual/FLvslidBnk.html flVslidBnk :: Str -> D -> SE () -- | An FLTK widget opcode that creates a virtual keyboard widget. -- -- An FLTK widget opcode that creates a virtual keyboard widget. This -- must be used in conjunction with the virtual midi keyboard driver for -- this to operate correctly. The purpose of this opcode is for making -- demo versions of MIDI orchestras with the virtual keyboard embedded -- within the main window. -- --
--   FLvkeybd  "keyboard.map", iwidth, iheight, ix, iy
--   
-- -- csound doc: http://csound.com/docs/manual/FLvkeybd.html flVkeybd :: Str -> D -> D -> D -> D -> SE () -- | Shows the current value of a FLTK valuator. -- -- FLvalue shows current the value of a valuator in a text field. -- --
--   ihandle  FLvalue  "label", iwidth, iheight, ix, iy
--   
-- -- csound doc: http://csound.com/docs/manual/FLvalue.html flValue :: Str -> D -> D -> D -> D -> SE D -- | Same as the FLrun opcode. -- --
--   FLupdate 
--   
-- -- csound doc: http://csound.com/docs/manual/FLupdate.html flUpdate :: SE () -- | modify the values of a slider bank. -- -- FLslidBnkSetk modifies the values of a slider bank according to an -- array of values stored in a table. -- --
--   FLslidBnkSetk   ktrig, ihandle, ifn [, istartIndex, istartSlid, inumSlid]
--   
-- -- csound doc: http://csound.com/docs/manual/FLslidBnkSetk.html flSlidBnkSetk :: Sig -> D -> Tab -> SE () -- | modify the values of a slider bank. -- -- FLslidBnkSet modifies the values of a slider bank according to an -- array of values stored in a table. -- --
--   FLslidBnkSet  ihandle, ifn [, istartIndex, istartSlid, inumSlid]
--   
-- -- csound doc: http://csound.com/docs/manual/FLslidBnkSet.html flSlidBnkSet :: D -> Tab -> SE () -- | gets the handle of last slider bank created. -- -- FLslidBnkGetHandle gets the handle of last slider bank created. -- --
--   ihandle  FLslidBnkGetHandle 
--   
-- -- csound doc: -- http://csound.com/docs/manual/FLslidBnkGetHandle.html flSlidBnkGetHandle :: SE D -- | modify the values of a slider bank. -- -- FLslidBnk2Setk modifies the values of a slider bank according to an -- array of values stored in a table. -- --
--   FLslidBnk2Setk   ktrig, ihandle, ifn [, istartIndex, istartSlid, inumSlid]
--   
-- -- csound doc: http://csound.com/docs/manual/FLslidBnk2Setk.html flSlidBnk2Setk :: Sig -> D -> Tab -> SE () -- | modify the values of a slider bank. -- -- FLslidBnk2Set modifies the values of a slider bank according to an -- array of values stored in a table. -- --
--   FLslidBnk2Set  ihandle, ifn [, istartIndex, istartSlid, inumSlid]
--   
-- -- csound doc: http://csound.com/docs/manual/FLslidBnk2Set.html flSlidBnk2Set :: D -> Tab -> SE () -- | A FLTK widget containing a bank of horizontal sliders. -- -- FLslidBnk2 is a widget containing a bank of horizontal sliders. -- --
--   FLslidBnk2  "names", inumsliders, ioutable, iconfigtable [,iwidth, iheight, ix, iy, istart_index] 
--   FLslidBnk2  istring, inumsliders, ioutable, iconfigtable [,iwidth, iheight, ix, iy, istart_index] 
--   
-- -- csound doc: http://csound.com/docs/manual/FLslidBnk2.html flSlidBnk2 :: Str -> D -> D -> D -> SE () -- | A FLTK widget containing a bank of horizontal sliders. -- -- FLslidBnk is a widget containing a bank of horizontal sliders. -- --
--   FLslidBnk  "names", inumsliders [, ioutable] [, iwidth] [, iheight] [, ix] \
--            [, iy] [, itypetable] [, iexptable] [, istart_index] [, iminmaxtable]
--   
-- -- csound doc: http://csound.com/docs/manual/FLslidBnk.html flSlidBnk :: Str -> D -> SE () -- | Sets the value of a FLTK valuator to a number provided by the user. -- -- FLsetVal_i forces the value of a valuator to a number provided by the -- user. -- --
--   FLsetVal_i  ivalue, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetVal_i.html flSetVal_i :: D -> D -> SE () -- | Sets the value of a FLTK valuator at control-rate. -- -- 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  ktrig, kvalue, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetVal.html flSetVal :: Sig -> Sig -> D -> SE () -- | Determines the snapshot group for FL valuators. -- -- FLsetSnapGroup determines the snapshot group of valuators declared -- after it. -- --
--   FLsetSnapGroup  igroup
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetSnapGroup.html flSetSnapGroup :: D -> SE () -- | Stores the current status of all FLTK valuators into a snapshot -- location. -- -- FLsetsnap stores the current status of all valuators present in the -- orchestra into a snapshot location (in memory). -- --
--   inumsnap, inumval  FLsetsnap  index [, ifn, igroup]
--   
-- -- csound doc: http://csound.com/docs/manual/FLsetsnap.html flSetsnap :: D -> SE (D, D) -- | Saves all snapshots currently created into a file. -- -- FLsavesnap saves all snapshots currently created (i.e. the entire -- memory bank) into a file. -- --
--   FLsavesnap  "filename" [, igroup]
--   
-- -- csound doc: http://csound.com/docs/manual/FLsavesnap.html flSavesnap :: Str -> SE () -- | Starts the FLTK widget thread. -- --
--   FLrun 
--   
-- -- csound doc: http://csound.com/docs/manual/FLrun.html flRun :: SE () -- | A FLTK opcode that prints a new value every time a control-rate -- variable changes. -- -- FLprintk2 is similar to FLprintk but shows a k-rate variable's value -- only when it changes. -- --
--   FLprintk2  kval, idisp
--   
-- -- csound doc: http://csound.com/docs/manual/FLprintk2.html flPrintk2 :: Sig -> D -> SE () -- | A FLTK opcode that prints a k-rate value at specified intervals. -- -- FLprintk is similar to printk but shows values of a k-rate signal in a -- text field instead of on the console. -- --
--   FLprintk  itime, kval, idisp
--   
-- -- csound doc: http://csound.com/docs/manual/FLprintk.html flPrintk :: D -> Sig -> D -> SE () -- | Returns the mouse position and the state of the three mouse buttons. -- -- FLmouse returns the coordinates of the mouse position within an FLTK -- panel and the state of the three mouse buttons. -- --
--   kx, ky, kb1, kb2, kb3  FLmouse  [imode]
--   
-- -- csound doc: http://csound.com/docs/manual/FLmouse.html flMouse :: Tuple a => SE a -- | Loads all snapshots into the memory bank of the current orchestra. -- -- FLloadsnap loads all the snapshots contained in a file into the memory -- bank of the current orchestra. -- --
--   FLloadsnap  "filename" [, igroup]
--   
-- -- csound doc: http://csound.com/docs/manual/FLloadsnap.html flLoadsnap :: Str -> SE () -- | Reports keys pressed (on alphanumeric keyboard) when an FLTK panel has -- focus. -- -- FLkeyIn informs about the status of a key pressed by the user on the -- alphanumeric keyboard when an FLTK panel has got the focus. -- --
--   kascii  FLkeyIn  [ifn]
--   
-- -- csound doc: http://csound.com/docs/manual/FLkeyIn.html flKeyIn :: SE Sig -- | Sets the cursor position of a previously-declared FLhvsBox widget. -- -- FLhvsBoxSetValue sets the cursor position of a previously-declared -- FLhvsBox widget. -- --
--   FLhvsBoxSetValue  kx, ky, ihandle
--   
-- -- csound doc: http://csound.com/docs/manual/FLhvsBoxSetValue.html flHvsBoxSetValue :: Sig -> Sig -> D -> SE () -- | Displays a box with a grid useful for visualizing two-dimensional -- Hyper Vectorial Synthesis. -- -- FLhvsBox displays a box with a grid useful for visualizing -- two-dimensional Hyper Vectorial Synthesis. -- --
--   ihandle  FLhvsBox  inumlinesX, inumlinesY, iwidth, iheight, ix, iy
--   
-- -- csound doc: http://csound.com/docs/manual/FLhvsBox.html flHvsBox :: D -> D -> D -> D -> D -> D -> SE D -- | Retrieves a previously stored FLTK snapshot. -- -- Retrieves a previously stored snapshot (in memory), i.e. sets all -- valuator to the corresponding values stored in that snaphot. -- --
--   inumsnap  FLgetsnap  index [, igroup]
--   
-- -- csound doc: http://csound.com/docs/manual/FLgetsnap.html flGetsnap :: D -> SE D -- | A FLTK widget opcode that creates a button that executes a command. -- -- A FLTK widget opcode that creates a button that executes a command. -- Useful for opening up HTML documentation as About text or to start a -- separate program from an FLTK widget interface. -- --
--   ihandle  FLexecButton  "command", iwidth, iheight, ix, iy
--   
-- -- csound doc: http://csound.com/docs/manual/FLexecButton.html flExecButton :: Str -> D -> D -> D -> D -> SE D -- | A FLTK widget opcode that creates a button that will close the panel -- window it is a part of. -- --
--   ihandle  FLcloseButton  "label", iwidth, iheight, ix, iy
--   
-- -- csound doc: http://csound.com/docs/manual/FLcloseButton.html flCloseButton :: Str -> D -> D -> D -> D -> SE D -- | A FLTK widget opcode that creates a button. -- --
--   kout, ihandle  FLbutton  "label", ion, ioff, itype, iwidth, iheight, ix, \
--             iy, iopcode [, kp1] [, kp2] [, kp3] [, kp4] [, kp5] [....] [, kpN]
--   
-- -- csound doc: http://csound.com/docs/manual/FLbutton.html flButton :: Str -> D -> D -> D -> D -> D -> D -> D -> D -> SE (Sig, D) -- | A FLTK widget opcode that creates a bank of buttons. -- --
--   kout, ihandle  FLbutBank  itype, inumx, inumy, iwidth, iheight, ix, iy, \
--             iopcode [, kp1] [, kp2] [, kp3] [, kp4] [, kp5] [....] [, kpN]
--   
-- -- csound doc: http://csound.com/docs/manual/FLbutBank.html flButBank :: D -> D -> D -> D -> D -> D -> D -> D -> SE (Sig, D) -- | A FLTK widget that displays text inside of a box. -- --
--   ihandle  FLbox  "label", itype, ifont, isize, iwidth, iheight, ix, iy [, image]
--   ihandle  FLbox  istr, itype, ifont, isize, iwidth, iheight, ix, iy [, image]
--   
-- -- csound doc: http://csound.com/docs/manual/FLbox.html flBox :: Str -> D -> D -> D -> D -> D -> D -> D -> SE D -- | A FLTK widget opcode that creates a textbox. -- -- FLtext allows the user to modify a parameter value by directly typing -- it into a text field. -- --
--   kout, ihandle  FLtext  "label", imin, imax, istep, itype, iwidth, \
--             iheight, ix, iy
--   
-- -- csound doc: http://csound.com/docs/manual/FLtext.html flText :: Str -> D -> D -> D -> D -> D -> D -> D -> D -> SE (Sig, D) -- | Puts a slider into the corresponding FLTK container. -- -- FLslider puts a slider into the corresponding container. -- --
--   kout, ihandle  FLslider  "label", imin, imax, iexp, itype, idisp, iwidth, \
--             iheight, ix, iy
--   
-- -- csound doc: http://csound.com/docs/manual/FLslider.html flSlider :: Str -> D -> D -> D -> D -> D -> D -> D -> D -> D -> SE (Sig, D) -- | A FLTK widget that creates a transversal knob. -- -- FLroller is a sort of knob, but put transversally. -- --
--   kout, ihandle  FLroller  "label", imin, imax, istep, iexp, itype, idisp, \
--             iwidth, iheight, ix, iy
--   
-- -- csound doc: http://csound.com/docs/manual/FLroller.html flRoller :: Str -> D -> D -> D -> D -> D -> D -> D -> D -> D -> D -> SE (Sig, D) -- | A FLTK widget opcode that creates a knob. -- --
--   kout, ihandle  FLknob  "label", imin, imax, iexp, itype, idisp, iwidth, \
--             ix, iy [, icursorsize]
--   
-- -- csound doc: http://csound.com/docs/manual/FLknob.html flKnob :: Str -> D -> D -> D -> D -> D -> D -> D -> D -> SE (Sig, D) -- | A FLTK opcode that acts like a joystick. -- -- FLjoy is a squared area that allows the user to modify two output -- values at the same time. It acts like a joystick. -- --
--   koutx, kouty, ihandlex, ihandley  FLjoy  "label", iminx, imaxx, iminy, \
--             imaxy, iexpx, iexpy, idispx, idispy, iwidth, iheight, ix, iy
--   
-- -- csound doc: http://csound.com/docs/manual/FLjoy.html flJoy :: Str -> D -> D -> D -> D -> D -> D -> D -> D -> D -> D -> D -> D -> SE (Sig, Sig, D, D) -- | A FLTK widget opcode that creates a counter. -- -- Allows the user to increase/decrease a value with mouse clicks on a -- corresponding arrow button. -- --
--   kout, ihandle  FLcount  "label", imin, imax, istep1, istep2, itype, \
--             iwidth, iheight, ix, iy, iopcode [, kp1] [, kp2] [, kp3] [...] [, kpN]
--   
-- -- csound doc: http://csound.com/docs/manual/FLcount.html flCount :: Str -> D -> D -> D -> D -> D -> D -> D -> D -> D -> D -> SE (Sig, D) -- | Marks the end of a tabbed FLTK interface. -- --
--   FLtabsEnd 
--   
-- -- csound doc: http://csound.com/docs/manual/FLtabsEnd.html flTabsEnd :: SE () -- | Creates a tabbed FLTK interface. -- -- 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  iwidth, iheight, ix, iy
--   
-- -- csound doc: http://csound.com/docs/manual/FLtabs.html flTabs :: D -> D -> D -> D -> SE () -- | A FLTK opcode that marks the end of an area with scrollbars. -- --
--   FLscrollEnd 
--   
-- -- csound doc: http://csound.com/docs/manual/FLscrollEnd.html flScrollEnd :: SE () -- | A FLTK opcode that adds scroll bars to an area. -- -- FLscroll adds scroll bars to an area. -- --
--   FLscroll  iwidth, iheight [, ix] [, iy]
--   
-- -- csound doc: http://csound.com/docs/manual/FLscroll.html flScroll :: D -> D -> SE () -- | Marks the end of a group of FLTK widgets contained inside of a window -- (panel). -- --
--   FLpanelEnd 
--   
-- -- csound doc: http://csound.com/docs/manual/FLpanelEnd.html flPanelEnd :: SE () -- | Creates a window that contains FLTK widgets. -- --
--   FLpanel  "label", iwidth, iheight [, ix] [, iy] [, iborder] [, ikbdcapture] [, iclose]
--   
-- -- csound doc: http://csound.com/docs/manual/FLpanel.html flPanel :: Str -> D -> D -> SE () -- | Marks the end of a group of compressed or aligned FLTK widgets. -- --
--   FLpackEnd 
--   
-- -- csound doc: http://csound.com/docs/manual/FLpackEnd.html flPackEnd :: SE () -- | Provides the functionality of compressing and aligning FLTK widgets. -- -- FLpack provides the functionality of compressing and aligning widgets. -- --
--   FLpack  iwidth, iheight, ix, iy, itype, ispace, iborder
--   
-- -- csound doc: http://csound.com/docs/manual/FLpack.html flPack :: D -> D -> D -> D -> D -> D -> D -> SE () -- | Marks the end of a group of FLTK child widgets. -- --
--   FLgroupEnd 
--   
-- -- csound doc: http://csound.com/docs/manual/FLgroupEnd.html flGroupEnd :: SE () -- | A FLTK container opcode that groups child widgets. -- --
--   FLgroup  "label", iwidth, iheight, ix, iy [, iborder] [, image]
--   
-- -- csound doc: http://csound.com/docs/manual/FLgroup.html flGroup :: Str -> D -> D -> D -> D -> SE () -- | Sets the tempo. -- -- Sets the local tempo if this peer is not enabled; sets the tempo of -- the global network Ableton Link session if this peer is enabled. -- --
--   link_tempo_set  i_peer, k_bpm [, k_at_time_seconds]
--   
-- -- csound doc: http://csound.com/docs/manual/link_tempo_set.html link_tempo_set :: D -> Sig -> SE () -- | Returns the current tempo of the global network Ableton Link session. -- --
--   k_bpm  link_tempo_get  i_peer
--   
-- -- csound doc: http://csound.com/docs/manual/link_tempo_get.html link_tempo_get :: D -> Sig -- | Returns the number of peers in the session. -- -- Returns the number of peers in the global network Ableton Link -- session. -- --
--   k_count  link_peers  i_peer
--   
-- -- csound doc: http://csound.com/docs/manual/link_peers.html link_peers :: D -> Sig -- | Returns a trigger that is 1 on the beat and 0 otherwise along with -- beat, phase, and time for this session of Ableton Link. -- -- Returns a trigger that is 1 on the beat and 0 otherwise along with the -- beat, phase, and current time of Ableton Link for this session for a -- given quantum. -- --
--   k_trigger, k_beat, k_phase, k_current_time_seconds  link_metro  i_peer [, k_quantum]
--   
-- -- csound doc: http://csound.com/docs/manual/link_metro.html link_metro :: D -> (Sig, Sig, Sig, Sig) -- | Returns whether or not this peer is synchronized with the global -- network Ableton Link session. -- -- Returns whether or not the beat and time of his peer are synchronized -- with the global network Ableton Link session. -- --
--   k_is_enabled  link_is_enabled  i_peer
--   
-- -- csound doc: http://csound.com/docs/manual/link_is_enabled.html link_is_enabled :: D -> Sig -- | Enable or disable synchronization with the Ableton Link session. -- -- Enable or disable synchronization with the global network Ableton Link -- session tempo and beat. -- --
--   ableton_link_enable  i_peer [, k_enable]
--   
-- -- csound doc: http://csound.com/docs/manual/link_enable.html ableton_link_enable :: D -> SE () -- | Creates a peer in an Ableton Link network session. -- -- Creates a peer in an Ableton Link network session. The first peer in a -- session determines the initial tempo of the session. The value -- returned must be passed as the first parameter to all subsequent -- Ableton Link opcode calls for this peer. -- --
--   i_peer  link_create  [i_bpm]
--   
-- -- csound doc: http://csound.com/docs/manual/link_create.html link_create :: D -- | Requests the global network Ableton Link session to adopt a specific -- beat number and time. -- --
--   link_beat_request   i_peer, k_beat [, k_at_time_seconds  [, k_quantum ]] 
--   
-- -- csound doc: -- http://csound.com/docs/manual/link_beat_request.html link_beat_request :: D -> Sig -> SE () -- | Returns the beat, phase with respect to the local quantum, and current -- time for the session. -- -- Returns the beat number, phase of the beat with respect to the local -- quantum of the beat, and current time for the global network Ableton -- Link session. -- --
--   k_beat_number, k_phase, k_current_time_seconds  link_beat_get  i_peer [, k_quantum]
--   
-- -- csound doc: http://csound.com/docs/manual/link_beat_get.html link_beat_get :: D -> (Sig, Sig, Sig) -- | Forces the global network Ableton Link session to adopt a specific -- beat number and time. -- -- Forces the global network Ableton Link session to adopt a specific -- beat number and time, like a conductor stopping an orchestra and -- immediately starting it again. -- --
--   link_beat_force   i_peer, k_beat [, k_at_time_seconds  [, k_quantum ]] 
--   
-- -- csound doc: http://csound.com/docs/manual/link_beat_force.html link_beat_force :: D -> Sig -> SE ()