Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
UGen data structure representation and associated functions.
- toUId :: ID a => a -> UGenId
- ugen_user_name :: String -> Special -> String
- ugenTraverse :: (UGen -> UGen) -> UGen -> UGen
- ugenFoldr :: (UGen -> a -> a) -> a -> UGen -> a
- control_f64 :: Rate -> Maybe Int -> String -> Sample -> UGen
- control :: Rate -> String -> Double -> UGen
- meta_control :: Rate -> String -> Double -> C_Meta' Double -> UGen
- tr_control_f64 :: Maybe Int -> String -> Sample -> UGen
- tr_control :: String -> Double -> UGen
- control_set :: [UGen] -> [UGen]
- mrg2 :: UGen -> UGen -> UGen
- mce2 :: UGen -> UGen -> UGen
- mce2c :: UGen -> (UGen, UGen)
- mce3 :: UGen -> UGen -> UGen -> UGen
- mceMap :: (UGen -> UGen) -> UGen -> UGen
- mceEdit :: ([UGen] -> [UGen]) -> UGen -> UGen
- mceReverse :: UGen -> UGen
- mceChannel :: Int -> UGen -> UGen
- mceTranspose :: UGen -> UGen
- mceSum :: UGen -> UGen
- sep_first :: [t] -> Maybe (t, [t])
- sep_last :: [t] -> Maybe ([t], t)
- halt_mce_transform' :: (a -> [a]) -> [a] -> [a]
- halt_mce_transform :: [UGen] -> [UGen]
- label :: String -> UGen
- equal_length_p :: [[a]] -> Bool
- unpackLabel :: UGen -> [UGen]
- bitAnd :: UGen -> UGen -> UGen
- bitOr :: UGen -> UGen -> UGen
- bitXOr :: UGen -> UGen -> UGen
- bitNot :: UGen -> UGen
- shiftLeft :: UGen -> UGen -> UGen
- shiftRight :: UGen -> UGen -> UGen
- unsignedShift :: UGen -> UGen -> UGen
- (.<<.) :: UGen -> UGen -> UGen
- (.>>.) :: UGen -> UGen -> UGen
- ugen_primitive :: UGen -> [Primitive]
- primitive_is_pv_rate :: String -> Bool
- ugen_is_pv_rate :: UGen -> Bool
- pv_track_buffer :: UGen -> Either String UGen
- buffer_nframes :: UGen -> UGen
- pv_track_nframes :: UGen -> Either String UGen
Documentation
ugen_user_name :: String -> Special -> String Source
Lookup operator name for operator UGens, else UGen name.
UGen graph functions
ugenTraverse :: (UGen -> UGen) -> UGen -> UGen Source
Depth first traversal of graph at u
applying f
to each node.
Unit generator node constructors
control :: Rate -> String -> Double -> UGen Source
Control input node constructor.
Note that if the name begins with a t_ prefix the control is not
converted to a triggered control. Please see tr_control
.
meta_control :: Rate -> String -> Double -> C_Meta' Double -> UGen Source
Variant of control
with meta data.
tr_control_f64 :: Maybe Int -> String -> Sample -> UGen Source
Triggered (kr) control input node constructor.
tr_control :: String -> Double -> UGen Source
Triggered (kr) control input node constructor.
control_set :: [UGen] -> [UGen] Source
Set indices at a list of controls.
Multiple channel expansion
mceMap :: (UGen -> UGen) -> UGen -> UGen Source
Apply a function to each channel at a unit generator.
mceReverse :: UGen -> UGen Source
Reverse order of channels at MCE.
mceChannel :: Int -> UGen -> UGen Source
Obtain indexed channel at MCE.
mceTranspose :: UGen -> UGen Source
Transpose rows and columns, ie. {{a,b},{c,d}} to {{a,c},{b,d}}.
Transform
sep_first :: [t] -> Maybe (t, [t]) Source
Separate first list element.
sep_first "astring" == Just ('a',"string")
sep_last :: [t] -> Maybe ([t], t) Source
Separate last list element.
sep_last "stringb" == Just ("string",'b')
halt_mce_transform' :: (a -> [a]) -> [a] -> [a] Source
Given unmce function make halt mce transform.
halt_mce_transform :: [UGen] -> [UGen] Source
The halt MCE transform, ie. lift channels of last input into list.
halt_mce_transform [1,2,mce2 3 4] == [1,2,3,4]
Multiple root graphs
Labels
equal_length_p :: [[a]] -> Bool Source
Are lists of equal length?
equal_length_p ["t1","t2"] == True equal_length_p ["t","t1","t2"] == False
unpackLabel :: UGen -> [UGen] Source
Unpack a label to a length prefixed list of Constant
s. There
is a special case for mce nodes, but it requires labels to be equal
length. Properly, poll
would not unpack the label, it would be
done by the synthdef builder.
Bitwise
shiftRight :: UGen -> UGen -> UGen Source
unsignedShift :: UGen -> UGen -> UGen Source
Analysis
ugen_primitive :: UGen -> [Primitive] Source
UGen primitive. Sees through Proxy and MRG, possible multiple primitives for MCE.
primitive_is_pv_rate :: String -> Bool Source
Heuristic based on primitive name (FFT
, PV_
). Note that
IFFT
is at control rate, not PV
rate.
ugen_is_pv_rate :: UGen -> Bool Source
Variant on primitive_is_pv_rate.
pv_track_buffer :: UGen -> Either String UGen Source
Traverse input graph until an FFT
or PV_Split
node is
encountered, and then locate the buffer input. Biases left at MCE
nodes.
import Sound.SC3 let z = soundIn 4 let f1 = fft 10 z 0.5 0 1 0 let f2 = ffta 'a' 1024 z 0.5 0 1 0 pv_track_buffer (pv_BrickWall f1 0.5) == Right 10 pv_track_buffer (pv_BrickWall f2 0.5) == Right (localBuf 'a' 1024 1)
buffer_nframes :: UGen -> UGen Source
Buffer node number of frames. Biases left at MCE nodes. Sees
through LocalBuf
, otherwise uses bufFrames
.
buffer_nframes 10 == bufFrames IR 10 buffer_nframes (control KR "b" 0) == bufFrames KR (control KR "b" 0) buffer_nframes (localBuf 'α' 2048 1) == 2048