úÎŽuĢØ’      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘G&Class of monads generating identifers Port identifier. Node identifier. Data flow node.  Port meta data. Constant values. 'Enumeration of types of data on ports. Recursion identifer. !#Multiple root graph (alias for M). "Type of a constant value. #Type of a node. $Lift constant to node. %Lift constant to node. &-Unary operator over Real and Integer values. '.Binary operator over Real and Integer values. (!Unary operator over Real values. )"Binary operator over Real values. * Addition. +Multiplication. , Subtraction. - Negation. .Absolute value. / Sign of. 0 Division. 1 Reciprocal. 2Natural exponential. 3 Square root. 4Natural logarithm. 5p to the power of q. 6Sine. 7Cosine. 8 Tangent. 99Operator from Real or Integer values to a Boolean value. : Less than. ;Greater than or equal to. <Greater than. =Less than or equal to. > Maximum. ? Minimum. @Real valued floor. AInteger valued floor. B1Introduce backward arc with implicit unit delay. CMonadic variant of rec_r. D4Variant or rec with monadic action in backward arc. ’How to display nodes. “How to display constants. E  !"#$%&'()*+,-./0123456789:;<=>?@ABCDE   !"#$%&'()*+,-./0123456789:;<=>?@ABCDE    !"#$%&'()*+,-./0123456789:;<=>?@ABCD<EUniform input type operator. FSingle channel output. GTwo channel output. HThree channel output. IOperating sample rate. J Equal to. KIf p then q else r. L Binary boolean valued operator. M Logical and. N Logical or. O Buffer read. PBuffer write. QWhite noise (0, 1). R Linear pan. S!Reversed tuple constructor, (ie. flip (,)) T Duplicate a value into a tuple. U2Single sample delay with indicated initial value. VKSingle place infinte impulse response filter with indicated initial value. W8Two place infinte impulse response filter. Inputs are: f=  function (x0 y1 y2 -> y0), i = input signal. + do { c1 <- iir2 (\x y1 _ -> x + y1) 0.001 # ; o1 <- sin_osc (c1 + 220.0) 0 + ; c2 <- iir2 (\x _ y2 -> x + y2) 0.001 # ; o2 <- sin_osc (c2 + 220.0) 0 0 ; audition [] (out2 (o1 * 0.1, o2 * 0.1)) } X,Single place finte impulse response filter. Y)Two place finte impulse response filter. Z Ordinary biquad filter section. [&Counter from indicated initial value. \Environment value, equal to ^ / I. ]5r = cycle (two-pi), hz = frequency, sr = sample rate ^Two pi. _If 'q >= p' then 'q - p' else q. `7r = right hand edge, ip = initial phase, x = increment aSine oscillator. Inputs are: f = frequency (in hz), ip =  initial phase.   do { o <- sin_osc 440.0 0.0 % ; audition [] (out1 (o * 0.1)) } !Used as both Oscillator and LFO.   do { f <- sin_osc 4.0 0.0 + ; o <- sin_osc (f * 400.0 + 400.0) 0.0 % ; audition [] (out1 (o * 0.1)) } Cancellation.  do { o1 <- sin_osc 440.0 0.0  ; o2 <- sin_osc 440.0 pi % ; audition [] (out1 (o1 + o2)) } bDNon-band limited sawtooth oscillator. Output ranges from -1 to +1.  Inputs are: f = frequency (in hertz), ip = initial phase (0,2).   do { o <- lf_saw 500.0 1.0 % ; audition [] (out1 (o * 0.1)) } !Used as both Oscillator and LFO.  do { f <- lf_saw 4.0 0.0 * ; o <- lf_saw (f * 400.0 + 400.0) 0.0 % ; audition [] (out1 (o * 0.1)) } c?Non-band-limited pulse oscillator. Outputs a high value of one & and a low value of zero. Inputs are: f = frequency (in hertz),  ip = initial phase (0, 1), w" = pulse width duty cycle (0, 1). B do { o1 <- fmap (\x -> x * 200.0 + 200.0) (lf_pulse 3.0 0.0 0.3) 7 ; o2 <- fmap (\x -> x * 0.1) (lf_pulse o1 0.0 0.2)  ; audition [] (out1 o2) } d'Midi note number to cycles per second. eMultiply and add. f#Calculate feedback multipler given delay and decay times. gDelay. h,Non-interpolating comb filter. Inputs are: b = buffer index,  i = input signal, dl = delay time, dc = decay time. >All times are in seconds. The decay time is the time for the  echoes to decay by 60- decibels. If this time is negative then the B feedback coefficient will be negative, thus emphasizing only odd  harmonics at an octave lower. ?Comb used as a resonator. The resonant fundamental is equal to  reciprocal of the delay time.   do { n <- white_noise_m < ; dt <- let f x = lin_exp (x + 2.0) 1.0 2.0 0.0001 0.01 ' in fmap f (lf_saw 0.1 0.0) ) ; c <- buf_comb_n 0 (n * 0.1) dt 0.2 , ; audition [b_alloc 0 44100] (out1 c) } Comb used as an echo.  do { i <- impulse 0.5 0.0  ; n <- white_noise_m  ; e <- decay (i * 0.5) 0.2 ( ; c <- buf_comb_n 0 (e * n) 0.2 3.0 , ; audition [b_alloc 0 44100] (out1 c) } i&Resonant low pass filter. Inputs are: i = input signal, f =  frequency (hertz), rq = reciprocal of Q (resonance).  do { n <- white_noise_m ; ; f <- fmap (\x -> x * 40.0 + 220.0) (sin_osc 0.5 0.0)  ; r <- rlpf n f 0.1  ; audition [] (out1 r) } jConstrain p in (-q, q). kWhite noise (-1, 1). l?White noise (-1, 1). Generates noise whose spectrum has equal  power at all frequencies.  do { n <- white_noise_m % ; audition [] (out1 (n * 0.1)) } mBBrown noise (-1, 1). Generates noise whose spectrum falls off in  power by 6 dB per octave.   do { n <- brown_noise_m % ; audition [] (out1 (n * 0.1)) }  do { n <- brown_noise_m / ; let f = lin_exp n (-1.0) 1.0 64.0 9600.0  in do { o <- sin_osc f 0 / ; audition [] (out1 (o * 0.1)) } } nTwo zero fixed midpass filter. oTwo zero fixed midcut filter. pTwo point average filter qTwo zero fixed lowpass filter rOne pole filter. sOne zero filter. tSecond order filter section. u'Impulse oscillator (non band limited). 2 Outputs non band limited single sample impulses.  Inputs are: f = frequency (in hertz), ip = phase offset (0..1)   do { o <- impulse 800.0 0.0 % ; audition [] (out1 (o * 0.1)) } ? do { f <- fmap (\x -> x * 2500.0 + 2505.0) (sin_osc 0.25 0.0)  ; o <- impulse f 0.0 % ; audition [] (out1 (o * 0.1)) } v/A two pole resonant filter with zeroes at z = +/- 1. Based on  K. Steiglitz, "*A Note on Constant-Gain Digital Resonators",  Computer Music Journal(, vol 18, no. 4, pp. 8-10, Winter 1994. E The reciprocal of Q is used rather than Q because it saves a divide & operation inside the unit generator.  Inputs are: i = input signal, f = resonant frequency (in  hertz), rq, = bandwidth ratio (reciprocal of Q); where rq =  bandwidth / centerFreq.   do { n <- white_noise_m & ; r <- resonz (n * 0.5) 440.0 0.1  ; audition [] (out1 r) } Modulate frequency  do { n <- white_noise_m = ; f <- fmap (\x -> x * 3500.0 + 4500.0) (lf_saw 0.1 0.0) # ; r <- resonz (n * 0.5) f 0.05  ; audition [] (out1 r) } wBSample and hold. Holds input signal value when triggered. Inputs  are: i = input signal, t' = trigger (non-positive to positive).  do { n <- white_noise_m  ; i <- impulse 9.0 0.0  ; l <- latch n i + ; o <- sin_osc (l * 400.0 + 500.0) 0.0 % ; audition [] (out1 (o * 0.2)) } xLinear range conversion.  4 map (\i -> lin_lin i (-1) 1 0 1) [-1, -0.9 .. 1.0]  do { s <- lf_saw 1.0 0.0 : ; o <- sin_osc (lin_lin s (-1.0) 1.0 220.0 440.0) 0.0 % ; audition [] (out1 (o * 0.1)) } yExponential range conversion.  - map (\i -> lin_exp i 1 2 1 3) [1, 1.1 .. 2]  do { s <- lf_saw 0.25 0.0 ? ; o <- sin_osc (lin_exp (s + 1.0) 0.0 2.0 220.0 440.0) 0.0 % ; audition [] (out1 (o * 0.1)) } zExponential decay. Inputs are: i = input signal, t = decay ? time. This is essentially the same as Integrator except that E instead of supplying the coefficient directly, it is caculated from E a 60 dB decay time. This is the time required for the integrator to C lose 99.9 % of its value or -60dB. This is useful for exponential + decaying envelopes triggered by impulses. Used as an envelope.  do { n <- brown_noise_m  ; f <- lf_saw 0.1 0.0 7 ; i <- impulse (lin_lin f (-1.0) 1.0 2.0 5.0) 0.25  ; e <- decay i 0.2 # ; audition [] (out1 (e * n)) } { Exponential decay (equvalent to decay dcy - decay atk). |Single sample delay. }Two sample delay. ~&Simple averaging filter. Inputs are: i = input signal, t =  lag time.  do { s <- sin_osc 0.05 0.0 / ; let f = lin_lin s (-1.0) 1.0 220.0 440.0 ! in do { o <- sin_osc f 0.0  ; f' <- lag f 1.0 # ; o' <- sin_osc f' 0.0 9 ; audition [] (out2 (o * 0.2, o' * 0.2)) } } Nested lag filter. €Twice nested lag filter. <EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€<EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€<EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€ Edge between ports. ‚%List of nodes, in left biased order. ƒRead label of node. „?Transform node to source, see through rec_r and proxy and mrg. …List incoming node edges, †?Label nodes and list edges. Proxy and multiple-root nodes are  erased. ‡*Transform edge into form required by fgl. ˆGenerate graph. ‰'Topological sort of nodes (via graph). ‚ƒ„…†‡ˆ‰ ‚ƒ„…†‡ˆ‰ ‚ƒ„…†‡ˆ‰”Implicit edge from wR to rW. •3Transform the actual graph into the viewing graph. –ŠDraw graph using graphviz. ŠŠŠ—‹Generate C code for graph. Œ@Generate C code, write file to disk and call the GNU C compiler  to build shared library. ˜Construct an identifier. ™Construct a function/ macro call. š#A ccall variant with trace output. ›œ(List of required variable declarations. žŸ ĄĒĢĪ=Non-statefule variable declarations. Unintialised, the node  writes the constant value. ĨGenerate dsp_init function. ĶGenerate dsp_step function. §List of code statements. ĻMacro definitions ‹Œ‹Œ‹ŒAllocate buffer. Ž Load graph. Unload graph. Run action with UDP link to jack-dl. ‘6Audition graph after sending initialisation messages. Ž‘Ž‘Ž‘’  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘Đ      !"#$%&&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊhdf-0.11 Sound.DF.Node Sound.DF.UGenSound.DF.Graph Sound.DF.Draw Sound.DF.CGenSound.DF.AuditionSound.DFID generateIDPortIDNodeIDNodeMmleftmrightPproxyportR identifierinputAoperatorinputsoutputsSconstantPortport_data_type port_tokensConstantInteger_Constant Real_ConstantType Boolean_Type Integer_Type Real_TypeR_IDmrg constant_type node_typen_real_constantn_integer_constantnumerical_unary_operatornumerical_binary_operatorreal_unary_operatorreal_binary_operatorn_addn_muln_subn_negaten_absn_signumn_divn_recipn_expn_sqrtn_logn_pown_sinn_cosn_tannumerical_comparison_operatorn_ltn_gten_gtn_lten_maxn_minn_floorn_lrintrec_rrecrecmuniform_operatorout1out2out3 sample_rateeqselect2logical_operatorn_andn_orb_readb_write white_noise_upan2swapsplit unit_delayiir1iir2fir1fir2biquadcounterradians_per_sample hz_to_incrtwo_picliprphasorsin_osclf_sawlf_pulsemidi_cpsmul_addcalc_fbdelay buf_comb_nrlpfclip2 white_noise white_noise_m brown_noise_mbpz2brz2lpz1lpz2one_poleone_zerososimpulseresonzlatchlin_linlin_expdecaydecay2delay1delay2laglag2lag3Edgenodeslabelsourceedgesanalysemod_egraphtsortviewcode_gendl_genb_allocg_loadg_unload with_jack_dlaudition $fShowNode$fShowConstantr_edgevgraphdrawCVarclabelccalld_ccallctypecvar_from_constantcvars_ncvars is_statefulstateful_cvarsnon_stateful_cvarscstate cstate_initnon_state_decldsp_initdsp_stepcgencdef