-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Implementation of SuperCollider server specifications
--   
--   An interface-agnostic implementation of specs for SuperCollider server
--   types and commands. - Server Command Reference - Synth Definition File
--   Format
--   
--   Note this is an in-progress (incomplete) implementation. Currently
--   only the server commands needed for the "vivid" package are supported.
@package vivid-supercollider
@version 0.4.1.2

module Vivid.SC.Server.Types
newtype NodeId
NodeId :: Int32 -> NodeId
[_unNodeId] :: NodeId -> Int32
newtype BufferId
BufferId :: Int32 -> BufferId
[_unBufferId] :: BufferId -> Int32
newtype SyncId
SyncId :: Int32 -> SyncId
[_unSyncId] :: SyncId -> Int32
newtype Group
Group :: NodeId -> Group
[_unGroup] :: Group -> NodeId
newtype ParGroup
ParGroup :: NodeId -> ParGroup
[_unParGroup] :: ParGroup -> NodeId
instance GHC.Classes.Ord Vivid.SC.Server.Types.ParGroup
instance GHC.Classes.Eq Vivid.SC.Server.Types.ParGroup
instance GHC.Read.Read Vivid.SC.Server.Types.ParGroup
instance GHC.Show.Show Vivid.SC.Server.Types.ParGroup
instance GHC.Classes.Ord Vivid.SC.Server.Types.Group
instance GHC.Classes.Eq Vivid.SC.Server.Types.Group
instance GHC.Read.Read Vivid.SC.Server.Types.Group
instance GHC.Show.Show Vivid.SC.Server.Types.Group
instance GHC.Classes.Ord Vivid.SC.Server.Types.SyncId
instance GHC.Classes.Eq Vivid.SC.Server.Types.SyncId
instance GHC.Read.Read Vivid.SC.Server.Types.SyncId
instance GHC.Show.Show Vivid.SC.Server.Types.SyncId
instance GHC.Read.Read Vivid.SC.Server.Types.BufferId
instance GHC.Classes.Ord Vivid.SC.Server.Types.BufferId
instance GHC.Classes.Eq Vivid.SC.Server.Types.BufferId
instance GHC.Show.Show Vivid.SC.Server.Types.BufferId
instance GHC.Read.Read Vivid.SC.Server.Types.NodeId
instance GHC.Classes.Ord Vivid.SC.Server.Types.NodeId
instance GHC.Classes.Eq Vivid.SC.Server.Types.NodeId
instance GHC.Show.Show Vivid.SC.Server.Types.NodeId

module Vivid.SC.SynthDef.Types

-- | Binary signal operations. For the simple ones (like <a>Add</a>,
--   <a>Mul</a>, etc.), there are functions (like <a>~+</a>, <a>~*</a>,
--   etc.) that wrap them up so you don't have to make a ugen for them
--   yourself.
--   
--   In the future these may not be exported -- we'll just have functions
--   for all of them.
data BinaryOp
Add :: BinaryOp
Sub :: BinaryOp
Mul :: BinaryOp

-- | Integer division
IDiv :: BinaryOp

-- | Float division
FDiv :: BinaryOp
Mod :: BinaryOp
Eq :: BinaryOp
Ne :: BinaryOp
Lt :: BinaryOp
Gt :: BinaryOp
Le :: BinaryOp
Ge :: BinaryOp
Min :: BinaryOp
Max :: BinaryOp
BitAnd :: BinaryOp
BitOr :: BinaryOp
BitXor :: BinaryOp
Lcm :: BinaryOp
Gcd :: BinaryOp
Round :: BinaryOp
RoundUp :: BinaryOp
Trunc :: BinaryOp
Atan2 :: BinaryOp
Hypot :: BinaryOp
Hypotx :: BinaryOp
Pow :: BinaryOp
ShiftLeft :: BinaryOp
ShiftRight :: BinaryOp
UnsignedShift :: BinaryOp
Fill :: BinaryOp

-- | a * (b + 1) == a * b + a
Ring1 :: BinaryOp

-- | a * b + a + b
Ring2 :: BinaryOp

-- | a * a * b
Ring3 :: BinaryOp

-- | a * a * b - a * b * b
Ring4 :: BinaryOp

-- | a * a - b * b
DifSqr :: BinaryOp

-- | a * a + b * b
SumSqr :: BinaryOp

-- | (a + b) ^ 2
SqrSum :: BinaryOp

-- | (a - b) ^ 2
SqrDif :: BinaryOp

-- | abs(a - b)
AbsDif :: BinaryOp
Thresh :: BinaryOp
AMClip :: BinaryOp
ScaleNeg :: BinaryOp
Clip2 :: BinaryOp
Excess :: BinaryOp
Fold2 :: BinaryOp
Wrap2 :: BinaryOp
FirstArg :: BinaryOp
RandRange :: BinaryOp
ExpRandRange :: BinaryOp
NumBinarySelectors :: BinaryOp

-- | The rate that a UGen computes at
data CalculationRate

-- | constant value
IR :: CalculationRate

-- | control rate
KR :: CalculationRate

-- | audio rate
AR :: CalculationRate

-- | demand rate
DR :: CalculationRate

-- | Unary signal operations. Many of these have functions so you don't
--   need to use this internal representation (e.g. <a>Neg</a> has
--   <tt>neg</tt>, etc).
--   
--   This type might not be exposed in the future.
data UnaryOp
Neg :: UnaryOp
Not :: UnaryOp
IsNil :: UnaryOp
NotNil :: UnaryOp

-- | There's a bug in some SC versions where .bitNot isn't implemented
--   correctly. Vivid backfills it with a fix, so you can use BitNot with
--   any SC version
BitNot :: UnaryOp
Abs :: UnaryOp
AsFloat :: UnaryOp
AsInt :: UnaryOp
Ciel :: UnaryOp
Floor :: UnaryOp
Frac :: UnaryOp
Sign :: UnaryOp
Squared :: UnaryOp
Cubed :: UnaryOp
Sqrt :: UnaryOp
Exp :: UnaryOp
Recip :: UnaryOp
MIDICPS :: UnaryOp
CPSMIDI :: UnaryOp
MIDIRatio :: UnaryOp
RatioMIDI :: UnaryOp
DbAmp :: UnaryOp
AmpDb :: UnaryOp
OctCPS :: UnaryOp
CPSOct :: UnaryOp
Log :: UnaryOp
Log2 :: UnaryOp
Log10 :: UnaryOp
Sin :: UnaryOp
Cos :: UnaryOp
Tan :: UnaryOp
ArcSin :: UnaryOp
ArcCos :: UnaryOp
ArcTan :: UnaryOp
SinH :: UnaryOp
CosH :: UnaryOp
TanH :: UnaryOp
Rand :: UnaryOp
Rand2 :: UnaryOp
LinRand :: UnaryOp
BiLinRand :: UnaryOp
Sum3Rand :: UnaryOp
Distort :: UnaryOp
SoftClip :: UnaryOp
Coin :: UnaryOp
DigitValue :: UnaryOp
Silence :: UnaryOp
Thru :: UnaryOp
RectWindow :: UnaryOp
HanWindow :: UnaryOp
WelchWindow :: UnaryOp
TriWindow :: UnaryOp
Ramp :: UnaryOp
SCurve :: UnaryOp
NumUnarySelectors :: UnaryOp
instance GHC.Enum.Enum Vivid.SC.SynthDef.Types.UnaryOp
instance GHC.Classes.Ord Vivid.SC.SynthDef.Types.UnaryOp
instance GHC.Classes.Eq Vivid.SC.SynthDef.Types.UnaryOp
instance GHC.Show.Show Vivid.SC.SynthDef.Types.UnaryOp
instance GHC.Enum.Enum Vivid.SC.SynthDef.Types.BinaryOp
instance GHC.Classes.Ord Vivid.SC.SynthDef.Types.BinaryOp
instance GHC.Classes.Eq Vivid.SC.SynthDef.Types.BinaryOp
instance GHC.Show.Show Vivid.SC.SynthDef.Types.BinaryOp
instance GHC.Classes.Ord Vivid.SC.SynthDef.Types.CalculationRate
instance GHC.Enum.Enum Vivid.SC.SynthDef.Types.CalculationRate
instance GHC.Classes.Eq Vivid.SC.SynthDef.Types.CalculationRate
instance GHC.Read.Read Vivid.SC.SynthDef.Types.CalculationRate
instance GHC.Show.Show Vivid.SC.SynthDef.Types.CalculationRate


-- | <b>You probably don't need to use this directly</b> -- use
--   <a>Vivid.SynthDef</a> instead
--   
--   This is a representation of how SynthDefs are sent over the wire, as
--   described in the <a>Synth Definition File Format</a> helpfile.
module Vivid.SC.SynthDef.Literally
data LiteralSynthDef
LiteralSynthDef :: ByteString -> [Float] -> [Float] -> [ParamName] -> [UGenSpec] -> [VariantSpec] -> LiteralSynthDef
[_synthDefName] :: LiteralSynthDef -> ByteString
[_synthDefConstants] :: LiteralSynthDef -> [Float]
[_synthDefParameters] :: LiteralSynthDef -> [Float]
[_synthDefParamNames] :: LiteralSynthDef -> [ParamName]
[_synthDefUGens] :: LiteralSynthDef -> [UGenSpec]
[_synthDefVariants] :: LiteralSynthDef -> [VariantSpec]
encodeSynthDefFile :: SynthDefFile -> ByteString
decodeSynthDefFile :: ByteString -> Either String SynthDefFile
encodeLiteralSynthDef :: LiteralSynthDef -> ByteString
decodeLiteralSynthDef :: ByteString -> (LiteralSynthDef, ByteString)
getLiteralSynthDef' :: Get LiteralSynthDef
putLiteralSynthDef' :: LiteralSynthDef -> Put
data UGenSpec
UGenSpec :: ByteString -> CalculationRate -> [InputSpec] -> [OutputSpec] -> Int16 -> UGenSpec
[_uGenSpec_name] :: UGenSpec -> ByteString
[_uGenSpec_calcRate] :: UGenSpec -> CalculationRate
[_uGenSpec_inputs] :: UGenSpec -> [InputSpec]
[_uGenSpec_outputs] :: UGenSpec -> [OutputSpec]
[_uGenSpec_specialIndex] :: UGenSpec -> Int16

-- | These record fields are deprecated as it's a variant -- don't use!
data InputSpec
InputSpec_UGen :: Int32 -> Int32 -> InputSpec
[_inputSpec_uGen_index] :: InputSpec -> Int32
[_inputSpec_uGen_outputIndex] :: InputSpec -> Int32
InputSpec_Constant :: Int32 -> InputSpec
[_inputSpec_constant_index] :: InputSpec -> Int32
data ParamName
ParamName :: ByteString -> Int32 -> ParamName
[_paramName_name] :: ParamName -> ByteString
[_paramName_indexInParamArray] :: ParamName -> Int32
data SynthDefFile
SynthDefFile :: [LiteralSynthDef] -> SynthDefFile
data OutputSpec
OutputSpec :: CalculationRate -> OutputSpec
[_outputSpec_calcRate] :: OutputSpec -> CalculationRate
data VariantSpec
VariantSpec :: ByteString -> [Float] -> VariantSpec
[_variantSpec_name] :: VariantSpec -> ByteString
[_variantSpec_initialParamVals] :: VariantSpec -> [Float]
uOpToSpecialI :: UnaryOp -> Int16
biOpToSpecialI :: BinaryOp -> Int16
specialIToUOp :: Int16 -> UnaryOp
specialIToBiOp :: Int16 -> BinaryOp
sdLitPretty :: LiteralSynthDef -> String
putPString' :: ByteString -> Put

-- | A "pascal format string"
getPString' :: Get ByteString
encodePString :: ByteString -> ByteString
getPString :: ByteString -> (ByteString, ByteString)
getParamName :: ByteString -> (ParamName, ByteString)
getParamName' :: Get ParamName
putParamName' :: ParamName -> Put
encodeParamName :: ParamName -> ByteString
getInputSpec' :: Get InputSpec
putInputSpec' :: InputSpec -> Put
getInputSpec :: ByteString -> (InputSpec, ByteString)
encodeInputSpec :: InputSpec -> ByteString
getOutputSpec' :: Get OutputSpec
putOutputSpec' :: OutputSpec -> Put
getOutputSpec :: ByteString -> (OutputSpec, ByteString)
encodeOutputSpec :: OutputSpec -> ByteString
getCalcRate' :: Get CalculationRate
putCalcRate' :: CalculationRate -> Put
getUGenSpec :: ByteString -> (UGenSpec, ByteString)
getUGenSpec' :: Get UGenSpec
encodeUGenSpec :: UGenSpec -> ByteString
putUGenSpec' :: UGenSpec -> Put
getVariantSpec :: Int32 -> ByteString -> (VariantSpec, ByteString)
getVariantSpec' :: Int32 -> Get VariantSpec
putVariantSpec' :: VariantSpec -> Put
encodeVariantSpec :: VariantSpec -> ByteString
instance GHC.Show.Show Vivid.SC.SynthDef.Literally.SynthDefFile
instance GHC.Classes.Eq Vivid.SC.SynthDef.Literally.LiteralSynthDef
instance GHC.Show.Show Vivid.SC.SynthDef.Literally.LiteralSynthDef
instance GHC.Classes.Eq Vivid.SC.SynthDef.Literally.VariantSpec
instance GHC.Show.Show Vivid.SC.SynthDef.Literally.VariantSpec
instance GHC.Classes.Eq Vivid.SC.SynthDef.Literally.UGenSpec
instance GHC.Show.Show Vivid.SC.SynthDef.Literally.UGenSpec
instance GHC.Classes.Eq Vivid.SC.SynthDef.Literally.OutputSpec
instance GHC.Read.Read Vivid.SC.SynthDef.Literally.OutputSpec
instance GHC.Show.Show Vivid.SC.SynthDef.Literally.OutputSpec
instance GHC.Classes.Eq Vivid.SC.SynthDef.Literally.InputSpec
instance GHC.Read.Read Vivid.SC.SynthDef.Literally.InputSpec
instance GHC.Show.Show Vivid.SC.SynthDef.Literally.InputSpec
instance GHC.Classes.Eq Vivid.SC.SynthDef.Literally.ParamName
instance GHC.Show.Show Vivid.SC.SynthDef.Literally.ParamName

module Vivid.SC.Server.Commands

-- | subsection:: /quit
--   
--   Quit program. Exits the synthesis server.
--   
--   definitionlist:: ## Asynchronous. || Replies to sender with
--   strong::/done:: just before completion. ::
quit :: OSC
dumpOSC :: DumpOSCMode -> OSC

-- | subsection:: /dumpOSC Display incoming OSC messages. table:: ##
--   strong::int:: || code :: Turns on and off printing of the contents of
--   incoming Open Sound Control messages. This is useful when debugging
--   your command stream.
data DumpOSCMode
DumpOSC_Off :: DumpOSCMode
DumpOSC_Parsed :: DumpOSCMode
DumpOSC_Hex :: DumpOSCMode
DumpOSC_ParsedAndHex :: DumpOSCMode

-- | subsection:: /sync Notify when async commands have completed. table::
--   ## strong::int:: || a unique number identifying this command. ::
--   Replies with a strong::/synced:: message when all asynchronous
--   commands received before this one have completed. The reply will
--   contain the sent unique ID.
--   
--   definitionlist:: ## Asynchronous. || Replies to sender with strong::
--   /synced, ID :: when complete. ::
sync :: SyncId -> OSC

-- | subsection:: /clearSched
--   
--   Clear all scheduled bundles. Removes all bundles from the scheduling
--   queue.
clearSched :: OSC

-- | subsection:: /d_recv Receive a synth definition file. table:: ##
--   strong::bytes:: || buffer of data. ## strong::bytes:: || an OSC
--   message to execute upon completion. (optional) :: Loads a file of
--   synth definitions from a buffer in the message. Resident definitions
--   with the same names are overwritten.
--   
--   definitionlist:: ## Asynchronous. || Replies to sender with
--   strong::/done:: when complete. ::
--   
--   Send Synth Definitions to the server.
--   
--   The second argument is an optional message to execute on completion.
d_recv :: [LiteralSynthDef] -> Maybe OSC -> OSC

-- | subsection:: /d_load Load synth definition. table:: ##
--   strong::string:: || pathname of file. Can be a pattern like code::
--   "synthdefs/perc-*" :: ## strong::bytes:: || an OSC message to execute
--   upon completion. (optional) :: Loads a file of synth definitions.
--   Resident definitions with the same names are overwritten.
--   
--   definitionlist:: ## Asynchronous. || Replies to sender with
--   strong::/done:: when complete. ::
d_load :: FilePath -> Maybe OSC -> OSC

-- | subsection:: /d_loadDir Load a directory of synth definitions. table::
--   ## strong::string:: || pathname of directory. ## strong::bytes:: || an
--   OSC message to execute upon completion. (optional) :: Loads a
--   directory of synth definitions files. Resident definitions with the
--   same names are overwritten.
--   
--   definitionlist:: ## Asynchronous. || Replies to sender with
--   strong::/done:: when complete. ::
d_loadDir :: FilePath -> Maybe OSC -> OSC

-- | subsection:: /n_free Delete a node. table:: ## N * strong::int:: ||
--   node ID ::
--   
--   Stops a node abruptly, removes it from its group, and frees its
--   memory. A list of node IDs may be specified. Using this method can
--   cause a click if the node is not silent at the time it is freed.
n_free :: NodeId -> OSC

-- | subsection:: /n_run Turn node on or off. table:: ## N * || table:: ##
--   strong::int:: || node ID ## strong::int:: || run flag :: :: list:: ##
--   If the run flag set to zero then the node will not be executed. ## If
--   the run flag is set back to one, then it will be executed. :: Using
--   this method to start and stop nodes can cause a click if the node is
--   not silent at the time run flag is toggled.
n_run :: NodeId -> Bool -> OSC

-- | subsection:: /n_set Set a node's control value(s). table:: ##
--   strong::int:: || node ID ## N * || table:: ## strong::int:: or
--   strong::string:: || a control index or name ## strong::float:: or
--   strong::int:: || a control value :: ::
--   
--   Takes a list of pairs of control indices and values and sets the
--   controls to those values. If the node is a group, then it sets the
--   controls of every node in the group.
--   
--   This message now supports array type tags ($[ and $]) in the
--   control/value component of the OSC message. Arrayed control values are
--   applied in the manner of n_setn (i.e., sequentially starting at the
--   indexed or named control).
n_set :: NodeId -> [(String, Either Int32 Float)] -> OSC

-- | section:: Synth Commands
--   
--   subsection:: /s_new Create a new synth. table:: ## strong::string:: ||
--   synth definition name ## strong::int:: || synth ID ## strong::int:: ||
--   add action (0,1,2, 3 or 4 see below) ## strong::int:: || add target ID
--   ## N * || table:: ## strong::int:: or strong::string:: || a control
--   index or name ## strong::float:: or strong::int:: or
--   strong::string::|| floating point and integer arguments are
--   interpreted as control value. a symbol argument consisting of the
--   letter <tt>c</tt> or <tt>a</tt> (for control or audio) followed by the
--   bus's index. :: ::
--   
--   Create a new synth from a synth definition, give it an ID, and add it
--   to the tree of nodes. There are four ways to add the node to the tree
--   as determined by the add action argument which is defined as follows:
--   definitionlist:: ## add actions: || table:: ## 0 || add the new node
--   to the the head of the group specified by the add target ID. ## 1 ||
--   add the new node to the the tail of the group specified by the add
--   target ID. ## 2 || add the new node just before the node specified by
--   the add target ID. ## 3 || add the new node just after the node
--   specified by the add target ID. ## 4 || the new node replaces the node
--   specified by the add target ID. The target node is freed. :: ::
addActionInt :: Integral i => AddAction -> i
data AddAction
AddToHead :: AddAction
AddToTail :: AddAction
AddBefore :: AddAction
AddAfter :: AddAction
ReplaceNode :: AddAction
s_new :: ByteString -> NodeId -> AddAction -> NodeId -> [(ByteString, Either Int32 Float)] -> OSC

-- | section:: Group Commands
--   
--   subsection:: /g_new Create a new group. table:: ## N * || table:: ##
--   strong::int:: || new group ID ## strong::int:: || add action (0,1,2, 3
--   or 4 see below) ## strong::int:: || add target ID :: ::
--   
--   Create a new group and add it to the tree of nodes. There are four
--   ways to add the group to the tree as determined by the add action
--   argument which is defined as follows (the same as for
--   strong::/s_new::): definitionlist:: ## add actions: || table:: ## 0 ||
--   add the new group to the the head of the group specified by the add
--   target ID. ## 1 || add the new group to the the tail of the group
--   specified by the add target ID. ## 2 || add the new group just before
--   the node specified by the add target ID. ## 3 || add the new group
--   just after the node specified by the add target ID. ## 4 || the new
--   node replaces the node specified by the add target ID. The target node
--   is freed. :: :: Multiple groups may be created in one command by
--   adding arguments.
g_new :: NodeId -> AddAction -> NodeId -> OSC

-- | subsection:: /p_new Create a new parallel group. table:: ## N * ||
--   table:: ## strong::int:: || new group ID ## strong::int:: || add
--   action (0,1,2, 3 or 4 see below) ## strong::int:: || add target ID ::
--   :: Create a new parallel group and add it to the tree of nodes.
--   Parallel groups are relaxed groups, their child nodes are evaluated in
--   unspecified order. There are four ways to add the group to the tree as
--   determined by the add action argument which is defined as follows (the
--   same as for strong::/s_new::): definitionlist:: ## add actions: ||
--   table:: ## 0 || add the new group to the the head of the group
--   specified by the add target ID. ## 1 || add the new group to the the
--   tail of the group specified by the add target ID. ## 2 || add the new
--   group just before the node specified by the add target ID. ## 3 || add
--   the new group just after the node specified by the add target ID. ## 4
--   || the new node replaces the node specified by the add target ID. The
--   target node is freed. :: :: Multiple groups may be created in one
--   command by adding arguments.
p_new :: NodeId -> AddAction -> NodeId -> OSC

-- | subsection:: /g_freeAll Delete all nodes in a group. table:: ## N *
--   strong::int:: || group ID(s) :: Frees all nodes in the group. A list
--   of groups may be specified.
g_freeAll :: [NodeId] -> OSC

-- | section:: Buffer Commands
--   
--   Buffers are stored in a global array, indexed by integers starting at
--   zero.
--   
--   subsection:: /b_alloc Allocate buffer space. table:: ## strong::int::
--   || buffer number ## strong::int:: || number of frames ## strong::int::
--   || number of channels (optional. default = 1 channel) ##
--   strong::bytes:: || an OSC message to execute upon completion.
--   (optional) :: Allocates zero filled buffer to number of channels and
--   samples. definitionlist:: ## Asynchronous. || Replies to sender with
--   strong::<i>done </i>b_alloc bufNum:: when complete. ::
--   
--   Second and third arguments are number of frames and number of
--   channels, respectively
b_alloc :: BufferId -> Int32 -> Int32 -> Maybe OSC -> OSC

-- | subsection:: /b_allocRead Allocate buffer space and read a sound file.
--   table:: ## strong::int:: || buffer number ## strong::string:: || path
--   name of a sound file. ## strong::int:: || starting frame in file
--   (optional. default = 0) ## strong::int:: || number of frames to read
--   (optional. default = 0, see below) ## strong::bytes:: || an OSC
--   message to execute upon completion. (optional) :: Allocates buffer to
--   number of channels of file and number of samples requested, or fewer
--   if sound file is smaller than requested. Reads sound file data from
--   the given starting frame in the file. If the number of frames argument
--   is less than or equal to zero, the entire file is read.
--   definitionlist:: ## Asynchronous. || Replies to sender with
--   strong::<i>done </i>b_allocRead bufNum:: when complete. ::
--   
--   The first Int32 is the starting frame to read (often this is zero);
--   the second is an optional number of frames to read (<a>Nothing</a>
--   means the rest of the file is read)
b_allocRead :: BufferId -> FilePath -> Int32 -> Maybe Int32 -> Maybe OSC -> OSC

-- | subsection:: /b_zero Zero sample data. table:: ## strong::int:: ||
--   buffer number ## strong::bytes:: || an OSC message to execute upon
--   completion. (optional) :: Sets all samples in the buffer to zero.
--   definitionlist:: ## Asynchronous. || Replies to sender with
--   strong::<i>done </i>b_zero bufNum:: when complete. ::
b_zero :: BufferId -> Maybe OSC -> OSC

-- | subsection:: /b_free Free buffer data. table:: ## strong::int:: ||
--   buffer number ## strong::bytes:: || an OSC message to execute upon
--   completion. (optional) :: Frees buffer space allocated for this
--   buffer. definitionlist:: ## Asynchronous. || Replies to sender with
--   strong::<i>done </i>b_free bufNum:: when complete. ::
b_free :: BufferId -> Maybe OSC -> OSC

-- | subsection:: /b_close Close soundfile. table:: ## strong::int:: ||
--   buffer number ## strong::bytes:: || an OSC message to execute upon
--   completion. (optional) :: After using a buffer with
--   link::Classes/DiskOut::, close the soundfile and write header
--   information. definitionlist:: ## Asynchronous. || Replies to sender
--   with strong::<i>done </i>b_close bufNum:: when complete. ::
b_close :: BufferId -> Maybe OSC -> OSC

-- | subsection:: /b_query Get buffer info. table:: ## N * strong::int:: ||
--   buffer number(s) ::
--   
--   Responds to the sender with a strong::<i>b_info:: message. The
--   arguments to </i>b_info are as follows: table:: ## N * || table:: ##
--   strong::int:: || buffer number ## strong::int:: || number of frames ##
--   strong::int:: || number of channels ## strong::float:: || sample rate
--   :: ::
--   
--   Since: vivid-0.4.1
b_query :: [BufferId] -> OSC

-- | subsection:: /b_write Write sound file data. table:: ## strong::int::
--   || buffer number ## strong::string:: || path name of a sound file. ##
--   strong::string:: || header format. ## strong::string:: || sample
--   format. ## strong::int:: || number of frames to write (optional.
--   default = -1, see below) ## strong::int:: || starting frame in buffer
--   (optional. default = 0) ## strong::int:: || leave file open (optional.
--   default = 0) ## strong::bytes:: || an OSC message to execute upon
--   completion. (optional) ::
--   
--   Write a buffer as a sound file. definitionlist:: ## Header format is
--   one of: || "aiff", "next", "wav", "ircam"", "raw" ## Sample format is
--   one of: || "int8", "int16", "int24", "int32", "float", "double",
--   "mulaw", "alaw" :: Not all combinations of header format and sample
--   format are possible. If number of frames is less than zero, all
--   samples from the starting frame to the end of the buffer are written.
--   If opening a file to be used by DiskOut ugen then you will want to set
--   "leave file open" to one, otherwise set it to zero. If "leave file
--   open" is set to one then the file is created, but no frames are
--   written until the DiskOut ugen does so. definitionlist:: ##
--   Asynchronous. || Replies to sender with strong::<i>done </i>b_write
--   bufNum:: when complete. ::
--   
--   First String is header format (e.g. "wav"), second String is sample
--   format (e.g. "float"). The (Maybe Int32) is number of frames to write
--   (<a>Nothing</a> writes to the end of the buffer), the Int32 that
--   follows it is the start frame (which is often zero). The Bool is
--   whether to leave the file open.
--   
--   More details (e.g. the available header and sample formats) are
--   available in the SuperCollider docs.
b_write :: BufferId -> FilePath -> String -> String -> Maybe Int32 -> Int32 -> Bool -> Maybe OSC -> OSC
instance GHC.Show.Show Vivid.SC.Server.Commands.AddAction
instance GHC.Classes.Ord Vivid.SC.Server.Commands.AddAction
instance GHC.Classes.Eq Vivid.SC.Server.Commands.AddAction
instance GHC.Classes.Ord Vivid.SC.Server.Commands.DumpOSCMode
instance GHC.Read.Read Vivid.SC.Server.Commands.DumpOSCMode
instance GHC.Show.Show Vivid.SC.Server.Commands.DumpOSCMode
instance GHC.Classes.Eq Vivid.SC.Server.Commands.DumpOSCMode
