hsc3-0.20: Haskell SuperCollider
Safe HaskellSafe-Inferred
LanguageHaskell2010

Sound.Sc3.Ugen.Analysis

Description

Ugen analysis

Synopsis

Documentation

ugen_primitive_set :: Ugen -> [Primitive Ugen] Source #

Ugen primitive set. 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

ugen_remove_out_node :: Ugen -> (String, Ugen) Source #

Ugen is required to be the root node of complete graph. This function returns the name of the output Ugen (ie. Out or an allowed variant) and the input to that Ugen. It allows multiple-root graphs. It is in some sense the inverse of wrapOut.