packages feed

hsc3 0.18 → 0.19

raw patch · 514 files changed

+6168/−13549 lines, 514 filesdep +data-binary-ieee754dep +mtldep ~hosc

Dependencies added: data-binary-ieee754, mtl

Dependency ranges changed: hosc

Files

Help/Server/b_allocRead.help.lhs view
@@ -1,9 +1,9 @@-    Sound.SC3.Lang.Help.viewServerHelp "/b_allocRead"+    Sound.SC3.Lang.Help.sc3_scdoc_help_server_command_open False "/b_allocRead"  > import Sound.OSC {- hosc -} > import Sound.SC3 {- hsc3 -} -Read a large audio file into a buffer.+Read an audio file into a buffer.  > f_00 = "/home/rohan/data/audio/xenakis/jonchaies.wav" > m_00 = b_allocRead 0 f_00 0 0@@ -50,3 +50,12 @@ Free buffer.  Memory is immediately made free.      withSC3 (async (b_free 0))++Small sample buffer++> f_01 = "/home/rohan/data/audio/metal.wav"++    withSC3 (async m_01)++> m_01 :: Message+> m_01 = b_allocRead 0 f_01 0 0
Help/Server/b_gen.help.lhs view
@@ -1,1 +1,19 @@     Sound.SC3.Lang.Help.viewServerHelp "/b_gen"++function to generate wavetable buffer using b_gen_cheby++> mk_b a =+>     let tbl_f = [Normalise,Wavetable,Clear]+>         msg = [b_alloc 10 512 1,b_gen_cheby 10 tbl_f a]+>     in withSC3 (mapM_ async msg)++    > mk_b [1,0,1,1,0,1]+    > mk_b [0.25,0.5,0.25]+    > mk_b [1,0,1,1,0,1]+    > mk_b [1,0,1,1,0,1,0.5,0,0.25,0,0.75,1]++plot wavetable (as in-buffer layout, as plain wavetable)++    > import Sound.SC3.Plot {- hsc3-plot -}+    > withSC3 (plot_buffer1 10)+    > withSC3 (plot_wavetable1 10)
+ Help/Server/b_info.help.lhs view
@@ -0,0 +1,3 @@+/b_info is the message returned by scsynth in response to /b_query.++Fields are: buffer-id:int num-frames:int num-channels:int sample-rate:float
Help/Server/b_read.help.lhs view
@@ -1,1 +1,1 @@-    Sound.SC3.Lang.Help.viewServerHelp "/b_read"+    Sound.SC3.Lang.Help.sc3_scdoc_help_server_command_open True "/b_read"
− Help/UGen/abs.help.lhs
@@ -1,3 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = abs (syncSaw AR 100 440 * 0.1)
− Help/UGen/absDif.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Finding the magnitude of the difference of two values is a common operation.--> g_01 =->     let p = fSinOsc AR 440 0->         q = fSinOsc AR 2 0 * 0.5->     in p * 0.2 `absDif` q
− Help/UGen/add.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let o = fSinOsc AR 800 0->         n = pinkNoise 'α' AR->     in (o + n) * 0.1--DC offset.--> g_02 = fSinOsc AR 440 0 * 0.1 + 0.5--Optimises identity--> g_03 = (sinOsc AR 440 0 + 0) * 0.1--> g_04 = (0 + sinOsc AR 440 0) * 0.1
− Help/UGen/allpassC.help.lhs
@@ -1,1 +0,0 @@-See allPassN
− Help/UGen/allpassL.help.lhs
@@ -1,1 +0,0 @@-See allPassN
− Help/UGen/allpassN.help.lhs
@@ -1,50 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Since the allpass delay has no audible effect as a resonator on steady-state sound ...--> g_01 =->     let dly = xLine KR 0.0001 0.01 20 RemoveSynth->         n = whiteNoise 'α' AR->     in allpassC (n * 0.1) 0.01 dly 0.2--...these examples add the input to the effected sound so that you-can hear the effect of the phase comb.--> g_02 =->     let n = whiteNoise 'β' AR->         dly = xLine KR 0.0001 0.01 20 RemoveSynth->     in (n + allpassN (n * 0.1) 0.01 dly 0.2) * 0.1--Linear variant--> g_03 =->     let n = whiteNoise 'γ' AR->         dly = xLine KR 0.0001 0.01 20 RemoveSynth->     in (n + allpassL (n * 0.1) 0.01 dly 0.2) * 0.1--Cubic variant--> g_04 =->     let n = whiteNoise 'δ' AR->         dly = xLine KR 0.0001 0.01 20 RemoveSynth->     in (n + allpassC (n * 0.1) 0.01 dly 0.2) * 0.1--Used as an echo - doesn't really sound different than Comb, but it-outputs the input signal immediately (inverted) and the echoes are-lower in amplitude.--> g_05 =->     let n = whiteNoise 'ε' AR->         d = dust 'ζ' AR 1->         src = decay (d * 0.5) 0.2 * n->     in allpassN src 0.2 0.2 3--Phasing--> g_06 =->   let i = soundIn (mce2 0 1) -- two channels of input signal->       f = mouseX KR 0.1 1.0 Linear 0.2 -- phaser freq->       e = allpassN i 0.02 (sinOsc KR f 0 * 0.01 + 0.01) 1 -- max delay of 20msec->   in i + e -- sum phase-shifted signal to original signal-
− Help/UGen/amClip.help.lhs
@@ -1,3 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = amClip (whiteNoise 'α' AR) (fSinOsc KR 1 0 * 0.2)
− Help/UGen/ampComp.help.lhs
@@ -1,36 +0,0 @@-> import Sound.SC3 {- hsc3 -}--mouse X axis frequency control--> x_freq = mouseX KR 300 1500 Exponential 0.2--> ampComp' :: Bool -> Rate -> UGen -> UGen -> UGen -> UGen-> ampComp' use_comp r fr rt ex = if use_comp then ampComp r fr rt ex else 1--> f_01 use_comp = sinOsc AR x_freq 0 * 0.1 * ampComp' use_comp KR x_freq 300 0.3333--without amplitude compensation--> g_01 = f_01 False--with amplitude compensation--> g_02 = f_01 True--modified exponent--> g_03 = pulse AR x_freq 0.5 * 0.1 * ampComp KR x_freq 300 1.3--in frequency modulation--> f_02 use_comp =->     let freq = x_freq * sinOsc AR (mouseY KR 3 200 Exponential 0.2) 0 * 0.5 + 1->     in sinOsc AR freq 0 * 0.1 * ampComp' use_comp KR freq 300 0.3333--with amplitude compensation--> g_04 = f_02 True--without amplitude compensation--> g_05 = f_02 False
− Help/UGen/ampDb.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}--    > let amp = map (2 **) [0 .. 15]-    > let db = [0,-6 .. -90]-    > map (round . ampDb . (/) 1) amp == db-    > map (round . amp_to_db . (/) 1) amp == db-    > zip amp db--    > db_to_amp (-3) == 0.7079457843841379-    > amp_to_db 0.7079457843841379 == -3
− Help/UGen/amplitude.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let s = soundIn 0->         a = amplitude KR s 0.01 0.01->     in pulse AR 90 0.3 * a--> g_02 =->     let s = soundIn 0->         f = amplitude KR s 0.5 0.5 * 1200 + 400->     in sinOsc AR f 0 * 0.1--> g_03 =->     let s = soundIn 0->         a = amplitude AR s 0.5 0.05->     in s * a
− Help/UGen/atan2.help.lhs
@@ -1,15 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Add a pan to the hypot doppler examples by using atan2 to find the-azimuth, or direction angle, of the sound source.  Assume speakers-at +/- 45 degrees and clip the direction to between those.--> g_01 =->     let x = 10->         y = lfSaw KR (1 / 6) 0 * 100->         d = hypot x y->         a = 40 / (squared d)->         s = rlpf (fSinOsc AR 200 0 * lfPulse AR 31.3 0 0.4) 400 0.3->         z = atan2E y x->         l = clip2 (z / (pi / 2)) 1->     in pan2 (delayL s (110 / 344) (d / 344)) l a
− Help/UGen/atari2600.help.lhs
@@ -1,78 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.HW.External.F0 as X {- hsc3 -}--> import Sound.SC3.Lang.Pattern {- hsc3-lang -}--> gr_00 = X.atari2600 1 2 3 4 5 5 1--> gr_01 = X.atari2600 2 3 10 10 5 5 1--> gr_02 =->     let x = mouseX KR 0 15 Linear 0.1->         y = mouseY KR 0 15 Linear 0.1->     in X.atari2600 x y 10 10 5 5 1--> gr_03 =->     let x = mouseX KR 0 31 Linear 0.1->         y = mouseY KR 0 31 Linear 0.1->     in X.atari2600 2 3 x y 5 5 1--> gr_04 =->     let x = mouseX KR 0 15 Linear 0.1->         y = mouseY KR 0 15 Linear 0.1->     in X.atari2600 2 3 10 10 x y 1--> gr_05 =->     let x = mouseX KR 0 15 Linear 0.1->         o1 = sinOsc KR 0.35 0 * 7.5 + 7.5->         y = mouseY KR 0 31 Linear 0.1->         o2 = sinOsc KR 0.3 0 * 5.5 + 5.5->     in X.atari2600 x o1 10 y o2 5 1--> ati_syn =->     let gate' = control KR "gate" 1->         tone0 = control KR "tone0" 5->         tone1 = control KR "tone1" 8->         freq0 = control KR "freq0" 10->         freq1 = control KR "freq1" 20->         rate = control KR "rate" 1->         amp = control KR "amp" 1->         pan = control KR "pan" 0->         e = envASR 0.01 amp 0.05 (EnvNum (-4))->         eg = envGen KR gate' 1 0 1 RemoveSynth e->         z = X.atari2600 tone0 tone1 freq0 freq1 15 15 rate->         o = out 0 (pan2 (z * eg) pan 1)->     in synthdef "atari2600" o--> p_01 =->     [(K_instr,psynth ati_syn)->     ,(K_dur,0.125)->     ,(K_amp,0.5)->     ,(K_param "tone0",pseq [pn 3 64,pn 2 128,pn 10 8] inf)->     ,(K_param "tone1",pseqn [32,12] [8,pwhite 'α' 0 15 inf] inf)->     ,(K_param "freq0",pseqn [17,4,3] [10,prand 'β' [1,2,3] inf,10] inf)->     ,(K_param "freq1",pseq1 [10,3,pwrand 'γ' [20,1] [0.6,0.4] inf] inf)]--    paudition (pbind p_01)--> p_02 =->     [(K_instr,psynth ati_syn)->     ,(K_dur,pseq [0.25,0.25,0.25,0.45] inf)->     ,(K_amp,0.5)->     ,(K_param "tone0",pseq [pseq [2,5] 32,pseq [3,5] 32] inf)->     ,(K_param "tone1",14)->     ,(K_param "freq0",pseq [pbrown 'α' 28 31 1 32,pbrown 'β' 23 26 3 32] inf)->     ,(K_param "freq1",pseq [pn 10 16,pn 11 16] inf)]--    paudition (pbind p_02)--> p_03 =->     [(K_instr,psynth ati_syn)->     ,(K_dur,pbrown 'α' 0.1 0.15 0.1 inf)->     ,(K_amp,0.5)->     ,(K_param "tone0",1)->     ,(K_param "tone1",2)->     ,(K_param "freq0",pseqn [2,1] [24,pwrand 'β' [20,23] [0.6,0.4] inf] inf)->     ,(K_param "freq1",pseqn [1,1,1] [1,3,pwrand 'γ' [2,1] [0.6,0.4] inf] inf)]--    paudition (pbind p_03)
− Help/UGen/audioMSG.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 = X.audioMSG AR (sinOsc AR 220 0 * 0.1) (mouseX KR 0 (2 * pi) Linear 0.2)--> g_02 = X.audioMSG AR (soundIn 0) (mouseX KR 0 (2 * pi) Linear 0.2)-
− Help/UGen/ay.help.lhs
@@ -1,34 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--default parameters--> g_01 = X.ay 1777 1666 1555 1 7 15 15 15 4 1 0--> g_02 =->     let tonea = mouseY KR 10 3900 Exponential 0.2->         toneb = mouseX KR 10 3900 Exponential 0.2->         ctl = 3->         vola = 14->         volb = 14->         volc = 0->         s = X.ay tonea toneb 1555 1 ctl vola volb volc 4 1 0->     in pan2 s 0 0.25--> g_03 =->     let rate = mouseX KR 0.1 10 Linear 0.2->         rng l r i = linLin i (-1) 1 l r->         mk_ctl e l r = rng l r (lfdNoise3 e KR rate)->         mk_ctl_0 e l r = rng l r (lfdNoise0 e KR rate)->         tonea = mk_ctl 'α' 10 3900->         toneb = mk_ctl 'β' 10 3900->         tonec = mk_ctl 'γ' 10 3900->         n = mk_ctl 'δ' 0 31->         ctl = mk_ctl_0 'ε' 0 31->         vola = mk_ctl 'ζ' 0 15->         volb = mk_ctl 'η' 0 15->         volc = mk_ctl 'θ' 0 15->         efreq = mk_ctl 'ι' 0 4095->         estyle = mk_ctl 'κ' 0 15->         s = X.ay tonea toneb tonec n ctl vola volb volc efreq estyle 0->     in pan2 s 0 0.5
− Help/UGen/bAllpass.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}--thoughpass--> g_01 =->     let i = soundIn (mce2 0 1)->         f = mouseX KR 10 18000 Exponential 0.2->     in bAllPass i f 0.8--bandpass--> g_02 =->     let i = soundIn (mce2 0 1) * 0.5->         f = mouseX KR 100 18000 Exponential 0.2->     in bAllPass i f 0.8 + negate i--calculate coefficients and use sos--> g_03 =->     let i = soundIn (mce2 0 1) * 0.5->         f = mouseX KR 100 18000 Exponential 0.2->         (a0, a1, a2, b1, b2) = bAllPassCoef sampleRate f 0.8->     in sos i a0 a1 a2 b1 b2 + negate i
− Help/UGen/bBandPass.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}--> g_01 =->     let i = soundIn 0->         f = mouseX KR 20 20000 Exponential 0.2->         bw = mouseY KR 0 10 Linear 0.2->     in bBandPass i f bw--calculate coefficients and use sos--> g_02 =->     let i = soundIn 0->         f = mouseX KR 20 20000 Exponential 0.2->         bw = mouseY KR 0 10 Linear 0.2->         (a0, a1, a2, b1, b2) = bBandPassCoef sampleRate f bw->     in sos i a0 a1 a2 b1 b2
− Help/UGen/bBandStop.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}--> g_01 =->     let i = soundIn (mce2 0 1)->         f = mouseX KR 20 20000 Exponential 0.2->         bw = mouseY KR 0 10 Linear 0.2->     in bBandStop i f bw--> g_02 =->     let i = sinOsc AR 1000 (mce2 0 0)->         f = mouseX KR 800 1200 Exponential 0.2->         bw = mouseY KR 0 10 Linear 0.2->     in bBandStop i f bw--calculate coefficients and use sos--> g_03 =->     let i = soundIn (mce2 0 1)->         f = mouseX KR 800 1200 Exponential 0.2->         bw = mouseY KR 0 10 Linear 0.2->         (a0, a1, a2, b1, b2) = bBandStopCoef sampleRate f bw->     in sos i a0 a1 a2 b1 b2
− Help/UGen/bHiPass.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}--> g_01 =->     let i = whiteNoise 'α' AR {- soundIn (mce2 0 1) -}->         f = mouseX KR 10 20000 Exponential 0.2->         rq = mouseY KR 0 1 Linear 0.2->     in bHiPass i f rq--calculate coefficients and use sos (see also bHiPass4)--> g_02 =->     let i = whiteNoise 'α' AR->         f = mouseX KR 10 20000 Exponential 0.2->         rq = mouseY KR 0 1 Linear 0.2->         (a0, a1, a2, b1, b2) = bHiPassCoef sampleRate f rq->     in sos i a0 a1 a2 b1 b2
− Help/UGen/bHiPass4.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let i = mix (saw AR (mce [0.99, 1, 1.01] * 440) * 0.3)->         f = mouseX KR 20 20000 Exponential 0.2->         rq = mouseY KR 0.1 1 Linear 0.2->     in bHiPass4 i f rq
− Help/UGen/bHiShelf.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}--> g_01 =->     let i = soundIn 0->         f = mouseX KR 2200 18000 Exponential 0.2->         db = mouseY KR 18 (-18) Linear 0.2->     in bHiShelf i f 1 db--> g_02 =->     let i = soundIn 0->         f = mouseX KR 2200 18000 Exponential 0.2->         rs = mouseY KR 0.1 1 Linear 0.2->     in bHiShelf i f rs 6--calculate coefficients and use sos--> g_03 =->     let i = soundIn 0->         f = mouseX KR 2200 18000 Exponential 0.2->         rs = mouseY KR 0.1 1 Linear 0.2->         (a0, a1, a2, b1, b2) = bHiShelfCoef sampleRate f rs 6->     in sos i a0 a1 a2 b1 b2
− Help/UGen/bLowPass.help.lhs
@@ -1,26 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}--> g_01 =->     let i = soundIn (mce2 0 1)->         f = mouseX KR 10 20000 Exponential 0.2->         rq = mouseY KR 0 1 Linear 0.2->     in bLowPass i f rq--> g_02 =->     let i = mix (saw AR (mce [0.99, 1, 1.01] * 440) * 0.3)->         f = mouseX KR 100 20000 Exponential 0.2->         rq = mouseY KR 0.1 1 Linear 0.2->     in bLowPass i f rq--calculate coefficients and use sos (see also bLowPass4)--> g_03 =->     let i = mix (saw AR (mce [0.99, 1, 1.01] * 440) * 0.3)->         f = mouseX KR 100 20000 Exponential 0.2->         rq = mouseY KR 0.1 1 Linear 0.2->         (a0, a1, a2, b1, b2) = bLowPassCoef sampleRate f rq->     in sos i a0 a1 a2 b1 b2--> g_04 = bLowPass (whiteNoise 'α' AR) (xLine KR 24000 20 10 DoNothing) 1-> g_05 = bLowPass (whiteNoise 'α' AR) 1200 (xLine KR 0.5 100 10 DoNothing)
− Help/UGen/bLowPass4.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let i = mix (saw AR (mce [0.99, 1, 1.01] * 440) * 0.3)->         f = mouseX KR 100 20000 Exponential 0.2->         rq = mouseY KR 0.1 1 Linear 0.2->     in bLowPass4 i f rq
− Help/UGen/bLowShelf.help.lhs
@@ -1,26 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}--> g_01 =->     let i = soundIn (mce2 0 1)->         freq = mouseX KR 40 6000 Exponential 0.2->         rs = 1->         db = mouseY KR 24 (-24) Linear 0.2->     in bLowShelf i freq rs db--> g_02 =->     let i = soundIn (mce2 0 1)->         freq = mouseX KR 20 6000 Exponential 0.2->         rs = mouseY KR 0.1 1 Linear 0.2->         db = 6->     in bLowShelf i freq rs db--calculate coefficients and use sos--> g_03 =->     let i = soundIn (mce2 0 1)->         freq = mouseX KR 20 6000 Exponential 0.2->         rs = mouseY KR 0.1 1 Linear 0.2->         db = 6->         (a0, a1, a2, b1, b2) = bLowShelfCoef sampleRate freq rs db->     in sos i a0 a1 a2 b1 b2
− Help/UGen/bMoog.help.lhs
@@ -1,18 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> f_01 md =->   let dup x = mce2 x x->       x = mouseX KR 20 12000 Exponential 0.2->       o = dup (lfSaw AR (mce2 (x * 0.99) (x * 1.01)) 0 * 0.1)->       cf = sinOsc KR (sinOsc KR 0.1 0) (1.5 * pi) * 1550 + 1800->       y = mouseY KR 1 0 Linear 0.2->       sig = X.bMoog o cf y md 0.95->   in (combN sig 0.5 (mce2 0.4 0.35) 2 * 0.4) + (sig * 0.5)--modes are: 0 = lowpass, 1 = highpass, 2 = bandpass--> g_01 = f_01 0-> g_02 = f_01 1-> g_03 = f_01 2-> g_04 = f_01 (lfSaw KR 1 0 * 3)
− Help/UGen/bPeakEQ.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}--> g_01 =->     let i = soundIn 0->         freq = mouseX KR 2200 18000 Exponential 0.2->         db = mouseY KR 12 (-12) Linear 0.2->     in bPeakEQ i freq 0.8 db--> g_02 =->     let i = soundIn 0->         freq = mouseX KR 2200 18000 Exponential 0.2->         rq = mouseY KR 10 0.4 Linear 0.2->     in bPeakEQ i freq rq 6--calculate coefficients and use sos (see also bLowPass4)--> g_03 =->     let i = soundIn 0->         freq = mouseX KR 2200 18000 Exponential 0.2->         rq = mouseY KR 10 0.4 Linear 0.2->         (a0, a1, a2, b1, b2) = bPeakEQCoef sampleRate freq rq 6->     in sos i a0 a1 a2 b1 b2
− Help/UGen/balance2.help.lhs
@@ -1,47 +0,0 @@-> import Sound.SC3 {- hsc3 -}--{Balance2.ar(LFSaw.ar(44),Pulse.ar(33),FSinOsc.kr(0.5),0.1)}.play--> g_01 =->     let l = lfSaw AR 44 0->         r = pulse AR 33 0.5->         p = fSinOsc KR 0.5 0->     in balance2 l r p 0.1--{var s=SinOsc.ar([440,550]);Balance2.ar(s[0],s[1],LFNoise0.kr(4),0.3)}.play--> g_02 =->     let [s0,s1] = mceChannels (sinOsc AR (mce2 440 550) 0)->         n = lfNoise0 'α' KR 4->     in balance2 s0 s1 n 0.3--{var s=SinOsc.ar(440);Out.ar(0,0.2*Balance2.ar(s,s,SinOsc.kr(0.2)))}.play--> g_03 =->     let s = sinOsc AR 440 0->         p = sinOsc KR 0.2 0->     in balance2 s s p 1 * 0.2--{var s=SinOsc.ar(440);Out.ar(0,Balance2.ar(s,s,SinOsc.kr(0.2),0.2))}.play--> g_04 =->     let s = sinOsc AR 440 0->         p = sinOsc KR 0.2 0->     in balance2 s s p 0.2--    > withSC3 (send (n_trace [-1]))--{var s=SinOsc.ar(440);Out.ar(0,Balance2.ar(s,s,MouseX.kr(-1,1),0.2))}.play--> g_05 =->     let s0 = sinOsc AR 440 0->         s1 = sinOsc AR 550 0->         x = mouseX KR (-1) 1 Linear 0.2->     in balance2 s0 s1 x 0.2--> g_06 =->     let s = soundIn 0->         l = lpf s 500->         h = s - l->         n = lfNoise0 'α' KR 4->     in balance2 l h n 0.3
− Help/UGen/beatTrack.help.lhs
@@ -1,14 +0,0 @@-> import Sound.SC3 {- hsc3 -}--    > withSC3 (async (b_alloc 10 1024 1))--> g_01 =->     let i = soundIn 0->         x = mouseX KR (-1) 1 Linear 0.2->         [b, h, q, t] = mceChannels (beatTrack KR (fft' 10 i) x)->         f = mce [440, 660, 880]->         a = mce [0.4, 0.2, 0.1]->         s = mix (sinOsc AR f 0 * a * decay (mce [b, h, q]) 0.05)->     in i + s--
− Help/UGen/blip.help.lhs
@@ -1,29 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = blip AR 440 200 * 0.1--Modulate frequency--> g_02 = let f = xLine KR 20000 200 6 RemoveSynth in blip AR f 100 * 0.1--Modulate number of harmonics.--> g_03 = let nh = line KR 1 100 20 RemoveSynth in blip AR 200 nh * 0.2--Self-modulation at control rate.--> g_04 =->     let fr = blip KR 0.25 3 * 300 + 500->         nh = blip KR 0.15 2 * 20 + 21->     in blip AR fr nh * 0.2--Drawings--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen1 0.1 (blip AR 1000 20)--    import Sound.SC3.Plot.FFT {- hsc3-plot -}-    plot_ugen_fft1 0.1 (blip AR 1000 20)--![](sw/hsc3/Help/SVG/blip.0.svg)-![](sw/hsc3/Help/SVG/blip.1.svg)
− Help/UGen/blitB3.help.lhs
@@ -1,21 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 = X.blitB3 AR (xLine KR 10000 20 10 DoNothing) * 0.2--spot the aliasing--> g_02 = impulse AR (xLine KR 10000 20 10 DoNothing) 0 * 0.2--sawtooth--> g_03 =->   let x = mouseX KR 20 1000 Exponential 0.2->   in leakDC (integrator (X.blitB3 AR x * 0.2) 0.99) 0.995--sawtooth; super-saw, can integrate mix-leaks dealt with one by one so don't accumulate--> g_04 =->   let x = mouseX KR 1 4 Linear 0.2->   in mix (leakDC (integrator (X.blitB3 AR (x * mce [220,221,223,224]) * 0.125) 0.99) 0.995)
− Help/UGen/blitB3Saw.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->     let f = xLine KR 1000 20 10 DoNothing->     in X.blitB3Saw AR f 0.99 * 0.1--aliasing suddenly appears for very high frequencies--> g_02 =->     let f = mouseX KR 10 10000 Exponential 0.2->         c = mouseY KR 0.01 0.99 Linear 0.2->     in X.blitB3Saw AR f c * 0.1--comparison--> g_03 = mce2 (saw AR 20) (X.blitB3Saw AR 20 0.99) * 0.1
− Help/UGen/blitB3Square.help.lhs
@@ -1,28 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_00 =->   let x = mouseX KR 20 400 Exponential 0.2->   in X.blitB3Square AR x 0.99 * 0.1--> g_01 =->     let f = xLine KR 1000 20 10 DoNothing->     in X.blitB3Square AR f 0.99 * 0.1--aliasing suddenly appears for very high frequencies--> g_02 =->     let f = mouseX KR 20 10000 Exponential 0.2->         c = mouseY KR 0.001 0.999 Linear 0.2->     in X.blitB3Square AR f c * 0.1--difference in CPU usage (excessive wire use,-w 1024)--> f_03 sqr_osc =->     let f z = midiCPS (range 36 72 (lfNoise0 z KR (rand z 2 3)))->         l z = rand z (-1) 1->         o z = pan2 (sqr_osc AR (f z) * 0.1) (l z) 0.1->     in sum (map o [0::Int .. 99])--> g_03 = f_03 (\rt f -> X.blitB3Square rt f 0.99)-> g_04 = f_03 (\rt f -> pulse rt f 0.5)
− Help/UGen/blitB3Tri.help.lhs
@@ -1,19 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 = X.blitB3Tri AR (xLine KR 1000 20 10 DoNothing) 0.99 0.99 * 0.1--unfortunately, aliasing returns at higher frequencies-(over 5000Hz or so) with a vengence (very beautiful in point scope)--> g_02 =->   let x = mouseX KR 20 8000 Exponential 0.2->       y = mouseY KR 0.001 0.99 Linear 0.2->   in X.blitB3Tri AR x 0.99 y * 0.1--more efficient, some aliasing from 3000, but not so scary over 5000-Duller sound (less high harmonics included for lower fundamentals)--> g_03 =->   let x = mouseX KR 20 8000 Exponential 0.2->   in lfTri AR x 0 * 0.1
− Help/UGen/blockSize.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--default block size is 64 samples--> g_01 = sinOsc AR (mce2 (blockSize * 3) (64 * 3 + 1)) 0 * 0.1--> g_02 = sinOsc AR (mce2 (blockSize * 3) ((controlDur * sampleRate * 3) + 1)) 0 * 0.1
− Help/UGen/bpf.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let f = fSinOsc KR (xLine KR 0.7 300 20 RemoveSynth) 0 * 3600 + 4000->     in bpf (saw AR 200 * 0.5) f 0.3--> g_02 =->     let x = mouseX KR 100 10000 Exponential 0.2->     in bpf (saw AR 200 * 0.5) x 0.3--> g_03 =->     let n = whiteNoise 'α' AR->         x = mouseX KR 220 440 Exponential 0.1->         y = mouseY KR 0.01 0.2 Linear 0.1->     in bpf n (mce [x, 550 - x]) y--    import Sound.SC3.Plot.FFT {- hsc3-plot -}-    plot_ugen_fft1 0.05 (bpf (whiteNoise 'α' AR) 440 0.01)--BPF on control signals:--> g_04 =->     let vib = bpf (pinkNoise 'α' KR) (mouseX KR 1 100 Exponential 0.2) 0.3 * 10->     in sinOsc AR (vib * 200 + 600) 0 * 0.1
− Help/UGen/bpz2.help.lhs
@@ -1,8 +0,0 @@-   Sound.SC3.UGen.Help.viewSC3Help "BPZ2"-   Sound.SC3.UGen.DB.ugenSummary "BPZ2"--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = whiteNoise 'α' AR->     in bpz2 (n * 0.25)
− Help/UGen/brf.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let i = saw AR 200 * 0.1->         freq = fSinOsc KR (xLine KR 0.7 300 20 RemoveSynth) 0 * 3800 + 4000->         rq = 0.3->     in brf i freq rq
− Help/UGen/brownNoise.help.lhs
@@ -1,20 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = brownNoise 'α' AR * 0.1--KR rate noise as frequency control--> g_02 =->     let n = brownNoise 'α' KR->     in sinOsc AR (linExp n (-1) 1 64 9600) 0 * 0.1--Drawing--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen1 0.1 (brownNoise 'γ' AR)--    import Sound.SC3.Plot.FFT {- hsc3-plot -}-    plot_ugen_fft1 0.1 (brownNoise 'γ' AR)--![](sw/hsc3/Help/SVG/brownNoise.0.svg)-![](sw/hsc3/Help/SVG/brownNoise.1.svg)
− Help/UGen/bufAllpassC.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Allocate buffer--    > withSC3 (async (b_alloc 0 44100 1))--Filtered decaying noise bursts--> g_01 =->     let d = dust 'α' AR 1->         n = whiteNoise 'β' AR->         x = decay d 0.2 * n * 0.25->     in bufAllpassC 0 x 0.25 6
− Help/UGen/bufAllpassL.help.lhs
@@ -1,1 +0,0 @@-See bufAllpassC
− Help/UGen/bufAllpassN.help.lhs
@@ -1,1 +0,0 @@-See bufAllpassC
− Help/UGen/bufChannels.help.lhs
− Help/UGen/bufCombC.help.lhs
@@ -1,29 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Allocate buffer zero (required for examples below)--    > withSC3 (async (b_alloc 0 44100 1))--Comb filter as resonator. The resonant fundamental is equal to-reciprocal of the delay time.--> g_01 =->     let n = whiteNoise 'α' AR->         dt = xLine KR 0.0001 0.01 20 RemoveSynth->     in bufCombC 0 (n * 0.1) dt 0.2--With negative feedback--> g_02 =->     let n = whiteNoise 'α' AR->         dt = xLine KR 0.0001 0.01 20 RemoveSynth->     in bufCombC 0 (n * 0.1) dt (-0.2)--Used as an echo (filtered decaying noise bursts)--> g_03 =->     let d = dust 'α' AR 1->         n = whiteNoise 'β' AR->         i = decay (d * 0.5) 0.2 * n->     in bufCombC 0 i 0.2 3-
− Help/UGen/bufCombL.help.lhs
@@ -1,1 +0,0 @@-See bufCombC
− Help/UGen/bufCombN.help.lhs
@@ -1,1 +0,0 @@-See bufCombC
− Help/UGen/bufDelayC.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Allocate buffer zero (required for examples below)--    > withSC3 (async (b_alloc 0 44100 1))--Dust randomly triggers Decay to create an exponential decay envelope-for the WhiteNoise input source.  The input is mixed with the delay.--> g_01 =->     let t = dust 'α' AR 1->         n = whiteNoise 'β' AR->         d = decay t 0.5 * n * 0.3->     in bufDelayC 0 d 0.2 + d--Mouse control for delay time--> g_02 =->     let t = dust 'α' AR 1->         n = whiteNoise 'β' AR->         d = decay t 0.3 * n->         x = mouseX KR 0.0 0.2 Linear 0.1->     in d + bufDelayC 0 d x
− Help/UGen/bufDelayL.help.lhs
@@ -1,1 +0,0 @@-See bufDelayC
− Help/UGen/bufDelayN.help.lhs
@@ -1,1 +0,0 @@-See bufDelayC
− Help/UGen/bufDur.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Load sound file to buffer zero (required for examples)--> fn_01 = "/home/rohan/data/audio/pf-c5.aif"--> m_01 = b_allocRead 0 fn_01 0 0--    > withSC3 (async m_01)--Read without loop, trigger reset based on buffer duration--> g_01 =->     let t = impulse AR (recip (bufDur KR 0)) 0->         p = sweep t (bufSampleRate KR 0)->     in bufRd 1 AR 0 p NoLoop LinearInterpolation
− Help/UGen/bufFrames.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3--Load sound file to buffer zero (required for examples)--> fn_01 = "/home/rohan/data/audio/pf-c5.aif"---> m_01 = b_allocRead 0 fn_01 0 0--    > withSC3 (async m_01)--Read without loop, trigger reset based on buffer duration--> g_01 =->     let p = phasor AR 0 (bufRateScale KR 0) 0 (bufFrames KR 0) 0->     in bufRdL 1 AR 0 p NoLoop--Mouse location drags play head--> g_02 =->     let r = mce [0.05,0.075 .. 0.15]->         p = k2a (mouseX KR 0 (bufFrames KR 0) Linear r)->     in mix (bufRdL 1 AR 0 p NoLoop)
− Help/UGen/bufRateScale.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3 {- hsc 3 -}--Load sound file to buffer zero (required for examples)--> fn_01 = "/home/rohan/rd/j/2019-04-21/FAIRLIGHT/IIX/REEDS/clarmdhi.snd"--> m_01 = b_allocRead 0 fn_01 0 0--    > withSC3 (async m_01)--> f_01 m =->     let r = m * bufRateScale KR 0->         p = phasor AR 0 r 0 (bufFrames KR 0) 0->     in bufRdL 1 AR 0 p NoLoop--> g_01 = f_01 1.0 * 0.5--    > audition (sinOsc AR (midiCPS 69) 0 * 0.2)--Read buffer at ~ 3/4 reported sample rate.--> g_02 = f_01 (midiRatio (-5)) * 0.5--    > audition (sinOsc AR (midiCPS 64) 0 * 0.2)
− Help/UGen/bufRd.help.lhs
@@ -1,40 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Load sound file to buffer zero (required for examples)--> fn_01 = "/home/rohan/data/audio/pf-c5.aif"--    > withSC3 (async (b_allocRead 0 fn_01 0 0))--Phasor as phase input--> g_01 =->     let sc = bufRateScale KR 0->         tr = impulse AR (recip (bufDur KR 0)) 0->         ph = phasor AR tr sc 0 (bufFrames KR 0) 0->     in bufRdL 1 AR 0 ph NoLoop--Audio rate sine oscillator as phase input--> g_02 =->     let phase = sinOsc AR 0.1 0 * bufFrames KR 0 * bufRateScale KR 0->     in bufRd 1 AR 0 phase Loop NoInterpolation--There are constructors, bufRd{N|L|C}, for the fixed cases.--> g_03 =->     let x = mouseX KR (mce [5, 10]) 100 Linear 0.1->         n = lfNoise1 'α' AR x->     in bufRdL 1 AR 0 (n * bufFrames KR 0 * bufRateScale KR 0) Loop--Allocate and generate (non-wavetable) buffer--    > withSC3 (do {_ <- async (b_alloc 11 256 1)-    >             ;let f = [Normalise,Clear]-    >              in send (b_gen_sine1 11 f [1,1/2,1/3,1/4,1/5])})--Fixed frequency wavetable oscillator--> g_04 =->     let phase = linLin (saw AR 440) (-1) 1 0 1 * bufFrames KR 11->     in bufRd 1 AR 11 phase Loop NoInterpolation * 0.1
− Help/UGen/bufSampleRate.help.lhs
@@ -1,15 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Load sound file to buffer zero (required for examples)--> fn_01 = "/home/rohan/data/audio/pf-c5.aif"--> m_01 = b_allocRead 0 fn_01 0 0--    > withSC3 (async m_01)--Sine tone derived from sample rate of buffer (ie. 48000 / 100 == 480) and a 440Hz tone.--> g_01 =->     let f = mce [bufSampleRate KR 0 * 0.01, 440]->     in sinOsc AR f 0 * 0.1
− Help/UGen/bufWr.help.lhs
@@ -1,27 +0,0 @@-> import Sound.SC3 {- hsc3 -}--allocate a buffer (id = 0) for writing into--    > withSC3 (send (b_alloc 0 (44100 * 2) 1))--write into the buffer (id = 0) with a bufWr--> wr_gr =->     let rt = control KR "wr-rate" 1->         o = sinOsc AR (lfNoise1 'α' KR 2 * 300 + 400) 0 * 0.1->         w = bufWr 0 (phasor AR 0 (bufRateScale KR 0 * rt) 0 (bufFrames KR 0) 0) Loop o->     in mrg2 (silent 1) w--read it with a BufRd--> rd_gr =->     let rt = control KR "rd-rate" 1->     in bufRdL 1 AR 0 (phasor AR 0 (bufRateScale KR 0 * rt) 0 (bufFrames KR 0) 0) Loop--    > audition wr_gr-    > audition rd_gr--set read & write rates independently--    > withSC3 (send (n_set1 1 "wr-rate" 0.25))-    > withSC3 (send (n_set1 1 "rd-rate" 13.0))
− Help/UGen/cOsc.help.lhs
@@ -1,35 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Allocate and fill buffer.--> gen_tbl b p = let f = [Normalise,Wavetable,Clear] in b_gen_sine1 b f p--> b_01 :: Num n => n {- or {-# Language NoMonomorphismRestriction #-} -}-> b_01 = 10-> b_01_setup = [b_alloc b_01 512 1,gen_tbl b_01 [1,1/2,1/3,1/4,1/5,1/6,1/7,1/8,1/9,1/10]]--    > withSC3 (mapM_ async b_01_setup)--Fixed beat frequency--> g_01 = cOsc AR b_01 200 0.7 * 0.1--Modulate beat frequency with mouseX--> g_02 = cOsc AR b_01 200 (mouseX KR 0 4 Linear 0.2) * 0.1--Compare with plain osc--> g_03 = osc AR b_01 200 0.0 * 0.1--Summing behaviour (<http://article.gmane.org/gmane.comp.audio.supercollider.devel/62575>)--> b_02 :: Num n => n-> b_02 = 11-> b_02_setup = [b_alloc b_02 512 1,gen_tbl b_02 [1]]--    > withSC3 (mapM_ async b_02_setup)-    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.1 (cOsc AR 11 100 5)--![](sw/hsc3/Help/SVG/cOsc.0.svg)
− Help/UGen/changed.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--simple composition of hpz1 and greater_than--> g_01 =->     let s = lfNoise0 'α' KR 2->         c = changed s 0->         c' = decay2 c 0.01 0.5->     in sinOsc AR (440 + mce2 s c' * 440) 0 * 0.1--sinOsc is constantly changing...--> g_02 =->   let s = sinOsc AR 440 0->       c = changed s 0->   in s * c * 0.2
− Help/UGen/choose.help.lhs
@@ -1,9 +0,0 @@-    :t choose--choose is a composite of iRand and select.--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let f = uclone 'α' 2 (choose 'β' (mce [440,460 .. 880]))->     in sinOsc AR f  0 * 0.1
− Help/UGen/clip.help.lhs
@@ -1,3 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = clip (sinOsc AR 440 0 * 0.4) (-0.25) 0.25
− Help/UGen/clip2.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--clipping distortion--> g_01 = clip2 (fSinOsc AR 400 0) 0.2--> g_02 = clip2 (fSinOsc AR 400 0) (line KR 0 1 8 RemoveSynth)
− Help/UGen/clipNoise.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3--> g_01 = clipNoise 'α' AR * 0.1 {- hsc3 -}--Drawings--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen1 0.01 (clipNoise 'α' AR)--![](sw/hsc3/Help/SVG/clipNoise.0.svg)
− Help/UGen/coinGate.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let g = coinGate 'α' 0.2 (impulse KR 10 0)->         f = tRand 'β' 300.0 400.0 g->     in sinOsc AR f 0 * 0.1
− Help/UGen/combC.help.lhs
@@ -1,1 +0,0 @@-See combN
− Help/UGen/combL.help.lhs
@@ -1,1 +0,0 @@-See combN
− Help/UGen/combN.help.lhs
@@ -1,37 +0,0 @@-Sound.SC3.UGen.Help.viewSC3Help "CombN"-Sound.SC3.UGen.DB.ugenSummary "CombN"--> import Sound.SC3 {- hsc3 -}--Comb filter as resonator. The resonant fundamental is equal to-reciprocal of the delay time.--> g_01 =->     let n = whiteNoise 'α' AR->         dt = xLine KR 0.0001 0.01 20 RemoveSynth->     in combN (n * 0.1) 0.01 dt 0.2--> g_02 =->     let n = whiteNoise 'α' AR->         dt = xLine KR 0.0001 0.01 20 RemoveSynth->     in combL (n * 0.1) 0.01 dt 0.2--> g_03 =->     let n = whiteNoise 'α' AR->         dt = xLine KR 0.0001 0.01 20 RemoveSynth->     in combC (n * 0.1) 0.01 dt 0.2--With negative feedback--> g_04 =->     let n = whiteNoise 'α' AR->         dt = xLine KR 0.0001 0.01 20 RemoveSynth->     in combC (n * 0.1) 0.01 dt (-0.2)--Used as an echo.--> g_05 =->     let d = dust 'α' AR 1->         n = whiteNoise 'β' AR->         i = decay (d * 0.5) 0.2 * n->     in combC i 0.2 0.2 3
− Help/UGen/compander.help.lhs
@@ -1,46 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Example signal to process.--> g_01 =->     let e = decay2 (impulse AR 8 0 * lfSaw KR 0.3 0 * 0.3) 0.001 0.3->         p = mix (pulse AR (mce [80, 81]) 0.3)->     in e * p--> g_02 = soundIn 0--Noise gate (no hold, no hysteresis)--> f_01 z =->     let x = mouseX KR 0.01 0.15 Linear 0.1->     in mce [z, compander z z x 10 1 0.002 0.15]--Compressor--> f_02 z =->     let x = mouseX KR 0.01 1 Linear 0.1->     in mce [z, compander z z x 1 (1/3) 0.01 0.01]--Expander--> f_03 z =->     let x = mouseX KR 0.01 1 Linear 0.1->     in mce [z, compander z z x 1 3 0.01 0.1]--Limiter--> f_04 z =->     let x = mouseX KR 0.01 1 Linear 0.1->     in mce [z, compander z z x 1 (1/10) 0.01 0.01]--Sustainer--> f_05 z =->     let x = mouseX KR 0.01 0.15 Linear 0.1->     in mce [z, compander z z x (1/3) 1.0 0.01 0.05]--> g_03 = f_01 g_01-> g_04 = f_02 g_01-> g_05 = f_03 g_01-> g_06 = f_04 g_01-> g_07 = f_05 g_01
− Help/UGen/complexRes.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let s = pulse AR 0.1 0.001 * 0.1->       fr = 50 + 5000 * sinOsc AR 50 0->       dt = 0.5->   in X.complexRes s fr dt
− Help/UGen/concat.help.lhs
@@ -1,19 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> fn_01 = "/home/rohan/data/audio/pf-c5.snd"--    withSC3 (async (b_allocRead 12 fn_01 0 0))--Granulator--> gr_01 =->     let y0 = mouseY KR 0.01 1 Linear 0.2->         y1 = mouseY KR 12 100 Linear 0.2->         n = lfNoise0 'α' KR y0 * 3 + 4.5->         k = saw AR (sinOsc KR n 0 * 10 + y1)->         i = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing->         x0 = mouseX KR 0.01 0.1 Linear 0.2->         y2 = mouseY KR 0 0.1 Linear 0.2->         c :: UGen->         c = concat' k i 2 2 2 x0 0 y2 1 0.5 0 0->     in pan2 c 0 1
− Help/UGen/controlDur.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--default block size = 64, default sample rate = 48000--> g_01 = sinOsc AR (mce2 (recip controlDur) (controlRate + 1)) 0 * 0.1--> g_02 = sinOsc AR (mce2 (recip controlDur) (recip (blockSize / sampleRate) + 1)) 0 * 0.1
− Help/UGen/controlRate.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--play a sine tone at control rate, the reciprocal of controlDur--> g_01 =->     let f = mce2 controlRate (recip controlDur)->     in sinOsc AR f 0 * 0.1
− Help/UGen/convolution.help.lhs
@@ -1,11 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let k = pinkNoise 'α' AR * 0.1->       i = soundIn 0->   in convolution AR i k 2048--> g_02 =->   let k = mix (lfSaw AR (mce [300,500,800,1000] * mouseX KR 1.0 2.0 Linear 0.2) 0 * 0.1)->       i = soundIn 0->   in convolution AR i k 1024 * 0.5
− Help/UGen/coyote.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let i = soundIn 0->       c = X.coyote KR i 0.2 0.2 0.01 0.5 0.05 0.1->       o = pinkNoise 'α' AR * decay c 1->   in mce2 i o
− Help/UGen/crackle.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = crackle AR 1.95 * 0.2--Modulate chaos parameter--> g_02 = crackle AR (line KR 1.0 2.0 3 RemoveSynth) * 0.2--Drawing--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.01 (crackle AR 1.95)-    > plot_ugen1 0.025 (crackle AR (line KR 1.0 2.0 0.025 DoNothing))--![](sw/hsc3/Help/SVG/crackle.0.svg)-![](sw/hsc3/Help/SVG/crackle.1.svg)
− Help/UGen/crossoverDistortion.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--{CrossoverDistortion.ar(SinOsc.ar([400, 404], 0, 0.2), MouseX.kr(0, 1), MouseY.kr(0, 1))}.play--> g_01 =->   let x = mouseX KR 0 1 Linear 0.2->       y = mouseY KR 0 1 Linear 0.2->   in X.crossoverDistortion (sinOsc AR (mce2 400 404) 0 * 0.2) x y--{CrossoverDistortion.ar(SoundIn.ar, MouseX.kr(0, 1), MouseY.kr(0, 1))}.play--> g_02 =->   let x = mouseX KR 0 1 Linear 0.2->       y = mouseY KR 0 1 Linear 0.2->   in X.crossoverDistortion (soundIn 0) x y
− Help/UGen/cuspL.help.lhs
@@ -1,35 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Noise {- hsc3 -}--Default values--> g_00 = cuspL AR 22050 1.0 1.9 0.0 * 0.1--Vary frequency--> g_01 =->     let x = mouseX KR 20 (sampleRate / 2) Linear 0.1->     in cuspL AR x 1.0 1.99 0 * 0.3--Mouse-controlled parameters.--> g_02 =->     let x = mouseX KR 0.9 1.1 Linear 0.1->         y = mouseY KR 1.8 2.0 Linear 0.1->     in cuspL AR (sampleRate / 4) x y 0 * 0.3--As frequency control.--> g_03 =->     let x = mouseX KR 0.9 1.1 Linear 0.1->         y = mouseY KR 1.8 2.0 Linear 0.1->         n = cuspL AR 40 x y 0 * 0.3->     in sinOsc AR (n * 800 + 900) 0 * 0.4--Haskell implementation of equation.--> cusp_hs a b = iterate (cusp_f a b) 0--    import Sound.SC3.Plot {- hsc3-plot -}-    plotTable1 (take 600 (cusp_hs 1.0 1.9))-    plot_ugen_nrt (600,1) 1.0 (cuspL AR 600 1.0 1.9 0)
− Help/UGen/cuspN.help.lhs
@@ -1,1 +0,0 @@-See cuspL
− Help/UGen/dNoiseRing.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let tr = impulse AR 10 0->       x = mouseX KR 0 1 Linear 0.2->       y = mouseY KR 0 1 Linear 0.2->       nr = demand tr 0 (X.dNoiseRing x y 1.0 32.0 0.0)->       freq = midiCPS (linLin nr 0 (2**32) 40 (40 + 48))->   in sinOsc AR freq 0 * 0.1
− Help/UGen/dWGBowed.help.lhs
@@ -1,25 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let k = control KR->       out_ = k "out" 0->       freq = k "freq" 440->       amp = k "amp" 0.5->       force = k "force" 1->       gate_ = k "gate" 1->       pos = k "pos" 0.07->       c1 = k "c1" 0.25->       c3 = k "c3" 31->       pan = k "pan" 0->       vib = gendy1 'α' KR 1 1 1 1 0.1 4 0.5 0.5 12 0 * 0.003 + 1->       s1 = X.dWGBowed AR (freq  *vib) amp force gate_ pos 0.1 c1 c3 0.55 2->       s2 = X.dWGSoundBoard AR s1 20 20 0.8 199 211 223 227 229 233 239 241->       s3 = bpf s2 118 1 + s2->       s4 = bpf s3 430 1 + s3->       s5 = bpf s4 490 1 + s4->       s6 = lpf s5 6000->   in out out_ (pan2 (s6 * 0.1) pan 1)--    > import Sound.OSC {- hosc -}-    > withSC3 (sendMessage (n_set1 (-1) "gate" 0))
− Help/UGen/dWGBowedTor.help.lhs
@@ -1,25 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let k = control KR->       out_ = k "out" 0->       freq = k "freq" 440->       amp = k "amp" 0.5->       force = k "force" 1->       gate_ = k "gate" 1->       pos = k "pos" 0.07->       c1 = k "c1" 0.25->       c3 = k "c3" 31->       pan = k "pan" 0->       vib = gendy1 'α' KR 1 1 1 1 0.1 4 0.5 0.5 12 0 * 0.003 + 1->       s1 = X.dWGBowedTor AR (freq  *vib) amp force gate_ pos 0.1 c1 c3 0.55 2 5.2 1 3000 1.8->       s2 = X.dWGSoundBoard AR s1 20 20 0.8 199 211 223 227 229 233 239 241->       s3 = bpf s2 118 1 + s2->       s4 = bpf s3 430 1 + s3->       s5 = bpf s4 490 1 + s4->       s6 = lpf s5 6000->   in out out_ (pan2 (s6 * 0.1) pan 1)--    > import Sound.OSC {- hosc -}-    > withSC3 (sendMessage (n_set1 (-1) "gate" 0))
− Help/UGen/dWGPlucked2.help.lhs
@@ -1,50 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--self deleting--> g_01 =->   let freq = 440->       amp = 0.5->       gate_ = 1->       c3 = 20->       inp = let e = envelope [0,1,1,0] [0.001,0.006,0.0005] (map EnvNum [5,-5,-8])->             in amp * lfClipNoise 'α' AR 2000 * envGen AR gate_ 1 0 1 DoNothing e->       ps = X.dWGPlucked2 AR freq amp gate_ 0.1 1 c3 inp 0.1 1.008 0.55 0.01->       pan = 0->       z = detectSilence ps 0.001 0.1 RemoveSynth->   in mrg2 (pan2 ps pan 0.1) z--re-sounding--> f_02 dur =->   let sequ e s tr = demand tr 0 (dseq e dinf (mce s))->       t = let d = dseq 'α' dinf dur->           in tDuty AR d 0 DoNothing 1 0->       freq = let n0 = sequ 'β' [60,62,63,58,48,55] t->                  n1 = sequ 'γ' [63,60,48,62,55,58] t->              in midiCPS (mce2 n0 n1)->       amp = tRand 'δ' 0.01 0.35 t -- pulse amplitude (0  - 1, def = 0.5)->       gate_ = 1 -- synth release->       pos = tRand 'ε' 0.05 0.25 t -- pluck position (0 - 1, def = 0.14)->       c1 = 1 / tRand 'ζ' 0.25 1.75 t -- reciprocal of decay time (def = 1.0)->       c3 = tRand 'η' 10 1400 t -- high frequency loss factor (def = 30)->       inp = let e_dt = tRand 'θ' 0.05 0.150 t->                 env = decay2 t 0.001 e_dt * lfClipNoise 'ι' AR 2000->             in amp * lfClipNoise 'κ' AR 2000 * env -- pluck signal->       release = tRand 'λ' 0.05 0.15 t -- release time (seconds, def = 0.1)->       mistune = tRand 'μ' 0.992 1.008 t -- factor for detuning second string (def = 1.008)->       mp = tRand 'ν' 0.35 0.65 t -- excitation mixer (def = 0.55)->       gc = tRand 'ξ' 0.001 0.020 t -- coupling string factor (def = 0.01)->       ps = X.dWGPlucked2 AR freq amp gate_ pos c1 c3 inp release mistune mp gc->       pan = tRand 'ο' (-1) 1 t->   in pan2 ps pan 0.1--> g_02 = f_02 (mce [1,1,2,1,1,1,2,3,1,1,1,1,2,3,4] * 0.175)--and scaling--> g_03 =->   let m = mouseX KR 0.25 2.0 Linear 0.2->       d = 1 / (2 ** roundE (mce [1,1,2,1,1,1,2,3,1,1,1,1,2,3,4]))->   in f_02 (d * m)
− Help/UGen/dWGPluckedStiff.help.lhs
@@ -1,43 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--self deleting--> g_01 =->   let freq = 440->       amp = 0.5->       gate_ = 1->       pos = 0.14->       c1 = 1->       c3 = 30->       inp = let e = envelope [0,1,1,0] [0.001,0.006,0.0005] (map EnvNum [5,-5,-8])->             in amp * lfClipNoise 'α' AR 2000 * envGen AR gate_ 1 0 1 DoNothing e->       release = 0.1->       fB = 2.0->       ps = X.dWGPluckedStiff AR freq amp gate_ pos c1 c3 inp release fB->       pan = 0->       z = detectSilence ps 0.001 0.1 RemoveSynth->   in mrg2 (pan2 ps pan 0.1) z--re-sounding--> g_02 =->   let sequ e s tr = demand tr 0 (dseq e dinf (mce s))->       t = let d = dseq 'α' dinf (mce [1,1,2,1,1,1,2,3,1,1,1,1,2,3,4] * 0.175)->           in tDuty AR d 0 DoNothing 1 0->       freq = let n0 = sequ 'β' [60,62,63,58,48,55] t->                  n1 = sequ 'γ' [63,60,48,62,55,58] t->              in midiCPS (mce2 n0 n1)->       amp = tRand 'δ' 0.05 0.65 t -- pulse amplitude (0  - 1, def = 0.5)->       gate_ = 1 -- synth release->       pos = tRand 'ε' 0.05 0.25 t -- pluck position (0 - 1, def = 0.14)->       c1 = 1 / tRand 'ζ' 0.25 1.75 t -- reciprocal of decay time (def = 1.0)->       c3 = tRand 'η' 10 1400 t -- high frequency loss factor (def = 30)->       inp = let e_dt = tRand 'θ' 0.05 0.150 t->                 env = decay2 t 0.001 e_dt * lfClipNoise 'ι' AR 2000->             in amp * lfClipNoise 'κ' AR 2000 * env -- pluck signal->       release = tRand 'λ' 0.05 0.15 t -- release time (seconds, def = 0.1)->       fB = tRand 'μ' 1.0 4.0 t -- inharmonicity factor (def = 2.0)->       ps = X.dWGPluckedStiff AR freq amp gate_ pos c1 c3 inp release fB->       pan = tRand 'ο' (-1) 1 t->   in pan2 ps pan 0.1
− Help/UGen/dbAmp.help.lhs
@@ -1,11 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Linear db motion is exponential amplitude decay--> g_01 =->     let a = dbAmp (line KR (-12) (-40) 10 RemoveSynth)->     in fSinOsc AR 800 0 * a--There is a non-UGen variant.--    > dbAmp (-26::Double) == 0.05011872336272722
− Help/UGen/dbrown.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let n = dbrown 'α' dinf 0 15 1 {- Dbrown(0, 15, 1, inf) -}->       x = mouseX KR 1 40 Exponential 0.1->       t = impulse KR x 0->       f = demand t 0 n * 30 + 340->   in sinOsc AR f 0 * 0.1--> g_02 =->   let n = demand (impulse KR 10 0) 0 (dbrown 'α' dinf (-1) 1 0.05)->       f = linExp n (-1) 1 64 9600->   in sinOsc AR f 0 * 0.1
− Help/UGen/dbufrd.help.lhs
@@ -1,39 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import System.Random {- random -}--setup pattern at buffer 10--    > let n = randomRs (200.0,500.0) (mkStdGen 0)-    > in withSC3 (async (b_alloc_setn1 10 0 (take 24 n)))--pattern as frequency input--> g_01 =->     let s = dseq 'α' 3 (mce [0,3,5,0,3,7,0,5,9])->         b = dbrown 'β' 5 0 23 1->         p = dseq 'γ' dinf (mce [s,b])->         t = dust 'δ' KR 10->         r = dbufrd 'ε' 10 p Loop->     in sinOsc AR (demand t 0 r) 0 * 0.1--setup time pattern--    > let {i = randomRs (0,2) (mkStdGen 0)-    >     ;n = map ([1,0.5,0.25] !!) i}-    > in withSC3 (async (b_alloc_setn1 11 0 (take 24 n)))--requires buffers 10 and 11 as allocated above--> g_02 =->     let s = dseq 'α' 3 (mce [0,3,5,0,3,7,0,5,9])->         b = dbrown 'β' 5 0 23 1->         p = dseq 'γ' dinf (mce [s,b])->         j = dseries 'δ' dinf 0 1->         d = dbufrd 'ε' 11 j Loop->         l = dbufrd 'ζ' 10 p Loop->         f = duty KR (d * 0.5) 0 DoNothing l->     in sinOsc AR f 0 * 0.1--free buffers--    > withSC3 (async (b_free 10) >> async (b_free 11))
− Help/UGen/dbufwr.help.lhs
@@ -1,52 +0,0 @@-> import Sound.SC3 {- hsc3 -}--allocate buffer--    > withSC3 (async (b_alloc_setn1 0 0 (replicate 24 210)))--monadic graph constructor (type `C-cM-a` at g_01 to hear, `C-cM-g` to see)--> g_01 :: UId m => m UGen-> g_01 = do->   s1 <- dseriesM 30 0 3->   s2 <- dseriesM 30 0 1->   s3 <- dseriesM 16 1 1->   s4 <- dwhiteM 8 1 16->   s5 <- dseqM dinf (mce2 s3 s4)->   wt <- dustM KR 1                  {- write trigger -}->   rp <- dseriesM dinf 0 1           {- read pointer -}->   wp <- dseqM dinf (mce2 s1 s2)     {- write pointer -}->   r <- dbufrdM 0 rp Loop            {- reader -}->   w <- dbufwrM 0 wp (s5 * 60) Loop  {- writer -}->   let d = demand wt 0 w->       f = lag (demand (impulse KR 16 0) 0 r) 0.01->       o = sinOsc AR (f * mce2 1 1.01) 0 * 0.1->   return (mrg [d, out 0 o])--variant written using a local buffer and uid ugen forms--> g_02 =->     let b = asLocalBuf 'α' (replicate 24 210)->         s = dseq 'β' dinf (mce2 (dseries 'γ' 16 1 1) (dwhite 'δ' 8 1 16))->         rp = dseries 'ε' dinf 0 1 {- read pointer -}->         wp = dseq 'ζ' dinf (mce2 (dseries 'η' 30 0 3) (dseries 'θ' 30 0 1)) {- write pointer -}->         r = dbufrd 'ι' b rp Loop {- reader -}->         w = dbufwr 'κ' b wp (s * 60) Loop {- writer -}->         d = demand (dust 'λ' KR 1) 0 w->         f = lag (demand (impulse KR 16 0) 0 r) 0.01->         o = sinOsc AR (f * mce2 1 1.01) 0 * 0.1->     in mrg2 d (out 0 o)--demand rate single memory recurrence relation.--> rec1 z k t f =->   let b = asLocalBuf z [k]->       r = dbufrd z b 0 Loop {- reader -}->       w = dbufwr z b 0 (f r) Loop {- writer -}->   in mrg2 (demand t 0 r) (demand t 0 w)--simple counter, written in terms of rec1.--> g_03 =->     let f = rec1 'α' 0 (impulse KR 6 0) (\r -> (r + 1) `modE` 24)->     in sinOsc AR (midiCPS (60 + f)) 0 * 0.1
− Help/UGen/dc.help.lhs
@@ -1,22 +0,0 @@-> import Sound.SC3 {- hsc3 -}--error...--> g_01 = 0 :: UGen--    > withSC3 (send (n_trace [-1]))--zero--> g_02 = dc AR 0--DC offset; will click on start and finish--> g_03 = dc AR 0.5-> g_04 = 0.5 + sinOsc AR 440 0 * 0.1-> g_05 = dc AR 0.5 + sinOsc AR 440 0 * 0.1--Transient before LeakDC adapts and suppresses the offset?--> g_06 = dc AR 1-> g_07 = leakDC (dc AR 1) 0.995
− Help/UGen/dconst.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}--fast notes of random duration for 0.5 seconds, then a single note for 0.5 seconds--there is no Dexprand--> dexprand z rp l r = lin_exp (dwhite z rp 0 1) 0 1 l r--> g_01 =->   let t = dconst 'α' 0.5 (dwhite 'β' dinf 0.05 0.08) 0.001->       f = duty KR (dseq 'γ' dinf (mce2 t 0.5)) 0 DoNothing (dexprand 'δ' dinf 200 600)->   in varSaw AR (lag f 0.02) 0 0.3 * 0.1
− Help/UGen/decay.help.lhs
@@ -1,15 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Used as an envelope.--> g_01 =->     let n = pinkNoise 'α' AR -- sinOsc AR 11000 0->         s = impulse AR (xLine KR 1 50 20 RemoveSynth) 0.25->     in decay s 0.2 * n--Drawing--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.05 (decay (impulse AR 1 0) 0.01)--![](sw/hsc3/Help/SVG/decay.0.svg)
− Help/UGen/decay2.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Used as an envelope--> g_01 =->     let s = fSinOsc AR 600 0 * 0.25 -- sinOsc AR 11000 0 * 0.25->         f = xLine KR 1 50 20 RemoveSynth->     in decay2 (impulse AR f 0) 0.01 0.2 * s--Compare the above with Decay used as the envelope.--> g_02 =->     let s = fSinOsc AR 600 0 * 0.25->         f = xLine KR 1 50 20 RemoveSynth->     in decay (impulse AR f 0) 0.2 * s--Drawings, attack and decay are a difference of two decays, hence inversion--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.05 (decay2 (impulse AR 1 0) 0.001 0.01)-    > plot_ugen1 0.05 (decay2 (impulse AR 1 0) 0.01 0.001)--![](sw/hsc3/Help/SVG/decay2.0.svg)-![](sw/hsc3/Help/SVG/decay2.1.svg)
− Help/UGen/degreeToKey.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3 {- hsc3 -}--allocate & initialise buffer zero--> m_01 = b_alloc_setn1 0 0 [0,2,3.2,5,7,9,10]--    > withSC3 (async m_01)--modal space, mouse x controls discrete pitch in dorian mode--> f_01 buf =->     let x = mouseX KR 0 15 Linear 0.1->         k = degreeToKey buf x 12->         f b = let n = lfNoise1 'α' KR (mce [3,3.05])->                   o = sinOsc AR (midiCPS (b + k + n * 0.04)) 0 * 0.1->                   t = lfPulse AR (midiCPS (mce [48,55])) 0.15 0.5->                   d = rlpf t (midiCPS (sinOsc KR 0.1 0 * 10 + b)) 0.1 * 0.1->                   m = o + d->               in combN m 0.31 0.31 2 + m->     in (f 48 + f 72) * 0.25--> g_01 = f_01 0--> g_02 = f_01 (asLocalBuf 'β' [0,2,3.2,5,7,9,10])
− Help/UGen/delay1.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = let s = impulse AR 1 0 in s + (delay1 s)--left=original, right=subtract delayed from original--> g_02 = let z = dust 'α' AR 1000 in mce2 z (z - delay1 z)
− Help/UGen/delay2.help.lhs
@@ -1,3 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = let s = impulse AR 1 0 in s + (delay2 s)
− Help/UGen/delayC.help.lhs
@@ -1,1 +0,0 @@-See delayN
− Help/UGen/delayL.help.lhs
@@ -1,10 +0,0 @@-See delayN--> import Sound.SC3 {- hsc3 -}--> g_01 =->   let t = mouseX KR 0.001 0.2 Exponential 0.2->       s = impulse AR 1 0->       d = delayL s 0.6 t->   in mce2 d s-
− Help/UGen/delayN.help.lhs
@@ -1,31 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Dust randomly triggers Decay to create an exponential decay envelope-for the WhiteNoise input source.  The input is left, the delay right.--> g_01 =->     let i = decay (dust 'α' AR 1) 0.3 * whiteNoise 'β' AR->     in mce2 i (delayN i 0.1 0.1)--The delay time can be varied at control rate.  An oscillator either-reinforcing or cancelling with the delayed copy of itself.--> g_02 =->     let i = sinOsc AR 320 0 * 0.1->         maxdelaytime = 0.005->         delaytime = mouseX KR 0.0 maxdelaytime Linear 0.15->     in i + delayN i maxdelaytime delaytime--Flanging--> f_03 lp_f =->   let f = 0.1 -- flanger freq->       g = 0.1 -- feedback->       i = soundIn (mce2 0 1) -- two channels of input signal->       fb = i + localIn 2 AR 0 -- add feedback->       e = delayN fb 0.02 (sinOsc KR f 0 * 0.005 + 0.005) -- max delay of 20msec->       o = localOut (lp_f e * g)->   in mrg2 (i + e) o--> g_03 = f_03 id-> g_04 = f_03 (\x -> bpf x (mouseX KR 1000 10000 Linear 0.2) 0.1) -- filter in the feedback loop
− Help/UGen/demand.help.lhs
@@ -1,45 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 :: UId m => m UGen-> g_01 = do->   r <- dustM KR 1->   s <- dgeomM dinf (midiCPS 72) (midiRatio 1)->   let t = impulse KR 10 0->       f = demand t r s->       o = sinOsc AR (mce [f,f + 0.7]) 0->   return (max (cubed o) 0 * 0.1)--> g_02 =->     let n = diwhite 'α' dinf 60 72->         t = impulse KR 10 0->         s = midiCPS n->         f = demand t 0 s->         o = sinOsc AR (mce [f,f + 0.7]) 0->     in cubed (cubed o) * 0.1--audio rate (poll output is equal for x1 and x2)--> g_03 =->     let i = lfNoise2 'α' AR 8000->         d = dseq 'β' dinf (mce [i])->         x = mouseX KR 1 3000 Exponential 0.2->         t = impulse AR x 0->         x1 = demand t 0 d->         x2 = latch i t->         s = mce2 x1 x2->         p = poll t s 0 (mce2 (label "x1") (label "x2"))->         o = sinOsc AR (s * 300 + 400) 0 * 0.1->     in mrg2 o p--> g_04 =->   let t = impulse AR 5 0->       d1 = dseq 'α' dinf (mce [1,0,1,1,0,1,0,0,1,0,1])->       d2 = dseq 'β' dinf (mce [0,1,0,0,1,0,1,1,0,1,0])->       x = demand t 0 (mce2 d1 d2) * t->   in decay x 1 * brownNoise 'γ' AR * 0.1--> g_05 =->   let t = impulse AR 5 0->       d = drand 'α' dinf (mce [dseq 'β' 1 (mce [1,1,1,1]),dseq 'γ' 1 (mce [1,0,0,0])])->       x = demand t 0 d * t->   in decay x 1 * brownNoise 'δ' AR * 0.1
− Help/UGen/demandEnvGen.help.lhs
@@ -1,109 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Frequency ramp, exponential curve.--> g_01 =->     let l = dseq 'α' dinf (mce2 440 9600)->         y = mouseY KR 0.01 3 Exponential 0.2->         s = env_curve_shape EnvExp->         f = demandEnvGen AR l y s 0 1 1 1 0 1 DoNothing->     in sinOsc AR f 0 * 0.1--Frequency envelope with random times.--> g_02 =->     let l = dseq 'α' dinf (mce [204,400,201,502,300,200])->         t = drand 'β' dinf (mce [1.01,0.2,0.1,2.0])->         y = mouseY KR 0.01 3 Exponential 0.2->         s = env_curve_shape EnvCub->         f = demandEnvGen AR l (t * y) s 0 1 1 1 0 1 DoNothing->     in sinOsc AR (f * mce2 1 1.01) 0 * 0.1--Frequency modulation--> g_03 =->     let n = dwhite 'α' dinf 200 1000->         x = mouseX KR (-0.01) (-4) Linear 0.2->         y = mouseY KR 1 3000 Exponential 0.2->         s = env_curve_shape (EnvNum undefined)->         f = demandEnvGen AR n (sampleDur * y) s x 1 1 1 0 1 DoNothing->     in sinOsc AR f 0 * 0.1--Short sequence with doneAction, linear--> g_04 =->     let l = dseq 'α' 1 (mce [1300,500,800,300,400])->         s = env_curve_shape EnvLin->         f = demandEnvGen KR l 2 s 0 1 1 1 0 1 RemoveSynth->     in sinOsc AR (f * mce2 1 1.01) 0 * 0.1--Gate, mouse x on right side of screen toggles gate--> g_05 =->     let n = roundTo (dwhite 'α' dinf 300 1000) 100->         x = mouseX KR 0 1 Linear 0.2->         g = x >** 0.5->         f = demandEnvGen AR n 0.1 5 0.3 g 1 1 0 1 DoNothing->     in sinOsc AR (f * mce2 1 1.21) 0 * 0.1--gate-mouse x on right side of screen toggles sample and hold-mouse button does hard reset--> g_06 =->     let l = dseq 'α' 2 (mce [dseries 'β' 5 400 200,500,800,530,4000,900])->         x = mouseX KR 0 1 Linear 0.2->         g = (x >** 0.5) - 0.1->         b = mouseButton KR 0 1 0.2->         r = (b >** 0.5) * 2->         s = env_curve_shape EnvSin->         f = demandEnvGen KR l 0.1 s 0 g r 1 0 1 DoNothing->     in sinOsc AR (f * mce2 1 1.001) 0 * 0.1--initialise coordinate buffer-layout is (initial-level,duration,level,..,loop-duration)--    > withSC3 (async (b_alloc_setn1 0 0 [0,0.5,0.1,0.5,1,0.01]))--> g_07 =->     let b = 0->         l_i = dseries 'β' dinf 0 2->         d_i = dseries 'γ' dinf 1 2->         l = dbufrd 'δ' b l_i Loop->         d = dbufrd 'ε' b d_i Loop->         s = env_curve_shape EnvLin->         e = demandEnvGen KR l d s 0 1 1 1 0 5 RemoveSynth->         f = midiCPS (60 + (e * 12))->     in sinOsc AR (f * mce2 1 1.01) 0 * 0.1--change envelope by setting values or indeed reallocating buffer--    > import Sound.OSC {- hosc -}-    > withSC3 (sendMessage (b_set1 0 1 0.1))-    > withSC3 (async (b_alloc_setn1 0 0 [0.5,0.9,0.1,0.1,1,0.01]))--read envelope break-points from buffer, here simply duration/level pairs.-the behavior is odd if the curve is zero (ie. flat segments).--> g_08 =->     let b = asLocalBuf 'α' [61,1,60,2,72,1,55,5,67,9,67]->         lvl = dbufrd 'β' b (dseries 'γ' 6 0 2) Loop->         dur = dbufrd 'δ' b (dseries 'ε' 5 1 2) Loop->         e = demandEnvGen KR lvl dur 1 0 1 1 1 0 1 RemoveSynth->     in sinOsc AR (midiCPS e) 0 * 0.1--lfNoise1--> g_09 =->     let y = mouseY KR 0.5 20 Linear 0.2->         lvl = dwhite 'β' dinf (-0.1) 0.1->         dur = sampleDur * y->     in demandEnvGen AR lvl dur 5 (-4) 1 1 1 0 1 RemoveSynth--lfBrownNoise--> g_10 =->     let y = mouseY KR 1 100 Exponential 0.2->         lvl = dbrown 'β' dinf (-0.1) 0.1 0.1->         dur = sampleDur * y->     in demandEnvGen AR lvl dur 1 0 1 1 1 0 1 RemoveSynth
− Help/UGen/detectIndex.help.lhs
@@ -1,9 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Find indexes and map to an audible frequency range.--> g_01 =->     let n = 6->         x = floorE (mouseX KR 0 n Linear 0.1)->         i = detectIndex (asLocalBuf 'α' [2,3,4,0,1,5]) x->     in sinOsc AR (linExp i 0 n 200 700) 0 * 0.1
− Help/UGen/detectSilence.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let s = sinOsc AR 440 0 * mouseY KR 0 0.2 Linear 0.1->         d = detectSilence s 0.01 0.1 RemoveSynth->     in mrg [s,d]
− Help/UGen/dfm1.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--Play it with the mouse--> g_01 =->     let n = pinkNoise 'α' AR * 0.5->         x = mouseX KR 80 5000 Exponential 0.1->         y = mouseY KR 0.1 1.2 Linear 0.1->     in X.dfm1 n x y 1 0 3e-4--Bass...--> g_02 =->     let i = mix (pulse AR (mce2 100 100.1) 0.5) * 0.4->         f = range 80 2000 (sinOsc KR (range 0.2 5 (sinOsc KR 0.3 0)) 0)->     in X.dfm1 i f 1.1 2 0 0.0003 * 0.1
− Help/UGen/dgeom.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = dgeom 'α' 15 1 1.2->         x = mouseX KR 1 40 Exponential 0.1->         t = impulse KR x 0->         f = demand t 0 n * 30 + 340->     in sinOsc AR f 0 * 0.1
− Help/UGen/dibrown.help.lhs
@@ -1,4 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "Dibrown"-> Sound.SC3.UGen.DB.ugenSummary "Dibrown"--See dbrown
− Help/UGen/difSqr.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let a = fSinOsc AR 800 0->         b = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0->     in difSqr a b * 0.125--Written out:--> g_02 =->     let a = fSinOsc AR 800 0->         b = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0->     in (a * a - b * b) * 0.125
− Help/UGen/diodeRingMod.help.lhs
@@ -1,48 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> o_01 = sinOsc AR 440 0-> o_02 = sinOsc AR (xLine KR 1 100 10 DoNothing) 0-> o_03 = sinOsc AR (xLine KR 200 500 5 DoNothing) 0-> g_01 = X.diodeRingMod o_01 o_02 * 0.125-> g_02 = (o_01 * o_02) * 0.125-> g_03 = X.diodeRingMod o_01 o_03 * 0.125-> g_04 = (o_01 * o_03) * 0.125--> g_05 =->   let s1 = sinOsc AR (3700 * mce [1, 1.1, 1.2] * range 1 2 (sinOsc AR 200 0)) 0->       s2 = sinOsc AR (100 * mce [0.75, 1, 0.5]) 0->       s3 = X.diodeRingMod s1 s2->   in mix s3 * lfPulse AR (10.3 * 0.5) 0 0.04 * 0.1--> mf_sin = sinOsc AR--> mf_square f _ = X.blitB3Square AR f 0.99--c_freq = carrier frequency (mf = six-octave range, 2-130 and 60-4000 hz)--lfo_type = LFO signal function, ie. mf_sin or mf_square--lfo_freq = LFO frequency (mf = 0.1 - 25.0 hz)--lfo_amp = the amount that the LFO output sweeps the carrier sin oscillator--drive = pre-multiplier for mod_sig--x_mix = crossfade from unmodulated to modulated audio (-1 to 1)--> mf_ring_mod (lfo_ph,car_ph) car_freq lfo_type lfo_freq lfo_amp drive x_mix mod_sig =->   let range_2oct = range 0.25 2->       lfo = range_2oct (lfo_type lfo_freq lfo_ph * lfo_amp)->       car_sig = sinOsc AR (car_freq * lfo) car_ph->       mod_sig_post = mod_sig * drive->   in xFade2 mod_sig_post (X.diodeRingMod car_sig mod_sig_post) x_mix 1--> g_07 =->   let c_freq = 6.25->       lfo_freq = 0.1->       lfo_amp = mouseY KR 0 1 Linear 0.2->       drive = 1->       x_mix = mouseX KR (-1) 1 Linear 0.2->       mod_sig = soundIn 0->   in mf_ring_mod (0,0) c_freq mf_sin lfo_freq lfo_amp drive x_mix mod_sig
− Help/UGen/disintegrator.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> gr_01 =->     let x = mouseX KR 0 1 Linear 0.2->         y = mouseY KR 0 1 Linear 0.2->         s = sinOsc AR (mce2 400 404) 0 * 0.2->     in X.disintegrator 'α' s x y
− Help/UGen/diskIn.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> fn_01 = "/home/rohan/data/audio/pf-c5.snd"-> nc_01 = 1-> msg_01 = [b_alloc 0 65536 nc_01,b_read 0 fn_01 0 (-1) 0 True]-> msg_02 = [b_close 0,b_free 0]--allocate buffer and open file for reading--    > withSC3 (mapM_ async msg_01)--> g_01 = diskIn nc_01 0 Loop--close file & free buffer--    > withSC3 (mapM_ async msg_02)
− Help/UGen/distort.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let e = xLine KR 0.1 10 10 DoNothing->         o = fSinOsc AR 500 0.0->     in distort (o * e) * 0.25
− Help/UGen/div.help.lhs
@@ -1,14 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Operator./"-    :t (/)--> import Sound.SC3 {- hsc3 -}--> g_01 = sinOsc AR 440 0 / 6--Creates a beating effect (subaudio rate).--> g_02 = (pinkNoise 'α' AR / fSinOsc KR 5 0) * 0.1--Optimises identity--> g_04 = sinOsc AR 440 0 / 1 * 0.1
− Help/UGen/diwhite.help.lhs
@@ -1,1 +0,0 @@-See dwhite
− Help/UGen/done.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR (-1) 1 Linear 0.1->         e = linen x 0.1 0.1 0.5 DoNothing->         o1 = sinOsc AR 880 0 * 0.1->         o2 = sinOsc AR 440 0 * e->     in mce [done e * o1,o2]
− Help/UGen/doubleWell3.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--bass synth--> g_01 =->   let x = mouseX KR 0 200 Linear 0.2->       y = mouseY KR 0.5 4.0 Linear 0.2->       f = sinOsc AR x 0 * y->   in X.doubleWell3 AR 0 0.01 f 0.25 0 0--gradually changing--> g_02 =->   let f = lfSaw AR (line KR 10 1000 10 DoNothing) 0->       delta = line KR 0.0 0.3 20 DoNothing->   in X.doubleWell3 AR 0 0.05 f delta 0 0
− Help/UGen/dpw3Tri.help.lhs
@@ -1,41 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> import qualified Sound.SC3.UGen.Bindings.DB.RDU as RDU {- sc3-rdu -}--distortion creeps in under 200Hz--> g_01 = X.dpw3Tri AR (xLine KR 2000 20 10 DoNothing) * 0.1--very fast sweeps can have transient distortion effects--> g_02 = X.dpw3Tri AR (mouseX KR 200 12000 Exponential 0.2) * 0.2--compare--> g_03 = lfTri AR (mouseX KR 200 12000 Exponential 0.2) 0 * 0.1--less efficient than LFTri--> g_04 = let f = RDU.randN 50 'α' 50 5000->        in splay (X.dpw3Tri AR f) 1 0.1 0 True--> g_05 = let f = RDU.randN 50 'α' 50 5000->        in splay (lfTri AR f 0) 1 0.1 0 True--triangle is integration of square wave--> g_06 = let f = mouseX KR 440 8800 Exponential 0.2->            o = pulse AR f 0.5->        in integrator o 0.99 * 0.05--differentiation of triangle is square--> g_07 = let f = mouseX KR 440 8800 Exponential 0.2->            o = X.dpw3Tri AR f->        in hpz1 (o * 2) * 0.25--compare--> g_08 = let f = mouseX KR 440 8800 Exponential 0.2->        in pulse AR f 0.5 * 0.1
− Help/UGen/dpw4Saw.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> import qualified Sound.SC3.UGen.Bindings.DB.RDU as RDU {- sc3-rdu -}--> g_01 = X.dpw4Saw AR (xLine KR 2000 20 10 DoNothing) * 0.1--> g_02 = X.dpw4Saw AR (mouseX KR 200 12000 Exponential 0.2) * 0.2--> g_03 = saw AR (mouseX KR 200 12000 Exponential 0.2) * 0.1
− Help/UGen/drand.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = drand 'α' dinf (mce [1, 3, 2, 7, 8])->         x = mouseX KR 1 400 Exponential 0.1->         t = impulse KR x 0->         f = demand t 0 n * 30 + 340->     in sinOsc AR f 0 * 0.1--> g_02 =->   let d = drand 'α' dinf->           (mce [dseq 'β' 1 (mce [2, 0, 2, 0, 1, 0, 1, 1])->		 ,dseq 'γ' 1 (mce [2, 0, 1, 0, 1, 0, 1, 0])->		 ,dseq 'δ' 1 (mce [2, 0, 1, 1, 1, 1, 1, 0])->		 ,dseq 'ε' 1 (mce [2, 0.3, 0.3, 1, 0.3, 0.3, 1, 0.3])->		 ,dseq 'ζ' 1 (mce [2, 0, 0.3, 0, 0.3, 0, 0.3, 0])->		 ,dseq 'η' 1 (mce [2, 0, 0, 1, 0, 0, 0, 0])->		 ,dseq 'θ' 1 (mce [2, 0, 0, 0, 0, 0, 0, 0])->		 ,dseq 'ι' 1 (mce [0, 1, 0, 1, 0, 1, 0, 1])->		 ,dseq 'κ' 1 (mce [1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0])])->       t = impulse AR 10 0->       x = demand t 0 d * t->   in decay x 1 * pinkNoise 'λ' AR * 0.1
− Help/UGen/dseq.help.lhs
@@ -1,38 +0,0 @@-> import Sound.SC3 {- hsc3 -}--At control rate.--> g_01 =->     let n = dseq 'α' 3 (mce [1,3,2,7,8])->         x = mouseX KR 1 40 Exponential 0.1->         t = impulse KR x 0->         f = demand t 0 n * 30 + 340->     in sinOsc AR f 0 * 0.1--At audio rate.--> g_02 =->     let n = dseq 'α' dinf (mce [1,3,2,7,8,32,16,18,12,24])->         x = mouseX KR 1 10000 Exponential 0.1->         t = impulse AR x 0->         f = demand t 0 n * 30 + 340->     in sinOsc AR f 0 * 0.1--The SC2 Sequencer UGen is somewhat like the sequ function below--> g_03 =->     let sequ e s tr = demand tr 0 (dseq e dinf (mce s))->         t = impulse AR 6 0->         n0 = sequ 'α' [60,62,63,58,48,55] t->         n1 = sequ 'β' [63,60,48,62,55,58] t->     in lfSaw AR (midiCPS (mce2 n0 n1)) 0 * 0.1--Rather than MCE expansion at _tr_, it can be clearer to view _tr_ as a-functor.--> gr_04 =->     let tr = impulse KR (mce [2,3,5]) 0->         f (z,t) = demand t 0 (dseq z dinf (mce [60,63,67,69]))->         m = mce_map_ix f tr->         o = sinOsc AR (midiCPS m) 0 * 0.1->     in splay o 1 1 0 True
− Help/UGen/dser.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let a = dser 'α' 7 (mce [1, 3, 2, 7, 8])->         x = mouseX KR 1 40 Exponential 0.1->         t = impulse KR x 0->         f = demand t 0 a * 30 + 340->     in sinOsc AR f 0 * 0.1
− Help/UGen/dseries.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = dseries 'α' 15 0 1->         x = mouseX KR 1 40 Exponential 0.1->         t = impulse KR x 0->         f = demand t 0 n * 30 + 340->     in sinOsc AR f 0 * 0.1
− Help/UGen/dshuf.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.RDU as RDU {- sc3-rdu -}--> g_01 =->     let a = dseq 'α' dinf (dshuf 'β' 3 (mce [1,3,2,7,8.5]))->         x = mouseX KR 1 40 Exponential 0.1->         t = impulse KR x 0->         f = demand t 0 a * 30 + 340->     in sinOsc AR f 0 * 0.1--> g_02 =->     let a = dseq 'α' dinf (dshuf 'β' 5 (RDU.randN 81 'γ' 0 10))->         x = mouseX KR 1 10000 Exponential 0.1->         t = impulse AR x 0->         f = demand t 0 a * 30 + 340->     in sinOsc AR f 0 * 0.1
− Help/UGen/dstutter.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3 {- hsc3-}--> g_01 =->     let inp = dseq 'α' dinf (mce [1,2,3])->         nse = diwhite 'β' dinf 2 8->         rep = dstutter 'γ' nse inp->         trg = impulse KR (mouseX KR 1 40 Exponential 0.2) 0->         frq = demand trg 0 rep * 30 + 340->     in sinOsc AR frq 0 * 0.1--see also <https://www.listarc.bham.ac.uk/lists/sc-users/msg14775.html>--> g_02 =->     let a z = let xr = dxrand z dinf (mce [0.1,0.2,0.3,0.4,0.5])->                   lf = dstutter z 2 xr->                   du = duty AR lf 0 DoNothing lf->                   tr = abs (hpz1 du) >** 0->                   ph = sweep tr (1/du)->               in linExp ph 0 1 (rand z 50 100) (rand z 500 2000)->         f = mce (map a (id_seq 8 'α'))->         [s0,s1] = mceChannels (splay (sinOsc AR f 0) 1 1 0 True)->         o = limiter (rotate2 s0 s1 (lfSaw KR 0.1 0)) 1 1e-2->     in o * 0.25
− Help/UGen/dswitch.help.lhs
@@ -1,18 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> mk_g :: UId m => (UGen -> UGen -> m UGen) -> m UGen-> mk_g sw = do->   a0 <- dwhiteM 2 3 4->   a1 <- dwhiteM 2 0 1->   a2 <- dseqM 2 (mce [1,1,1,0])->   i <- dseqM 2 (mce [0,1,2,1,0])->   d <- sw i (mce [a0,a1,a2])->   let t = impulse KR 4 0->       f = demand t 0 d * 300 + 400->   return (sinOsc AR f 0 * 0.1)--compare with dswitch1--> g_01,g_02 :: UId m => m UGen-> g_01 = mk_g dswitchM-> g_02 = mk_g dswitch1M
− Help/UGen/dswitch1.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR 0 4 Linear 0.1->         y = mouseY KR 1 15 Linear 0.1->         t = impulse KR 3 0->         w = dwhite 'α' dinf 20 23->         n = dswitch1 'β' x (mce [1, 3, y, 2, w])->         f = demand t 0 n * 30 + 340->     in sinOsc AR f 0 * 0.1
− Help/UGen/dust.help.lhs
@@ -1,22 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = dust 'α' AR 2 * 0.25--> g_02 =->     let d = xLine KR 20000 2 10 RemoveSynth->     in dust 'β' AR d * 0.15--Drawings--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen1 0.1 (dust 'γ' AR 300)-    plot_ugen1 0.1 (dust 'γ' AR (xLine KR 5000 100 0.1 RemoveSynth))--![](sw/hsc3/Help/SVG/dust.0.svg)-![](sw/hsc3/Help/SVG/dust.1.svg)--Illustrate monadic constructor--> g_03,g_04 :: UId m => m UGen-> g_03 = fmap (* 0.25) (dustM AR 200)-> g_04 = fmap (* 0.15) (dustM AR (xLine KR 20000 2 10 RemoveSynth))
− Help/UGen/dust2.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = dust2 'α' AR 200 * 0.5--> g_02 =->     let d = xLine KR 20000 2 10 RemoveSynth->     in dust2 'β' AR d * 0.15--Drawings--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen1 0.1 (dust2 'γ' AR 400)-    plot_ugen1 0.1 (dust2 'γ' AR (xLine KR 5000 100 0.1 RemoveSynth))--![](sw/hsc3/Help/SVG/dust2.0.svg)-![](sw/hsc3/Help/SVG/dust2.1.svg)
− Help/UGen/duty.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 :: UId m => m UGen-> g_01 = do->   n0 <- drandM dinf (mce [0.01,0.2,0.4])->   n1 <- dseqM dinf (mce [204,400,201,502,300,200])->   let f = duty KR n0 0 RemoveSynth n1->   return (sinOsc AR (f * mce2 1 1.01) 0 * 0.1)--Using control rate signal, mouseX, to determine duration.--> g_02 =->     let n = dseq 'α' dinf (mce [204,400,201,502,300,200])->         x = mouseX KR 0.001 2 Linear 0.1->         f = duty KR x 0 RemoveSynth n->     in sinOsc AR (f * mce2 1 1.01) 0 * 0.1
− Help/UGen/dwhite.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = dwhite 'α' dinf 0 15 {- Dwhite(0, 15, inf) -}->         x = mouseX KR 1 40 Exponential 0.1->         t = impulse KR x 0->         f = demand t 0 n * 30 + 340->     in sinOsc AR f 0 * 0.1
− Help/UGen/dwrand.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = dwrand 'α' dinf (mce [0.3,0.2,0.1,0.2,0.2]) (mce [1,3,2,7,8])->         x = mouseX KR 1 400 Exponential 0.1->         t = impulse KR x 0->         f = demand t 0 n * 30 + 340->     in sinOsc AR f 0 * 0.1
− Help/UGen/dxrand.help.lhs
@@ -1,27 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let i = mce [0.2,0.4,dseq 'α' 2 (mce [0.1,0.1])]->         d = dxrand 'β' dinf i->     in tDuty AR d 0 DoNothing (dwhite 'γ' dinf 0.5 1) 0--The list inputs to demand rate ugens may operate at different rates.-The variants i' and i'' below ought to generate the same graph.  A-simple-minded mce rule sets the rate of the operator primitive to the-maximum rate of the inputs and then does not revise this after mce-transformation, where it may be lower.  The hsc3 constructors attempt-to get this right!--> g_02 =->     let i = mce [0.2,0.4,dseq 'α' 2 (mce [0.1,0.1])]->         i' = mceMap (* 0.5) i->         i'' = i * 0.5->         d = dxrand 'β' dinf i''->     in tDuty AR d 0 DoNothing (dwhite 'γ' dinf 0.5 1) 0--> g_03 =->     let n = dxrand 'α' dinf (mce [1, 3, 2, 7, 8])->         x = mouseX KR 1 400 Exponential 0.1->         t = impulse KR x 0->         f = demand t 0 n * 30 + 340->     in sinOsc AR f 0 * 0.1
− Help/UGen/dynKlang.help.lhs
@@ -1,33 +0,0 @@-> import Sound.SC3 {- hsc3 -}--fixed--> g_01 =->     let s = klangSpec [800,1000,1200] [0.3,0.3,0.3] [pi,pi,pi]->     in dynKlang AR 1 0 s * 0.4--fixed: randomised--> g_02 =->     let f = map (\z -> rand z 600 1000) ['a'..'l']->         s = klangSpec f (replicate 12 1) (replicate 12 0)->     in dynKlang AR 1 0 s * 0.05--dynamic: frequency modulation--> g_03 =->     let f = mce3 800 1000 1200 + sinOsc KR (mce3 2 3 4.2) 0 * mce3 13 24 12->         a = mce3 0.3 0.3 0.3->         p = mce3 pi pi pi->     in dynKlang AR 1 0 (klangSpec_mce f a p) * 0.1---- <https://www.listarc.bham.ac.uk/lists/sc-users/msg66911.html>--> f_04 k =->   let f i = (((fromIntegral i ** range_hs (0.3,0.7) (lag (lfNoise0 i KR 1) 0.1)) + 1) * 99->             ,max 0 (lfNoise1 i KR (linRand i 0 10 0)))->       (frq,amp) = unzip (map f [0::Int .. k - 1])->  	s = dynKlang AR 1 0 (klangSpec frq amp (replicate k 0)) * 0.01->   in pan2 s 0 1--> g_04 = f_04 16
− Help/UGen/dynKlank.help.lhs
@@ -1,42 +0,0 @@-> import Sound.SC3 {- hsc3 -}--    {s=`[[800,1071,1153,1723],nil,[1,1,1,1]]-    ;DynKlank.ar(,Impulse.ar(2,0,0.1))}.play--> g_01 =->     let s = klankSpec [800,1071,1153,1723] [1,1,1,1] [1,1,1,1]->     in dynKlank (impulse AR 2 0 * 0.1) 1 0 1 s--    {s=`[[800,1071,1353,1723],nil,[1,1,1,1]]-    ;DynKlank.ar(s,Dust.ar(8,0.1))}.play--> g_02 =->     let s = klankSpec [800,1071,1353,1723] [1,1,1,1] [1,1,1,1]->     in dynKlank (dust 'α' AR 8 * 0.1) 1 0 1 s--    {s=`[[800,1071,1353,1723],nil,[1,1,1,1]]-    ;DynKlank.ar(s,PinkNoise.ar(0.007))}.play--> g_03 =->     let s = klankSpec [800,1071,1353,1723] [1,1,1,1] [1,1,1,1]->     in dynKlank (pinkNoise 'α' AR * 0.007) 1 0 1 s--    {s=`[[200,671,1153,1723],nil,[1,1,1,1]]-    ;a=[0.007,0.007]-    ;DynKlank.ar(s,PinkNoise.ar(a))}.play;--> g_04 =->     let s = klankSpec [200,671,1153,1723] [1,1,1,1] [1,1,1,1]->         a = mce2 0.007 0.007->     in dynKlank (pinkNoise 'α' AR * a) 1 0 1 s--Change frequencies (x) and ring-times (y) with mouse.--> g_05 =->     let x = mouseX KR 0.5 2 Exponential 0.2->         f = map (* x) [800,1071,1153,1723]->         y = mouseY KR 0.1 10 Exponential 0.2->         d = map (* y) [1,1,1,1]->         s = klankSpec f [1,1,1,1] d->         i = impulse AR 2 0 * 0.1->     in dynKlank i 1 0 1 s
− Help/UGen/envADSR.help.lhs
@@ -1,67 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Env.*adsr"--> import Sound.SC3 {- hsc3 -}--{SinOsc.ar * EnvGen.kr(Env.adsr(0.75, 2.75, 0.1, 7.25, 1, -4, 0))}.draw;--> g_01 =->     let c = control KR "env-gate" 1->         p = envADSR 0.75 2.75 0.1 7.25 1 (EnvNum (-4)) 0->         e = envGen KR c 1 0 1 DoNothing p->     in sinOsc AR 440 0 * e * 0.1--    import Sound.OSC {- hosc -}-    withSC3 (sendMessage (n_set1 (-1) "env-gate" 0))-    withSC3 (sendMessage (n_set1 (-1) "env-gate" 1))-    withSC3 (sendMessage (n_free [-1]))--> e_01 =->     [envADSR 0.75 0.75 0.5 0.75 1 (EnvNum (-4)) 0->     ,envADSR 0.02 0.2 0.25 1 1 (EnvNum (-4)) 0->     ,envADSR 0.001 0.2 0.25 1 1 (EnvNum (-4)) 0->     ,envADSR 0 2 1 0.1 0.5 EnvSin 0->     ,envADSR 0.001 1.54 1 0.001 0.4 EnvSin 0]--    import Sound.SC3.Plot {- hsc3 -}-    plotEnvelope e_01--There is a record variant:--> g_02 =->     let g = control KR "gate" 1->         c = EnvNum (-4)->         r = ADSR {adsr_attackTime = 0.75->                  ,adsr_decayTime = 0.75->                  ,adsr_sustainLevel = 0.5->                  ,adsr_releaseTime = 0.75->                  ,adsr_peakLevel = 1->                  ,adsr_curve = (c,c,c)->                  ,adsr_bias = 0}->         p = envADSR_r r->         e = envGen KR g 0.1 0 1 DoNothing p->     in sinOsc AR 440 0 * e--    withSC3 (sendMessage (n_set1 (-1) "gate" 0))-    withSC3 (sendMessage (n_set1 (-1) "gate" 1))-    withSC3 (sendMessage (n_free [-1]))--SC3 comparison:--Env.adsr.asArray == [0,3,2,-99,1,0.01,5,-4,0.5,0.3,5,-4,0,1,5,-4];--> r_03 = [0,3,2,-99,1,0.01,5,-4,0.5,0.3,5,-4,0,1,5,-4]-> e_03 = envADSR 0.01 0.3 0.5 1 1 (EnvNum (-4)) 0-> a_03 = envelope_sc3_array e_03--    e_03 == envADSR_r adsrDefault-    a_03 == Just r_03--> r_04 = [0,3,2,-99,1,0.3,5,-4,0.1,0.4,5,-4,0,1.2,5,-4]-> e_04 = envADSR 0.3 0.4 0.1 1.2 1 (EnvNum (-4)) 0-> a_04 = envelope_sc3_array e_04--    a_04 == Just r_04--x = {|gate=0, freq=440 | EnvGen.kr(Env.adsr,gate) * SinOsc.ar(freq,0) * 0.1}.play-x.set(\gate,1);-x.set(\gate,0);
− Help/UGen/envASR.help.lhs
@@ -1,30 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Env.*asr"-    :i Sound.SC3.ASR--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let g = control KR "env-gate" 1->         p = envASR 0.01 1 1 (EnvNum (-4))->         e = envGen KR g 0.1 0 1 RemoveSynth p->     in sinOsc AR 440 0 * e--    import Sound.OSC {- hosc -}-    withSC3 (sendMessage (n_set1 (-1) "env-gate" 0))--> e_01 =->     [envASR 0.1 1 1 (EnvNum (-4))->     ,envASR 0.3 0.25 1 EnvSin->     ,envASR 0.01 0.5 1.25 EnvLin]--    import Sound.SC3.Plot {- hsc3-plot -}-    plotEnvelope e_01--An envelope with a long release time that mostly sustains and then decays quickly--> e_02 = envASR_c 0.01 1 0.75 (EnvNum (-4),EnvNum 4)-> e_03 = envASR_c 0.15 1 1.25 (EnvNum (-4),EnvNum (-4))-> e_04 = envASR_c 0.15 1 1.25 (EnvNum (-4),EnvNum 64)--    plotEnvelope [e_02,e_03,e_04]-
− Help/UGen/envCoord.help.lhs
@@ -1,51 +0,0 @@-> import Sound.SC3 {- hsc3 -}--co-ordinate (break-point) envelope--> g_01 =->     let c = EnvLin->         p = envCoord [(0,0),(0.5,0.1),(0.55,1),(1,0)] 9 0.1 c->         e = envGen KR 1 1 0 1 RemoveSynth p->     in sinOsc AR 440 0 * e--line segments, set target value & transition time and trigger--> g_02 =->     let tr = tr_control "tr" 1->         st = control KR "st" 440->         en = control KR "en" 880->         tm = control KR "tm" 2->         p = envCoord [(0,st),(tm,en)] 1 1 EnvLin->         e = envGen KR tr 1 0 1 DoNothing p->     in sinOsc AR e 0 * 0.2--    import Sound.OSC {- hosc3 -}-    withSC3 (sendMessage (n_set (-1) [("en",550),("tm",4),("tr",1)]))-    withSC3 (sendMessage (n_set (-1) [("en",990),("tm",1),("tr",1)]))-    withSC3 (sendMessage (n_set (-1) [("en",110),("tm",2),("tr",1)]))--likewise, but internal graph triggers and randomises line end points--> g_03 =->     let tr = dust 'α' KR 2->         st = 440->         en = tRand 'β' 300 900 tr->         tm = tRand 'γ' 0.5 1.5 tr->         p = envCoord [(0,st),(tm,en)] 1 1 EnvLin->         e = envGen KR tr 1 0 1 DoNothing p->     in sinOsc AR e 0 * 0.2--plotting--> e_01 =->     let c0 = [(0,0),(0.35,0.1),(0.55,1),(1,0)]->         c1 = [(0,0),(0.15,0.6),(0.35,0.2),(1,0)]->         c2 = [(0,0),(0.65,0.3),(0.85,0.7),(1,0)]->         c3 = [(0,0.1),(0.25,0.6),(0.5,0.4),(1,0.4)]->     in [envCoord c0 9 0.1 EnvLin->        ,envCoord c1 6 0.1 EnvSin->        ,envCoord c2 5 0.1 EnvCub->        ,envCoord c3 7 0.1 EnvStep]--    import Sound.SC3.Plot {- hsc3-plot -}-    plotEnvelope e_01
− Help/UGen/envDetect.help.lhs
@@ -1,11 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->     let i = soundIn 0->         c = X.envDetect AR i 0.01 0.1->         p = pitch i 440 60 4000 100 16 1 0.01 0.5 1 0->         f = mceChannel 0 p * 3->         e = lagUD (mceChannel 1 p) 0 0.1->         o = pinkNoise 'α' AR * c + sinOsc AR f 0 * c * e->     in mce2 i o
− Help/UGen/envFollow.help.lhs
@@ -1,9 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->     let z = soundIn 0->         d = mouseX KR 0.990 0.999 Linear 0.2->         c = X.envFollow KR z d->         o = pinkNoise 'α' AR * c->     in mce2 z o
− Help/UGen/envGate.help.lhs
@@ -1,32 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Make envGate, giving the /default/ arguments, as used by envGate_def.--> g_01 =->     let k = control KR->         e = envGate 1 (k "gate" 1) (k "fadeTime" 0.02) RemoveSynth EnvSin->     in lpf (saw AR 200) 600 * 0.1 * e--Set fade time, then release gate.--    import Sound.OSC {- hosc -}-    withSC3 (sendMessage (n_set1 (-1) "fadeTime" 2))-    withSC3 (sendMessage (n_set1 (-1) "gate" 0))--The same, but built in defaults.--> g_02 =->     let e = envGate_def->     in lpf (saw AR 200) 600 * 0.1 * e--Several envGate nodes can coexist in one synth, but if they are the-same they're shared (as ever).--> g_03 =->     let e = envGate_def->         s1 = lpf (saw AR 80) 600 * e->         s2 = rlpf (saw AR 200 * 0.5) (6000 * e + 60) 0.1 * e->     in mce2 s1 s2 * 0.1--    withSC3 (sendMessage (n_set1 (-1) "fadeTime" 5))-    withSC3 (sendMessage (n_set1 (-1) "gate" 0))
− Help/UGen/envGen.help.lhs
@@ -1,76 +0,0 @@-See also help files for the following envelope constructors:--- envADSR-- envASR-- envCoord-- envGate-- envLinen-- envPairs-- envPerc-- envSine-- envStep-- envTrapezoid-- envTriangle-- envXYC--> import Sound.SC3 {- hsc3 -}--env_circle joins the end of the envelope to the start--> e_01 :: Fractional n => Envelope n-> e_01 = envelope [6000,700,100] [1,1] [EnvExp,EnvLin]-> a_01 = envelope_sc3_array e_01--    > a_01 == Just [6000,2,-99,-99,700,1,2,0,100,1,1,0]-    > import Sound.SC3.Plot {- hsc3-plot -}-    > plotEnvelope [e_01]--{var e = Env([6000,700,100],[1,1],['exp','lin'])-;var e_c = Env([6000,700,100],[1,1],['exp','lin']).circle(1,\lin)-;e.asArray.postln-;e_c.asArray.postln-;SinOsc.ar(e_c.kr,0) * 0.1}.draw--> e_01_c :: Fractional t => Envelope t-> e_01_c = env_circle_z 0 1 EnvLin e_01-> a_01_c = envelope_sc3_array e_01_c--    > a_01_c == Just [0,4,3,0,6000,0,1,0,700,1,2,0,100,1,1,0,0,1,1,0]-    > plotEnvelope [e_01_c]--> g_01 =->     let f = envGen KR 1 1 0 1 DoNothing e_01_c->     in sinOsc AR f 0 * 0.1 + impulse AR 1 0--<https://www.listarc.bham.ac.uk/lists/sc-users/msg14815.html>--> e_02 =->   let n = range 0.01 0.15 (lfNoise1 'α' KR 2)->   in Envelope [0,1] [n] [EnvLin] Nothing (Just 0) 0--> e_02_c = env_circle_0 e_02--> g_02 =->     let a = envGen AR 1 1 0 1 DoNothing e_02_c->     in sinOsc AR (a * 400 + 500) 0 * 0.1--EnvGen used as non-linear Phasor, here the positive half of a sin-function is traversed more quickly than the negative half.--> e_03 :: (Floating n,Ord n) => Envelope n-> e_03 = envXYC [(0,0,EnvNum (-0.5)),(0.4,pi,EnvNum 0.5),(1,two_pi,EnvLin)]-> e_03_c = env_circle_0 e_03--    plotEnvelope [e_03]--> f_03 rt ts = sinOsc rt 0 (envGen rt 1 1 0 ts DoNothing e_03_c)-> g_03 = soundIn 0 * range 0.25 1 (f_03 KR 2)--   plot_ugen 0.1 (f_03 AR 0.1)--Env([0,1],[0.1]).asArray == [0,1,-99,-99,1,0.1,1,0]--> e_04 = envelope [0,1] [0.1] [EnvLin]-> a_04 = envelope_sc3_array e_04--    a_04 == Just [0,1,-99,-99,1,0.1,1,0]
− Help/UGen/envLinen.help.lhs
@@ -1,33 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Env.*linen"-    :i Sound.SC3.LINEN--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let t = envLinen 0.4 2 0.4 0.1->         e = envGen KR 1 1 0 1 RemoveSynth t->     in sinOsc AR 440 0 * e--> e_01 =->     [envLinen 0 1 0 0.4->     ,envelope_normalise (envLinen 0 2 0 0.5)->     ,envLinen 0.4 2 0.4 0.6->     ,envLinen 0.6 1 1.2 0.7]--    import Sound.SC3.Plot {- hsc3-plot -}-    plotEnvelope e_01--Language access--> e_02 =->     let e = envLinen 0 1 0 1->     in (envelope_duration e->        ,envelope_segment_ix e 0->        ,envelope_segment_ix e 1->        ,envelope_segment e 0->        ,envelope_segment e 1->        ,envelope_at e 0->        ,envelope_at e 1->        ,envelope_render 10 e)--    print e_02
− Help/UGen/envPairs.help.lhs
@@ -1,9 +0,0 @@-    Sound.SC3.Lang.Help.viewSC3Help "Env.*pairs"--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let c = EnvLin->         p = envPairs [(0,0),(5,0.01),(5.5,0.1),(10,0)] c->         e = envGen KR 1 1 0 1 RemoveSynth p->     in sinOsc AR 440 0 * e
− Help/UGen/envPerc.help.lhs
@@ -1,20 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Env.*perc"--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let a = 0.1->         p = envPerc 0.01 1->         e = envGen KR 1 a 0 1 RemoveSynth p->     in sinOsc AR 440 0 * e--> g_02 =->     let a = 0.1->         c = EnvNum (-4)->         p = envPerc' 0.01 1 a (c,c)->         e = envGen KR 1 1 0 1 RemoveSynth p->     in sinOsc AR 440 0 * e---import Sound.SC3.Plot {- hsc3-plot -}-plotEnvelope [envPerc 0.05 1,envPerc 0.2 0.75]
− Help/UGen/envSine.help.lhs
@@ -1,13 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Env.*sine"--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let s = envSine 9 0.1->         e = envGen KR 1 1 0 1 RemoveSynth s->     in sinOsc AR 440 0 * e--> e_01 = [envSine 9 1,envSine 3 0.25]--    import Sound.SC3.Plot {- hsc3-plot -}-    plotEnvelope e_01
− Help/UGen/envStep.help.lhs
@@ -1,22 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Env.*step"--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let env = envStep [0.0,0.5,0.7,1.0,0.9,0.0] [0.5,0.1,0.2,1.0,1.5,3] Nothing Nothing->         envgen = envGen AR 1 1 0 1 RemoveSynth env->     in sinOsc AR (envgen * 1000 + 440) 0 * (envgen + 1) * 0.1--major scale, accelerating, with loop & release nodes--> g_02 =->     let env = envStep [0,2,4,5,7,9,11,12,0] (take 9 (iterate (* 0.75) 1)) (Just 8) (Just 0)->         envgen = envGen AR 1 1 0 1 DoNothing env->     in sinOsc AR (midiCPS (envgen + 60)) 0 * 0.1--draw envelope--> e_01 = [envStep [0,2,4,5,7,9,11,12] (take 8 (iterate (* 0.75) 1)) Nothing Nothing]--    import Sound.SC3.Plot-    plotEnvelope e_01
− Help/UGen/envTrapezoid.help.lhs
@@ -1,18 +0,0 @@-> import Sound.SC3--> g_01 =->     let t = envTrapezoid 0.05 0.95 3 0.1->         e = envGen KR 1 1 0 1 RemoveSynth t->     in sinOsc AR 440 0 * e--> e_02 = envTrapezoid 0 0.25 2 0.1 :: Envelope Double-> r_02 = [0,3,-99,-99,0.1,0.5,1,0,0.1,0,1,0,0,1.5,1,0]-> a_02 = envelope_sc3_array e_02--     a_02 == Just r_02--> e_03 :: [Envelope Double]-> e_03 = [envTrapezoid 0.75 0.25 2 1,envTrapezoid 0.25 0.75 3 0.5]--    import Sound.SC3.Plot-    plotEnvelope e_03
− Help/UGen/envTriangle.help.lhs
@@ -1,13 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Env.*triangle"--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let t = envTriangle 1 0.1->         e = envGen KR 1 1 0 1 RemoveSynth t->     in sinOsc AR 440 0 * e--> e_02 = [envTriangle 1 1,envTriangle 0.25 0.5]--    import Sound.SC3.Plot-    plotEnvelope e_02
− Help/UGen/envXYC.help.lhs
@@ -1,9 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Env.*xyc"--> import Sound.SC3 {- hsc3 -}--> e_01 :: (Fractional n,Ord n) => Envelope n-> e_01 = envXYC [(0, 330, EnvExp), (0.5, 440, EnvExp), (1.0, 1760, EnvLin)]--    import Sound.SC3.Plot {- hsc3-plot -}-    plotEnvelope [e_01]
− Help/UGen/eq.help.lhs
@@ -1,2 +0,0 @@-See gt (>)-
− Help/UGen/equal_to.help.lhs
@@ -1,18 +0,0 @@-The star suffixes (==**,/=**,<**,<=**,>**,>=**) are because the result of the-operators is not of type Bool, as is required by the signature for the-classes Eq and Ord.--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let o = sinOsc KR 1 0->         t = [o >** 0->             ,o >=** 0->             ,o <** 0->             ,o <=** 0->             ,o ==** 0->             ,(o <** 0.001) * (o >** (-0.001))]->         f = [220, 330, 440, 550, 660, 770]->         p = envPerc 0.01 1->         e = envGen KR (mce t) 0.1 0 1 DoNothing p->     in mix (sinOsc AR (mce f) 0 * e)
− Help/UGen/excess.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let o = fSinOsc AR 1000 0->         l = line KR 0 1 8 DoNothing->     in excess o l * 0.1--or written out in terms of clip2--> g_02 =->     let o = fSinOsc AR 1000 0->         l = line KR 0 1 8 DoNothing->     in (o - clip2 o l) * 0.1
− Help/UGen/expRand.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let a = line KR 0.5 0 0.01 RemoveSynth->         f = expRand 'α' 100.0 8000.0->     in fSinOsc AR f 0 * a
− Help/UGen/fSinOsc.help.lhs
@@ -1,41 +0,0 @@-Note: SC2 did not have the initial phase argument.--> import Sound.SC3 {- hsc3 -}--> g_01 = fSinOsc AR (mce2 440 550) 0 * 0.05--Modulate frequency--> g_02 = fSinOsc AR (xLine KR 200 4000 1 RemoveSynth) 0 * 0.1--Loses amplitude towards the end--> g_03 =->     let f = fSinOsc AR (xLine KR 4 401 8 RemoveSynth)->     in fSinOsc AR (f 0 * 200 + 800) 0 * 0.1--sin grain with sine envelope (see also 'sine_grain_ugen_graph')--> sine =->     let b = control IR "out" 0->         f = control IR "freq" 440->         d = control IR "dur" 0.2->         a = control IR "amp" 0.1->         p = control IR "pan" 0->         o = fSinOsc AR f 0->         s = envSine d a->         e = envGen AR 1 1 0 1 RemoveSynth s->         u = offsetOut b (pan2 o p e)->     in synthdef "sine" u--    > import Sound.SC3.Lang.Pattern {- hsc3-lang -}--granular synthesis--    > paudition (pbind [(K_instr,psynth sine)-    >                  ,(K_midinote,fmap roundE (pbrown 'α' 72 84 1 inf))-    >                  ,(K_detune,pwhite 'β' 0 10 inf)-    >                  ,(K_dur,pbrown 'γ' 0.005 0.15 0.05 inf)-    >                  ,(K_legato,pbrown 'δ' 1 2 0.1 inf)-    >                  ,(K_amp,pbrown 'ε' 0.05 0.25 0.05 inf)-    >                  ,(K_param "pan",pbrown 'ζ' (-1) 1 0.2 inf)])
− Help/UGen/fbSineC.help.lhs
@@ -1,42 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Noise {- hsc3 -}--SC3 default values.--> g_00 = fbSineC AR (sampleRate / 2) 1 0.1 1.1 0.5 0.1 0.1 * 0.2--FB generating noise--> g_01 = fbSineC AR (sampleRate / 2) 1 4 1.1 0.5 0.1 0.1 * 0.2--Increase feedback--> g_02 =->     let fb = line KR 0.01 4 10 DoNothing->     in fbSineC AR sampleRate 1 fb 1.1 0.5 0.1 0.1 * 0.2--Increase phase multiplier--> g_03 =->     let a = line KR 1 2 10 DoNothing->     in fbSineC AR sampleRate 1 0 a 0.5 0.1 0.1 * 0.2--Randomly modulate parameters--> g_04 =->     let x = mouseX KR 1 12 Linear 0.1->         n e = lfNoise2 e KR x->         n0 = n 'α' * 1e4 + 1e4->         n1 = n 'β' * 32 + 33->         n2 = n 'γ' * 0.5->         n3 = n 'δ' * 0.05 + 1.05->         n4 = n 'ε' * 0.3 + 0.3->     in fbSineC AR n0 n1 n2 n3 n4 0.1 0.1 * 0.2--Haskell implementation of equation.--> fbSineC_hs im fb a c = map fst (iterate (fbSine_f im fb a c) (0.1,0.1))--    import Sound.SC3.Plot {- hsc3-plot -}-    plotTable1 (take 600 (fbSineC_hs 1.0 4.0 1.1 0.5))-    plot_ugen_nrt (600,1) 1.0 (fbSineC AR 600 1.0 4.0 1.1 0.5 0.1 0.1)
− Help/UGen/fbSineL.help.lhs
@@ -1,1 +0,0 @@-See fbSineC
− Help/UGen/fbSineN.help.lhs
@@ -1,1 +0,0 @@-See fbSineC
− Help/UGen/fdiv.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let o = fSinOsc KR 10 0.5->         n = pinkNoise 'α' AR->     in (n * 0.1) / (o * 0.75)
− Help/UGen/fft.help.lhs
@@ -1,21 +0,0 @@-    :t fft'--> import Sound.SC3 {- hsc3 -}--Non-local buffer--    withSC3 (async (b_alloc 10 2048 1))--Variants with default values--> gr_01 =->     let n = whiteNoise 'α' AR->     in ifft' (fft' 10 (n * 0.05))--Local buffer allocating fft variant--> gr_02 =->     let s0 = sinOsc KR 0.08 0 * 6 + 6.2->         s1 = sinOsc KR (squared s0) 0 * 100 + 800->         s2 = sinOsc AR s1 0->     in ifft (ffta 'α' 2048 s2 0.5 0 1 0) 0 0 * 0.25
− Help/UGen/fftTrigger.help.lhs
@@ -1,1 +0,0 @@-See example at packFFT
− Help/UGen/fm7.help.lhs
@@ -1,84 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.Composite.External as X {- hsc3 -}--two of six...--> gr_01 =->     let c = [[xLine KR 300 310 4 DoNothing,0,1]->             ,[xLine KR 300 310 8 DoNothing,0,1]->             ,[0,0,1]->             ,[0,0,1]->             ,[0,0,1]->             ,[0,0,1] ]->         m = [[line KR 0 0.001 2 DoNothing,line KR 0.1 0 4 DoNothing,0,0,0,0]->             ,[line KR 0 6 1 DoNothing,0,0,0,0,0]->             ,[0,0,0,0,0,0]->             ,[0,0,0,0,0,0]->             ,[0,0,0,0,0,0]->             ,[0,0,0,0,0,0] ]->         [l,r,_,_,_,_] = mceChannels (X.fm7_mx c m)->     in mce2 l r * 0.1--An algorithmically generated graph courtesy f0.--> gr_02 =->     let x = [[[0.0,-1/3,-1.0,0.0]->              ,[0.75,0.75,0.0,-0.5]->              ,[-0.5,-0.25,0.25,-0.75]->              ,[-0.5,1.0,1.0,1.0]->              ,[0.0,1/6,-0.75,-1.0]->              ,[0.5,0.5,-0.5,1/3]]->             ,[[-1/3,0.5,-0.5,-0.5]->              ,[0.5,0.75,0.25,0.75]->              ,[-15/18,0.25,-1.0,0.5]->              ,[1.5,0.25,0.25,-0.25]->              ,[-2/3,-2/3,-1.0,-0.5]->              ,[-1.0,0.0,-15/18,-1/3]]->             ,[[0.25,-0.5,-0.5,-1.0]->              ,[-0.5,1.0,-1.5,0.0]->              ,[-1.0,-1.5,-0.5,0.0]->              ,[0.5,-1.0,7/6,-0.5]->              ,[15/18,-0.75,-1.5,0.5]->              ,[0.25,-1.0,0.5,1.0]]->             ,[[1.0,1/3,0.0,-0.75]->              ,[-0.25,0.0,0.0,-0.5]->              ,[-0.5,-0.5,0.0,0.5]->              ,[1.0,0.75,0.5,0.5]->              ,[0.0,1.5,-0.5,0.0]->              ,[1.0,0.0,-0.25,-0.5]]->             ,[[0.5,-0.25,0.0,1/3]->              ,[0.25,-0.75,1/3,-1.0]->              ,[-0.25,-0.5,0.25,-7/6]->              ,[0.0,0.25,0.5,1/6]->              ,[-1.0,-0.5,15/18,-0.5]->              ,[15/18,-0.75,-0.5,0.0]]->             ,[[0.0,-0.75,-1/6,0.0]->              ,[1.0,0.5,0.5,0.0]->              ,[-0.5,0.0,-0.5,0.0]->              ,[-0.5,-1/6,0.0,0.5]->              ,[-0.25,1/6,-0.75,0.25]->              ,[-7/6,-4/3,-1/6,1.5]]]->         y = [[[0.0,-0.5,1.0,0.0]->              ,[-0.5,1.0,0.5,-0.5]->              ,[0.0,1/3,1.0,1.0]]->             ,[[-0.5,0.5,1.0,1.0]->              ,[0.0,1/3,0.0,1.5]->              ,[-0.5,15/18,1.0,0.0]]->             ,[[0.25,-2/3,0.25,0.0]->              ,[0.5,-0.5,-0.5,-0.5]->              ,[0.5,-0.5,-0.75,15/18]]->             ,[[-0.25,1.0,0.0,1/3]->              ,[-1.25,-0.25,0.5,0.0]->              ,[0.0,-1.25,-0.25,-0.5]]->             ,[[0.75,-0.25,1.5,0.0]->              ,[0.25,-1.5,0.5,0.5]->              ,[-0.5,-0.5,-0.5,-0.25]]->             ,[[0.0,0.5,-0.5,0.25]->              ,[0.25,0.5,-1/3,0.0]->              ,[1.0,0.5,-1/6,0.5]]]->         cs = map (map (\[f,p,m,a] -> sinOsc AR f p * m + a)) x->         ms = map (map (\[f,w,m,a] -> pulse AR f w * m + a)) y->         [c1,c2,c3,c4,c5,c6] = mceChannels (X.fm7_mx cs ms)->         g3 = linLin (lfSaw KR 0.1 0) (-1) 1 0 (dbAmp (-12))->         g6 = dbAmp (-3)->     in mce [c1 + c3 * g3 + c5,c2 + c4 + c6 * g6]
− Help/UGen/fmGrain.help.lhs
@@ -1,9 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--> g_01 =->     let t = impulse AR 20 0->         n = linLin (lfNoise1 'α' KR 1) (-1) 1 1 10->         s = envSine 9 0.1->         e = envGen KR 1 1 0 1 RemoveSynth s->     in fmGrain t 0.2 440 220 n * e
− Help/UGen/fmGrainB.help.lhs
@@ -1,15 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> m_01 =->   [b_alloc 10 512 1->   ,b_gen_sine2 10 [Normalise,Wavetable,Clear] [(0.5,0.1)]]--    withSC3 (mapM_ maybe_async m_01)--> g_01 =->   let t = impulse AR 20 0->       n = linLin (lfNoise1 'α' KR 1) (-1) 1 1 10->       s = envSine 9 0.1->       e = envGen KR 1 1 0 1 RemoveSynth s->   in X.fmGrainB t 0.2 440 220 n 10 * e
− Help/UGen/fold2.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let o = fSinOsc AR 1000 0->         l = line KR 0 1 8 DoNothing->     in fold2 o l
− Help/UGen/formant.help.lhs
@@ -1,22 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Default values--> g_00 = formant AR 440 1760 880 * 0.125--Modulate fundamental frequency, formant frequency stays constant.--> g_01 = formant AR (xLine KR 400 1000 8 RemoveSynth) 2000 800 * 0.125--Modulate formant frequency, fundamental frequency stays constant.--> g_02 =->     let f = mce [200, 300, 400, 500]->         ff = xLine KR 400 4000 8 RemoveSynth->     in formant AR f ff 200 * 0.125--Modulate width frequency, other frequencies stay constant.--> g_03 =->     let bw = xLine KR 800 8000 8 RemoveSynth->     in formant AR 400 2000 bw * 0.1
− Help/UGen/formlet.help.lhs
@@ -1,31 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = formlet (impulse AR 20 0.5) 1000 0.01 0.1--> g_02 =->     let f = xLine KR 10 400 8 RemoveSynth->     in formlet (blip AR f 1000 * 0.1) 1000 0.01 0.1--Modulating formant frequency.--> g_03 =->     let s = blip AR (sinOsc KR 5 0 * 20 + 300) 1000 * 0.1->         ff = xLine KR 1500 700 8 RemoveSynth->     in formlet s ff 0.005 0.04--Mouse control of frequency and decay time.--> g_04 =->     let s = blip AR (sinOsc KR 5 0 * 20 + 300) 1000 * 0.1->         x = mouseX KR 0.01 0.2 Exponential 0.2->         y = mouseY KR 700 2000 Exponential 0.2->     in formlet s y 0.005 x--and again (control-rate)...--> g_05 =->     let s = dust 'α' KR (mce2 10 11)->         x = mouseX KR 0.1 2 Exponential 0.2->         y = mouseY KR 7 200 Exponential 0.2->         f = formlet s y 0.005 x->     in k2a f + sinOsc AR (f * 200 + mce2 500 600 - 100) 0 * 0.2
− Help/UGen/fos.help.lhs
@@ -1,14 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "FOS"-> Sound.SC3.UGen.DB.ugenSummary "FOS"--> import Sound.SC3--Same as OnePole.--> let x = lfTri AR 0.4 0 * 0.99-> in audition (out 0 (fos (lfSaw AR 200 0 * 0.2) (1 - (abs x)) 0 x))--Same as OneZero--> let x = lfTri AR 0.4 0 * 0.99-> in audition (out 0 (fos (lfSaw AR 200 0 * 0.2) (1 - (abs x)) x 0))
− Help/UGen/free.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = out 0 (sinOsc AR 880 0 * 0.1)--> g_02 =->     let n0 = pinkNoise 'α' AR->         n1 = dust 'β' KR 20->     in mrg [out 1 (n0 * 0.1), free n1 1001]--    > audition_at (1001,AddToTail,1,[]) g_01-    > audition_at (-1,AddToTail,1,[]) g_02-
− Help/UGen/freeSelf.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = dust 'α' KR 0.5->     in mrg [sinOsc AR 440 0 * 0.1,freeSelf n]
− Help/UGen/freeSelfWhenDone.help.lhs
@@ -1,15 +0,0 @@-> import Sound.SC3 {- hsc3 -}--using RemoveSynth doneAction--> g_01 =->     let x = mouseX KR (-1) 1 Linear 0.1->         e = linen x 1 0.1 1 RemoveSynth->     in sinOsc AR 440 0 * e--using FreeSelfWhenDone UGen--> g_02 =->     let x = mouseX KR (-1) 1 Linear 0.1->         e = linen x 1 0.1 1 DoNothing->     in mrg [sinOsc AR 440 0 * e,freeSelfWhenDone e]
− Help/UGen/freeVerb.help.lhs
@@ -1,18 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let i = impulse AR 1 0->         c = lfCub AR 1200 0->         s = decay i 0.25 * c * 0.1->         x = mouseX KR 0 1 Linear 0.1->         y = mouseY KR 0 1 Linear 0.1->     in freeVerb s y x 0.5--Process input channels--> g_02 =->     let i = soundIn (mce2 0 1)->         c = mceChannel->         x = mouseX KR 0 1 Linear 0.1->         y = mouseY KR 0 1 Linear 0.1->     in freeVerb2 (c 0 i) (c 1 i) y x 0.5
− Help/UGen/freqShift.help.lhs
@@ -1,47 +0,0 @@-> import Sound.SC3 {- hcs3 -}--Shifting a 100Hz tone by 1 Hz rising to 500Hz--> g_01 =->     let i = sinOsc AR 100 0->         s = xLine KR 1 500 5 RemoveSynth->     in freqShift i s 0 * 0.1--Shifting a complex tone by 1 Hz rising to 500Hz--> g_02 =->     let d = klangSpec [101, 303, 606, 808] [1, 1, 1, 1] [1, 1, 1, 1]->         i = klang AR 1 0 d->         s = xLine KR 1 500 5 RemoveSynth->     in freqShift i s 0 * 0.1--Modulating shift and phase--> g_03 =->     let s = lfNoise2 'α' AR 0.3->         i = sinOsc AR 10 0->         p = linLin (sinOsc AR 500 0) (-1) 1 0 (2 * pi)->     in freqShift i (s * 1500) p * 0.1--Shifting bandpassed noise--> g_04 =->     let n1 = whiteNoise 'α' AR->         n2 = lfNoise0 'β' AR 5.5->         i = bpf n1 1000 0.001->         s = n2 * 1000->     in freqShift i s 0 * 32--    {a=Blip.ar(60,4,LFGauss.ar(4,1/8))-    ;a=a/4+LocalIn.ar(2)-    ;a=FreqShift.ar(a,LFNoise0.kr(1/4,90))-    ;LocalOut.ar(DelayC.ar(a,1,0.1,0.9))-    ;a}.play--> g_05 =->     let e = lfGauss AR 4 (1/8) 0 Loop DoNothing->         o = blip AR 60 4 * e->         a = o / 4 + localIn 2 AR 0->         s = freqShift a (lfNoise0 'α' KR (1/4) * 90) 0->         z = delayC s 1 0.1 * 0.9->     in mrg2 s (localOut z)
− Help/UGen/gVerb.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let i = impulse AR 1 0->         c = lfCub AR 1200 0->         s = decay i 0.25 * c * 0.1->     in gVerb s 10 3 0.5 0.5 15 1 0.7 0.5 300
− Help/UGen/gate.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let t = lfPulse AR 1 0 0.1->   in gate (fSinOsc AR 500 0 * 0.25) t
− Help/UGen/gaussTrig.help.lhs
@@ -1,9 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let x = mouseX KR 0 0.9 Linear 0.2->       t1 = X.gaussTrig KR 10 x * abs (whiteNoise 'α' KR) * 0.5->       t2 = dust 'β' KR 10 * 0.5->       n = pinkNoise 'γ' AR * decay (mce2 t1 t2) 0.02 * 0.5->   in fold2 (ringz n 2000 0.02) 0.5
− Help/UGen/gbmanL.help.lhs
@@ -1,1 +0,0 @@-See GbmanN
− Help/UGen/gbmanN.help.lhs
@@ -1,25 +0,0 @@-> import Sound.SC3 {- hsc3 -}--default initial params--> g_01 =->     let x = mouseX KR 20 sampleRate Linear 0.2->     in gbmanN AR x 1.2 2.1 * 0.1--change initial params--> g_02 =->     let x = mouseX KR 20 sampleRate Linear 0.2->     in gbmanN AR x (-0.7) (-2.7) * 0.1--wait for it...--> g_03 =->     let x = mouseX KR 20 sampleRate Linear 0.2->     in gbmanN AR x 1.2 2.0002 * 0.1--as a frequency control--> g_04 =->     let f = gbmanN AR 40 1.2 2.1 * 400 + 500->     in sinOsc AR f 0 * 0.4
− Help/UGen/gendy1.help.lhs
@@ -1,111 +0,0 @@-> import Data.Char {- base -}-> import Sound.SC3 {- base -}--SC3 default parameters--> g_01 = gendy1 'α' AR 1 1 1 1 440 660 0.5 0.5 12 12 * 0.15--Wandering bass--> g_02 = gendy1 'α' AR 1 1 1.0 1.0 30 100 0.3 0.05 5 5 * 0.15--Play me--> g_03 =->     let x = mouseX KR 100 1000 Exponential 0.1->         g = gendy1 'α' AR 1 1 1.0 1.0 30 100 0.3 0.05 5 5->     in rlpf g 500 0.3 * 0.1--Scream!--> g_04 =->     let x = mouseX KR 220 440 Exponential 0.1->         y = mouseY KR 0.0 1.0 Linear 0.1->     in gendy1 'α' AR 2 3 1 1 x (8 * x) y y 7 7 *0.3--1 CP = random noise--> g_05 = gendy1 'α' AR 1 1 1 1 440 660 0.5 0.5 1 1 * 0.15--2 CPs = an oscillator--> g_06 = gendy1 'α' AR 1 1 1 1 440 660 0.5 0.5 2 2 * 0.15--Used as an LFO--> g_07 =->     let ad = sinOsc KR 0.10 0 * 0.49 + 0.51->         dd = sinOsc KR 0.13 0 * 0.49 + 0.51->         as = sinOsc KR 0.17 0 * 0.49 + 0.51->         ds = sinOsc KR 0.19 0 * 0.49 + 0.51->         g = gendy1 'α' KR 2 4 ad dd 3.4 3.5 as ds 10 10->     in sinOsc AR (g * 50 + 350) 0 * 0.3--Wasp--> g_08 =->     let ad = sinOsc KR 0.1 0 * 0.1 + 0.9->     in gendy1 'α' AR 0 0 ad 1.0 50 1000 1 0.005 12 12 * 0.2--Modulate distributions. Change of pitch as distributions change-the duration structure and spectrum--> g_09 =->     let x = mouseX KR 0 7 Linear 0.1->         y = mouseY KR 0 7 Linear 0.1->     in gendy1 'α' AR x y 1 1 440 660 0.5 0.5 12 12 * 0.2--Modulate number of CPs.--> g_10 =->     let x = mouseX KR 1 13 Linear 0.1->     in gendy1 'α' AR 1 1 1 1 440 660 0.5 0.5 12 x * 0.2--Self modulation.--> g_11 =->     let x = mouseX KR 1   13 Linear 0.1->         y = mouseY KR 0.1 10 Linear 0.1->         g0 = gendy1 'α' AR 5 4 0.3 0.7 0.1 y 1.0 1.0 5 5->     in gendy1 'α' AR 1 1 1 1 440 (g0 * 500 + 600) 0.5 0.5 12 x * 0.2--Use SINUS to track any oscillator and take CP positions from it use-adParam and ddParam as the inputs to sample.--> g_12 =->     let p = lfPulse KR 100 0 0.4->         s = sinOsc KR 30 0 * 0.5->     in gendy1 'α' AR 6 6 p s 440 660 0.5 0.5 12 12 * 0.2--Near the corners are interesting.--> g_13 =->     let x = mouseX KR 0 200 Linear 0.1->         y = mouseY KR 0 200 Linear 0.1->         p = lfPulse KR x 0 0.4->         s = sinOsc KR y 0 * 0.5->     in gendy1 'α' AR 6 6 p s 440 660 0.5 0.5 12 12 * 0.2--Texture--> g_14 =->     let node e = let f = rand e 130 160.3->                      r0 = rand ('α',e) 0 6->                      r1 = rand ('β',e) 0 6->                      l = rand e (-1) 1->                      ad = sinOsc KR 0.10 0 * 0.49 + 0.51->                      dd = sinOsc KR 0.13 0 * 0.49 + 0.51->                      as = sinOsc KR 0.17 0 * 0.49 + 0.51->                      ds = sinOsc KR 0.19 0 * 0.49 + 0.51->                      g = gendy1 'γ' AR r0 r1 ad dd f f as ds 12 12->                      o = sinOsc AR (g * 200 + 400) 0->                  in pan2 o l 0.1->     in mix (mce (map node (id_seq 10 'δ')))--Try durscale 10.0 and 0.0 too.--> g_15 =->     let x = mouseX KR 10 700 Linear 0.1->         y = mouseY KR 50 1000 Linear 0.1->         g = gendy1 'α' AR 2 3 1 1 1 x 0.5 0.1 10 10->     in combN (resonz g y 0.1) 0.1 0.1 5 * 0.6
− Help/UGen/grainBuf.help.lhs
@@ -1,30 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> fn_01 = "/home/rohan/data/audio/pf-c5.snd"--> m_01 = b_allocRead 10 fn_01 0 0--    > withSC3 (async m_01)--> g_01 =->     let buf = 10->         dur = 15->         lin a b = line KR a b dur RemoveSynth->         tr = impulse KR (lin 7.5 15) 0->         gd = lin 0.05 0.1->         r = lin 1 0.5 {- rate -}->         i = lin 0 1 {- read-location -}->         l = lin (-0.5) 0.5 {- stereo-location -}->     in grainBuf 2 tr gd buf r i 2 l (-1) 512--> g_02 =->     let b = 10->         e = -1->         x = mouseX KR (-1) 1 Linear 0.1->         y = mouseY KR 10 45 Linear 0.1->         i = impulse KR y 0->         n1 = lfNoise1 'α' KR 500->         n2 = lfNoise2 'β' KR 0.1->         r = linLin n1 (-1) 1 0.5 2->         p = linLin n2 (-1) 1 0 1->     in grainBuf 2 i 0.1 b r p 2 x e 512
− Help/UGen/grainFM.help.lhs
@@ -1,20 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let d = 15->         lin a b = line KR a b d RemoveSynth->         l = lin (-0.5) 0.5->         f = lin 200 800->         t = impulse KR (lin 7.5 15) 0->         i = lin (-1) 1->     in grainFM 2 t 0.1 f 200 i l (-1) 512 * 0.1--> g_02 =->     let n1 = whiteNoise 'α' KR->         n2 = lfNoise1 'β' KR 500->         x = mouseX KR (-0.5) 0.5 Linear 0.1->         y = mouseY KR 0 400 Linear 0.1->         f = n1 * y + 440->         t = impulse KR 12.5 0->         i = linLin n2 (-1) 1 1 10->     in grainFM 2 t 0.1 f 200 i x (-1) 512 * 0.1
− Help/UGen/grainIn.help.lhs
@@ -1,11 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> f_01 s =->     let x = mouseX KR (-0.5) 0.5 Linear 0.1->         y = mouseY KR 5 25 Linear 0.1->         t = impulse KR y 0->     in grainIn 2 t 0.1 s x (-1) 512 * 0.1--> g_01 = f_01 (pinkNoise 'α' AR)--> g_02 = let s = soundIn 0 in s * 0.05 + f_01 s
− Help/UGen/grainSin.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = whiteNoise 'α' KR->         x = mouseX KR (-0.5) 0.5 Linear 0.1->         y = mouseY KR 0 400 Linear 0.1->         f = n * y + 440->         t = impulse KR 10 0->     in grainSin 2 t 0.1 f x (-1) 512 * 0.1---- <https://www.listarc.bham.ac.uk/lists/sc-users/msg66911.html>--> f_02 k =->   let t = impulse AR (mouseY KR 1 999 Linear 0.2) 0->	f i = ((fromIntegral i ** range_hs (0.3,0.7) (lfNoise0 i KR 1)) + 1) * 99->       l = mce (map f [0::Int .. k - 1])->   in grainSin 2 t (mouseX KR 0.001 0.5 Exponential 0.2) (tChoose 'α' t l) 0 (-1) 512 * 0.01--> g_02 = f_02 16--> g_03 =->   let (s1,s2) = unmce2 g_02->   in freeVerb2 s1 s2 0.9 0.1 0.5-
− Help/UGen/grayNoise.help.lhs
@@ -1,14 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = grayNoise 'α' AR * 0.1--Drawing--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen1 0.025 (grayNoise 'γ' AR)--    import Sound.SC3.Plot.FFT {- hsc3-plot -}-    plot_ugen_fft1 0.1 (grayNoise 'γ' AR)--![](sw/hsc3/Help/SVG/grayNoise.0.svg)-![](sw/hsc3/Help/SVG/grayNoise.1.svg)
− Help/UGen/greater_than.help.lhs
@@ -1,2 +0,0 @@-See equal_to-
− Help/UGen/greyholeRaw.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--default values--> g_01 =->   let (i1,i2) = (soundIn 0,soundIn 1)->   in X.greyholeRaw i1 i2 0.0 2.0 0.5 0.9 0.1 2.0 1.0
− Help/UGen/hasher.help.lhs
@@ -1,21 +0,0 @@-> import Sound.SC3 {- hsc3 -}--noise--> g_01 = hasher (line AR 0 1 1 RemoveSynth) * 0.2--remap x--> f_02 x_f =->   let x = mouseX KR 0 10 Linear 0.2->       f = hasher (x_f x) * 300 + 500->   in sinOsc AR f 0 * 0.1--> g_02 = f_02 (\x -> roundTo x 1)--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen_nrt (400,1) 1.0 (hasher (line AR 0 1 1 RemoveSynth))--> g_03 = f_02 id--> g_04 = sinOsc AR (whiteNoise 'α' KR * 300 + 500) 0 * 0.1
− Help/UGen/henonC.help.lhs
@@ -1,1 +0,0 @@-See henonN
− Help/UGen/henonL.help.lhs
@@ -1,1 +0,0 @@-See henonN
− Help/UGen/henonN.help.lhs
@@ -1,46 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Noise {- hsc3 -}--With SC3 default initial parameters.--> g_01 =->     let x = mouseX KR 20 sampleRate Linear 0.1->     in henonN AR x 1.4 0.3 0 0 * 0.1--With mouse-control of parameters.--> g_02 =->     let x = mouseX KR 1 1.4 Linear 0.1->         y = mouseY KR 0 0.3 Linear 0.1->     in henonN AR (sampleRate / 4) x y 0 0 * 0.1--With randomly modulated parameters.--> g_03 =->     let n0 = lfNoise2 'α' KR 1 * 0.20 + 1.20->         n1 = lfNoise2 'β' KR 1 * 0.15 + 0.15->     in henonN AR (sampleRate / 8) n0 n1 0 0 * 0.1--As a frequency control.--> g_04 =->     let x = mouseX KR 1 1.4 Linear 0.1->         y = mouseY KR 0 0.3 Linear 0.1->         f0 = 40->         f = henonN AR f0 x y 0 0 * 800 + 900->     in sinOsc AR f 0 * 0.4--Drawing--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.1 (henonN AR 2500 1.4 0.3 0 0 * 0.1)--![](sw/hsc3/Help/SVG/henonN.0.svg)--In haskell:--> henon_hs a b = map snd (iterate (henon_f a b) (0.0,0.0))--    import Sound.SC3.Plot {- hsc3-plot -}-    plotTable1 (take 600 (henon_hs 1.4 0.3))-    plot_ugen_nrt (600,1) 1.0 (henonN AR 600 1.4 0.3 0 0)
− Help/UGen/hilbertFIR.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--composite UGen--> g_01 = hilbertFIR (sinOsc AR 100 0 * dbAmp (-20)) (localBuf 'α' 2048 1)
− Help/UGen/hpf.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let f = fSinOsc KR (xLine KR 0.7 300 20 RemoveSynth) 0 * 3600 + 4000->     in hpf (saw AR 200 * 0.2) f--    import Sound.SC3.Plot.FFT {- hsc3-plot -}-    plot_ugen_fft1 0.05 (hpf (whiteNoise 'α' AR) 12000)
− Help/UGen/hpz1.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = let n = whiteNoise 'α' AR in hpz1 (n * 0.25)--    > import Sound.SC3.Plot.FFT {- hsc3-plot -}-    > plot_ugen_fft1 0.05 (hpz1 (whiteNoise 'α' AR))--detect changes in a signal (see also hpz2)--> g_02 =->   let n = lfNoise0 'α' AR 1000->       h = hpz1 n->   in mce [h,h >** 0,abs h >** 0]--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen 0.01 g_02
− Help/UGen/hpz2.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let n = whiteNoise 'α' AR->   in hpz2 (n * 0.25)
− Help/UGen/hypot.help.lhs
@@ -1,26 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR 0 0.1 Linear 0.1->         y = mouseY KR 0 0.1 Linear 0.1->     in sinOsc AR 440 0 * hypot x y--Object travels 200 meters in 6 secs (=120kph) passing 10 meters-from the listener.  The speed of sound is 344 meters/sec.--> g_02 =->     let x = 10->         y = lfSaw KR (1 / 6) 0 * 100->         d = hypot x y->         a = 10 / (squared d)->         v = slope d->         r = (344 - v) / 344->     in fSinOsc AR (1000 * r) 0 * a--> g_03 =->     let x = 10->         y = lfSaw KR (1 / 6) 0 * 100->         d = hypot x y->         a = 40 / (squared d)->         s = rlpf (fSinOsc AR 200 0 * lfPulse AR 31.3 0 0.4) 400 0.3->     in delayL s (110 / 344) (d / 344) * a
− Help/UGen/iEnvGen.help.lhs
@@ -1,44 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> e_01 :: (Fractional n,Ord n) => Envelope n-> e_01 =->   let l = [0,0.6,0.3,1.0,0]->       t = [0.1,0.02,0.4,1.1]->       c = [EnvLin,EnvExp,EnvNum (-6),EnvSin]->   in Envelope l t c Nothing Nothing 0--    import Sound.SC3.Plot {- hsc3-plot -}-    plotEnvelope [e_01]--> g_01 =->     let x = mouseX KR 0 (envelope_duration e_01) Linear 0.2->         g = iEnvGen KR x e_01->     in sinOsc AR (g * 500 + 440) 0 * 0.1--index with SinOsc. mouse controls amplitude of SinOsc.-use offset so negative values of SinOsc will map into the Env--> e_02 :: (Fractional n,Ord n) => Envelope n-> e_02 =->   let l = [-1,-0.7,0.7,1]->       t = [0.8666,0.2666,0.8668]->       c = [EnvLin,EnvLin]->   in Envelope l t c Nothing Nothing 0--    plotEnvelope [e_02]--> g_02 =->     let x = mouseX KR 0 1 Linear 0.2->         o = (sinOsc AR 440 0 + 1) * x->     in iEnvGen AR o e_02 * 0.1--index with Amplitude of input, control freq of SinOsc (uses SoundIn)--> e_03 :: (Fractional n,Ord n) => Envelope n-> e_03 = envXYC [(0, 330, EnvExp), (0.5, 440, EnvExp), (1.0, 1760, EnvLin)]--    plotEnvelope [e_03]--> g_03 =->     let pt = amplitude AR (soundIn 0) 0.01 0.2->     in sinOsc AR (iEnvGen KR pt e_03) 0 * 0.2
− Help/UGen/iRand.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let f = iRand 'α' 200 1200->         e = line KR 0.2 0 0.1 RemoveSynth->     in fSinOsc AR f 0 * e
− Help/UGen/ifft.help.lhs
@@ -1,1 +0,0 @@-# ifft' is a variant with the default window type and size
− Help/UGen/iirFilter.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let x = mouseX KR 20 12000 Exponential 0.2->       y = mouseY KR 0.01 1 Linear 0.2->       o = lfSaw AR (mce [x * 0.99,x * 1.01]) 0 * 0.1->       freq = sinOsc KR (sinOsc KR 0.1 0) (1.5 * pi) * 1550 + 1800->       s = X.iirFilter o freq y->   in combN s 0.5 (mce2 0.4 0.35) 2 * 0.4 + s * 0.5
− Help/UGen/impulse.help.lhs
@@ -1,18 +0,0 @@-Note: SC2 had no phase input.--> import Sound.SC3 {- hsc3 -}--> g_01 = impulse AR 800 0 * 0.1--> g_02 =->     let f = xLine KR 800 10 5 RemoveSynth->     in impulse AR f 0.0 * 0.1--> g_03 =->     let f = mouseY KR 4 8 Linear 0.1->         x = mouseX KR 0 1 Linear 0.1->     in impulse AR f (mce [0,x]) * 0.1--An impulse with frequency 0 returns a single impulse--> g_04 = decay (impulse AR 0 0) 1 * brownNoise 'α' AR * 0.1
− Help/UGen/in.help.lhs
@@ -1,58 +0,0 @@-Note: `hsc3` renames UGen to `in'` since `in` is a reserved keyword--> import Sound.OSC {- hosc -}-> import Sound.SC3 {- hsc3 -}--Patching input to output (see also soundIn).--> g_01 = in' 2 AR numOutputBuses--Patching input to output, with delay.--> g_02 =->     let i = in' 2 AR numOutputBuses->         d = delayN i 0.5 0.5->     in i + d--Write noise to first private bus, then read it out.-The multiple root graph is ordered.--> g_03 =->     let n = pinkNoise 'α' AR->         b = numOutputBuses + numInputBuses->         wr = out b (n * 0.3)->         rd = out 0 (in' 1 AR b)->     in mrg [rd,wr]--There are functions to encapsulate the offset calculation.-(There is also a firstPrivateBus value.)--> g_04 =->     let n = pinkNoise 'α' AR->         wr = privateOut 0 (n * 0.3)->         rd = out 0 (privateIn 1 AR 0)->     in mrg [rd,wr]--Set value on a control bus--    > withSC3 (sendMessage (c_set1 0 300))--Read a control bus--> g_05 = sinOsc AR (in' 1 KR 0) 0 * 0.1--Re-set value on bus--    > withSC3 (sendMessage (c_set1 0 600))--Control rate graph writing buses 0 & 1.--> g_06 = mce2 (tRand 'α' 220 2200 (dust 'β' KR 1)) (dust 'γ' KR 3)--Audio rate graph reading control buses 0 & 1.--> g_07 = sinOsc AR (in' 1 KR 0) 0 * decay (in' 1 KR 1) 0.2 * 0.1--Patch mono input to stereo output--> g_08 = pan2 (in' 1 AR numOutputBuses) 0 1
− Help/UGen/inFeedback.help.lhs
@@ -1,34 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Audio feedback modulation--> g_01 =->     let f = inFeedback 1 0 * 1300 + 300->     in sinOsc AR f 0 * 0.4--Audition these in either order and hear both tones.--> g_02 = inFeedback 1 firstPrivateBus--> g_03 =->     let b  = firstPrivateBus->         s0 = out b (sinOsc AR 220 0 * 0.1)->         s1 = out 0 (sinOsc AR 660 0 * 0.1)->     in mrg [s0, s1]--Doubters consult this--> g_04 = let b = firstPrivateBus in in' 1 AR b--Resonator, see localOut for variant.--> g_05 =->     let b = firstPrivateBus->         p = inFeedback 1 b->         i = impulse AR 1 0->         d = delayC (i + (p * 0.995)) 1 (recip 440 - recip controlRate)->     in mrg [offsetOut b d, offsetOut 0 p]--Compare with oscillator (at right).--> g_06 = out 1 (sinOsc AR 440 0 * 0.2)
− Help/UGen/inRange.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--trigger noise burst--> g_01 =->     let n = brownNoise 'α' AR * 0.1->         x = mouseX KR 1 2 Linear 0.1->         o = sinOsc KR x 0 * 0.2->     in inRange o (-0.15) 0.15 * n--i-rate...--> g_02 = sinOsc AR 440 0 * inRange (rand 'α' 0 1) 0.5 1.0 * 0.1
− Help/UGen/inTrig.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Run an oscillator with the trigger at bus 10.--> g_01 =->     let t = inTrig 1 10->         e = envGen KR t t 0 1 DoNothing (envPerc 0.01 1)->     in sinOsc AR 440 0 * e--Set bus 10, each set will trigger a ping.--    > withSC3 (sendMessage (c_set1 10 0.1))
− Help/UGen/index.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Index buffer for frequency values--> g_01 =->   let b = asLocalBuf 'α' [50,100,200,400,800,1600]->       f = index b (range 0 6 (lfSaw KR 2 0))->   in sinOsc AR (mce [f,f * 9]) 0 * 0.1--> g_02 =->   let b = asLocalBuf 'α' [200, 300, 400, 500, 600, 800]->       f = index b (mouseX KR 0 7 Linear 0.2)->   in sinOsc AR f 0 * 0.1
− Help/UGen/indexInBetween.help.lhs
@@ -1,19 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Index into buffer for frequency values--> g_01 =->     let f0 = mouseX KR 200 900 Linear 0.1->         b = asLocalBuf 'α' [200,210,400,430,600,800]->         i = indexInBetween b f0->         l0 = index b i->         l1 = index b (i + 1)->         f1 = linLin (frac i) 0 1 l0 l1->     in sinOsc AR (mce [f0,f1]) 0 * 0.1--> g_02 =->     let from = asLocalBuf 'α' [1, 2, 4, 8, 16]->         to = asLocalBuf 'β' [0, 1, 0, -1, 0]->         x = mouseX KR 1 16 Linear 0.1->         i = indexL to (indexInBetween from x)->     in sinOsc AR (linLin i (-1) 1 440 880) 0 * 0.1
− Help/UGen/indexL.help.lhs
@@ -1,14 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Index buffer for frequency values--> g_01 =->   let b = asLocalBuf 'α' [50,100,200,400,800,1600]->       ph = 1 -- 0->       i = range 0 7 (lfSaw KR 0.1 ph)->   in sinOsc AR (mce2 (indexL b i) (index b i)) 0 * 0.1--> g_02 =->   let b = asLocalBuf 'α' [200,300,400,500,600,800]->       x = mouseX KR 0 7 Linear 0.2->   in sinOsc AR (mce2 (indexL b x) (index b x)) 0 * 0.1
− Help/UGen/integrator.help.lhs
@@ -1,29 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR 0.001 0.999 Exponential 0.2->         o = lfPulse AR 300 0.2 0.1 * 0.1->     in integrator o x--used as an envelope--> g_02 =->     let i = lfPulse AR 3 0.2 0.0004->         o = sinOsc AR 700 0 * 0.1->     in integrator i 0.999 * o---scope--> g_03 =->     let x = mouseX KR 0.01 0.999 Exponential 0.2->         o = lfPulse AR (1500 / 4) 0.2 0.1->     in integrator o x * 0.1--Drawing--    > import Sound.SC3.Plot {- hsc3-plot -}-    > let s = lfPulse AR (1500 / 4) 0.2 0.1-    > plot_ugen 0.006 (integrator s (mce [0.1,0.4,0.7]))--![](sw/hsc3/Help/SVG/integrator.0.svg)
Help/UGen/ix.md view
@@ -1,704 +1,1298 @@ ## Algebraic--[sum3](?t=hsc3&e=Help/UGen/sum3.help.lhs),-[sum4](?t=hsc3&e=Help/UGen/sum4.help.lhs)---## Analysis--[beatTrack](?t=hsc3&e=Help/UGen/beatTrack.help.lhs),-[beatTrack2](?t=hsc3&e=Help/UGen/beatTrack2.help.lhs),-[mfcc](?t=hsc3&e=Help/UGen/mfcc.help.lhs),-[onsets](?t=hsc3&e=Help/UGen/onsets.help.lhs),-[runningSum](?t=hsc3&e=Help/UGen/runningSum.help.lhs),-[slope](?t=hsc3&e=Help/UGen/slope.help.lhs)---## Analysis>Amplitude--[ampComp](?t=hsc3&e=Help/UGen/ampComp.help.lhs),-[ampCompA](?t=hsc3&e=Help/UGen/ampCompA.help.lhs),-[amplitude](?t=hsc3&e=Help/UGen/amplitude.help.lhs),-[detectSilence](?t=hsc3&e=Help/UGen/detectSilence.help.lhs),-[loudness](?t=hsc3&e=Help/UGen/loudness.help.lhs),-[peak](?t=hsc3&e=Help/UGen/peak.help.lhs),-[peakFollower](?t=hsc3&e=Help/UGen/peakFollower.help.lhs),-[sendPeakRMS](?t=hsc3&e=Help/UGen/sendPeakRMS.help.lhs)---## Analysis>Pitch--[keyTrack](?t=hsc3&e=Help/UGen/keyTrack.help.lhs),-[pitch](?t=hsc3&e=Help/UGen/pitch.help.lhs),-[zeroCrossing](?t=hsc3&e=Help/UGen/zeroCrossing.help.lhs)---## Buffer--[bufRd](?t=hsc3&e=Help/UGen/bufRd.help.lhs),-[bufWr](?t=hsc3&e=Help/UGen/bufWr.help.lhs),-[dbufrd](?t=hsc3&e=Help/UGen/dbufrd.help.lhs),-[dbufwr](?t=hsc3&e=Help/UGen/dbufwr.help.lhs),-[delTapRd](?t=hsc3&e=Help/UGen/delTapRd.help.lhs),-[delTapWr](?t=hsc3&e=Help/UGen/delTapWr.help.lhs),-[detectIndex](?t=hsc3&e=Help/UGen/detectIndex.help.lhs),-[diskIn](?t=hsc3&e=Help/UGen/diskIn.help.lhs),-[diskOut](?t=hsc3&e=Help/UGen/diskOut.help.lhs),-[grainBuf](?t=hsc3&e=Help/UGen/grainBuf.help.lhs),-[index](?t=hsc3&e=Help/UGen/index.help.lhs),-[indexInBetween](?t=hsc3&e=Help/UGen/indexInBetween.help.lhs),-[indexL](?t=hsc3&e=Help/UGen/indexL.help.lhs),-[localBuf](?t=hsc3&e=Help/UGen/localBuf.help.lhs),-[phasor](?t=hsc3&e=Help/UGen/phasor.help.lhs),-[playBuf](?t=hsc3&e=Help/UGen/playBuf.help.lhs),-[recordBuf](?t=hsc3&e=Help/UGen/recordBuf.help.lhs),-[scopeOut](?t=hsc3&e=Help/UGen/scopeOut.help.lhs),-[shaper](?t=hsc3&e=Help/UGen/shaper.help.lhs),-[tGrains](?t=hsc3&e=Help/UGen/tGrains.help.lhs),-[tap](?t=hsc3&e=Help/UGen/tap.help.lhs),-[vDiskIn](?t=hsc3&e=Help/UGen/vDiskIn.help.lhs),-[warp1](?t=hsc3&e=Help/UGen/warp1.help.lhs),-[wrapIndex](?t=hsc3&e=Help/UGen/wrapIndex.help.lhs)---## Buffer>Info--[bufChannels](?t=hsc3&e=Help/UGen/bufChannels.help.lhs),-[bufDur](?t=hsc3&e=Help/UGen/bufDur.help.lhs),-[bufFrames](?t=hsc3&e=Help/UGen/bufFrames.help.lhs),-[bufRateScale](?t=hsc3&e=Help/UGen/bufRateScale.help.lhs),-[bufSampleRate](?t=hsc3&e=Help/UGen/bufSampleRate.help.lhs),-[bufSamples](?t=hsc3&e=Help/UGen/bufSamples.help.lhs)---## Conversion--[a2k](?t=hsc3&e=Help/UGen/a2k.help.lhs),-[degreeToKey](?t=hsc3&e=Help/UGen/degreeToKey.help.lhs),-[k2a](?t=hsc3&e=Help/UGen/k2a.help.lhs),-[t2a](?t=hsc3&e=Help/UGen/t2a.help.lhs),-[t2k](?t=hsc3&e=Help/UGen/t2k.help.lhs)---## Convolution--[convolution](?t=hsc3&e=Help/UGen/convolution.help.lhs),-[convolution2](?t=hsc3&e=Help/UGen/convolution2.help.lhs),-[convolution2L](?t=hsc3&e=Help/UGen/convolution2L.help.lhs),-[convolution3](?t=hsc3&e=Help/UGen/convolution3.help.lhs),-[partConv](?t=hsc3&e=Help/UGen/partConv.help.lhs),-[stereoConvolution2L](?t=hsc3&e=Help/UGen/stereoConvolution2L.help.lhs)---## Delays--[allpassC](?t=hsc3&e=Help/UGen/allpassC.help.lhs),-[allpassL](?t=hsc3&e=Help/UGen/allpassL.help.lhs),-[allpassN](?t=hsc3&e=Help/UGen/allpassN.help.lhs),-[combC](?t=hsc3&e=Help/UGen/combC.help.lhs),-[combL](?t=hsc3&e=Help/UGen/combL.help.lhs),-[combN](?t=hsc3&e=Help/UGen/combN.help.lhs),-[delTapRd](?t=hsc3&e=Help/UGen/delTapRd.help.lhs),-[delTapWr](?t=hsc3&e=Help/UGen/delTapWr.help.lhs),-[delay1](?t=hsc3&e=Help/UGen/delay1.help.lhs),-[delay2](?t=hsc3&e=Help/UGen/delay2.help.lhs),-[delayC](?t=hsc3&e=Help/UGen/delayC.help.lhs),-[delayL](?t=hsc3&e=Help/UGen/delayL.help.lhs),-[delayN](?t=hsc3&e=Help/UGen/delayN.help.lhs),-[pluck](?t=hsc3&e=Help/UGen/pluck.help.lhs),-[tDelay](?t=hsc3&e=Help/UGen/tDelay.help.lhs)---## Delays>Buffer--[bufAllpassC](?t=hsc3&e=Help/UGen/bufAllpassC.help.lhs),-[bufAllpassL](?t=hsc3&e=Help/UGen/bufAllpassL.help.lhs),-[bufAllpassN](?t=hsc3&e=Help/UGen/bufAllpassN.help.lhs),-[bufCombC](?t=hsc3&e=Help/UGen/bufCombC.help.lhs),-[bufCombL](?t=hsc3&e=Help/UGen/bufCombL.help.lhs),-[bufCombN](?t=hsc3&e=Help/UGen/bufCombN.help.lhs),-[bufDelayC](?t=hsc3&e=Help/UGen/bufDelayC.help.lhs),-[bufDelayL](?t=hsc3&e=Help/UGen/bufDelayL.help.lhs),-[bufDelayN](?t=hsc3&e=Help/UGen/bufDelayN.help.lhs),-[tap](?t=hsc3&e=Help/UGen/tap.help.lhs)---## Demand--[dbrown](?t=hsc3&e=Help/UGen/dbrown.help.lhs),-[dbufrd](?t=hsc3&e=Help/UGen/dbufrd.help.lhs),-[dbufwr](?t=hsc3&e=Help/UGen/dbufwr.help.lhs),-[dconst](?t=hsc3&e=Help/UGen/dconst.help.lhs),-[demand](?t=hsc3&e=Help/UGen/demand.help.lhs),-[demandEnvGen](?t=hsc3&e=Help/UGen/demandEnvGen.help.lhs),-[dgeom](?t=hsc3&e=Help/UGen/dgeom.help.lhs),-[dibrown](?t=hsc3&e=Help/UGen/dibrown.help.lhs),-[diwhite](?t=hsc3&e=Help/UGen/diwhite.help.lhs),-[dpoll](?t=hsc3&e=Help/UGen/dpoll.help.lhs),-[drand](?t=hsc3&e=Help/UGen/drand.help.lhs),-[dreset](?t=hsc3&e=Help/UGen/dreset.help.lhs),-[dseq](?t=hsc3&e=Help/UGen/dseq.help.lhs),-[dser](?t=hsc3&e=Help/UGen/dser.help.lhs),-[dseries](?t=hsc3&e=Help/UGen/dseries.help.lhs),-[dshuf](?t=hsc3&e=Help/UGen/dshuf.help.lhs),-[dstutter](?t=hsc3&e=Help/UGen/dstutter.help.lhs),-[dswitch](?t=hsc3&e=Help/UGen/dswitch.help.lhs),-[dswitch1](?t=hsc3&e=Help/UGen/dswitch1.help.lhs),-[dunique](?t=hsc3&e=Help/UGen/dunique.help.lhs),-[duty](?t=hsc3&e=Help/UGen/duty.help.lhs),-[dwhite](?t=hsc3&e=Help/UGen/dwhite.help.lhs),-[dwrand](?t=hsc3&e=Help/UGen/dwrand.help.lhs),-[dxrand](?t=hsc3&e=Help/UGen/dxrand.help.lhs),-[tDuty](?t=hsc3&e=Help/UGen/tDuty.help.lhs)---## Dynamics--[compander](?t=hsc3&e=Help/UGen/compander.help.lhs),-[companderD](?t=hsc3&e=Help/UGen/companderD.help.lhs),-[limiter](?t=hsc3&e=Help/UGen/limiter.help.lhs),-[normalizer](?t=hsc3&e=Help/UGen/normalizer.help.lhs)---## Envelopes--[decay](?t=hsc3&e=Help/UGen/decay.help.lhs),-[decay2](?t=hsc3&e=Help/UGen/decay2.help.lhs),-[demandEnvGen](?t=hsc3&e=Help/UGen/demandEnvGen.help.lhs),-[envGen](?t=hsc3&e=Help/UGen/envGen.help.lhs),-[iEnvGen](?t=hsc3&e=Help/UGen/iEnvGen.help.lhs),-[line](?t=hsc3&e=Help/UGen/line.help.lhs),-[linen](?t=hsc3&e=Help/UGen/linen.help.lhs),-[xLine](?t=hsc3&e=Help/UGen/xLine.help.lhs)---## FFT--[beatTrack](?t=hsc3&e=Help/UGen/beatTrack.help.lhs),-[beatTrack2](?t=hsc3&e=Help/UGen/beatTrack2.help.lhs),-[convolution](?t=hsc3&e=Help/UGen/convolution.help.lhs),-[convolution2](?t=hsc3&e=Help/UGen/convolution2.help.lhs),-[convolution2L](?t=hsc3&e=Help/UGen/convolution2L.help.lhs),-[fft](?t=hsc3&e=Help/UGen/fft.help.lhs),-[fftTrigger](?t=hsc3&e=Help/UGen/fftTrigger.help.lhs),-[ifft](?t=hsc3&e=Help/UGen/ifft.help.lhs),-[pv_Add](?t=hsc3&e=Help/UGen/pv_Add.help.lhs),-[pv_BinScramble](?t=hsc3&e=Help/UGen/pv_BinScramble.help.lhs),-[pv_BinShift](?t=hsc3&e=Help/UGen/pv_BinShift.help.lhs),-[pv_BinWipe](?t=hsc3&e=Help/UGen/pv_BinWipe.help.lhs),-[pv_BrickWall](?t=hsc3&e=Help/UGen/pv_BrickWall.help.lhs),-[pv_ChainUGen](?t=hsc3&e=Help/UGen/pv_ChainUGen.help.lhs),-[pv_ConformalMap](?t=hsc3&e=Help/UGen/pv_ConformalMap.help.lhs),-[pv_Conj](?t=hsc3&e=Help/UGen/pv_Conj.help.lhs),-[pv_Copy](?t=hsc3&e=Help/UGen/pv_Copy.help.lhs),-[pv_CopyPhase](?t=hsc3&e=Help/UGen/pv_CopyPhase.help.lhs),-[pv_Diffuser](?t=hsc3&e=Help/UGen/pv_Diffuser.help.lhs),-[pv_Div](?t=hsc3&e=Help/UGen/pv_Div.help.lhs),-[pv_HainsworthFoote](?t=hsc3&e=Help/UGen/pv_HainsworthFoote.help.lhs),-[pv_JensenAndersen](?t=hsc3&e=Help/UGen/pv_JensenAndersen.help.lhs),-[pv_LocalMax](?t=hsc3&e=Help/UGen/pv_LocalMax.help.lhs),-[pv_MagAbove](?t=hsc3&e=Help/UGen/pv_MagAbove.help.lhs),-[pv_MagBelow](?t=hsc3&e=Help/UGen/pv_MagBelow.help.lhs),-[pv_MagClip](?t=hsc3&e=Help/UGen/pv_MagClip.help.lhs),-[pv_MagDiv](?t=hsc3&e=Help/UGen/pv_MagDiv.help.lhs),-[pv_MagFreeze](?t=hsc3&e=Help/UGen/pv_MagFreeze.help.lhs),-[pv_MagMul](?t=hsc3&e=Help/UGen/pv_MagMul.help.lhs),-[pv_MagNoise](?t=hsc3&e=Help/UGen/pv_MagNoise.help.lhs),-[pv_MagShift](?t=hsc3&e=Help/UGen/pv_MagShift.help.lhs),-[pv_MagSmear](?t=hsc3&e=Help/UGen/pv_MagSmear.help.lhs),-[pv_MagSquared](?t=hsc3&e=Help/UGen/pv_MagSquared.help.lhs),-[pv_Max](?t=hsc3&e=Help/UGen/pv_Max.help.lhs),-[pv_Min](?t=hsc3&e=Help/UGen/pv_Min.help.lhs),-[pv_Mul](?t=hsc3&e=Help/UGen/pv_Mul.help.lhs),-[pv_PhaseShift](?t=hsc3&e=Help/UGen/pv_PhaseShift.help.lhs),-[pv_PhaseShift270](?t=hsc3&e=Help/UGen/pv_PhaseShift270.help.lhs),-[pv_PhaseShift90](?t=hsc3&e=Help/UGen/pv_PhaseShift90.help.lhs),-[pv_RandComb](?t=hsc3&e=Help/UGen/pv_RandComb.help.lhs),-[pv_RandWipe](?t=hsc3&e=Help/UGen/pv_RandWipe.help.lhs),-[pv_RectComb](?t=hsc3&e=Help/UGen/pv_RectComb.help.lhs),-[pv_RectComb2](?t=hsc3&e=Help/UGen/pv_RectComb2.help.lhs),-[packFFT](?t=hsc3&e=Help/UGen/packFFT.help.lhs),-[partConv](?t=hsc3&e=Help/UGen/partConv.help.lhs),-[specCentroid](?t=hsc3&e=Help/UGen/specCentroid.help.lhs),-[specFlatness](?t=hsc3&e=Help/UGen/specFlatness.help.lhs),-[specPcile](?t=hsc3&e=Help/UGen/specPcile.help.lhs),-[stereoConvolution2L](?t=hsc3&e=Help/UGen/stereoConvolution2L.help.lhs),-[unpack1FFT](?t=hsc3&e=Help/UGen/unpack1FFT.help.lhs),-[unpackFFT](?t=hsc3&e=Help/UGen/unpackFFT.help.lhs)---## Filters--[lag2UD](?t=hsc3&e=Help/UGen/lag2UD.help.lhs),-[lag3UD](?t=hsc3&e=Help/UGen/lag3UD.help.lhs),-[lagUD](?t=hsc3&e=Help/UGen/lagUD.help.lhs),-[moogFF](?t=hsc3&e=Help/UGen/moogFF.help.lhs)---## Filters>BEQSuite--[bAllPass](?t=hsc3&e=Help/UGen/bAllPass.help.lhs),-[bBandPass](?t=hsc3&e=Help/UGen/bBandPass.help.lhs),-[bBandStop](?t=hsc3&e=Help/UGen/bBandStop.help.lhs),-[beqSuite](?t=hsc3&e=Help/UGen/beqSuite.help.lhs),-[bHiPass](?t=hsc3&e=Help/UGen/bHiPass.help.lhs),-[bHiShelf](?t=hsc3&e=Help/UGen/bHiShelf.help.lhs),-[bLowPass](?t=hsc3&e=Help/UGen/bLowPass.help.lhs),-[bLowShelf](?t=hsc3&e=Help/UGen/bLowShelf.help.lhs),-[bPeakEQ](?t=hsc3&e=Help/UGen/bPeakEQ.help.lhs)---## Filters>Linear--[apf](?t=hsc3&e=Help/UGen/apf.help.lhs),-[bpf](?t=hsc3&e=Help/UGen/bpf.help.lhs),-[bpz2](?t=hsc3&e=Help/UGen/bpz2.help.lhs),-[brf](?t=hsc3&e=Help/UGen/brf.help.lhs),-[brz2](?t=hsc3&e=Help/UGen/brz2.help.lhs),-[changed](?t=hsc3&e=Help/UGen/changed.help.lhs),-[decay](?t=hsc3&e=Help/UGen/decay.help.lhs),-[decay2](?t=hsc3&e=Help/UGen/decay2.help.lhs),-[dynKlank](?t=hsc3&e=Help/UGen/dynKlank.help.lhs),-[fos](?t=hsc3&e=Help/UGen/fos.help.lhs),-[formlet](?t=hsc3&e=Help/UGen/formlet.help.lhs),-[hpf](?t=hsc3&e=Help/UGen/hpf.help.lhs),-[hpz1](?t=hsc3&e=Help/UGen/hpz1.help.lhs),-[hpz2](?t=hsc3&e=Help/UGen/hpz2.help.lhs),-[integrator](?t=hsc3&e=Help/UGen/integrator.help.lhs),-[klank](?t=hsc3&e=Help/UGen/klank.help.lhs),-[lpf](?t=hsc3&e=Help/UGen/lpf.help.lhs),-[lpz1](?t=hsc3&e=Help/UGen/lpz1.help.lhs),-[lpz2](?t=hsc3&e=Help/UGen/lpz2.help.lhs),-[lag](?t=hsc3&e=Help/UGen/lag.help.lhs),-[lag2](?t=hsc3&e=Help/UGen/lag2.help.lhs),-[lag3](?t=hsc3&e=Help/UGen/lag3.help.lhs),-[leakDC](?t=hsc3&e=Help/UGen/leakDC.help.lhs),-[midEQ](?t=hsc3&e=Help/UGen/midEQ.help.lhs),-[onePole](?t=hsc3&e=Help/UGen/onePole.help.lhs),-[oneZero](?t=hsc3&e=Help/UGen/oneZero.help.lhs),-[rhpf](?t=hsc3&e=Help/UGen/rhpf.help.lhs),-[rlpf](?t=hsc3&e=Help/UGen/rlpf.help.lhs),-[ramp](?t=hsc3&e=Help/UGen/ramp.help.lhs),-[resonz](?t=hsc3&e=Help/UGen/resonz.help.lhs),-[ringz](?t=hsc3&e=Help/UGen/ringz.help.lhs),-[sos](?t=hsc3&e=Help/UGen/sos.help.lhs),-[slope](?t=hsc3&e=Help/UGen/slope.help.lhs),-[twoPole](?t=hsc3&e=Help/UGen/twoPole.help.lhs),-[twoZero](?t=hsc3&e=Help/UGen/twoZero.help.lhs),-[varLag](?t=hsc3&e=Help/UGen/varLag.help.lhs)---## Filters>Nonlinear--[ball](?t=hsc3&e=Help/UGen/ball.help.lhs),-[freqShift](?t=hsc3&e=Help/UGen/freqShift.help.lhs),-[hasher](?t=hsc3&e=Help/UGen/hasher.help.lhs),-[hilbert](?t=hsc3&e=Help/UGen/hilbert.help.lhs),-[hilbertFIR](?t=hsc3&e=Help/UGen/hilbertFIR.help.lhs),-[mantissaMask](?t=hsc3&e=Help/UGen/mantissaMask.help.lhs),-[median](?t=hsc3&e=Help/UGen/median.help.lhs),-[slew](?t=hsc3&e=Help/UGen/slew.help.lhs),-[spring](?t=hsc3&e=Help/UGen/spring.help.lhs),-[tBall](?t=hsc3&e=Help/UGen/tBall.help.lhs)---## Filters>Pitch--[freqShift](?t=hsc3&e=Help/UGen/freqShift.help.lhs),-[pitchShift](?t=hsc3&e=Help/UGen/pitchShift.help.lhs),-[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.lhs)---## Generators>Chaotic--[chaosGen](?t=hsc3&e=Help/UGen/chaosGen.help.lhs),-[cuspL](?t=hsc3&e=Help/UGen/cuspL.help.lhs),-[cuspN](?t=hsc3&e=Help/UGen/cuspN.help.lhs),-[fbSineC](?t=hsc3&e=Help/UGen/fbSineC.help.lhs),-[fbSineL](?t=hsc3&e=Help/UGen/fbSineL.help.lhs),-[fbSineN](?t=hsc3&e=Help/UGen/fbSineN.help.lhs),-[gbmanL](?t=hsc3&e=Help/UGen/gbmanL.help.lhs),-[gbmanN](?t=hsc3&e=Help/UGen/gbmanN.help.lhs),-[henonC](?t=hsc3&e=Help/UGen/henonC.help.lhs),-[henonL](?t=hsc3&e=Help/UGen/henonL.help.lhs),-[henonN](?t=hsc3&e=Help/UGen/henonN.help.lhs),-[latoocarfianC](?t=hsc3&e=Help/UGen/latoocarfianC.help.lhs),-[latoocarfianL](?t=hsc3&e=Help/UGen/latoocarfianL.help.lhs),-[latoocarfianN](?t=hsc3&e=Help/UGen/latoocarfianN.help.lhs),-[linCongC](?t=hsc3&e=Help/UGen/linCongC.help.lhs),-[linCongL](?t=hsc3&e=Help/UGen/linCongL.help.lhs),-[linCongN](?t=hsc3&e=Help/UGen/linCongN.help.lhs),-[logistic](?t=hsc3&e=Help/UGen/logistic.help.lhs),-[lorenzL](?t=hsc3&e=Help/UGen/lorenzL.help.lhs),-[quadC](?t=hsc3&e=Help/UGen/quadC.help.lhs),-[quadL](?t=hsc3&e=Help/UGen/quadL.help.lhs),-[quadN](?t=hsc3&e=Help/UGen/quadN.help.lhs),-[sinOscFB](?t=hsc3&e=Help/UGen/sinOscFB.help.lhs),-[standardL](?t=hsc3&e=Help/UGen/standardL.help.lhs),-[standardN](?t=hsc3&e=Help/UGen/standardN.help.lhs)---## Generators>Deterministic--[blip](?t=hsc3&e=Help/UGen/blip.help.lhs),-[cOsc](?t=hsc3&e=Help/UGen/cOsc.help.lhs),-[dynKlang](?t=hsc3&e=Help/UGen/dynKlang.help.lhs),-[dynKlank](?t=hsc3&e=Help/UGen/dynKlank.help.lhs),-[fSinOsc](?t=hsc3&e=Help/UGen/fSinOsc.help.lhs),-[formant](?t=hsc3&e=Help/UGen/formant.help.lhs),-[impulse](?t=hsc3&e=Help/UGen/impulse.help.lhs),-[klang](?t=hsc3&e=Help/UGen/klang.help.lhs),-[klank](?t=hsc3&e=Help/UGen/klank.help.lhs),-[lfCub](?t=hsc3&e=Help/UGen/lfCub.help.lhs),-[lfGauss](?t=hsc3&e=Help/UGen/lfGauss.help.lhs),-[lfPar](?t=hsc3&e=Help/UGen/lfPar.help.lhs),-[lfPulse](?t=hsc3&e=Help/UGen/lfPulse.help.lhs),-[lfSaw](?t=hsc3&e=Help/UGen/lfSaw.help.lhs),-[lfTri](?t=hsc3&e=Help/UGen/lfTri.help.lhs),-[osc](?t=hsc3&e=Help/UGen/osc.help.lhs),-[oscN](?t=hsc3&e=Help/UGen/oscN.help.lhs),-[pSinGrain](?t=hsc3&e=Help/UGen/pSinGrain.help.lhs),-[pulse](?t=hsc3&e=Help/UGen/pulse.help.lhs),-[saw](?t=hsc3&e=Help/UGen/saw.help.lhs),-[sinOsc](?t=hsc3&e=Help/UGen/sinOsc.help.lhs),-[sinOscFB](?t=hsc3&e=Help/UGen/sinOscFB.help.lhs),-[syncSaw](?t=hsc3&e=Help/UGen/syncSaw.help.lhs),-[vOsc](?t=hsc3&e=Help/UGen/vOsc.help.lhs),-[vOsc3](?t=hsc3&e=Help/UGen/vOsc3.help.lhs),-[varSaw](?t=hsc3&e=Help/UGen/varSaw.help.lhs),-[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.lhs)---## Generators>Granular--[grainBuf](?t=hsc3&e=Help/UGen/grainBuf.help.lhs),-[grainFM](?t=hsc3&e=Help/UGen/grainFM.help.lhs),-[grainIn](?t=hsc3&e=Help/UGen/grainIn.help.lhs),-[grainSin](?t=hsc3&e=Help/UGen/grainSin.help.lhs),-[tGrains](?t=hsc3&e=Help/UGen/tGrains.help.lhs),-[warp1](?t=hsc3&e=Help/UGen/warp1.help.lhs)---## Generators>PhysicalModels--[ball](?t=hsc3&e=Help/UGen/ball.help.lhs),-[spring](?t=hsc3&e=Help/UGen/spring.help.lhs),-[tBall](?t=hsc3&e=Help/UGen/tBall.help.lhs)---## Generators>Single-value--[dc](?t=hsc3&e=Help/UGen/dc.help.lhs)---## Generators>Stochastic--[brownNoise](?t=hsc3&e=Help/UGen/brownNoise.help.lhs),-[clipNoise](?t=hsc3&e=Help/UGen/clipNoise.help.lhs),-[coinGate](?t=hsc3&e=Help/UGen/coinGate.help.lhs),-[crackle](?t=hsc3&e=Help/UGen/crackle.help.lhs),-[dust](?t=hsc3&e=Help/UGen/dust.help.lhs),-[dust2](?t=hsc3&e=Help/UGen/dust2.help.lhs),-[gendy1](?t=hsc3&e=Help/UGen/gendy1.help.lhs),-[gendy2](?t=hsc3&e=Help/UGen/gendy2.help.lhs),-[gendy3](?t=hsc3&e=Help/UGen/gendy3.help.lhs),-[grayNoise](?t=hsc3&e=Help/UGen/grayNoise.help.lhs),-[lfClipNoise](?t=hsc3&e=Help/UGen/lfClipNoise.help.lhs),-[lfdClipNoise](?t=hsc3&e=Help/UGen/lfdClipNoise.help.lhs),-[lfdNoise0](?t=hsc3&e=Help/UGen/lfdNoise0.help.lhs),-[lfdNoise1](?t=hsc3&e=Help/UGen/lfdNoise1.help.lhs),-[lfdNoise3](?t=hsc3&e=Help/UGen/lfdNoise3.help.lhs),-[lfNoise0](?t=hsc3&e=Help/UGen/lfNoise0.help.lhs),-[lfNoise1](?t=hsc3&e=Help/UGen/lfNoise1.help.lhs),-[lfNoise2](?t=hsc3&e=Help/UGen/lfNoise2.help.lhs),-[pinkNoise](?t=hsc3&e=Help/UGen/pinkNoise.help.lhs),-[randID](?t=hsc3&e=Help/UGen/randID.help.lhs),-[randSeed](?t=hsc3&e=Help/UGen/randSeed.help.lhs),-[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.lhs),-[whiteNoise](?t=hsc3&e=Help/UGen/whiteNoise.help.lhs)---## InOut--[diskIn](?t=hsc3&e=Help/UGen/diskIn.help.lhs),-[diskOut](?t=hsc3&e=Help/UGen/diskOut.help.lhs),-[in](?t=hsc3&e=Help/UGen/in.help.lhs),-[inFeedback](?t=hsc3&e=Help/UGen/inFeedback.help.lhs),-[inTrig](?t=hsc3&e=Help/UGen/inTrig.help.lhs),-[lagIn](?t=hsc3&e=Help/UGen/lagIn.help.lhs),-[localIn](?t=hsc3&e=Help/UGen/localIn.help.lhs),-[localOut](?t=hsc3&e=Help/UGen/localOut.help.lhs),-[maxLocalBufs](?t=hsc3&e=Help/UGen/maxLocalBufs.help.lhs),-[offsetOut](?t=hsc3&e=Help/UGen/offsetOut.help.lhs),-[out](?t=hsc3&e=Help/UGen/out.help.lhs),-[replaceOut](?t=hsc3&e=Help/UGen/replaceOut.help.lhs),-[vDiskIn](?t=hsc3&e=Help/UGen/vDiskIn.help.lhs),-[xOut](?t=hsc3&e=Help/UGen/xOut.help.lhs)---## Info--[checkBadValues](?t=hsc3&e=Help/UGen/checkBadValues.help.lhs),-[controlDur](?t=hsc3&e=Help/UGen/controlDur.help.lhs),-[controlRate](?t=hsc3&e=Help/UGen/controlRate.help.lhs),-[dpoll](?t=hsc3&e=Help/UGen/dpoll.help.lhs),-[numAudioBuses](?t=hsc3&e=Help/UGen/numAudioBuses.help.lhs),-[numBuffers](?t=hsc3&e=Help/UGen/numBuffers.help.lhs),-[numControlBuses](?t=hsc3&e=Help/UGen/numControlBuses.help.lhs),-[numInputBuses](?t=hsc3&e=Help/UGen/numInputBuses.help.lhs),-[numOutputBuses](?t=hsc3&e=Help/UGen/numOutputBuses.help.lhs),-[numRunningSynths](?t=hsc3&e=Help/UGen/numRunningSynths.help.lhs),-[poll](?t=hsc3&e=Help/UGen/poll.help.lhs),-[radiansPerSample](?t=hsc3&e=Help/UGen/radiansPerSample.help.lhs),-[sampleDur](?t=hsc3&e=Help/UGen/sampleDur.help.lhs),-[sampleRate](?t=hsc3&e=Help/UGen/sampleRate.help.lhs),-[subsampleOffset](?t=hsc3&e=Help/UGen/subsampleOffset.help.lhs)---## Maths--[clip](?t=hsc3&e=Help/UGen/clip.help.lhs),-[fold](?t=hsc3&e=Help/UGen/fold.help.lhs),-[inRange](?t=hsc3&e=Help/UGen/inRange.help.lhs),-[inRect](?t=hsc3&e=Help/UGen/inRect.help.lhs),-[integrator](?t=hsc3&e=Help/UGen/integrator.help.lhs),-[leastChange](?t=hsc3&e=Help/UGen/leastChange.help.lhs),-[linExp](?t=hsc3&e=Help/UGen/linExp.help.lhs),-[modDif](?t=hsc3&e=Help/UGen/modDif.help.lhs),-[mostChange](?t=hsc3&e=Help/UGen/mostChange.help.lhs),-[mulAdd](?t=hsc3&e=Help/UGen/mulAdd.help.lhs),-[runningMax](?t=hsc3&e=Help/UGen/runningMax.help.lhs),-[runningMin](?t=hsc3&e=Help/UGen/runningMin.help.lhs),-[runningSum](?t=hsc3&e=Help/UGen/runningSum.help.lhs),-[schmidt](?t=hsc3&e=Help/UGen/schmidt.help.lhs),-[slope](?t=hsc3&e=Help/UGen/slope.help.lhs),-[wrap](?t=hsc3&e=Help/UGen/wrap.help.lhs)---## Multichannel>Ambisonics--[biPanB2](?t=hsc3&e=Help/UGen/biPanB2.help.lhs),-[decodeB2](?t=hsc3&e=Help/UGen/decodeB2.help.lhs),-[panB](?t=hsc3&e=Help/UGen/panB.help.lhs),-[panB2](?t=hsc3&e=Help/UGen/panB2.help.lhs),-[rotate2](?t=hsc3&e=Help/UGen/rotate2.help.lhs)---## Multichannel>Panners--[balance2](?t=hsc3&e=Help/UGen/balance2.help.lhs),-[linPan2](?t=hsc3&e=Help/UGen/linPan2.help.lhs),-[pan2](?t=hsc3&e=Help/UGen/pan2.help.lhs),-[pan4](?t=hsc3&e=Help/UGen/pan4.help.lhs),-[panAz](?t=hsc3&e=Help/UGen/panAz.help.lhs),-[rotate2](?t=hsc3&e=Help/UGen/rotate2.help.lhs),-[splay](?t=hsc3&e=Help/UGen/splay.help.lhs),-[splayAz](?t=hsc3&e=Help/UGen/splayAz.help.lhs)---## Multichannel>Select--[linXFade2](?t=hsc3&e=Help/UGen/linXFade2.help.lhs),-[select](?t=hsc3&e=Help/UGen/select.help.lhs),-[xFade2](?t=hsc3&e=Help/UGen/xFade2.help.lhs)---## Random--[dshuf](?t=hsc3&e=Help/UGen/dshuf.help.lhs),-[dwrand](?t=hsc3&e=Help/UGen/dwrand.help.lhs),-[expRand](?t=hsc3&e=Help/UGen/expRand.help.lhs),-[hasher](?t=hsc3&e=Help/UGen/hasher.help.lhs),-[iRand](?t=hsc3&e=Help/UGen/iRand.help.lhs),-[linRand](?t=hsc3&e=Help/UGen/linRand.help.lhs),-[nRand](?t=hsc3&e=Help/UGen/nRand.help.lhs),-[rand](?t=hsc3&e=Help/UGen/rand.help.lhs),-[randID](?t=hsc3&e=Help/UGen/randID.help.lhs),-[randSeed](?t=hsc3&e=Help/UGen/randSeed.help.lhs),-[tExpRand](?t=hsc3&e=Help/UGen/tExpRand.help.lhs),-[tiRand](?t=hsc3&e=Help/UGen/tiRand.help.lhs),-[tRand](?t=hsc3&e=Help/UGen/tRand.help.lhs),-[tWindex](?t=hsc3&e=Help/UGen/tWindex.help.lhs)---## Reverbs--[freeVerb](?t=hsc3&e=Help/UGen/freeVerb.help.lhs),-[freeVerb2](?t=hsc3&e=Help/UGen/freeVerb2.help.lhs),-[gVerb](?t=hsc3&e=Help/UGen/gVerb.help.lhs)---## Synth control--[control](?t=hsc3&e=Help/UGen/control.help.lhs),-[detectSilence](?t=hsc3&e=Help/UGen/detectSilence.help.lhs),-[done](?t=hsc3&e=Help/UGen/done.help.lhs),-[free](?t=hsc3&e=Help/UGen/free.help.lhs),-[freeSelf](?t=hsc3&e=Help/UGen/freeSelf.help.lhs),-[freeSelfWhenDone](?t=hsc3&e=Help/UGen/freeSelfWhenDone.help.lhs),-[lagControl](?t=hsc3&e=Help/UGen/lagControl.help.lhs),-[pause](?t=hsc3&e=Help/UGen/pause.help.lhs),-[pauseSelf](?t=hsc3&e=Help/UGen/pauseSelf.help.lhs),-[pauseSelfWhenDone](?t=hsc3&e=Help/UGen/pauseSelfWhenDone.help.lhs),-[trigControl](?t=hsc3&e=Help/UGen/trigControl.help.lhs)---## Triggers--[changed](?t=hsc3&e=Help/UGen/changed.help.lhs),-[gate](?t=hsc3&e=Help/UGen/gate.help.lhs),-[inTrig](?t=hsc3&e=Help/UGen/inTrig.help.lhs),-[lastValue](?t=hsc3&e=Help/UGen/lastValue.help.lhs),-[latch](?t=hsc3&e=Help/UGen/latch.help.lhs),-[phasor](?t=hsc3&e=Help/UGen/phasor.help.lhs),-[pulseCount](?t=hsc3&e=Help/UGen/pulseCount.help.lhs),-[pulseDivider](?t=hsc3&e=Help/UGen/pulseDivider.help.lhs),-[sendReply](?t=hsc3&e=Help/UGen/sendReply.help.lhs),-[sendTrig](?t=hsc3&e=Help/UGen/sendTrig.help.lhs),-[setResetFF](?t=hsc3&e=Help/UGen/setResetFF.help.lhs),-[stepper](?t=hsc3&e=Help/UGen/stepper.help.lhs),-[sweep](?t=hsc3&e=Help/UGen/sweep.help.lhs),-[t2a](?t=hsc3&e=Help/UGen/t2a.help.lhs),-[t2k](?t=hsc3&e=Help/UGen/t2k.help.lhs),-[tDelay](?t=hsc3&e=Help/UGen/tDelay.help.lhs),-[tExpRand](?t=hsc3&e=Help/UGen/tExpRand.help.lhs),-[tiRand](?t=hsc3&e=Help/UGen/tiRand.help.lhs),-[tRand](?t=hsc3&e=Help/UGen/tRand.help.lhs),-[tWindex](?t=hsc3&e=Help/UGen/tWindex.help.lhs),-[timer](?t=hsc3&e=Help/UGen/timer.help.lhs),-[toggleFF](?t=hsc3&e=Help/UGen/toggleFF.help.lhs),-[trig](?t=hsc3&e=Help/UGen/trig.help.lhs),-[trig1](?t=hsc3&e=Help/UGen/trig1.help.lhs)---## Undocumented--[apf](?t=hsc3&e=Help/UGen/apf.help.lhs),-[audioControl](?t=hsc3&e=Help/UGen/audioControl.help.lhs),-[blockSize](?t=hsc3&e=Help/UGen/blockSize.help.lhs),-[nodeID](?t=hsc3&e=Help/UGen/nodeID.help.lhs),-[pauseSelfWhenDone](?t=hsc3&e=Help/UGen/pauseSelfWhenDone.help.lhs),-[scopeOut](?t=hsc3&e=Help/UGen/scopeOut.help.lhs),-[scopeOut2](?t=hsc3&e=Help/UGen/scopeOut2.help.lhs),-[trigControl](?t=hsc3&e=Help/UGen/trigControl.help.lhs)---## User interaction--[keyState](?t=hsc3&e=Help/UGen/keyState.help.lhs),-[mouseButton](?t=hsc3&e=Help/UGen/mouseButton.help.lhs),-[mouseX](?t=hsc3&e=Help/UGen/mouseX.help.lhs),-[mouseY](?t=hsc3&e=Help/UGen/mouseY.help.lhs)---## Operator>Binary--[add](?t=hsc3&e=Help/UGen/add.help.lhs),-[sub](?t=hsc3&e=Help/UGen/sub.help.lhs),-[mul](?t=hsc3&e=Help/UGen/mul.help.lhs),-[iDiv](?t=hsc3&e=Help/UGen/iDiv.help.lhs),-[fDiv](?t=hsc3&e=Help/UGen/fDiv.help.lhs),-[mod](?t=hsc3&e=Help/UGen/mod.help.lhs),-[eq](?t=hsc3&e=Help/UGen/eq.help.lhs),-[ne](?t=hsc3&e=Help/UGen/ne.help.lhs),-[lt](?t=hsc3&e=Help/UGen/lt.help.lhs),-[gt](?t=hsc3&e=Help/UGen/gt.help.lhs),-[le](?t=hsc3&e=Help/UGen/le.help.lhs),-[ge](?t=hsc3&e=Help/UGen/ge.help.lhs),-[min](?t=hsc3&e=Help/UGen/min.help.lhs),-[max](?t=hsc3&e=Help/UGen/max.help.lhs),-[bitAnd](?t=hsc3&e=Help/UGen/bitAnd.help.lhs),-[bitOr](?t=hsc3&e=Help/UGen/bitOr.help.lhs),-[bitXor](?t=hsc3&e=Help/UGen/bitXor.help.lhs),-[lcm](?t=hsc3&e=Help/UGen/lcm.help.lhs),-[gcd](?t=hsc3&e=Help/UGen/gcd.help.lhs),-[round](?t=hsc3&e=Help/UGen/round.help.lhs),-[roundUp](?t=hsc3&e=Help/UGen/roundUp.help.lhs),-[trunc](?t=hsc3&e=Help/UGen/trunc.help.lhs),-[atan2](?t=hsc3&e=Help/UGen/atan2.help.lhs),-[hypot](?t=hsc3&e=Help/UGen/hypot.help.lhs),-[hypotx](?t=hsc3&e=Help/UGen/hypotx.help.lhs),-[pow](?t=hsc3&e=Help/UGen/pow.help.lhs),-[shiftLeft](?t=hsc3&e=Help/UGen/shiftLeft.help.lhs),-[shiftRight](?t=hsc3&e=Help/UGen/shiftRight.help.lhs),-[unsignedShift](?t=hsc3&e=Help/UGen/unsignedShift.help.lhs),-[fill](?t=hsc3&e=Help/UGen/fill.help.lhs),-[ring1](?t=hsc3&e=Help/UGen/ring1.help.lhs),-[ring2](?t=hsc3&e=Help/UGen/ring2.help.lhs),-[ring3](?t=hsc3&e=Help/UGen/ring3.help.lhs),-[ring4](?t=hsc3&e=Help/UGen/ring4.help.lhs),-[difSqr](?t=hsc3&e=Help/UGen/difSqr.help.lhs),-[sumSqr](?t=hsc3&e=Help/UGen/sumSqr.help.lhs),-[sqrSum](?t=hsc3&e=Help/UGen/sqrSum.help.lhs),-[sqrDif](?t=hsc3&e=Help/UGen/sqrDif.help.lhs),-[absDif](?t=hsc3&e=Help/UGen/absDif.help.lhs),-[thresh](?t=hsc3&e=Help/UGen/thresh.help.lhs),-[amClip](?t=hsc3&e=Help/UGen/amClip.help.lhs),-[scaleNeg](?t=hsc3&e=Help/UGen/scaleNeg.help.lhs),-[clip2](?t=hsc3&e=Help/UGen/clip2.help.lhs),-[excess](?t=hsc3&e=Help/UGen/excess.help.lhs),-[fold2](?t=hsc3&e=Help/UGen/fold2.help.lhs),-[wrap2](?t=hsc3&e=Help/UGen/wrap2.help.lhs),-[firstArg](?t=hsc3&e=Help/UGen/firstArg.help.lhs),-[randRange](?t=hsc3&e=Help/UGen/randRange.help.lhs),-[expRandRange](?t=hsc3&e=Help/UGen/expRandRange.help.lhs)---## Operator>Unary--[neg](?t=hsc3&e=Help/UGen/neg.help.lhs),-[not](?t=hsc3&e=Help/UGen/not.help.lhs),-[isNil](?t=hsc3&e=Help/UGen/isNil.help.lhs),-[notNil](?t=hsc3&e=Help/UGen/notNil.help.lhs),-[bitNot](?t=hsc3&e=Help/UGen/bitNot.help.lhs),-[abs](?t=hsc3&e=Help/UGen/abs.help.lhs),-[asFloat](?t=hsc3&e=Help/UGen/asFloat.help.lhs),-[asInt](?t=hsc3&e=Help/UGen/asInt.help.lhs),-[ceil](?t=hsc3&e=Help/UGen/ceil.help.lhs),-[floor](?t=hsc3&e=Help/UGen/floor.help.lhs),-[frac](?t=hsc3&e=Help/UGen/frac.help.lhs),-[sign](?t=hsc3&e=Help/UGen/sign.help.lhs),-[squared](?t=hsc3&e=Help/UGen/squared.help.lhs),-[cubed](?t=hsc3&e=Help/UGen/cubed.help.lhs),-[sqrt](?t=hsc3&e=Help/UGen/sqrt.help.lhs),-[exp](?t=hsc3&e=Help/UGen/exp.help.lhs),-[recip](?t=hsc3&e=Help/UGen/recip.help.lhs),-[midicps](?t=hsc3&e=Help/UGen/midicps.help.lhs),-[cpsmidi](?t=hsc3&e=Help/UGen/cpsmidi.help.lhs),-[midiRatio](?t=hsc3&e=Help/UGen/midiRatio.help.lhs),-[ratioMIDI](?t=hsc3&e=Help/UGen/ratioMIDI.help.lhs),-[dbAmp](?t=hsc3&e=Help/UGen/dbAmp.help.lhs),-[ampDb](?t=hsc3&e=Help/UGen/ampDb.help.lhs),-[octCPS](?t=hsc3&e=Help/UGen/octCPS.help.lhs),-[cpsOct](?t=hsc3&e=Help/UGen/cpsOct.help.lhs),-[log](?t=hsc3&e=Help/UGen/log.help.lhs),-[log2](?t=hsc3&e=Help/UGen/log2.help.lhs),-[log10](?t=hsc3&e=Help/UGen/log10.help.lhs),-[sin](?t=hsc3&e=Help/UGen/sin.help.lhs),-[cos](?t=hsc3&e=Help/UGen/cos.help.lhs),-[tan](?t=hsc3&e=Help/UGen/tan.help.lhs),-[arcSin](?t=hsc3&e=Help/UGen/arcSin.help.lhs),-[arcCos](?t=hsc3&e=Help/UGen/arcCos.help.lhs),-[arcTan](?t=hsc3&e=Help/UGen/arcTan.help.lhs),-[sinH](?t=hsc3&e=Help/UGen/sinH.help.lhs),-[cosH](?t=hsc3&e=Help/UGen/cosH.help.lhs),-[tanH](?t=hsc3&e=Help/UGen/tanH.help.lhs),-[rand_](?t=hsc3&e=Help/UGen/rand_.help.lhs),-[rand2](?t=hsc3&e=Help/UGen/rand2.help.lhs),-[linRand_](?t=hsc3&e=Help/UGen/linRand_.help.lhs),-[biLinRand](?t=hsc3&e=Help/UGen/biLinRand.help.lhs),-[sum3Rand](?t=hsc3&e=Help/UGen/sum3Rand.help.lhs),-[distort](?t=hsc3&e=Help/UGen/distort.help.lhs),-[softClip](?t=hsc3&e=Help/UGen/softClip.help.lhs),-[coin](?t=hsc3&e=Help/UGen/coin.help.lhs),-[digitValue](?t=hsc3&e=Help/UGen/digitValue.help.lhs),-[silence](?t=hsc3&e=Help/UGen/silence.help.lhs),-[thru](?t=hsc3&e=Help/UGen/thru.help.lhs),-[rectWindow](?t=hsc3&e=Help/UGen/rectWindow.help.lhs),-[hanWindow](?t=hsc3&e=Help/UGen/hanWindow.help.lhs),-[welchWindow](?t=hsc3&e=Help/UGen/welchWindow.help.lhs),-[triWindow](?t=hsc3&e=Help/UGen/triWindow.help.lhs),-[ramp_](?t=hsc3&e=Help/UGen/ramp_.help.lhs),-[sCurve](?t=hsc3&e=Help/UGen/sCurve.help.lhs)+[sum3](?t=hsc3&e=Help/UGen/sum3.help.hs),+[sum4](?t=hsc3&e=Help/UGen/sum4.help.hs)++++## Analisys+[sonLPC](?t=hsc3&e=Help/UGen/sonLPC.help.hs)++++## Analysis+[beatTrack](?t=hsc3&e=Help/UGen/beatTrack.help.hs),+beatTrack2,+mfcc,+[onsets](?t=hsc3&e=Help/UGen/onsets.help.hs),+[runningSum](?t=hsc3&e=Help/UGen/runningSum.help.hs),+[slope](?t=hsc3&e=Help/UGen/slope.help.hs),+analyseEvents2,+[arrayMax](?t=hsc3&e=Help/UGen/arrayMax.help.hs),+[arrayMin](?t=hsc3&e=Help/UGen/arrayMin.help.hs),+attackSlope,+averageOutput,+beatStatistics,+bufMax,+bufMin,+[chromagram](?t=hsc3&e=Help/UGen/chromagram.help.hs),+[coyote](?t=hsc3&e=Help/UGen/coyote.help.hs),+[crest](?t=hsc3&e=Help/UGen/crest.help.hs),+drumTrack,+[envDetect](?t=hsc3&e=Help/UGen/envDetect.help.hs),+[envFollow](?t=hsc3&e=Help/UGen/envFollow.help.hs),+fftComplexDev,+fftCrest,+fftDiffMags,+fftFlux,+fftFluxPos,+fftmkl,+fftPeak,+fftPhaseDev,+fftPower,+fftSlope,+fftSpread,+fftSubbandFlatness,+fftSubbandFlux,+fftSubbandPower,+featureSave,+frameCompare,+[gammatone](?t=hsc3&e=Help/UGen/gammatone.help.hs),+[hairCell](?t=hsc3&e=Help/UGen/hairCell.help.hs),+kMeansRT,+[lpcAnalyzer](?t=hsc3&e=Help/UGen/lpcAnalyzer.help.hs),+lpcError,+matchingP,+matchingPResynth,+[max](?t=hsc3&e=Help/UGen/max.help.hs),+[meddis](?t=hsc3&e=Help/UGen/meddis.help.hs),+medianSeparation,+nearestN,+onsetStatistics,+pv_ExtractRepeat,+pv_MagExp,+pv_MagLog,+pv_MagSmooth,+pv_Whiten,+slOnset,+[sms](?t=hsc3&e=Help/UGen/sms.help.hs),+somRd,+somTrain,+[sensoryDissonance](?t=hsc3&e=Help/UGen/sensoryDissonance.help.hs),+[spectralEntropy](?t=hsc3&e=Help/UGen/spectralEntropy.help.hs),+tpv,+[trigAvg](?t=hsc3&e=Help/UGen/trigAvg.help.hs),+walshHadamard,+waveletDaub+++## Analysis:Amplitude+[ampComp](?t=hsc3&e=Help/UGen/ampComp.help.hs),+ampCompA,+[amplitude](?t=hsc3&e=Help/UGen/amplitude.help.hs),+[detectSilence](?t=hsc3&e=Help/UGen/detectSilence.help.hs),+[loudness](?t=hsc3&e=Help/UGen/loudness.help.hs),+[peak](?t=hsc3&e=Help/UGen/peak.help.hs),+[peakFollower](?t=hsc3&e=Help/UGen/peakFollower.help.hs),+sendPeakRMS,+amplitudeMod,+rms,+wAmp+++## Analysis:Pitch+[keyTrack](?t=hsc3&e=Help/UGen/keyTrack.help.hs),+[pitch](?t=hsc3&e=Help/UGen/pitch.help.hs),+[zeroCrossing](?t=hsc3&e=Help/UGen/zeroCrossing.help.hs),+keyClarity,+keyMode,+pitchTracker,+qitch,+[tartini](?t=hsc3&e=Help/UGen/tartini.help.hs)++++## Analysis:Synthesis+atsAmp,+atsFreq,+atsNoiSynth,+atsNoise,+atsParInfo,+atsPartial,+atsSynth,+atsUGen,+lpcSynth,+lpcVals,+maxamp++++## Buffer+[bufRd](?t=hsc3&e=Help/UGen/bufRd.help.hs),+[bufWr](?t=hsc3&e=Help/UGen/bufWr.help.hs),+[dbufrd](?t=hsc3&e=Help/UGen/dbufrd.help.hs),+[dbufwr](?t=hsc3&e=Help/UGen/dbufwr.help.hs),+delTapRd,+[delTapWr](?t=hsc3&e=Help/UGen/delTapWr.help.hs),+[detectIndex](?t=hsc3&e=Help/UGen/detectIndex.help.hs),+[diskIn](?t=hsc3&e=Help/UGen/diskIn.help.hs),+diskOut,+[grainBuf](?t=hsc3&e=Help/UGen/grainBuf.help.hs),+[index](?t=hsc3&e=Help/UGen/index.help.hs),+[indexInBetween](?t=hsc3&e=Help/UGen/indexInBetween.help.hs),+[indexL](?t=hsc3&e=Help/UGen/indexL.help.hs),+[localBuf](?t=hsc3&e=Help/UGen/localBuf.help.hs),+[phasor](?t=hsc3&e=Help/UGen/phasor.help.hs),+[playBuf](?t=hsc3&e=Help/UGen/playBuf.help.hs),+[recordBuf](?t=hsc3&e=Help/UGen/recordBuf.help.hs),+[shaper](?t=hsc3&e=Help/UGen/shaper.help.hs),+[tGrains](?t=hsc3&e=Help/UGen/tGrains.help.hs),+[tap](?t=hsc3&e=Help/UGen/tap.help.hs),+[vDiskIn](?t=hsc3&e=Help/UGen/vDiskIn.help.hs),+[warp1](?t=hsc3&e=Help/UGen/warp1.help.hs),+[wrapIndex](?t=hsc3&e=Help/UGen/wrapIndex.help.hs),+listTrig,+listTrig2,+logger,+[loopBuf](?t=hsc3&e=Help/UGen/loopBuf.help.hs),+matchingPResynth,+[miClouds](?t=hsc3&e=Help/UGen/miClouds.help.hs),+sortBuf,+tGrains2,+tGrains3,+vmScan2D,+waveTerrain+++## Buffer:Info+[bufChannels](?t=hsc3&e=Help/UGen/bufChannels.help.hs),+[bufDur](?t=hsc3&e=Help/UGen/bufDur.help.hs),+[bufFrames](?t=hsc3&e=Help/UGen/bufFrames.help.hs),+[bufRateScale](?t=hsc3&e=Help/UGen/bufRateScale.help.hs),+[bufSampleRate](?t=hsc3&e=Help/UGen/bufSampleRate.help.hs),+bufSamples++++## Conversion+a2k,+[degreeToKey](?t=hsc3&e=Help/UGen/degreeToKey.help.hs),+[k2a](?t=hsc3&e=Help/UGen/k2a.help.hs),+[t2a](?t=hsc3&e=Help/UGen/t2a.help.hs),+[t2k](?t=hsc3&e=Help/UGen/t2k.help.hs)++++## Convolution+[convolution](?t=hsc3&e=Help/UGen/convolution.help.hs),+convolution2,+convolution2L,+convolution3,+partConv,+stereoConvolution2L,+partConvT++++## Delays+[allpassC](?t=hsc3&e=Help/UGen/allpassC.help.hs),+[allpassL](?t=hsc3&e=Help/UGen/allpassL.help.hs),+[allpassN](?t=hsc3&e=Help/UGen/allpassN.help.hs),+[combC](?t=hsc3&e=Help/UGen/combC.help.hs),+[combL](?t=hsc3&e=Help/UGen/combL.help.hs),+[combN](?t=hsc3&e=Help/UGen/combN.help.hs),+delTapRd,+[delTapWr](?t=hsc3&e=Help/UGen/delTapWr.help.hs),+[delay1](?t=hsc3&e=Help/UGen/delay1.help.hs),+[delay2](?t=hsc3&e=Help/UGen/delay2.help.hs),+[delayC](?t=hsc3&e=Help/UGen/delayC.help.hs),+[delayL](?t=hsc3&e=Help/UGen/delayL.help.hs),+[delayN](?t=hsc3&e=Help/UGen/delayN.help.hs),+[pluck](?t=hsc3&e=Help/UGen/pluck.help.hs),+[tDelay](?t=hsc3&e=Help/UGen/tDelay.help.hs),+doubleNestedAllpassC,+doubleNestedAllpassL,+doubleNestedAllpassN,+[greyholeRaw](?t=hsc3&e=Help/UGen/greyholeRaw.help.hs),+[nestedAllpassC](?t=hsc3&e=Help/UGen/nestedAllpassC.help.hs),+nestedAllpassL,+nestedAllpassN,+[switchDelay](?t=hsc3&e=Help/UGen/switchDelay.help.hs)+++## Delays:Buffer+[bufAllpassC](?t=hsc3&e=Help/UGen/bufAllpassC.help.hs),+[bufAllpassL](?t=hsc3&e=Help/UGen/bufAllpassL.help.hs),+[bufAllpassN](?t=hsc3&e=Help/UGen/bufAllpassN.help.hs),+[bufCombC](?t=hsc3&e=Help/UGen/bufCombC.help.hs),+[bufCombL](?t=hsc3&e=Help/UGen/bufCombL.help.hs),+[bufCombN](?t=hsc3&e=Help/UGen/bufCombN.help.hs),+[bufDelayC](?t=hsc3&e=Help/UGen/bufDelayC.help.hs),+[bufDelayL](?t=hsc3&e=Help/UGen/bufDelayL.help.hs),+[bufDelayN](?t=hsc3&e=Help/UGen/bufDelayN.help.hs),+[tap](?t=hsc3&e=Help/UGen/tap.help.hs)++++## Demand+[dbrown](?t=hsc3&e=Help/UGen/dbrown.help.hs),+[dbufrd](?t=hsc3&e=Help/UGen/dbufrd.help.hs),+[dbufwr](?t=hsc3&e=Help/UGen/dbufwr.help.hs),+[dconst](?t=hsc3&e=Help/UGen/dconst.help.hs),+[demand](?t=hsc3&e=Help/UGen/demand.help.hs),+[demandEnvGen](?t=hsc3&e=Help/UGen/demandEnvGen.help.hs),+[dgeom](?t=hsc3&e=Help/UGen/dgeom.help.hs),+[dibrown](?t=hsc3&e=Help/UGen/dibrown.help.hs),+[diwhite](?t=hsc3&e=Help/UGen/diwhite.help.hs),+dpoll,+[drand](?t=hsc3&e=Help/UGen/drand.help.hs),+dreset,+[dseq](?t=hsc3&e=Help/UGen/dseq.help.hs),+[dser](?t=hsc3&e=Help/UGen/dser.help.hs),+[dseries](?t=hsc3&e=Help/UGen/dseries.help.hs),+[dshuf](?t=hsc3&e=Help/UGen/dshuf.help.hs),+[dstutter](?t=hsc3&e=Help/UGen/dstutter.help.hs),+[dswitch](?t=hsc3&e=Help/UGen/dswitch.help.hs),+[dswitch1](?t=hsc3&e=Help/UGen/dswitch1.help.hs),+dunique,+[duty](?t=hsc3&e=Help/UGen/duty.help.hs),+[dwhite](?t=hsc3&e=Help/UGen/dwhite.help.hs),+[dwrand](?t=hsc3&e=Help/UGen/dwrand.help.hs),+[dxrand](?t=hsc3&e=Help/UGen/dxrand.help.hs),+[tDuty](?t=hsc3&e=Help/UGen/tDuty.help.hs),+unpack1FFT,+unpackFFT,+[dNoiseRing](?t=hsc3&e=Help/UGen/dNoiseRing.help.hs),+dbrown2,+dbufTag,+detaBlockerBuf,+dfsm,+[dneuromodule](?t=hsc3&e=Help/UGen/dneuromodule.help.hs),+dtag++++## Drums+[analogBassDrum](?t=hsc3&e=Help/UGen/analogBassDrum.help.hs),+[analogSnareDrum](?t=hsc3&e=Help/UGen/analogSnareDrum.help.hs)++++## Dynamics+[compander](?t=hsc3&e=Help/UGen/compander.help.hs),+companderD,+[limiter](?t=hsc3&e=Help/UGen/limiter.help.hs),+[normalizer](?t=hsc3&e=Help/UGen/normalizer.help.hs),+dCompressor++++## Env+[miTides](?t=hsc3&e=Help/UGen/miTides.help.hs)++++## Envelopes+[decay](?t=hsc3&e=Help/UGen/decay.help.hs),+[decay2](?t=hsc3&e=Help/UGen/decay2.help.hs),+[demandEnvGen](?t=hsc3&e=Help/UGen/demandEnvGen.help.hs),+[envGen](?t=hsc3&e=Help/UGen/envGen.help.hs),+[iEnvGen](?t=hsc3&e=Help/UGen/iEnvGen.help.hs),+[line](?t=hsc3&e=Help/UGen/line.help.hs),+[linen](?t=hsc3&e=Help/UGen/linen.help.hs),+[xLine](?t=hsc3&e=Help/UGen/xLine.help.hs)++++## FFT+[beatTrack](?t=hsc3&e=Help/UGen/beatTrack.help.hs),+beatTrack2,+[convolution](?t=hsc3&e=Help/UGen/convolution.help.hs),+convolution2,+convolution2L,+[fft](?t=hsc3&e=Help/UGen/fft.help.hs),+[fftTrigger](?t=hsc3&e=Help/UGen/fftTrigger.help.hs),+[ifft](?t=hsc3&e=Help/UGen/ifft.help.hs),+pv_Add,+[pv_BinScramble](?t=hsc3&e=Help/UGen/pv_BinScramble.help.hs),+[pv_BinShift](?t=hsc3&e=Help/UGen/pv_BinShift.help.hs),+[pv_BinWipe](?t=hsc3&e=Help/UGen/pv_BinWipe.help.hs),+[pv_BrickWall](?t=hsc3&e=Help/UGen/pv_BrickWall.help.hs),+pv_ChainUGen,+[pv_ConformalMap](?t=hsc3&e=Help/UGen/pv_ConformalMap.help.hs),+pv_Conj,+pv_Copy,+pv_CopyPhase,+[pv_Diffuser](?t=hsc3&e=Help/UGen/pv_Diffuser.help.hs),+pv_Div,+[pv_HainsworthFoote](?t=hsc3&e=Help/UGen/pv_HainsworthFoote.help.hs),+[pv_JensenAndersen](?t=hsc3&e=Help/UGen/pv_JensenAndersen.help.hs),+[pv_LocalMax](?t=hsc3&e=Help/UGen/pv_LocalMax.help.hs),+[pv_MagAbove](?t=hsc3&e=Help/UGen/pv_MagAbove.help.hs),+[pv_MagBelow](?t=hsc3&e=Help/UGen/pv_MagBelow.help.hs),+[pv_MagClip](?t=hsc3&e=Help/UGen/pv_MagClip.help.hs),+pv_MagDiv,+[pv_MagFreeze](?t=hsc3&e=Help/UGen/pv_MagFreeze.help.hs),+[pv_MagMul](?t=hsc3&e=Help/UGen/pv_MagMul.help.hs),+pv_MagNoise,+pv_MagShift,+[pv_MagSmear](?t=hsc3&e=Help/UGen/pv_MagSmear.help.hs),+pv_MagSquared,+pv_Max,+pv_Min,+[pv_Mul](?t=hsc3&e=Help/UGen/pv_Mul.help.hs),+pv_PhaseShift,+pv_PhaseShift270,+pv_PhaseShift90,+[pv_RandComb](?t=hsc3&e=Help/UGen/pv_RandComb.help.hs),+[pv_RandWipe](?t=hsc3&e=Help/UGen/pv_RandWipe.help.hs),+[pv_RectComb](?t=hsc3&e=Help/UGen/pv_RectComb.help.hs),+pv_RectComb2,+[packFFT](?t=hsc3&e=Help/UGen/packFFT.help.hs),+partConv,+[specCentroid](?t=hsc3&e=Help/UGen/specCentroid.help.hs),+[specFlatness](?t=hsc3&e=Help/UGen/specFlatness.help.hs),+specPcile,+stereoConvolution2L,+unpack1FFT,+unpackFFT,+cepstrum,+fftComplexDev,+fftCrest,+fftDiffMags,+fftFlux,+fftFluxPos,+fftmkl,+fftPeak,+fftPhaseDev,+fftPower,+fftSlope,+fftSpread,+fftSubbandFlatness,+fftSubbandFlux,+fftSubbandPower,+frameCompare,+iCepstrum,+medianSeparation,+pvInfo,+pvSynth,+[pv_BinBufRd](?t=hsc3&e=Help/UGen/pv_BinBufRd.help.hs),+pv_BinDelay,+pv_BinPlayBuf,+[pv_BufRd](?t=hsc3&e=Help/UGen/pv_BufRd.help.hs),+pv_CommonMag,+pv_CommonMul,+[pv_Compander](?t=hsc3&e=Help/UGen/pv_Compander.help.hs),+pv_Cutoff,+pv_EvenBin,+pv_ExtractRepeat,+[pv_Freeze](?t=hsc3&e=Help/UGen/pv_Freeze.help.hs),+pv_FreqBuffer,+[pv_Invert](?t=hsc3&e=Help/UGen/pv_Invert.help.hs),+pv_MagBuffer,+pv_MagExp,+[pv_MagGate](?t=hsc3&e=Help/UGen/pv_MagGate.help.hs),+pv_MagLog,+pv_MagMap,+pv_MagMinus,+pv_MagMulAdd,+pv_MagSmooth,+pv_MaxMagN,+pv_MinMagN,+[pv_Morph](?t=hsc3&e=Help/UGen/pv_Morph.help.hs),+pv_NoiseSynthF,+pv_NoiseSynthP,+pv_OddBin,+pv_PartialSynthF,+pv_PartialSynthP,+[pv_PlayBuf](?t=hsc3&e=Help/UGen/pv_PlayBuf.help.hs),+[pv_RecordBuf](?t=hsc3&e=Help/UGen/pv_RecordBuf.help.hs),+pv_SoftWipe,+pv_SpectralEnhance,+[pv_SpectralMap](?t=hsc3&e=Help/UGen/pv_SpectralMap.help.hs),+pv_Whiten,+[pv_xFade](?t=hsc3&e=Help/UGen/pv_xFade.help.hs),+partConvT,+tpv,+vbpVoc++++## Filter+[miElements](?t=hsc3&e=Help/UGen/miElements.help.hs),+miMu,+[miRings](?t=hsc3&e=Help/UGen/miRings.help.hs),+[miRipples](?t=hsc3&e=Help/UGen/miRipples.help.hs)++++## Filters+lag2UD,+lag3UD,+[lagUD](?t=hsc3&e=Help/UGen/lagUD.help.hs),+[moogFF](?t=hsc3&e=Help/UGen/moogFF.help.hs),+allpass1,+allpass2,+[bMoog](?t=hsc3&e=Help/UGen/bMoog.help.hs),+[crossoverDistortion](?t=hsc3&e=Help/UGen/crossoverDistortion.help.hs),+[dfm1](?t=hsc3&e=Help/UGen/dfm1.help.hs),+decimator,+[diodeRingMod](?t=hsc3&e=Help/UGen/diodeRingMod.help.hs),+[disintegrator](?t=hsc3&e=Help/UGen/disintegrator.help.hs),+[friction](?t=hsc3&e=Help/UGen/friction.help.hs),+[gammatone](?t=hsc3&e=Help/UGen/gammatone.help.hs),+goertzel,+[hairCell](?t=hsc3&e=Help/UGen/hairCell.help.hs),+[iirFilter](?t=hsc3&e=Help/UGen/iirFilter.help.hs),+insideOut,+[lpg](?t=hsc3&e=Help/UGen/lpg.help.hs),+[lti](?t=hsc3&e=Help/UGen/lti.help.hs),+meanTriggered,+[meddis](?t=hsc3&e=Help/UGen/meddis.help.hs),+medianTriggered,+[moogLadder](?t=hsc3&e=Help/UGen/moogLadder.help.hs),+[moogVCF](?t=hsc3&e=Help/UGen/moogVCF.help.hs),+nl,+nl2,+nlFiltC,+nlFiltL,+nlFiltN,+[rlpfd](?t=hsc3&e=Help/UGen/rlpfd.help.hs),+[rmeq](?t=hsc3&e=Help/UGen/rmeq.help.hs),+rmeqSuite,+[rmShelf](?t=hsc3&e=Help/UGen/rmShelf.help.hs),+rmShelf2,+regaliaMitraEQ,+[svf](?t=hsc3&e=Help/UGen/svf.help.hs),+[sineShaper](?t=hsc3&e=Help/UGen/sineShaper.help.hs),+smoothDecimator,+[streson](?t=hsc3&e=Help/UGen/streson.help.hs)+++## Filters:BEQSuite+[bAllPass](?t=hsc3&e=Help/UGen/bAllPass.help.hs),+[bBandPass](?t=hsc3&e=Help/UGen/bBandPass.help.hs),+[bBandStop](?t=hsc3&e=Help/UGen/bBandStop.help.hs),+[bHiPass](?t=hsc3&e=Help/UGen/bHiPass.help.hs),+[bHiShelf](?t=hsc3&e=Help/UGen/bHiShelf.help.hs),+[bLowPass](?t=hsc3&e=Help/UGen/bLowPass.help.hs),+[bLowShelf](?t=hsc3&e=Help/UGen/bLowShelf.help.hs),+[bPeakEQ](?t=hsc3&e=Help/UGen/bPeakEQ.help.hs)+++## Filters:GlitchUGens+glitchBPF,+glitchBRF,+glitchHPF,+glitchRHPF+++## Filters:Linear+apf,+[bpf](?t=hsc3&e=Help/UGen/bpf.help.hs),+[bpz2](?t=hsc3&e=Help/UGen/bpz2.help.hs),+[brf](?t=hsc3&e=Help/UGen/brf.help.hs),+[brz2](?t=hsc3&e=Help/UGen/brz2.help.hs),+[changed](?t=hsc3&e=Help/UGen/changed.help.hs),+[decay](?t=hsc3&e=Help/UGen/decay.help.hs),+[decay2](?t=hsc3&e=Help/UGen/decay2.help.hs),+[dynKlank](?t=hsc3&e=Help/UGen/dynKlank.help.hs),+[fos](?t=hsc3&e=Help/UGen/fos.help.hs),+[formlet](?t=hsc3&e=Help/UGen/formlet.help.hs),+[hpf](?t=hsc3&e=Help/UGen/hpf.help.hs),+[hpz1](?t=hsc3&e=Help/UGen/hpz1.help.hs),+[hpz2](?t=hsc3&e=Help/UGen/hpz2.help.hs),+[integrator](?t=hsc3&e=Help/UGen/integrator.help.hs),+[klank](?t=hsc3&e=Help/UGen/klank.help.hs),+[lpf](?t=hsc3&e=Help/UGen/lpf.help.hs),+[lpz1](?t=hsc3&e=Help/UGen/lpz1.help.hs),+[lpz2](?t=hsc3&e=Help/UGen/lpz2.help.hs),+[lag](?t=hsc3&e=Help/UGen/lag.help.hs),+[lag2](?t=hsc3&e=Help/UGen/lag2.help.hs),+[lag3](?t=hsc3&e=Help/UGen/lag3.help.hs),+[leakDC](?t=hsc3&e=Help/UGen/leakDC.help.hs),+[midEQ](?t=hsc3&e=Help/UGen/midEQ.help.hs),+[onePole](?t=hsc3&e=Help/UGen/onePole.help.hs),+[oneZero](?t=hsc3&e=Help/UGen/oneZero.help.hs),+[rhpf](?t=hsc3&e=Help/UGen/rhpf.help.hs),+[rlpf](?t=hsc3&e=Help/UGen/rlpf.help.hs),+[ramp](?t=hsc3&e=Help/UGen/ramp.help.hs),+[resonz](?t=hsc3&e=Help/UGen/resonz.help.hs),+[ringz](?t=hsc3&e=Help/UGen/ringz.help.hs),+[sos](?t=hsc3&e=Help/UGen/sos.help.hs),+[slope](?t=hsc3&e=Help/UGen/slope.help.hs),+[twoPole](?t=hsc3&e=Help/UGen/twoPole.help.hs),+[twoZero](?t=hsc3&e=Help/UGen/twoZero.help.hs),+[varLag](?t=hsc3&e=Help/UGen/varLag.help.hs),+[circleRamp](?t=hsc3&e=Help/UGen/circleRamp.help.hs),+[complexRes](?t=hsc3&e=Help/UGen/complexRes.help.hs),+glitchBPF,+glitchBRF,+glitchHPF,+glitchRHPF+++## Filters:Nonlinear+ball,+[freqShift](?t=hsc3&e=Help/UGen/freqShift.help.hs),+[hasher](?t=hsc3&e=Help/UGen/hasher.help.hs),+[hilbert](?t=hsc3&e=Help/UGen/hilbert.help.hs),+[hilbertFIR](?t=hsc3&e=Help/UGen/hilbertFIR.help.hs),+[mantissaMask](?t=hsc3&e=Help/UGen/mantissaMask.help.hs),+[median](?t=hsc3&e=Help/UGen/median.help.hs),+[slew](?t=hsc3&e=Help/UGen/slew.help.hs),+[spring](?t=hsc3&e=Help/UGen/spring.help.hs),+[tBall](?t=hsc3&e=Help/UGen/tBall.help.hs),+[membraneCircle](?t=hsc3&e=Help/UGen/membraneCircle.help.hs),+membraneCircleV,+[membraneHexagon](?t=hsc3&e=Help/UGen/membraneHexagon.help.hs),+membraneHexagonV,+[squiz](?t=hsc3&e=Help/UGen/squiz.help.hs),+waveLoss+++## Filters:Pitch+[freqShift](?t=hsc3&e=Help/UGen/freqShift.help.hs),+[pitchShift](?t=hsc3&e=Help/UGen/pitchShift.help.hs),+[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.hs)+++## Filters:linear+[lores](?t=hsc3&e=Help/UGen/lores.help.hs)++++## Generators+[ay](?t=hsc3&e=Help/UGen/ay.help.hs),+instruction,+kmeansToBPSet1,+[sawDPW](?t=hsc3&e=Help/UGen/sawDPW.help.hs),+textVU,+[vosim](?t=hsc3&e=Help/UGen/vosim.help.hs)+++## Generators:Chaotic+[cuspL](?t=hsc3&e=Help/UGen/cuspL.help.hs),+[cuspN](?t=hsc3&e=Help/UGen/cuspN.help.hs),+[fbSineC](?t=hsc3&e=Help/UGen/fbSineC.help.hs),+[fbSineL](?t=hsc3&e=Help/UGen/fbSineL.help.hs),+[fbSineN](?t=hsc3&e=Help/UGen/fbSineN.help.hs),+[gbmanL](?t=hsc3&e=Help/UGen/gbmanL.help.hs),+[gbmanN](?t=hsc3&e=Help/UGen/gbmanN.help.hs),+[henonC](?t=hsc3&e=Help/UGen/henonC.help.hs),+[henonL](?t=hsc3&e=Help/UGen/henonL.help.hs),+[henonN](?t=hsc3&e=Help/UGen/henonN.help.hs),+[latoocarfianC](?t=hsc3&e=Help/UGen/latoocarfianC.help.hs),+latoocarfianL,+latoocarfianN,+[linCongC](?t=hsc3&e=Help/UGen/linCongC.help.hs),+[linCongL](?t=hsc3&e=Help/UGen/linCongL.help.hs),+[linCongN](?t=hsc3&e=Help/UGen/linCongN.help.hs),+[logistic](?t=hsc3&e=Help/UGen/logistic.help.hs),+[lorenzL](?t=hsc3&e=Help/UGen/lorenzL.help.hs),+[quadC](?t=hsc3&e=Help/UGen/quadC.help.hs),+[quadL](?t=hsc3&e=Help/UGen/quadL.help.hs),+[quadN](?t=hsc3&e=Help/UGen/quadN.help.hs),+[sinOscFB](?t=hsc3&e=Help/UGen/sinOscFB.help.hs),+[standardL](?t=hsc3&e=Help/UGen/standardL.help.hs),+standardN,+arneodoCoulletTresser,+breakcore,+brusselator,+[chen](?t=hsc3&e=Help/UGen/chen.help.hs),+[dNoiseRing](?t=hsc3&e=Help/UGen/dNoiseRing.help.hs),+doubleWell,+doubleWell2,+[doubleWell3](?t=hsc3&e=Help/UGen/doubleWell3.help.hs),+fincoSprottL,+fincoSprottM,+fincoSprottS,+fitzHughNagumo,+gravityGrid,+gravityGrid2,+lotkaVolterra,+mcldChaosGen,+oregonator,+[perlin3](?t=hsc3&e=Help/UGen/perlin3.help.hs),+rmaFoodChainL,+rosslerL,+rosslerResL,+spruceBudworm,+termanWang,+[vbFourses](?t=hsc3&e=Help/UGen/vbFourses.help.hs),+weaklyNonlinear,+[weaklyNonlinear2](?t=hsc3&e=Help/UGen/weaklyNonlinear2.help.hs)+++## Generators:Deterministic+[blip](?t=hsc3&e=Help/UGen/blip.help.hs),+[cOsc](?t=hsc3&e=Help/UGen/cOsc.help.hs),+[dynKlang](?t=hsc3&e=Help/UGen/dynKlang.help.hs),+[dynKlank](?t=hsc3&e=Help/UGen/dynKlank.help.hs),+[fSinOsc](?t=hsc3&e=Help/UGen/fSinOsc.help.hs),+[formant](?t=hsc3&e=Help/UGen/formant.help.hs),+[impulse](?t=hsc3&e=Help/UGen/impulse.help.hs),+[klang](?t=hsc3&e=Help/UGen/klang.help.hs),+[klank](?t=hsc3&e=Help/UGen/klank.help.hs),+[lfCub](?t=hsc3&e=Help/UGen/lfCub.help.hs),+[lfGauss](?t=hsc3&e=Help/UGen/lfGauss.help.hs),+[lfPar](?t=hsc3&e=Help/UGen/lfPar.help.hs),+[lfPulse](?t=hsc3&e=Help/UGen/lfPulse.help.hs),+[lfSaw](?t=hsc3&e=Help/UGen/lfSaw.help.hs),+[lfTri](?t=hsc3&e=Help/UGen/lfTri.help.hs),+[osc](?t=hsc3&e=Help/UGen/osc.help.hs),+[oscN](?t=hsc3&e=Help/UGen/oscN.help.hs),+pSinGrain,+[pulse](?t=hsc3&e=Help/UGen/pulse.help.hs),+[saw](?t=hsc3&e=Help/UGen/saw.help.hs),+[sinOsc](?t=hsc3&e=Help/UGen/sinOsc.help.hs),+[sinOscFB](?t=hsc3&e=Help/UGen/sinOscFB.help.hs),+[syncSaw](?t=hsc3&e=Help/UGen/syncSaw.help.hs),+[vOsc](?t=hsc3&e=Help/UGen/vOsc.help.hs),+[vOsc3](?t=hsc3&e=Help/UGen/vOsc3.help.hs),+[varSaw](?t=hsc3&e=Help/UGen/varSaw.help.hs),+[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.hs),+[blitB3](?t=hsc3&e=Help/UGen/blitB3.help.hs),+[blitB3Saw](?t=hsc3&e=Help/UGen/blitB3Saw.help.hs),+[blitB3Square](?t=hsc3&e=Help/UGen/blitB3Square.help.hs),+[blitB3Tri](?t=hsc3&e=Help/UGen/blitB3Tri.help.hs),+[dpw3Tri](?t=hsc3&e=Help/UGen/dpw3Tri.help.hs),+[dpw4Saw](?t=hsc3&e=Help/UGen/dpw4Saw.help.hs),+[fm7](?t=hsc3&e=Help/UGen/fm7.help.hs),+[miBraids](?t=hsc3&e=Help/UGen/miBraids.help.hs),+[vbSlide](?t=hsc3&e=Help/UGen/vbSlide.help.hs)+++## Generators:Granular+[grainBuf](?t=hsc3&e=Help/UGen/grainBuf.help.hs),+[grainFM](?t=hsc3&e=Help/UGen/grainFM.help.hs),+[grainIn](?t=hsc3&e=Help/UGen/grainIn.help.hs),+[grainSin](?t=hsc3&e=Help/UGen/grainSin.help.hs),+[tGrains](?t=hsc3&e=Help/UGen/tGrains.help.hs),+[warp1](?t=hsc3&e=Help/UGen/warp1.help.hs),+[miClouds](?t=hsc3&e=Help/UGen/miClouds.help.hs),+tGrains2,+tGrains3+++## Generators:PhysicalModels+ball,+[spring](?t=hsc3&e=Help/UGen/spring.help.hs),+[tBall](?t=hsc3&e=Help/UGen/tBall.help.hs),+[membraneCircle](?t=hsc3&e=Help/UGen/membraneCircle.help.hs),+membraneCircleV,+[membraneHexagon](?t=hsc3&e=Help/UGen/membraneHexagon.help.hs),+membraneHexagonV+++## Generators:Single-value+[dc](?t=hsc3&e=Help/UGen/dc.help.hs)+++## Generators:Stochastic+[brownNoise](?t=hsc3&e=Help/UGen/brownNoise.help.hs),+[clipNoise](?t=hsc3&e=Help/UGen/clipNoise.help.hs),+[coinGate](?t=hsc3&e=Help/UGen/coinGate.help.hs),+[crackle](?t=hsc3&e=Help/UGen/crackle.help.hs),+[dust](?t=hsc3&e=Help/UGen/dust.help.hs),+[dust2](?t=hsc3&e=Help/UGen/dust2.help.hs),+[gendy1](?t=hsc3&e=Help/UGen/gendy1.help.hs),+gendy2,+gendy3,+[grayNoise](?t=hsc3&e=Help/UGen/grayNoise.help.hs),+[lfClipNoise](?t=hsc3&e=Help/UGen/lfClipNoise.help.hs),+[lfdClipNoise](?t=hsc3&e=Help/UGen/lfdClipNoise.help.hs),+[lfdNoise0](?t=hsc3&e=Help/UGen/lfdNoise0.help.hs),+[lfdNoise1](?t=hsc3&e=Help/UGen/lfdNoise1.help.hs),+[lfdNoise3](?t=hsc3&e=Help/UGen/lfdNoise3.help.hs),+[lfNoise0](?t=hsc3&e=Help/UGen/lfNoise0.help.hs),+[lfNoise1](?t=hsc3&e=Help/UGen/lfNoise1.help.hs),+[lfNoise2](?t=hsc3&e=Help/UGen/lfNoise2.help.hs),+[pinkNoise](?t=hsc3&e=Help/UGen/pinkNoise.help.hs),+randID,+[randSeed](?t=hsc3&e=Help/UGen/randSeed.help.hs),+[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.hs),+[whiteNoise](?t=hsc3&e=Help/UGen/whiteNoise.help.hs),+fhn2DC,+fhn2DL,+fhn2DN,+[gaussTrig](?t=hsc3&e=Help/UGen/gaussTrig.help.hs),+gbman2DC,+gbman2DL,+gbman2DN,+gendy4,+gendy5,+henon2DC,+henon2DL,+henon2DN,+[lfBrownNoise0](?t=hsc3&e=Help/UGen/lfBrownNoise0.help.hs),+lfBrownNoise1,+[lfBrownNoise2](?t=hsc3&e=Help/UGen/lfBrownNoise2.help.hs),+latoocarfian2DC,+latoocarfian2DL,+latoocarfian2DN,+lorenz2DC,+lorenz2DL,+lorenz2DN,+[lorenzTrig](?t=hsc3&e=Help/UGen/lorenzTrig.help.hs),+markovSynth,+sieve1,+standard2DC,+[standard2DL](?t=hsc3&e=Help/UGen/standard2DL.help.hs),+standard2DN++++## GranularSynthesis+bfGrainPanner,+[bufGrain](?t=hsc3&e=Help/UGen/bufGrain.help.hs),+bufGrainB,+bufGrainBBF,+bufGrainBF,+bufGrainI,+bufGrainIBF,+[concat](?t=hsc3&e=Help/UGen/concat.help.hs),+concat2,+[fmGrain](?t=hsc3&e=Help/UGen/fmGrain.help.hs),+[fmGrainB](?t=hsc3&e=Help/UGen/fmGrainB.help.hs),+fmGrainBBF,+fmGrainBF,+fmGrainI,+fmGrainIBF,+inGrain,+inGrainB,+inGrainBBF,+inGrainBF,+inGrainI,+inGrainIBF,+joshGrain,+joshMultiChannelGrain,+joshMultiOutGrain,+[monoGrain](?t=hsc3&e=Help/UGen/monoGrain.help.hs),+monoGrainBF,+[sinGrain](?t=hsc3&e=Help/UGen/sinGrain.help.hs),+sinGrainB,+sinGrainBBF,+sinGrainBF,+sinGrainI,+sinGrainIBF++++## InOut+[diskIn](?t=hsc3&e=Help/UGen/diskIn.help.hs),+diskOut,+[in](?t=hsc3&e=Help/UGen/in.help.hs),+[inFeedback](?t=hsc3&e=Help/UGen/inFeedback.help.hs),+[inTrig](?t=hsc3&e=Help/UGen/inTrig.help.hs),+[lagIn](?t=hsc3&e=Help/UGen/lagIn.help.hs),+[localIn](?t=hsc3&e=Help/UGen/localIn.help.hs),+[localOut](?t=hsc3&e=Help/UGen/localOut.help.hs),+maxLocalBufs,+[offsetOut](?t=hsc3&e=Help/UGen/offsetOut.help.hs),+[out](?t=hsc3&e=Help/UGen/out.help.hs),+[replaceOut](?t=hsc3&e=Help/UGen/replaceOut.help.hs),+[vDiskIn](?t=hsc3&e=Help/UGen/vDiskIn.help.hs),+[xOut](?t=hsc3&e=Help/UGen/xOut.help.hs)++++## Info+checkBadValues,+[controlDur](?t=hsc3&e=Help/UGen/controlDur.help.hs),+[controlRate](?t=hsc3&e=Help/UGen/controlRate.help.hs),+dpoll,+numAudioBuses,+[numBuffers](?t=hsc3&e=Help/UGen/numBuffers.help.hs),+numControlBuses,+numInputBuses,+numOutputBuses,+[numRunningSynths](?t=hsc3&e=Help/UGen/numRunningSynths.help.hs),+[poll](?t=hsc3&e=Help/UGen/poll.help.hs),+[radiansPerSample](?t=hsc3&e=Help/UGen/radiansPerSample.help.hs),+[sampleDur](?t=hsc3&e=Help/UGen/sampleDur.help.hs),+[sampleRate](?t=hsc3&e=Help/UGen/sampleRate.help.hs),+sanitize,+[subsampleOffset](?t=hsc3&e=Help/UGen/subsampleOffset.help.hs)++++## InfoUGens+clockmus++++## Maths+[clip](?t=hsc3&e=Help/UGen/clip.help.hs),+fold,+[inRange](?t=hsc3&e=Help/UGen/inRange.help.hs),+inRect,+[integrator](?t=hsc3&e=Help/UGen/integrator.help.hs),+leastChange,+[linExp](?t=hsc3&e=Help/UGen/linExp.help.hs),+[modDif](?t=hsc3&e=Help/UGen/modDif.help.hs),+[mostChange](?t=hsc3&e=Help/UGen/mostChange.help.hs),+[mulAdd](?t=hsc3&e=Help/UGen/mulAdd.help.hs),+[runningMax](?t=hsc3&e=Help/UGen/runningMax.help.hs),+[runningMin](?t=hsc3&e=Help/UGen/runningMin.help.hs),+[runningSum](?t=hsc3&e=Help/UGen/runningSum.help.hs),+[schmidt](?t=hsc3&e=Help/UGen/schmidt.help.hs),+[slope](?t=hsc3&e=Help/UGen/slope.help.hs),+[wrap](?t=hsc3&e=Help/UGen/wrap.help.hs),+[trigAvg](?t=hsc3&e=Help/UGen/trigAvg.help.hs)++++## Multichannel+[arrayMax](?t=hsc3&e=Help/UGen/arrayMax.help.hs),+[arrayMin](?t=hsc3&e=Help/UGen/arrayMin.help.hs),+bufMax,+bufMin+++## Multichannel:Ambisonics+biPanB2,+decodeB2,+panB,+panB2,+[rotate2](?t=hsc3&e=Help/UGen/rotate2.help.hs),+a2b,+b2a,+b2Ster,+b2uhj,+bfDecode1,+bfDecoder,+bfEncode1,+bfEncode2,+bfEncodeSter,+bfManipulate,+bfPanner,+fmhDecode1,+fmhEncode0,+fmhEncode1,+fmhEncode2,+rotate,+tilt,+tumble,+uhj2b+++## Multichannel:Panners+[balance2](?t=hsc3&e=Help/UGen/balance2.help.hs),+[linPan2](?t=hsc3&e=Help/UGen/linPan2.help.hs),+[pan2](?t=hsc3&e=Help/UGen/pan2.help.hs),+pan4,+[panAz](?t=hsc3&e=Help/UGen/panAz.help.hs),+[rotate2](?t=hsc3&e=Help/UGen/rotate2.help.hs),+[splay](?t=hsc3&e=Help/UGen/splay.help.hs),+splayAz,+panX,+vbap+++## Multichannel:Select+[linXFade2](?t=hsc3&e=Help/UGen/linXFade2.help.hs),+[select](?t=hsc3&e=Help/UGen/select.help.hs),+[xFade2](?t=hsc3&e=Help/UGen/xFade2.help.hs)++++## Osc+[miOmi](?t=hsc3&e=Help/UGen/miOmi.help.hs),+[miPlaits](?t=hsc3&e=Help/UGen/miPlaits.help.hs)++++## Oscillator+[blOsc](?t=hsc3&e=Help/UGen/blOsc.help.hs),+[harmonicOsc](?t=hsc3&e=Help/UGen/harmonicOsc.help.hs),+[neoFormant](?t=hsc3&e=Help/UGen/neoFormant.help.hs),+neoVarSawOsc,+oscBank,+[varShapeOsc](?t=hsc3&e=Help/UGen/varShapeOsc.help.hs),+[vosimOsc](?t=hsc3&e=Help/UGen/vosimOsc.help.hs),+[zOsc](?t=hsc3&e=Help/UGen/zOsc.help.hs)++++## Oscillators+[vbSlide](?t=hsc3&e=Help/UGen/vbSlide.help.hs)++++## PhysicalModelling+[resonator](?t=hsc3&e=Help/UGen/resonator.help.hs),+[rongs](?t=hsc3&e=Help/UGen/rongs.help.hs),+[stringVoice](?t=hsc3&e=Help/UGen/stringVoice.help.hs)++++## PhysicalModels+adachiAyers,+[dwgBowed](?t=hsc3&e=Help/UGen/dwgBowed.help.hs),+dwgBowedSimple,+[dwgBowedTor](?t=hsc3&e=Help/UGen/dwgBowedTor.help.hs),+[dwgClarinet3](?t=hsc3&e=Help/UGen/dwgClarinet3.help.hs),+[dwgFlute](?t=hsc3&e=Help/UGen/dwgFlute.help.hs),+dwgPlucked,+[dwgPlucked2](?t=hsc3&e=Help/UGen/dwgPlucked2.help.hs),+[dwgPluckedStiff](?t=hsc3&e=Help/UGen/dwgPluckedStiff.help.hs),+[diodeRingMod](?t=hsc3&e=Help/UGen/diodeRingMod.help.hs),+myPlucked,+myPlucked2,+myPluckedStiff,+nTube,+oteyPiano,+[oteyPianoStrings](?t=hsc3&e=Help/UGen/oteyPianoStrings.help.hs),+pluckSynth,+stkGlobals,+[stkInst](?t=hsc3&e=Help/UGen/stkInst.help.hs),+[twoTube](?t=hsc3&e=Help/UGen/twoTube.help.hs)++++## Random+[dshuf](?t=hsc3&e=Help/UGen/dshuf.help.hs),+[dwrand](?t=hsc3&e=Help/UGen/dwrand.help.hs),+[expRand](?t=hsc3&e=Help/UGen/expRand.help.hs),+[hasher](?t=hsc3&e=Help/UGen/hasher.help.hs),+[iRand](?t=hsc3&e=Help/UGen/iRand.help.hs),+[linRand](?t=hsc3&e=Help/UGen/linRand.help.hs),+[nRand](?t=hsc3&e=Help/UGen/nRand.help.hs),+[rand](?t=hsc3&e=Help/UGen/rand.help.hs),+randID,+[randSeed](?t=hsc3&e=Help/UGen/randSeed.help.hs),+[tExpRand](?t=hsc3&e=Help/UGen/tExpRand.help.hs),+[tiRand](?t=hsc3&e=Help/UGen/tiRand.help.hs),+[tRand](?t=hsc3&e=Help/UGen/tRand.help.hs),+[tWindex](?t=hsc3&e=Help/UGen/tWindex.help.hs),+[tBetaRand](?t=hsc3&e=Help/UGen/tBetaRand.help.hs),+[tBrownRand](?t=hsc3&e=Help/UGen/tBrownRand.help.hs),+[tGaussRand](?t=hsc3&e=Help/UGen/tGaussRand.help.hs)++++## Reverbs+[freeVerb](?t=hsc3&e=Help/UGen/freeVerb.help.hs),+freeVerb2,+[gVerb](?t=hsc3&e=Help/UGen/gVerb.help.hs),+dwgReverb3Band,+dwgReverb3Band_16,+dwgReverbC1C3,+dwgReverbC1C3_16,+earlyRef,+earlyRefAtkGen,+earlyRefGen,+[jPverbRaw](?t=hsc3&e=Help/UGen/jPverbRaw.help.hs),+[miVerb](?t=hsc3&e=Help/UGen/miVerb.help.hs),+[vbJonVerb](?t=hsc3&e=Help/UGen/vbJonVerb.help.hs)++++## Synth control+control,+[detectSilence](?t=hsc3&e=Help/UGen/detectSilence.help.hs),+[done](?t=hsc3&e=Help/UGen/done.help.hs),+[free](?t=hsc3&e=Help/UGen/free.help.hs),+[freeSelf](?t=hsc3&e=Help/UGen/freeSelf.help.hs),+[freeSelfWhenDone](?t=hsc3&e=Help/UGen/freeSelfWhenDone.help.hs),+lagControl,+[pause](?t=hsc3&e=Help/UGen/pause.help.hs),+[pauseSelf](?t=hsc3&e=Help/UGen/pauseSelf.help.hs),+[pauseSelfWhenDone](?t=hsc3&e=Help/UGen/pauseSelfWhenDone.help.hs)++++## Triggers+[changed](?t=hsc3&e=Help/UGen/changed.help.hs),+[gate](?t=hsc3&e=Help/UGen/gate.help.hs),+[inTrig](?t=hsc3&e=Help/UGen/inTrig.help.hs),+[lastValue](?t=hsc3&e=Help/UGen/lastValue.help.hs),+[latch](?t=hsc3&e=Help/UGen/latch.help.hs),+[phasor](?t=hsc3&e=Help/UGen/phasor.help.hs),+[pulseCount](?t=hsc3&e=Help/UGen/pulseCount.help.hs),+[pulseDivider](?t=hsc3&e=Help/UGen/pulseDivider.help.hs),+[sendReply](?t=hsc3&e=Help/UGen/sendReply.help.hs),+sendTrig,+[setResetFF](?t=hsc3&e=Help/UGen/setResetFF.help.hs),+[stepper](?t=hsc3&e=Help/UGen/stepper.help.hs),+[sweep](?t=hsc3&e=Help/UGen/sweep.help.hs),+[t2a](?t=hsc3&e=Help/UGen/t2a.help.hs),+[t2k](?t=hsc3&e=Help/UGen/t2k.help.hs),+[tDelay](?t=hsc3&e=Help/UGen/tDelay.help.hs),+[tExpRand](?t=hsc3&e=Help/UGen/tExpRand.help.hs),+[tiRand](?t=hsc3&e=Help/UGen/tiRand.help.hs),+[tRand](?t=hsc3&e=Help/UGen/tRand.help.hs),+[tWindex](?t=hsc3&e=Help/UGen/tWindex.help.hs),+[timer](?t=hsc3&e=Help/UGen/timer.help.hs),+[toggleFF](?t=hsc3&e=Help/UGen/toggleFF.help.hs),+[trig](?t=hsc3&e=Help/UGen/trig.help.hs),+[trig1](?t=hsc3&e=Help/UGen/trig1.help.hs),+[summer](?t=hsc3&e=Help/UGen/summer.help.hs),+[tBetaRand](?t=hsc3&e=Help/UGen/tBetaRand.help.hs),+[tBrownRand](?t=hsc3&e=Help/UGen/tBrownRand.help.hs),+[tGaussRand](?t=hsc3&e=Help/UGen/tGaussRand.help.hs),+wrapSummer++++## Unclassified+permMod,+permModArray,+permModT,+printVal++++## Undocumented+apf,+[pauseSelfWhenDone](?t=hsc3&e=Help/UGen/pauseSelfWhenDone.help.hs),+a2b,+allpass1,+allpass2,+atsNoise,+atsPartial,+[audioMSG](?t=hsc3&e=Help/UGen/audioMSG.help.hs),+b2a,+b2Ster,+b2uhj,+bHiCut,+blBufRd,+bLowCut,+binData,+blitB3D,+bufGrainBBF,+bufGrainBF,+bufGrainIBF,+cq_Diff,+clipper32,+clipper4,+clipper8,+clockmus,+combFormlet,+combLP,+dwgFlute2,+[dwgSoundBoard](?t=hsc3&e=Help/UGen/dwgSoundBoard.help.hs),+driveNoise,+fftCentroid,+fftComplexDev,+fftDiffMags,+fftFlux,+fftFluxPos,+fftmkl,+fftPhaseDev,+fftSubbandFlux,+fmGrainBBF,+fmGrainBF,+fmGrainIBF,+fmhEncode0,+fhnTrig,+fincoSprottL,+fincoSprottM,+fincoSprottS,+gbmanTrig,+grainBufJ,+grainFMJ,+grainInJ,+grainSinJ,+henonTrig,+inGrain,+inGrainB,+inGrainBBF,+inGrainBF,+inGrainI,+inGrainIBF,+lpf1,+lpf18,+lpfvs6,+lrHiCut,+lrLowCut,+latoocarfianTrig,+matchingPResynth,+miWarps,+needleRect,+osFold4,+osFold8,+osTrunc4,+osTrunc8,+osWrap4,+osWrap8,+onsetsDS,+[oteySoundBoard](?t=hsc3&e=Help/UGen/oteySoundBoard.help.hs),+panX2D,+peakEQ2,+peakEQ4,+permMod,+permModArray,+permModT,+posRatio,+[rBezier](?t=hsc3&e=Help/UGen/rBezier.help.hs),+[rdx7](?t=hsc3&e=Help/UGen/rdx7.help.hs),+[rDelayMap](?t=hsc3&e=Help/UGen/rDelayMap.help.hs),+[rDelaySet](?t=hsc3&e=Help/UGen/rDelaySet.help.hs),+[rDelaySetB](?t=hsc3&e=Help/UGen/rDelaySetB.help.hs),+[rDustR](?t=hsc3&e=Help/UGen/rDustR.help.hs),+[rFreezer](?t=hsc3&e=Help/UGen/rFreezer.help.hs),+[rLoopSet](?t=hsc3&e=Help/UGen/rLoopSet.help.hs),+rmaFoodChainL,+[rmeq](?t=hsc3&e=Help/UGen/rmeq.help.hs),+[rmShelf](?t=hsc3&e=Help/UGen/rmShelf.help.hs),+rmShelf2,+[rObxdFilter](?t=hsc3&e=Help/UGen/rObxdFilter.help.hs),+[rPlayTrace](?t=hsc3&e=Help/UGen/rPlayTrace.help.hs),+[rShufflerB](?t=hsc3&e=Help/UGen/rShufflerB.help.hs),+[rShufflerL](?t=hsc3&e=Help/UGen/rShufflerL.help.hs),+[rtExpRandN](?t=hsc3&e=Help/UGen/rtExpRandN.help.hs),+[rtRandN](?t=hsc3&e=Help/UGen/rtRandN.help.hs),+[rtScramble](?t=hsc3&e=Help/UGen/rtScramble.help.hs),+[rTraceRd](?t=hsc3&e=Help/UGen/rTraceRd.help.hs),+regaliaMitraEQ,+rosslerResL,+rotate,+somAreaWr,+selectL,+sinTone,+skipNeedle,+[softClipAmp](?t=hsc3&e=Help/UGen/softClipAmp.help.hs),+softClipAmp4,+softClipAmp8,+softClipper4,+softClipper8,+sonLPCSynth,+sonLPCSynthIn,+[spreader](?t=hsc3&e=Help/UGen/spreader.help.hs),+standardTrig,+[stkBandedWG](?t=hsc3&e=Help/UGen/stkBandedWG.help.hs),+stkBeeThree,+stkBlowHole,+stkBowed,+stkClarinet,+stkFlute,+[stkMandolin](?t=hsc3&e=Help/UGen/stkMandolin.help.hs),+[stkModalBar](?t=hsc3&e=Help/UGen/stkModalBar.help.hs),+[stkMoog](?t=hsc3&e=Help/UGen/stkMoog.help.hs),+[stkPluck](?t=hsc3&e=Help/UGen/stkPluck.help.hs),+stkSaxofony,+[stkShakers](?t=hsc3&e=Help/UGen/stkShakers.help.hs),+stkVoicForm,+tTendency,+tilt,+tumble,+uhj2b,+xFadeRotate++++## User interaction+[keyState](?t=hsc3&e=Help/UGen/keyState.help.hs),+[mouseButton](?t=hsc3&e=Help/UGen/mouseButton.help.hs),+[mouseX](?t=hsc3&e=Help/UGen/mouseX.help.hs),+[mouseY](?t=hsc3&e=Help/UGen/mouseY.help.hs)++++## Wrappers+[ladspa](?t=hsc3&e=Help/UGen/ladspa.help.hs),+mdaPiano++++## Operator:Binary+[add](?t=hsc3&e=Help/UGen/add.help.hs),+[sub](?t=hsc3&e=Help/UGen/sub.help.hs),+[mul](?t=hsc3&e=Help/UGen/mul.help.hs),+iDiv,+fDiv,+[mod](?t=hsc3&e=Help/UGen/mod.help.hs),+eq,+ne,+lt,+gt,+le,+ge,+[min](?t=hsc3&e=Help/UGen/min.help.hs),+[max](?t=hsc3&e=Help/UGen/max.help.hs),+bitAnd,+bitOr,+bitXor,+[lcm](?t=hsc3&e=Help/UGen/lcm.help.hs),+[gcd](?t=hsc3&e=Help/UGen/gcd.help.hs),+round,+[roundUp](?t=hsc3&e=Help/UGen/roundUp.help.hs),+trunc,+[atan2](?t=hsc3&e=Help/UGen/atan2.help.hs),+[hypot](?t=hsc3&e=Help/UGen/hypot.help.hs),+hypotx,+[pow](?t=hsc3&e=Help/UGen/pow.help.hs),+shiftLeft,+shiftRight,+unsignedShift,+fill,+[ring1](?t=hsc3&e=Help/UGen/ring1.help.hs),+[ring2](?t=hsc3&e=Help/UGen/ring2.help.hs),+[ring3](?t=hsc3&e=Help/UGen/ring3.help.hs),+[ring4](?t=hsc3&e=Help/UGen/ring4.help.hs),+[difSqr](?t=hsc3&e=Help/UGen/difSqr.help.hs),+[sumSqr](?t=hsc3&e=Help/UGen/sumSqr.help.hs),+[sqrSum](?t=hsc3&e=Help/UGen/sqrSum.help.hs),+[sqrDif](?t=hsc3&e=Help/UGen/sqrDif.help.hs),+[absDif](?t=hsc3&e=Help/UGen/absDif.help.hs),+[thresh](?t=hsc3&e=Help/UGen/thresh.help.hs),+[amClip](?t=hsc3&e=Help/UGen/amClip.help.hs),+[scaleNeg](?t=hsc3&e=Help/UGen/scaleNeg.help.hs),+[clip2](?t=hsc3&e=Help/UGen/clip2.help.hs),+[excess](?t=hsc3&e=Help/UGen/excess.help.hs),+[fold2](?t=hsc3&e=Help/UGen/fold2.help.hs),+[wrap2](?t=hsc3&e=Help/UGen/wrap2.help.hs),+firstArg,+randRange,+expRandRange+++## Operator:Unary+[neg](?t=hsc3&e=Help/UGen/neg.help.hs),+not,+isNil,+notNil,+bitNot,+[abs](?t=hsc3&e=Help/UGen/abs.help.hs),+asFloat,+asInt,+ceil,+floor,+[frac](?t=hsc3&e=Help/UGen/frac.help.hs),+sign,+squared,+cubed,+sqrt,+exp,+recip,+midicps,+cpsmidi,+midiRatio,+ratioMIDI,+[dbAmp](?t=hsc3&e=Help/UGen/dbAmp.help.hs),+[ampDb](?t=hsc3&e=Help/UGen/ampDb.help.hs),+octCPS,+cpsOct,+[log](?t=hsc3&e=Help/UGen/log.help.hs),+log2,+log10,+[sin](?t=hsc3&e=Help/UGen/sin.help.hs),+[cos](?t=hsc3&e=Help/UGen/cos.help.hs),+[tan](?t=hsc3&e=Help/UGen/tan.help.hs),+arcSin,+arcCos,+arcTan,+sinH,+cosH,+tanH,+rand_,+rand2,+linRand_,+biLinRand,+sum3Rand,+[distort](?t=hsc3&e=Help/UGen/distort.help.hs),+[softClip](?t=hsc3&e=Help/UGen/softClip.help.hs),+coin,+digitValue,+silence,+thru,+rectWindow,+hanWindow,+welchWindow,+triWindow,+ramp_,+sCurve+  
− Help/UGen/jPverbRaw.help.lhs
@@ -1,9 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--default values--> g_01 =->   let (i1,i2) = (soundIn 0,soundIn 1)->   in X.jPverbRaw i1 i2 0 0.707 2000 1 500 1 0.1 2 1 1 1-
− Help/UGen/k2a.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = k2a (whiteNoise 'α' KR * 0.3)--compare--> g_02 = mce2 (k2a (whiteNoise 'α' KR * 0.3)) (whiteNoise 'β' AR * 0.1)--> g_03 =->     let freq = (mouseX KR 0.1 40 Exponential 0.2) / blockSize * sampleRate;->         o1 = k2a (lfNoise0 'α' KR freq)->         o2 = lfNoise0 'β' AR freq->     in mce2 o1 o2 * 0.1
− Help/UGen/keyState.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--The keycode 38 is the A key on my keyboard.  Under X the xev(1)-command is useful in determining your keyboard layout.--> g_01 = sinOsc AR 800 0 * keyState KR 38 0 0.1 0.5
− Help/UGen/keyTrack.help.lhs
@@ -1,9 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let s = soundIn (mce2 0 1)->       t = fft' (localBuf 'α' 1 4096) (mix s)->       k = keyTrack KR t 2.0 0.5->       p = poll (impulse KR 1 0) k 0 (label "key")->   in mrg2 s p
− Help/UGen/klang.help.lhs
@@ -1,28 +0,0 @@-Note: SC2 had mul/add inputs.--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let f = [440,550..1100]->         a = take 7 (cycle [0.05, 0.02])->         p = replicate 7 0->     in klang AR 1 0 (klangSpec f a p)--    play({Klang.ar(`[[800,1000,1200],[0.3,0.3,0.3],[pi,pi,pi]],1,0)*0.4})--> g_02 =->     let s = klangSpec [800,1000,1200] [0.3,0.3,0.3] [pi,pi,pi]->     in klang AR 1 0 s * 0.4--    play({Klang.ar(`[[800,1000,1200],nil,nil],1,0)*0.25})--> g_03 =->     let s = klangSpec [800,1000,1200] [1,1,1] [0,0,0]->     in klang AR 1 0 s * 0.25--    play({Klang.ar(`[Array.rand(12,600.0,1000.0),nil,nil],1,0)*0.05})--> g_04 =->     let f = map (\z -> rand z 600 1000) ['a'..'l']->         s = klangSpec f (replicate 12 1) (replicate 12 0)->     in klang AR 1 0 s * 0.05
− Help/UGen/klank.help.lhs
@@ -1,32 +0,0 @@-> import Sound.SC3 {- hsc3 -}--The klankSpec family of functions can help create the 'spec' entry.--> f_01 impulse_freq reson_freq decay_time =->   let u n = replicate (length reson_freq) n->       k = klankSpec_k reson_freq (u 1) (u decay_time)->   in klank (impulse AR impulse_freq 0 * 0.1) 1 0 1 k--> g_01 = f_01 2 [800,1071,1153,1723] 1--There is a limited form of multiple channel expansion possible at-'specification' input, below three equal dimensional specifications-are transposed and force expansion in a sensible manner.--> g_02 =->     let u = [1,1,1,1]->         p = [200,171,153,172]->         q = [930,971,953,1323]->         r = [8900,16062,9013,7892]->         k = mce [klankSpec_k p u u,klankSpec_k q u u,klankSpec_k r u u]->         s = mceTranspose k->         i = mce [2,2.07,2.13]->         t = impulse AR i 0 * 0.1->         l = mce [-1,0,1]->     in mix (pan2 (klank t 1 0 1 s) l 1)--Modal data--    > import Sound.SC3.Data.Modal {- hsc3-data -}-    > let Just reson_freq =lookup "Spinel sphere (diameter=3.6675mm)" modal_frequencies-    > audition (out 0 (f_01 0.125 reson_freq 16))
− Help/UGen/ladspa.help.lhs
@@ -1,243 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.HW.External as X {- hsc3 -}--Note: debian sc3-plugins doesn't build ladspalist, to build type:--    cd opt/src/sc3-plugins/source/LadspaUGen-    gcc -ldl search.c ladspalist.c -o ladspalist--CAPS = http://quitte.de/dsp/caps.html, http://packages.debian.org/stable/caps--    # 1767 C* ChorusI - Mono chorus/flanger-    > k: t (ms) (2.5 to 40)-    > k: width (ms) (0.5 to 10)-    > k: rate (Hz) (0.02 to 5)-    > k: blend (0 to 1)-    > k: feedforward (0 to 1)-    > k: feedback (0 to 1)-    > a: in (0 to 0)-    < a: out--> caps_1767_01 =->   let s = soundIn 0->       x = mouseX KR 0 1 Linear 0.2->       y = mouseY KR 0 1 Linear 0.2->       n1 = range 2.5 40 (lfNoise2 'α' KR 0.2)->       n2 = range 0.5 10 (lfNoise2 'β' KR 0.2)->   in X.ladspa 1 AR 1767 [n1,n2,0.5,0.5,x,y,s]--    # 1769 C* Click - Metronome-    > k: model (0 to 3)-    > k: bpm (4 to 240)-    > k: volume (0 to 1)-    > k: damping (0 to 1)-    < a: out--> caps_1769_01 =->   let x = roundE (mouseX KR 0 3 Linear 0.2)->       y = mouseY KR 4 240 Linear 0.2->   in X.ladspa 1 AR 1769 [x,y,0.5,0.5]--    # 1773 C* Eq10 - 10-band equaliser-    > k: 31 Hz (-48 to 24)-    > k: 63 Hz (-48 to 24)-    > k: 125 Hz (-48 to 24)-    > k: 250 Hz (-48 to 24)-    > k: 500 Hz (-48 to 24)-    > k: 1 kHz (-48 to 24)-    > k: 2 kHz (-48 to 24)-    > k: 4 kHz (-48 to 24)-    > k: 8 kHz (-48 to 24)-    > k: 16 kHz (-48 to 24)-    > a: in (0 to 0)-    < a: out--> enumN n e = take n (enumFrom e)--> caps_1773_01 =->   let s = soundIn 0->       n = map (\z -> range (-24) 48 (lfNoise2 z KR 0.2)) (enumN 10 'α')->   in X.ladspa 1 AR 1773 (n ++ [s]) * 0.5--    # 1771 C* Saturate - Various static nonlinearities, 8x oversampled-    > k: mode (0 to 11)-    > k: gain (dB) (-24 to 72)-    > k: bias (0 to 1)-    > a: in (0 to 0)-    < a: out--> caps_1771_01 =->   let s = soundIn 0->   in X.ladspa 1 AR 1771 [1,0,0,s]--> caps_1771_02 =->   let s = soundIn 0->       x = roundE (mouseX KR 0 11 Linear 0.2)->       y = mouseY KR (-24) 72 Linear 0.2->   in X.ladspa 1 AR 1771 [x,y,0.0,s]--    # 1772 C* Compress - Compressor and saturating limiter-    > k: measure (0 to 1)-    > k: mode (0 to 2)-    > k: threshold (0 to 1)-    > k: strength (0 to 1)-    > k: attack (0 to 1)-    > k: release (0 to 1)-    > k: gain (dB) (-12 to 18)-    < k: state (dB)-    > a: in (-1 to 1)-    < a: out--> caps_1772_01 =->   let s = soundIn 0->       x = roundE (mouseX KR 0 2 Linear 0.2)->       y = mouseY KR 0 1 Linear 0.2->   in X.ladspa 1 AR 1772 [0.5,x,y,0.5,0.5,0.1,0,s]--    # 1779 C* Plate - Versatile plate reverb-    > k: bandwidth (0 to 1)-    > k: tail (0 to 1)-    > k: damping (0 to 1)-    > k: blend (0 to 1)-    > a: in (0 to 0)-    < a: out.l-    < a: out.r--> caps_1779_01 =->   let s = soundIn 0->       x = mouseX KR 0 1 Linear 0.2->       y = mouseY KR 0 1 Linear 0.2->   in X.ladspa 2 AR 1779 [x,y,0.5,0.5,s]--    # 1788 C* Wider - Stereo image synthesis-    > k: pan (-1 to 1)-    > k: width (0 to 1)-    > a: in (0 to 0)-    < a: out.l-    < a: out.r--> caps_1788_01 =->   let s = soundIn 0->       x = mouseX KR (-1) 1 Linear 0.2->       y = mouseY KR 0 1 Linear 0.2->   in X.ladspa 2 AR 1788 [x,y,s]--    # 2586 C* PhaserII - Mono phaser-    > k: rate (0 to 1)-    > k: lfo (0 to 1)-    > k: depth (0 to 1)-    > k: spread (0 to 1)-    > k: resonance (0 to 1)-    > a: in (0 to 0)-    < a: out--> caps_2586_01 =->   let s = soundIn 0->       x = mouseX KR 0 1 Linear 0.2->       y = mouseY KR 0 1 Linear 0.2->   in X.ladspa 1 AR 2586 [0.3,x,0.5,y,0.8,s]--    # 2588 C* Scape - Stereo delay with chromatic resonances-    > k: bpm (30 to 164)-    > k: divider (2 to 4)-    > k: feedback (0 to 1)-    > k: dry (0 to 1)-    > k: blend (0 to 1)-    > k: tune (Hz) (415 to 467)-    > a: in (0 to 0)-    < a: out.l-    < a: out.r--> caps_2588_01 =->   let s = soundIn 0->       x = mouseX KR 30 164 Linear 0.2->       y = roundE (mouseY KR 2 4 Linear 0.2)->       n1 = lfNoise2 'α' KR 0.2->       n2 = lfNoise2 'β' KR 0.2->   in X.ladspa 2 AR 2588 [x,y,n1,n2,0.5,440,s]--    # 2592 C* AmpVTS - Idealised guitar amplification-    > k: over (0 to 2)-    > k: gain (0 to 1)-    > k: bright (0 to 1)-    > k: power (0 to 1)-    > k: tonestack (0 to 8)-    > k: bass (0 to 1)-    > k: mid (0 to 1)-    > k: treble (0 to 1)-    > k: attack (0 to 1)-    > k: squash (0 to 1)-    > k: lowcut (0 to 1)-    > a: in (0 to 0)-    < a: out--> caps_2592_def s = [1,0.25,0.75,0.5,1,0.25,1,0.75,0.75,0.25,0.5,s]--> caps_2592_01 = X.ladspa 1 AR 2592 (caps_2592_def (soundIn 0))--> caps_2592_02 =->   let s = soundIn 0->       x = roundE (mouseX KR 0 8 Linear 0.2)->       y = mouseY KR 0 1 Linear 0.2->       [n1,n2,n3,n4,n5,n6,n7,n8] = map (\z -> lfNoise2 z KR 0.2) (enumN 8 'α')->   in X.ladspa 1 AR 2592 [1,y,n1,n2,x,n3,n4,n5,n6,n7,n8,s]--    # 2603 C* Spice - Not an exciter-    > k: lo.f (Hz) (50 to 400)-    > k: lo.compress (0 to 1)-    > k: lo.gain (0 to 1)-    > k: hi.f (Hz) (400 to 5000)-    > k: hi.gain (0 to 1)-    > a: in (0 to 0)-    < a: out--> caps_2603_01 =->   let s = soundIn 0->       x = mouseX KR 50 400 Exponential 0.2->       y = mouseY KR 400 5000 Exponential 0.2->   in X.ladspa 1 AR 2603 [x,0.5,0.5,y,0.5,s]--    # 2609 C* EqFA4p - 4-band parametric eq-    > k: a.act (0 to 1)-    > k: a.f (Hz) (20 to 14000)-    > k: a.bw (0.125 to 8)-    > k: a.gain (dB) (-24 to 24)-    > k: b.act (0 to 1)-    > k: b.f (Hz) (20 to 14000)-    > k: b.bw (0.125 to 8)-    > k: b.gain (dB) (-24 to 24)-    > k: c.act (0 to 1)-    > k: c.f (Hz) (20 to 14000)-    > k: c.bw (0.125 to 8)-    > k: c.gain (dB) (-24 to 24)-    > k: d.act (0 to 1)-    > k: d.f (Hz) (20 to 14000)-    > k: d.bw (0.125 to 8)-    > k: d.gain (dB) (-24 to 24)-    > k: gain (-24 to 24)-    < k: _latency-    > a: in (0 to 0)-    < a: out--> caps_2609_01 =->   let s = soundIn 0->       f z m l r = m (lfNoise2 z KR 0.2) (-1) 1 l r->       p = [f 'α' linLin 0 1->           ,f 'β' linExp 20 14000->           ,f 'γ' linExp 0.125 8->           ,f 'δ' linLin (-24) 24->           ,f 'ε' linLin 0 1->           ,f 'ζ' linExp 20 14000->           ,f 'η' linExp 0.125 8->           ,f 'θ' linLin (-24) 24->           ,f 'ι' linLin 0 1->           ,f 'κ' linExp 20 14000->           ,f 'λ' linExp 0.125 8->           ,f 'μ' linLin (-24) 24->           ,f 'ν' linLin 0 1->           ,f 'ξ' linExp 20 14000->           ,f 'ο' linExp 0.125 8->           ,f 'π' linLin (-24) 24->           ,0->           ,s]->   in X.ladspa 1 AR 2609 p * 0.5
− Help/UGen/lag.help.lhs
@@ -1,21 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR 220 440 Linear 0.2->     in sinOsc AR (mce [x, lag x 1]) 0 * 0.1--> g_02 =->     let n = lfNoise0 'α' KR 0.5->     in sinOsc AR (220 + (lag n 1 * 220)) 0 * (lag n 2 * 0.1)--> g_03 = lag (impulse AR 100 0) (mouseX KR 0.0 0.01 Linear 0.2)--> g_04 = lag (lfPulse AR 50 0 0.5) (mouseX KR 0.0 (1/50) Linear 0.2) * 0.2--> g_05 =->   let s = sinOsc AR 0.05 0.0->       f1 = linLin s (-1.0) 1.0 220.0 440.0->       o1 = sinOsc AR f1 0.0->       f2 = lag f1 1.0->       o2 = sinOsc AR f2 0.0->   in mce2 (o1 * 0.2) (o2 * 0.2)
− Help/UGen/lag2.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR 220 440 Exponential 0.1->     in sinOsc AR (mce [x, lag2 x 1]) 0 * 0.1--> g_02 = lag2 (impulse AR 100 0) (mouseX KR 0.0 0.01 Linear 0.2)
− Help/UGen/lag3.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR 220 440 Exponential 0.1->     in sinOsc AR (mce [x, lag3 x 1]) 0 * 0.1--> g_02 = lag3 (impulse AR 100 0) (mouseX KR 0.0 0.01 Linear 0.2)--> g_03 = lag3 (lfPulse AR 100 0 0.5) (mouseX KR 0.0 0.01 Linear 0.2)--> g_04 =->   let x = mouseX KR 0.0 0.01 Linear 0.2->   in lag (lag (lag (lfPulse AR 100 0 0.5 * 2 - 1) x) x) x
− Help/UGen/lagIn.help.lhs
@@ -1,14 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Set frequency at control bus--    import Sound.OSC {- hosc -}-    withSC3 (sendMessage (c_set1 10 200))--Oscillator reading frequency at control bus--> g_01 = sinOsc AR (lagIn 1 10 1) 0 * 0.1--Re-set frequency at control bus--    withSC3 (sendMessage (c_set1 10 2000))
− Help/UGen/lagUD.help.lhs
@@ -1,31 +0,0 @@-> import Sound.SC3 {- hsc3 -}--lag pitch, slower down (5 seconds) than up (1 second)--> g_01 =->   let x = mouseX KR 220 440 Linear 0.2->   in sinOsc AR (mce2 x (lagUD x 1 5)) 0 * 0.1--as signal filter--> f_01 l s =->   let x = mouseX KR 0.0001 0.01 Exponential 0.2->       y = mouseY KR 0.0001 0.01 Exponential 0.2->   in l s x y--> f_02 = f_01 lagUD-> f_03 = f_01 lag2UD-> f_04 = f_01 lag3UD--> g_02 = f_02 (0 - saw AR 440) * 0.15-> g_03 = f_02 (impulse AR (range 6 24 (lfNoise2 'α' KR 4)) 0) * 0.5-> g_04 = f_04 (lfPulse AR 800 0 0.5 * 2 - 1) * 0.25--> g_05 =->   let s = varSaw AR 220 0 (range 0 1 (sinOsc KR 0.25 0))->   in f_02 s * 0.1--> g_06 =->   let x = mouseX KR 0.0 (1/100) Linear 0.2->       y = mouseY KR 0.0 (3/100) Linear 0.2->   in lagUD (lfPulse AR 50 0 0.25) x y * 0.2
− Help/UGen/lastValue.help.lhs
@@ -1,12 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "LastValue"-> Sound.SC3.UGen.DB.ugenSummary "LastValue"--> import Sound.SC3--> let x = mouseX KR 100 400 Linear 0.1-> in audition (out 0 (sinOsc AR (lastValue x 40) 0 * 0.1))--Difference between currrent and the last changed-> let {x = mouseX KR 0.1 4 Linear 0.1->     ;f = abs (lastValue x 0.5 - x) * 400 + 200}-> in audition (out 0 (sinOsc AR f 0 * 0.2))
− Help/UGen/latch.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let n = whiteNoise 'α' AR->       i = impulse AR 9 0->       l = latch n i->   in blip AR (l * 400 + 500) 4 * 0.2--The above is just meant as example. LFNoise0 is a faster way to-generate random steps :--> g_02 =->   let n = lfNoise0 'α' KR 9->   in blip AR (n * 400 + 500) 4 * 0.2--http://create.ucsb.edu/pipermail/sc-users/2006-December/029991.html--> g_03 =->   let n0 = lfNoise2 'α' KR 8->       n1 = lfNoise2 'β' KR 3->       s = blip AR (n0 * 200 + 300) (n1 * 10 + 20)->       x = mouseX KR 1000 (sampleRate * 0.1) Exponential 0.1->   in latch s (impulse AR x 0)
− Help/UGen/latoocarfianC.help.lhs
@@ -1,27 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Noise {- hsc3 -}--SC3 default initial parameters.--> g_01 =->   let x = mouseX KR 20 sampleRate Linear 0.1->   in latoocarfianC AR x 1 3 0.5 0.5 0.5 0.5 * 0.2--Randomly modulate all parameters.--> g_02 =->   let [n0,n1,n2,n3] = map (\e -> lfNoise2 e KR 5) "abcd"->       f = sampleRate / 4->       a = n0 * 1.5 + 1.5->       b = n1 * 1.5 + 1.5->       c = n2 * 0.5 + 1.5->       d = n3 * 0.5 + 1.5->   in latoocarfianC AR f a b c d 0.5 0.5 * 0.2--Haskell implementation of equation.--> latoocarfian_hs a b c d = map fst (iterate (latoocarfian_f a b c d) (0.5,0.5))--    import Sound.SC3.Plot {- hsc3-plot -}-    plotTable1 (take 600 (latoocarfian_hs 1.0 3.0 0.5 0.5))-    plot_ugen_nrt (600,1) 1.0 (latoocarfianC AR 600 1.0 3.0 0.5 0.5 0.5 0.5)
− Help/UGen/leakDC.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3--> g_01 =->     let a = lfPulse AR 800 0 0.5 * 0.1 + 0.5->     in mce [a,leakDC a 0.995]
− Help/UGen/lfBrownNoise0.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let n = X.lfBrownNoise0 'α' AR 10 0.05 0->       f = linExp n (-1) 1 64 9600->   in sinOsc AR f 0 * 0.1
− Help/UGen/lfBrownNoise2.help.lhs
@@ -1,31 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let freq = 1000->       dev = mouseX KR 0 1 Linear 0.2->       dist = mouseY KR 0 5 Linear 0.2->   in X.lfBrownNoise2 'α' AR freq dev dist * 0.25--Use as frequency control.--> g_02 =->   let freq = 8->       dev = mouseX KR 0 1 Linear 0.2->       dist = mouseY KR 0 5 Linear 0.2->       n1:n2:n3:_ = map (\z -> X.lfBrownNoise2 z KR freq dev dist) ['α'..]->       o = impulse AR (range 6 24 n1) 0->   in lagUD o (range 0.0001 0.001 n2) (range 0.0001 0.001 n3) * 0.5--Use as pan & volume controls (external sound input)--> f_01 s =->   let freq = range 0.5 2 (X.lfBrownNoise2 'α' KR 2 0.1 5)->       dev = mouseX KR 0.01 0.35 Linear 0.2->       dist = mouseY KR 0 5 Linear 0.2->       n1:n2:_ = map (\z -> X.lfBrownNoise2 z KR freq dev dist) ['β'..]->   in pan2 s (range (-0.75) 0.75 n1) 1 * range 0.01 0.5 n2--> g_03 = f_01 (soundIn 0)--> g_04 = f_01 (sinOsc AR 440 0 * 0.1)
− Help/UGen/lfClipNoise.help.lhs
@@ -1,22 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = lfClipNoise 'α' AR 1000 * 0.05--Modulate frequency--> g_02 =->     let f = xLine KR 1000 10000 10 RemoveSynth->     in lfClipNoise 'α' AR f * 0.05--Use as frequency control--> g_03 =->     let n = lfClipNoise 'α' KR 4->     in sinOsc AR (n * 200 + 600) 0 * 0.1--Drawings--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen1 0.1 (lfClipNoise 'α' AR 1000)--![](sw/hsc3/Help/SVG/lfClipNoise.0.svg)
− Help/UGen/lfCub.help.lhs
@@ -1,36 +0,0 @@-> import Sound.SC3--> g_01 = lfCub AR (lfCub KR (lfCub KR 0.2 0 * 8 + 10) 0 * 400 + 800) 0 * 0.1-> g_02 = lfCub AR (lfCub KR 0.2 0 * 400 + 800) 0 * 0.1-> g_03 = lfCub AR 800 0 * 0.1-> g_04 = lfCub AR (xLine KR 100 8000 30 DoNothing) 0 * 0.1--Compare w/ lfPar--> g_05 = lfPar AR (lfPar KR (lfPar KR 0.2 0 * 8 + 10) 0 * 400 + 800) 0 * 0.1-> g_06 = lfPar AR (lfPar KR 0.2 0 * 400 + 800) 0 * 0.1-> g_07 = lfPar AR 800 0 * 0.1-> g_08 = lfPar AR (xLine KR 100 8000 30 DoNothing) 0 * 0.1--Compare w/ sinOsc--> g_09 = sinOsc AR (sinOsc KR (sinOsc KR 0.2 0 * 8 + 10) 0 * 400 + 800) 0 * 0.1-> g_11 = sinOsc AR (sinOsc KR 0.2 0 * 400 + 800) 0 * 0.1-> g_12 = sinOsc AR 800 0 * 0.1-> g_13 = sinOsc AR (xLine KR 100 8000 30 DoNothing) 0 * 0.1--Compare w/ lfTri--> g_14 = lfTri AR (lfTri KR (lfTri KR 0.2 0 * 8 + 10) 0 * 400 + 800) 0 * 0.1-> g_15 = lfTri AR (lfTri KR 0.2 0 * 400 + 800) 0 * 0.1-> g_16 = lfTri AR 800 0 * 0.1-> g_17 = lfTri AR (xLine KR 100 8000 30 DoNothing) 0 * 0.1--Drawings--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen 0.1 (mce2 (sinOsc AR 20 0) (lfCub AR 20 0))-    > plot_ugen 0.1 (mce2 (sinOsc AR 20 0) (lfPar AR 20 pi))--![](sw/hsc3/Help/SVG/lfCub.0.svg)-![](sw/hsc3/Help/SVG/lfCub.1.svg)
− Help/UGen/lfGauss.help.lhs
@@ -1,108 +0,0 @@-> import Sound.SC3 {- hsc3 -}--modulating duration--> g_01 =->     let d = xLine KR 0.1 0.001 10 DoNothing->     in lfGauss AR d 0.03 0 Loop DoNothing * 0.2--modulating width, freq 60 Hz--> g_02 =->     let w = xLine KR 0.1 0.001 10 DoNothing->     in lfGauss AR (1/60) w 0 Loop DoNothing * 0.2--modulating both: x position is frequency, y is width factor.-note the artefacts due to alisasing at high frequencies--> g_03 =->     let d = mouseX KR (1/8000) 0.1 Exponential 0.2->         w = mouseY KR 0.001 0.1 Exponential 0.2->     in lfGauss AR d w 0 Loop DoNothing * 0.1--LFGauss as amplitude modulator--> g_04 =->     let d = mouseX KR 1 0.001 Exponential 0.2->         g = lfGauss AR d 0.1 0 Loop DoNothing->         o = sinOsc AR 1000 0->     in g * o * 0.1--modulate iphase--> g_05 =->     let ph = mouseX KR (-1) 1 Linear 0.2->         g = lfGauss AR 0.001 0.2 (mce2 0 ph) Loop DoNothing->     in mix g * 0.2--for very small width we are "approaching" a dirac function--> g_06 =->     let w = sampleDur * mouseX KR 10 3000 Exponential 0.2->     in lfGauss AR 0.01 w 0 Loop DoNothing * 0.2--dur and width can be modulated at audio rate--> g_07 =->     let x = mouseX KR 2 1000 Exponential 0.2->         d = range 0.0006 0.01 (sinOsc AR x 0 * mce2 1 1.1)->         w = range 0.01 0.3 (sinOsc AR (0.5 * (mce2 1 1.1)) 0)->     in lfGauss AR d w 0 Loop DoNothing * 0.2--several frequencies and widths combined--> g_08 =->     let x = mouseX KR 1 0.07 Exponential 0.2->         y = mouseY KR 1 3 Linear 0.2->         g = lfGauss AR x (y ** mce [-1,-2 .. -6]) 0 Loop DoNothing->         o = sinOsc AR (200 * (1.3 ** mce [0..5])) 0->     in mix (g * o) * 0.1--    > withSC3 (send (n_trace [-1]))--Drawing--    > import Sound.SC3.Plot {- hsc3-plot -}-    > let plot_f tm du ph = plot_ugen1 tm (lfGauss AR du 0.12 ph Loop DoNothing)-    > plot_f 0.1 0.1 0-    > plot_f 0.1 0.1 (-1) -- shifting left-    > plot_f 0.1 0.1 2 -- moving further away from the center-    > plot_f 0.3 0.065 0 -- several grains--![](sw/hsc3/Help/SVG/lfGauss.0.svg)-![](sw/hsc3/Help/SVG/lfGauss.1.svg)-![](sw/hsc3/Help/SVG/lfGauss.2.svg)-![](sw/hsc3/Help/SVG/lfGauss.3.svg)--gabor grain (see also 'gabor_grain_ugen_graph')--> gabor =->     let b = control IR "out" 0->         f = control IR "freq" 440->         s = control IR "sustain" 1->         p = control IR "pan" 0->         a = control IR "amp" 0.1->         w = control IR "width" 0.25->         e = lfGauss AR s w 0 NoLoop RemoveSynth->         o = fSinOsc AR f (pi / 2) * e->         u = offsetOut b (pan2 o p a)->     in synthdef "gabor" u--    > import Sound.SC3.Lang.Pattern {- hsc3-lang -}--granular synthesis, modulating duration, width and pan--    > paudition (pbind [(K_instr,psynth gabor)-    >                  ,(K_freq,1000)-    >                  ,(K_legato,2)-    >                  ,(K_dur,pbrown 'α' 0.005 0.025 0.001 inf)-    >                  ,(K_param "width",pbrown 'β' 0.05 0.25 0.005 inf)-    >                  ,(K_param "pan",pbrown 'γ' (-1) 1 0.05 inf)])--granular synthesis, modulating width only--    > paudition (pbind [(K_instr,psynth gabor)-    >                  ,(K_freq,1000)-    >                  ,(K_dur,0.01)-    >                  ,(K_param "width",pgeom 0.25 0.995 1250)-    >                  ,(K_legato,2)])
− Help/UGen/lfNoise0.help.lhs
@@ -1,26 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = lfNoise0 'α' AR 1000 * 0.05--Modulate frequency.--> g_02 =->     let f = xLine KR 1000 10000 10 RemoveSynth->     in lfNoise0 'α' AR f * 0.05--Use as frequency control.--> g_03 =->     let f = lfNoise0 'α' KR 4->     in sinOsc AR (f * 400 + 450) 0 * 0.1--Drawing--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.1 (lfNoise0 'γ' AR 1000)-    > plot_ugen1 0.1 (lfNoise1 'γ' AR 1000)-    > plot_ugen1 0.1 (lfNoise2 'γ' AR 1000)--![](sw/hsc3/Help/SVG/lfNoise0.0.svg)-![](sw/hsc3/Help/SVG/lfNoise0.1.svg)-![](sw/hsc3/Help/SVG/lfNoise0.2.svg)
− Help/UGen/lfNoise1.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = lfNoise1 'α' AR 1000 * 0.05--Modulate frequency.--> g_02 =->   let f = xLine KR 1000 10000 10 RemoveSynth->   in lfNoise1 'α' AR f * 0.05--Use as frequency control.--> g_03 =->   let n = lfNoise1 'α' KR 4->       f = n * 400 + 450->   in sinOsc AR f 0 * 0.1
− Help/UGen/lfNoise2.help.lhs
@@ -1,22 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = lfNoise2 'α' AR 1000 * 0.05--Modulate frequency.--> g_02 =->     let f = xLine KR 1000 10000 10 RemoveSynth->     in lfNoise2 'α' AR f * 0.05--Use as frequency control.--> g_03 =->     let f = lfNoise2 'α' KR 4->     in sinOsc AR (f * 400 + 450) 0 * 0.1--Drawings--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.1 (lfNoise2 'α' AR 1000)--![](sw/hsc3/Help/SVG/lfNoise2.0.svg)
− Help/UGen/lfPar.help.lhs
@@ -1,1 +0,0 @@-See lfCub
− Help/UGen/lfPulse.help.lhs
@@ -1,29 +0,0 @@-Note: SC2 had no initial phase argument.--> import Sound.SC3--> g_01 = let f = lfPulse KR 3 0 0.3 * 200 + 200 in lfPulse AR f 0 0.2 * 0.1--> g_02 = let x = mouseX KR 0 1 Linear 0.2 in lfPulse AR 220 0 x * 0.1--square wave as sum of sines.-for odd partials n, amplitude is (1 / n), for even partials amplitude is 0.-phase is always 0.--> g_03 =->     let mk_freq f0 n = f0 * fromInteger n->         mk_amp n = if even n then 0 else 1 / fromInteger n->         mk_param f0 n = let m = [1,3 .. n] in zip (map (mk_freq f0) m) (map mk_amp m)->         x = midiCPS (mouseX KR 20 72 Linear 0.2)->         y = mouseY KR 0.01 0.1 Exponential 0.2->         e = xLine KR 0.01 1 20 DoNothing->         o1 = sum (map (\(fr,am) -> sinOsc AR fr 0 * am) (mk_param x 50)) * (1 - e)->         o2 = lfPulse AR x 0 0.5 * e->     in mce2 o1 o2 * y--Drawings--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.1 (lfPulse AR (line KR 100 800 0.1 DoNothing) 0 0.5)--![](sw/hsc3/Help/SVG/lfPulse.0.svg)
− Help/UGen/lfSaw.help.lhs
@@ -1,56 +0,0 @@-Note: SC2 did not have the initial phase argument.--> import Sound.SC3--> g_01 = lfSaw AR 500 1 * 0.1--Used as both Oscillator and LFO.--> g_02 = lfSaw AR (lfSaw KR 4 0 * 400 + 400) 0 * 0.1--Output range is bi-polar.--> g_03 =->     let f = mce [linLin (lfSaw KR 0.5 0) (-1) 1 200 1600, 200, 1600]->         a = mce [0.1,0.05,0.05]->     in mix (sinOsc AR f 0 * a)--saw-tooth wave as sum of sines.-for all partials n, amplitude is (1 / n).-phase is always 0.-cross-fade from sum to lfSaw.--> g_04 =->     let mk_freq f0 n = f0 * fromInteger n->         mk_amp n = 1 / fromInteger n->         mk_param f0 n = let m = [1,2 .. n] in zip (map (mk_freq f0) m) (map mk_amp m)->         x = midiCPS (mouseX KR 20 72 Linear 0.2)->         y = mouseY KR 0.01 0.1 Exponential 0.2->         e = xLine KR 0.01 1 20 DoNothing->         o1 = sum (map (\(fr,am) -> sinOsc AR fr 0 * am) (mk_param x 25)) * (1 - e)->         o2 = lfSaw AR x 0 * e->     in mce2 o1 o2 * y--as phasor input to sin function--> g_05 = sin (range 0 two_pi (lfSaw AR 440 0)) * 0.2--mixed with sin, then with distortions--> g_06 =->   let f = xLine KR 220 440 10 DoNothing->       o1 = sinOsc AR (f + mce2 0 0.7) 0->       o2 = lfSaw AR (f + mce2 0 0.7) 0 * 0.3->       o3 = cubed (distort (log (distort (o1 + o2))))->   in o3 * 0.1----Drawings--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.1 (lfSaw AR 50 0) -- ascending-    > plot_ugen1 0.002 (lfSaw AR 5000 0)--![](sw/hsc3/Help/SVG/lfSaw.0.svg)-![](sw/hsc3/Help/SVG/lfSaw.1.svg)
− Help/UGen/lfTri.help.lhs
@@ -1,29 +0,0 @@-see <http://thread.gmane.org/gmane.comp.audio.supercollider.user/84719>--> import Sound.SC3 {- hsc3 -}--> g_01 = lfTri AR 500 1 * 0.1--Used as both Oscillator and LFO.--> g_02 = lfTri AR (lfTri KR 4 0 * 400 + 400) 0 * 0.1--Multiple phases--> g_03 = let f = lfTri KR 0.4 (mce [0..3]) * 200 + 400->        in mix (lfTri AR f 0 * 0.1)--> g_04 = let x = midiCPS (mouseX KR 20 72 Linear 0.2)->            e = xLine KR 0.01 1 20 DoNothing->            o1 = triAS 25 x * (1 - e)->            o2 = lfTri AR x 0 * e->        in mce2 o1 o2 * 0.1--Drawings--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.1 (lfTri AR 40 0)-    > plot_ugen1 0.1 (lfTri AR (xLine KR 1 800 0.1 DoNothing) 0)--![](sw/hsc3/Help/SVG/lfTri.0.svg)-![](sw/hsc3/Help/SVG/lfTri.1.svg)
− Help/UGen/lfdClipNoise.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3 {- hsc3 -}--for fast x lfClipNoise frequently seems stuck, lfdClipNoise changes smoothly--> g_01 =->   let x = mouseX KR 0.1 1000 Exponential 0.2->       n = lfdClipNoise 'α' AR x->   in sinOsc AR (n * 200 + 500) 0 * 0.05--> g_02 =->   let x = mouseX KR 0.1 1000 Exponential 0.2->       n = lfClipNoise 'β' AR x->   in sinOsc AR (n * 200 + 500) 0 * 0.05--lfClipNoise quantizes time steps at high freqs, lfdClipNoise does not:--> g_03 =->   let f = xLine KR 1000 20000 10 RemoveSynth->   in lfdClipNoise 'γ' AR f * 0.05--> g_04 =->   let f = xLine KR 1000 20000 10 RemoveSynth->   in lfClipNoise 'δ' AR f * 0.05
− Help/UGen/lfdNoise0.help.lhs
@@ -1,30 +0,0 @@-> import Sound.SC3 {- hsc3 -}--for fast x LFNoise frequently seems stuck, LFDNoise changes smoothly--> g_01 = lfdNoise0 'a' AR (mouseX KR 0.1 1000 Exponential 0.2) * 0.1--> g_02 = lfNoise0 'a' AR (mouseX KR 0.1 1000 Exponential 0.2) * 0.1--silent for 2 secs before going up in freq--> g_03 = lfdNoise0 'a' AR (xLine KR 0.5 10000 3 RemoveSynth)--> g_04 = lfNoise0 'a' AR (xLine KR 0.5 10000 3 RemoveSynth)--LFNoise quantizes time steps at high freqs, LFDNoise does not:--> g_05 = lfdNoise0 'a' AR (xLine KR 1000 20000 10 RemoveSynth)--> g_06 = lfNoise0 'a' AR (xLine KR 1000 20000 10 RemoveSynth)--Drawings--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen1 0.1 (lfdNoise0 'γ' AR 1000)-    plot_ugen1 0.1 (lfdNoise1 'γ' AR 1000)-    plot_ugen1 0.1 (lfdNoise3 'γ' AR 1000)--![](sw/hsc3/Help/SVG/lfdNoise0.0.svg)-![](sw/hsc3/Help/SVG/lfdNoise0.1.svg)-![](sw/hsc3/Help/SVG/lfdNoise0.2.svg)
− Help/UGen/lfdNoise1.help.lhs
@@ -1,4 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "LFDNoise1"-> Sound.SC3.UGen.DB.ugenSummary "LFDNoise1"--See lfdNoise0
− Help/UGen/lfdNoise3.help.lhs
@@ -1,12 +0,0 @@-See lfdNoise0--Drawings--> import Sound.SC3 {- hsc3 -}--> g_01 = lfdNoise3 'α' AR (xLine AR 1000 100 0.1 DoNothing)--    > Sound.SC3.Plot.plot_ugen1 0.1 g_01--![](sw/hsc3/Help/SVG/lfdNoise3.0.svg)-
− Help/UGen/limiter.help.lhs
@@ -1,14 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "Limiter"-> Sound.SC3.UGen.DB.ugenSummary "Limiter"--> import Sound.SC3--example signal-> let z = let i = impulse AR 8 0 * lfSaw KR 0.25 0 * (-0.6) + 0.7->         in decay2 i 0.001 0.3 * fSinOsc AR 500 0--unprocessed-> audition (out 0 z)--limited-> audition (out 0 (limiter z 0.4 0.01))
− Help/UGen/linCongC.help.lhs
@@ -1,28 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.Common.Math.Noise {- hsc3 -}--Default SC3 initial parameters.--> g_00 = linCongC AR 22050 1.1 0.13 1 0 * 0.2--> g_01 =->   let x = mouseX KR 20 sampleRate Linear 0.1->   in linCongC AR x 1.1 0.13 1 0 * 0.2--Randomly modulate parameters.--> g_02 =->   let fr = [1,0.1,0.1,0.1]->       [n0,n1,n2,m] = map (\(i,j) -> lfNoise2 i KR j) (zip ['α'..] fr)->       f = n0 * 1e4 + 1e4->       a = n1 * 0.5 + 1.4->       c = n2 * 0.1 + 0.1->   in linCongC AR f a c m 0 * 0.2--Haskell implementation of equation.--> linCong_hs a c m = iterate (linCong_f a c m) 0--    import Sound.SC3.Plot {- hsc3-plot -}-    plotTable1 (take 600 (linCong_hs 1.1 0.13 1.0))-    plot_ugen_nrt (600,1) 1.0 (linCongC AR 600 1.1 0.13 1.0 0.0)
− Help/UGen/linCongL.help.lhs
@@ -1,1 +0,0 @@-See linCongC
− Help/UGen/linCongN.help.lhs
@@ -1,1 +0,0 @@-See linCongC
− Help/UGen/linExp.help.lhs
@@ -1,29 +0,0 @@-> import Sound.SC3 {- hsc3 -}--{var mod = SinOsc.kr(Line.kr(1, 10, 10)); SinOsc.ar(mod * 400 + 500) * 0.1}.play--> g_01 =->   let mod = sinOsc KR (line KR 1 10 10 DoNothing) 0->   in sinOsc AR (mod * 400 + 500) 0 * 0.1--{var mod = SinOsc.kr(Line.kr(1, 10, 10)); SinOsc.ar(LinExp.kr(mod, -1,1, 100, 900)) * 0.1}.play--> g_02 =->   let mod = sinOsc KR (line KR 1 10 10 DoNothing) 0->   in sinOsc AR (linExp mod (-1) 1 100 900) 0 * 0.1--> g_03 =->     let f = linExp (mouseX KR 0 1 Linear 0.2) 0 1 440 660->     in sinOsc AR f 0 * 0.1--The destination range may be k-rate.--> g_04 =->     let x = mouseX KR 0 1 Linear 0.2->         y = mouseY KR 220 440 Linear 0.2->         f = linExp x 0 1 y 660->     in sinOsc AR f 0 * 0.1--i-rate...--> g_05 = sinOsc AR (linExp (rand 'α' 0 1) 0 1 220 440) 0 * 0.1
− Help/UGen/linLin.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3 {- hsc3 -}--linLin is a function for writing a MulAdd UGen.--> g_01 =->     let f = linLin (mouseX KR 0 1 Linear 0.2) 0 1 440 660->     in sinOsc AR f 0 * 0.1--The destination range may be k-rate.--> g_02 =->     let x = mouseX KR 0 1 Linear 0.2->         y = mouseY KR 220 440 Linear 0.2->         f = linLin x 0 1 y 660->     in sinOsc AR f 0 * 0.1--Modulating source and destination values.--> g_03 =->     let n = lfNoise2 'α' AR 80->         x = mouseX KR 200 8000 Linear 0.2->         y = mouseY KR 200 8000 Linear 0.2->         f = linLin n (sinOsc KR 0.2 0) (sinOsc KR 0.2543 0) x y->     in sinOsc AR f 0 * 0.1
− Help/UGen/linPan2.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = pinkNoise 'α' AR->     in linPan2 n (fSinOsc KR 2 0) 0.1--> g_02 = linPan2 (fSinOsc AR 800 0) (fSinOsc KR 3 0) 0.1
− Help/UGen/linRand.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let f = linRand 'α' 200.0 10000.0 (mce [-1, 1])->       e = line KR 0.4 0 0.01 RemoveSynth->   in fSinOsc AR f 0 * e
− Help/UGen/linXFade2.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = linXFade2 (saw AR 440) (sinOsc AR 440 0) (lfTri KR 0.1 0) 0.1--> f_01 ty = ty->           (fSinOsc AR 800 0 * 0.2)->           (pinkNoise 'α' AR * 0.2)->           (fSinOsc KR 0.5 0)->           1.0--> g_02 = f_01 linXFade2--> g_03 = f_01 xFade2
− Help/UGen/line.help.lhs
@@ -1,18 +0,0 @@-Note: SC3 reorders the mul and add inputs to precede the doneAction input.--> import Sound.SC3 {- hsc3 -}--> g_01 =->   let f = line KR 200 17000 5 RemoveSynth->   in sinOsc AR f 0 * 0.1--Demonstrate RemoveGroup done-action.--    > import Sound.OSC {- hosc -}-    > withSC3 (sendMessage (g_new [(10,AddToTail,1)]))--> g_02 =->    let f = line KR 200 (mce2 209 211) 5 RemoveGroup->    in sinOsc AR f 0 * 0.1--    > audition_at (-1,AddToTail,10,[]) (out 0 g_02)
− Help/UGen/linen.help.lhs
@@ -1,11 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let e = linen (impulse KR 2 0) 0.01 0.6 0.4 DoNothing->     in e * sinOsc AR 440 0 * 0.1--> g_02 =->     let x = mouseX KR (-1) 1 Linear 0.1->         y = mouseY KR 0.01 0.25 Linear 0.1->         e = linen x 1 y 1.0 DoNothing->     in sinOsc AR 440 0 * e
− Help/UGen/localBuf.help.lhs
@@ -1,80 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Allocate a buffer local to the synthesis graph, 1-channel, 2048--> g_01 =->     let nc = 1->         nf = 2048->         buf = localBuf 'α' nc nf->         f = fft' buf (whiteNoise 'β' AR)->         c = pv_BrickWall f (sinOsc KR 0.1 0 * 0.75)->     in ifft' c * 0.1--Variant with two local buffers--> g_02 =->     let dup (p,q) f = mce2 (f p) (f q)->         n = dup ('α','β') (\z -> whiteNoise z AR)->         b = dup ('γ','δ') (\z -> localBuf z 1 2048)->         f = fft' b n->         c = pv_BrickWall f (sinOsc KR (mce2 0.1 0.11) 0 * 0.75)->     in ifft' c * 0.1--Not clearing the buffer accesses old data, slowly overwrite data with noise--> g_03 =->     let dup (p,q) f = mce2 (f p) (f q)->         b = localBuf 'α' 2 2048->         nf = bufFrames KR b->         x = mouseX KR 1 2 Linear 0.2->         r = playBuf 2 AR b x 1 0 Loop DoNothing * 0.1->         wr p i = bufWr b (linLin p (-1) 1 0 nf) Loop i->         n = dup ('β','γ') (\z -> whiteNoise z AR)->         ph = lfNoise0 'δ' AR 530->     in mrg2 r (wr ph n)--bufCombC needs no clearing, because the delay line is filled by the ugen--> g_04 =->     let dup (p,q) f = mce2 (f p) (f q)->         d = dup ('α','β') (\z -> dust z AR 1)->         n = whiteNoise 'γ' AR->         z = decay d 0.3 * n->         l = xLine KR 0.0001 0.01 20 DoNothing->         sr = sampleRate->         b = dup ('δ','ε') (\z -> localBuf z 2 sr)->     in bufCombC b z l 0.2--asLocalBuf combines localBuf and setBuf--> g_05 =->     let b = asLocalBuf 'α' [2,1,5,3,4,0]->         x = mouseX KR 0 (bufFrames KR b) Linear 0.2->         f = indexL b x * 100 + 40->     in saw AR (f * mce2 1 1.1) * 0.1--detectIndex example using local buffer--> g_06 =->     let b = asLocalBuf 'α' [2,3,4,0,1,5]->         n = bufFrames KR b->         x = floorE (mouseX KR 0 n Linear 0.1)->         i = detectIndex b x->     in sinOsc AR (linExp i 0 n 200 700) 0 * 0.1--degreeToKey example ('modal space') using local buffer--> g_07 =->     let n = lfNoise1 'α' KR (mce [3,3.05])->         x = mouseX KR 0 15 Linear 0.1->         b = asLocalBuf 'β' [0,2,3.2,5,7,9,10]->         k = degreeToKey b x 12->         mk_c bf = let f0 = midiCPS (bf + k + n * 0.04)->                       o = sinOsc AR f0 0 * 0.1->                       f1 = midiCPS (mce [48,55])->                       t = lfPulse AR f1 0.15 0.5->                       f2 = midiCPS (sinOsc KR 0.1 0 * 10 + bf)->                       d = rlpf t f2 0.1 * 0.1->                       m = o + d->                   in combN m 0.31 0.31 2 + m->     in (mk_c 48 + mk_c 72) * 0.25
− Help/UGen/localIn.help.lhs
@@ -1,36 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> noise_signal =->     let e = decay (impulse AR 0.3 0) 0.1->     in whiteNoise 'α' AR * e * 0.2--> outside_world = soundIn 0--> ping_pong z =->     let a1 = localIn 2 AR 0 + mce [z,0]->         a2 = delayN a1 0.2 0.2->         a3 = mceEdit reverse a2 * 0.8->     in mrg [z + a2,localOut a3]--> g_01 = ping_pong noise_signal-> g_02 = ping_pong outside_world--> rotate2_mce z p =->     case mceChannels z of->       [l,r] -> rotate2 l r p->       _ -> error "rotate2_mce"--> tape_delay dt fb z =->     let a = amplitude KR (mix z) 0.01 0.01->         z' = z * (a >** 0.02)->         l0 = localIn 2 AR 0->         l1 = onePole l0 0.4->         l2 = onePole l1 (-0.08)->         l3 = rotate2_mce l2 0.2->         l4 = delayN l3 dt dt->         l5 = leakDC l4 0.995->         l6 = softClip ((l5 + z') * fb)->     in mrg2 (l6 * 0.1) (localOut l6)--> g_03 = tape_delay 0.35 1.20 noise_signal-> g_04 = tape_delay 0.25 1.25 outside_world
− Help/UGen/localOut.help.lhs
@@ -1,22 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Resonator, must subtract blockSize for correct tuning--> g_01 =->     let p = localIn 1 AR 0->         i = impulse AR 1 0->         d = delayC (i + (p * 0.995)) 1 (recip 440 - recip controlRate)->     in mrg [offsetOut 0 p,localOut d]--Compare with oscillator.--> g_02 = sinOsc AR 440 0 * 0.2--ping pong--> g_03 =->     let n = decay (impulse AR 0.3 0) 0.1 * whiteNoise 'α' AR * 0.2->         l = localIn 2 AR 0 + mce2 n 0->         d = delayN l 0.2 0.2->         o = localOut (mceReverse d * 0.8)->     in mrg2 d o
− Help/UGen/logistic.help.lhs
@@ -1,18 +0,0 @@-> import Sound.SC3 {- hsc3 -}--SC3 default parameters--> g_00 = logistic AR 3 1000 0.5--> g_01 = logistic AR 3.95 sampleRate 0.5--Onset of chaos--> g_02 = logistic AR (line KR 3.55 3.6 5 DoNothing) 1000 0.01--Mouse control--> g_03 =->   let x = mouseX KR 3 3.99 Linear 0.1->       y = mouseY KR 10 10000 Exponential 0.1->   in logistic AR x y 0.25 * 0.5
− Help/UGen/loopBuf.help.lhs
@@ -1,59 +0,0 @@-    mapM_ Sound.SC3.UGen.DB.ugenSummary ["LoopBuf","PlayBuf"]--> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--Read audio file into memory--> fn_01 = "/home/rohan/rd/j/2019-04-21/FAIRLIGHT/IIX/REEDS/clarmdhi.snd"--> ld fn b = withSC3 (async (b_allocRead b fn 0 0))--Simple sampler instrument--> lb0 =->     let ou = control KR "out" 0->         bf = control KR "bufnum" 0->         rt = control KR "rate" 1->         gl = control KR "glide" 0->         gt = control KR "gate" 1->         lr = control KR "loopRel" 0->         sp = control KR "startPos" 0->         sl = control KR "startLoop" 0 -- FRAME->         el = control KR "endLoop" 0 -- FRAME->         ip = control KR "ipol" 2->         am = control KR "amp" 1->         rt' = lag rt gl * bufRateScale KR bf->         e = let d = envADSR 0.1 0.2 1 2 1 (EnvNum (-4)) 0->             in envGen AR gt 1 0 1 RemoveSynth d->         s = X.loopBuf 1 AR bf rt' (gt + lr) sp sl el ip->     in out ou (s * e * am)--> lb0s :: Synthdef-> lb0s = synthdef "lb0" lb0--    ld fn_01 0-    withSC3 (async (d_recv lb0s))--    import Sound.OSC {- hosc -}-    let send = sendMessage-    let run = withSC3 . send--    audition (sinOsc AR (midiCPS 69) 0 * 0.2)-    run (s_new "lb0" 3000 AddToTail 1 [("bufnum",0),("amp",0.1),("startLoop",5376),("endLoop",5504)])--    run (n_set1 3000 "amp" 0.25) -- louder-    run (n_set1 3000 "rate" (-1)) -- backwards-    run (n_set1 3000 "rate" 1) -- forwards-    run (n_set 3000 [("startLoop",11000),("endLoop",13000)]) -- change loop points-    run (n_set1 3000 "glide" 5) -- 5 second glide-    run (n_set1 3000 "rate" 2) -- up an octave-    run (n_set1 3000 "rate" (-1)) -- backwards-    run (n_set1 3000 "rate" 1) -- back to normal-    run (n_set1 3000 "ipol" 1) -- no interpolation-    run (n_set1 3000 "ipol" 2) -- linear interpolation-    run (n_set1 3000 "ipol" 4) -- cubic interpolation-    run (n_set1 3000 "gate" 0) -- release gate to hear post-loop--    run (s_new "lb0" 3000 AddToTail 1 [("bufnum",0),("startLoop",5000),("endLoop",15000)])-    run (n_set 3000 [("loopRel",1),("gate",0)]) -- release instrument without post-loop
− Help/UGen/lorenzL.help.lhs
@@ -1,32 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Default parameters--> g_00 = lorenzL AR (sampleRate / 2) 10 28 2.667 0.05 0.1 0 0 * 0.2--Vary frequency--> g_01 =->     let x = mouseX KR 20 sampleRate Linear 0.1->     in lorenzL AR x 10 27 2.667 0.05 0.1 0 0 * 0.3--Randomly modulate params--> g_02 =->     let n e = lfNoise0 e KR 0.5->         n0 = mul_add (n 'α') 2 10->         n1 = mul_add (n 'β') 20 38->         n2 = mul_add (n 'γ') 1.5 2->     in lorenzL AR sampleRate n0 n1 n2 0.05 0.1 0 0 * 0.2--As frequency control--> g_03 =->     let x = mouseX KR 1 200 Linear 0.1->         n = lorenzL AR x 10 28 2.667 0.05 0.1 0 0->     in sinOsc AR (lag n 0.003 * 800 + 900) 0 * 0.4--> g_04 =->     let x = mouseX KR 1 200 Linear 0.1->         n = lorenzL AR x 10 28 2.667 0.05 0.1 0 0->     in impulse AR (n * 4 + 8) 0 * 0.4
− Help/UGen/lorenzTrig.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> f_01 minfreq maxfreq s b =->   let r = 28->       h = 0.02->       x0 = 0.090879182417163->       y0 = 2.97077458055->       z0 = 24.282041054363->   in X.lorenzTrig AR minfreq maxfreq s r b h x0 y0 z0--> f_02 = f_01 11025 44100--> g_01 = f_02 10 2.6666667--Randomly modulate params--> g_02 = f_02 (lfNoise0 'α' KR 1 * 2 + 10) (lfNoise0 'β' KR 1 * 1.5 + 2)--as a frequency control--> g_03 =->   let n = f_01 1 8 10 28->   in sinOsc AR (decay n 1.0 * 800 + 900) 0 * 0.4
− Help/UGen/loudness.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Assume hop of half fftsize--    > withSC3 (async (b_alloc 10 1024 1))--> g_01 =->     let x = mouseX KR 0.001 0.1 Exponential 0.2->         i = sinOsc AR 1000 0 * x->         f = fft' 10 i->         l = loudness f 0.25 6->     in sinOsc AR (mce2 900 (l * 300 + 600)) 0 * 0.1
− Help/UGen/lpcAnalyzer.help.lhs
@@ -1,18 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 = X.lpcAnalyzer (soundIn 0) (impulse AR 440 0 * 0.2) 256 50 0 0.999 0--> g_02 = X.lpcAnalyzer (soundIn 0) (impulse AR 440 0 * 0.2) 256 50 0 0.999 1--> g_03 =->   let x = mouseX KR 1 128 Linear 0.2->   in X.lpcAnalyzer (soundIn 0) (impulse AR 440 0 * 0.2) 128 x 0 0.999 0--> g_04 =->   let x = mouseX KR 1 128 Linear 0.2->   in X.lpcAnalyzer (soundIn 0) (impulse AR 440 0 * 0.2) 1024 x 0 0.999 1--> g_05 =->   let x = mouseX KR 1 256 Linear 0.2->   in X.lpcAnalyzer (soundIn 0) (whiteNoise 'α' AR * 0.1) 256 x 0 0.999 0
− Help/UGen/lpf.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let f = xLine KR 0.7 300 20 RemoveSynth->         ff = fSinOsc KR f 0 * 3600 + 4000->     in lpf (saw AR 200 * 0.1) ff--Control rate filtering.--> g_02 =->     let ctl = lpf (lfPulse KR 8 0 0.5) (mouseX KR 2 50 Exponential 0.1)->     in sinOsc AR (ctl * 200 + 400) 0 * 0.1
− Help/UGen/lpz1.help.lhs
@@ -1,7 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "LPZ1"-> Sound.SC3.UGen.DB.ugenSummary "LPZ1"--> import Sound.SC3--> let n = whiteNoise 'α' AR * 0.1-> in audition (out 0 (mce2 n (lpz1 n)))
− Help/UGen/lpz2.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let n = whiteNoise 'α' AR->   in lpz2 (n * 0.25)
− Help/UGen/lti.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->     let a = [0.02,-0.01]->         b = [1,0.7,0,0,0,0,-0.8,0,0,0,0,0.9,0,0,0,-0.5,0,0,0,0,0,0,0.25,0.1,0.25]->         z = pinkNoise 'α' AR * 0.1->     in X.lti AR z (asLocalBuf 'β' a) (asLocalBuf 'γ' b)
− Help/UGen/mantissaMask.help.lhs
@@ -1,7 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "MantissaMask"-> Sound.SC3.UGen.DB.ugenSummary "MantissaMask"--> import Sound.SC3--> let s = sinOsc AR (sinOsc KR 0.2 0 * 400 + 500) 0 * 0.4-> in audition (out 0 (mantissaMask s 3))
− Help/UGen/max.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--q modulates and envelopes p--> g_01 =->     let p = fSinOsc AR 500 0 * 0.25->         q = fSinOsc AR 0.5 0->     in p `max` q
− Help/UGen/median.help.lhs
@@ -1,26 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "Median"-> Sound.SC3.UGen.DB.ugenSummary "Median"--> import Sound.SC3--Signal with impulse noise.--> let n = dust2 'α' AR 100-> in audition (out 0 (median 3 (saw AR 500 * 0.1 + n * 0.9)))--The median length can be increased for longer duration noise.--> let n = dust2 'α' AR 100-> in audition (out 0 (median 5 (saw AR 500 * 0.1 + lpz1 (n * 0.9))))--Long Median filters begin chopping off the peaks of the waveform--> let x = sinOsc AR 1000 0 * 0.2-> in audition (out 0 (mce [x, median 31 x]))--Another noise reduction application. Use Median filter for high-frequency noise.  Use LeakDC for low frequency noise.--> let {n = whiteNoise 'α' AR->     ;s = median 31 (n * 0.1 + sinOsc AR 800 0 * 0.1)}-> in audition (out 0 (leakDC s 0.9))
− Help/UGen/membraneCircle.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--Excite the mesh with some pink noise, triggered by an-impulse generator.  mouseX is tension and impulse frequency,-mouseY is duration of excitation, release-time and amplitude.--> g_01 =->   let x = mouseX KR 0 1 Linear 0.2->       y = mouseY KR 1e-9 1 Exponential 0.2->       loss = linLin y 0 1 0.999999 0.999->       wobble = sinOsc KR 2 0->       tension = linLin x 0 1 0.01 0.1 + (wobble * 0.0001)->       p = envPerc 0.0001 y->       tr = impulse KR (linLin x 0 1 3 9) 0->       e = envGen KR tr (linLin y 0 1 0.05 0.25) 0 0.1 DoNothing p->   in membraneCircle AR (pinkNoise 'α' AR * e) tension loss
− Help/UGen/membraneHexagon.help.lhs
@@ -1,1 +0,0 @@-See membraneCircle
− Help/UGen/metro.help.lhs
@@ -1,15 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 = X.metro AR 60 1--> g_02 =->   let b = xLine KR 60 120 5 DoNothing->       m = X.metro KR b 1->       o = sinOsc AR 440 0 * 0.1->   in decay m 0.2 * o--> g_03 =->   let b = range 30 240 (lfNoise2 'α' KR 0.2)->       n = dseq 'β' dinf (mce [1,0.25,0.5,0.25])->   in decay (X.metro KR b n) 0.2 * sinOsc AR 440 0 * 0.1
− Help/UGen/midEQ.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let f = midiCPS (fSinOsc KR 1 0 * 24 + 84)->     in midEQ (saw AR 200 * 0.2) f 0.3 12--> g_02 =->     let i = pinkNoise 'α' AR * 0.2 + sinOsc AR 600 0 * 0.1->         f = sinOsc KR 0.2 (0.5 * pi) * 2 + 600->     in midEQ i f 0.01 (-24)
− Help/UGen/mix.help.lhs
@@ -1,9 +0,0 @@-> import Sound.SC3 {- hsc3 -}--optimized summation (see sum_opt), ie. Sum3--> g_01 = mix (mce [pinkNoise 'α' AR,fSinOsc AR 801 0,lfSaw AR 40 0]) * 0.1--and Sum4--> g_02 = mix (sinOsc AR (mce (take 10 (iterate (* 2) 36))) 0) * 0.05
− Help/UGen/mod.help.lhs
@@ -1,3 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = fSinOsc AR 100 4 `modE` 1 * 0.1
− Help/UGen/moogFF.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = whiteNoise 'α' AR->         y = mouseY KR 100 10000 Exponential 0.1->         x = mouseX KR 0 4 Linear 0.1->     in moogFF (n * 0.1) y x 0--Note distortion at high gain.--> g_02 =->     let x = mouseX KR 100 20000 Exponential 0.1->         y = mouseY KR 0.1 4.0 Linear 0.1->         i = mix (saw AR (mce [0.99, 1, 1.01] * 440)) * 0.3->     in moogFF i x y 0--> g_03 =->     let n = lfNoise0 'α' KR 0.43->         p = pulse AR (mce [40, 121]) (mce [0.3, 0.7])->         f0 = linLin n 0 1 0.001 2.2->         f = linLin (sinOsc KR f0 0) (-1) 1 30 4200->         y = mouseY KR 1 4 Linear 0.1->     in moogFF p f (0.83 * y) 0
− Help/UGen/moogLadder.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let o = mix (lfSaw AR (mce2 120 180) 0 * 0.33)->       cf = linExp (lfCub KR 0.1 (0.5 * pi)) (-1) 1 180 8500->   in X.moogLadder o cf 0.75--> g_02 =->   let n = dust 'α' AR 3->   in X.moogLadder n 2000 (mouseY KR 0 1 Linear 0.2)-
− Help/UGen/moogVCF.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--> g_01 =->   let o = mix (lfSaw AR (mce2 120 180) 0 * 0.33)->       cf = linExp (lfCub KR 0.1 (0.5 * pi)) (-1) 1 180 8500->   in moogVCF o cf 0.75--> g_02 =->   let o = pulse AR (mce2 40 121) (mce2 0.3 0.7)->       cf = range 30 4200 (sinOsc KR (range 0.001 2.2 (lfNoise0 'α' KR 0.42)) 0)->   in moogVCF o cf 0.8
− Help/UGen/mostChange.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = lfNoise0 'α' KR 1->         x = mouseX KR 200 300 Linear 0.1->         f = mostChange (n * 400 + 900) x->     in sinOsc AR f 0 * 0.1
− Help/UGen/mouseButton.help.lhs
@@ -1,9 +0,0 @@-> import Sound.SC3 {- hsc3 -}--As amplitude envelope--> g_01 = sinOsc AR 800 0 * mouseButton KR 0 0.1 0.1--There is a variant that randomly presses the button.--> g_02 = sinOsc AR 800 0 * mouseButton' KR 0 0.1 0.1
− Help/UGen/mouseX.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3--> e_01 = map from_warp [Linear,Exponential]--    e_01 == [0,1]--Frequency control--> g_01 =->     let x = mouseX KR 40 10000 Exponential 0.2->     in sinOsc AR x 0 * 0.1--There is a variant with equal arguments but random traversal.--> g_02 =->     let x = mouseX' KR 40 10000 Exponential 0.2->     in sinOsc AR x 0 * 0.1
− Help/UGen/mouseY.help.lhs
@@ -1,15 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Frequency at X axis and amplitude at Y axis.--> g_01 =->     let freq = mouseX KR 20 2000 Exponential 0.1->         ampl = mouseY KR 0.01 0.1 Linear 0.1->     in sinOsc AR freq 0 * ampl--There is a variant with equal arguments but a random traversal.--> g_02 =->     let freq = mouseX' KR 20 2000 Exponential 0.1->         ampl = mouseY' KR 0.01 0.1 Linear 0.1->     in sinOsc AR freq 0 * ampl
− Help/UGen/mrg2.help.lhs
@@ -1,30 +0,0 @@-> import Sound.SC3 {- hsc3 -}--mrg2 defines a node indicating a multiple root graph.--> g_01 =->   let l = out 0 (sinOsc AR 300 0 * 0.1)->       r = out 1 (sinOsc AR 900 0 * 0.1)->   in mrg2 l r--there is a leftmost rule, so that mrg nodes need not-be terminal.--> g_02 =->   let l = sinOsc AR 300 0 * 0.1->       r = out 1 (sinOsc AR 900 0 * 0.1)->   in mrg2 l r--the leftmost node may be an mce node--> g_03 =->   let l = sinOsc AR (mce2 300 400) 0 * 0.1->       r = out 1 (sinOsc AR 900 0 * 0.1)->   in mrg2 l r--the implementation is not thorough--> g_04 =->   let l = sinOsc AR (mce2 300 400) 0 * 0.1->       r = out 1 (sinOsc AR 900 0 * 0.1)->   in out 0 (mrg2 l r + mrg2 l r)
− Help/UGen/mul.help.lhs
@@ -1,23 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Operator.*"-    :t (*)--> import Sound.SC3 {- hsc3 -}--> g_01 = sinOsc AR 440 0 * 0.15--Creates a beating effect (subaudio rate).--> g_02 = fSinOsc KR 10 0 * pinkNoise 'α' AR * 0.5--Ring modulation.--> g_03 =->     let p = sinOsc AR (xLine KR 100 1001 10 DoNothing) 0->         q = syncSaw AR 100 200->     in p * q * 0.25--Optimises identity--> g_04 = sinOsc AR 440 0 * 1 / 10--> g_05 = 1 * sinOsc AR 440 0 / 10
− Help/UGen/mulAdd.help.lhs
@@ -1,33 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = mulAdd (sinOsc AR 440 0) 0.1 0.05--These should both optimise to the same graph...--> g_02 = sinOsc AR 440 0 * 0.1 + 0.05--> g_03 = 0.05 + sinOsc AR 440 0 * 0.1--    > putStrLn $ unlines (map synthstat [g_01,g_02,g_03])--The order of the multiplier inputs is significant regards multi-rate inputs?-sclang re-orders these if required.-g_04 CRASHES scsynth.--> g_04 = mulAdd 0.1 (sinOsc AR 440 0) 0.05--    {MulAdd(0.1,SinOsc.ar(440,0),0.05)}.draw--> g_05 = 0.05 + 0.1 * sinOsc AR 440 0--    {0.05 + (0.1 * SinOsc.ar(440,0))}.draw--NOTE: mulAdd with I-RATE at input 0 and K-RATE thereafter CRASHES--> g_06 = sinOsc AR (mulAdd (control IR "x" 110) (control KR "y" 2) (control IR "z" 110)) 0 * 0.1--all AR inputs optimise ordinarily--> g_07 = (sinOsc AR 440 0 * sinOsc AR 441 0 + sinOsc AR 442 0) * 0.1--> g_08 = (sinOsc AR 440 0 + sinOsc AR 441 0 * sinOsc AR 442 0) * 0.1
− Help/UGen/nRand.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let n = nRand 'α' 1200.0 4000.0 (mce [2,5])->       e = line KR 0.2 0 0.1 RemoveSynth->   in fSinOsc AR n 0 * e
− Help/UGen/nestedAllpassC.help.lhs
@@ -1,61 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> nestedAllpassL_def s =->   let d1 = 0.036->       d2 = 0.030->   in X.nestedAllpassL s d1 d1 0.08 d2 d2 0.3--> doubleNestedAllpassL_def s =->   let d1 = 0.0047->       d2 = 0.022->       d3 = 0.0084->   in X.doubleNestedAllpassL s d1 d1 0.15 d2 d2 0.25 d3 d3 0.3--> f_01 nc s =->   let fb = localIn nc AR 0->       lp0 = lpf s 6000->       lp1 = delayL lp0 0.024 0.024->       ap1 = doubleNestedAllpassL_def (lp1 + (0.5 * fb))->       ap2 = nestedAllpassL_def ap1->       revout = ap1 * 0.5 + ap2 * 0.6->       locout = localOut (bpf (revout * 0.5) 1600 0.5)->   in mrg2 revout locout--> f_02 nc s =->   let fb = localIn nc AR 0->       lp = lpf s 6000->       ap1 = X.doubleNestedAllpassL (lp + (0.5 * fb)) 0.0047 0.0047 0.25 0.0083 0.0083 0.35 0.022 0.022 0.45->       ap2 = delayL (X.nestedAllpassL (delayL ap1 0.05 0.05) 0.03 0.03 0.25952 0.03 0.03 0.3) 0.067 0.067->       ap3 = X.nestedAllpassL (lp + (delayL ap2 0.015 0.015 * 0.4)) 0.0292 0.0292 0.25 0.0098 0.0098 0.35->       revout = sum_opt [ap1,ap2,ap3] * 0.5->       locout = localOut (bpf (revout * 0.4) 1000 0.5)->   in mrg2 revout locout--> f_03 nc s =->   let fb = localIn nc AR 0->       lp = lpf s 4000->       ap1 = allpassL (lp + (0.5 * fb)) 0.008 0.008 0.0459->       ap2 = delayL (allpassL ap1 0.012 0.012 0.06885) 0.004 0.004->       ap3 = delayL (X.nestedAllpassL (delayL ap2 0.017 0.017) 0.025 0.025 0.5 0.062 0.062 0.25) 0.031 0.031->       ap4 = X.doubleNestedAllpassL (delayL ap3 0.003 0.003) 0.120 0.120 0.5 0.076 0.076 0.25 0.030 0.030 0.25->       revout = sum_opt [ap4 * 0.8,ap3 * 0.8,ap2 * 1.5]->       locout = localOut (bpf (revout * 0.4) 1000 0.5)->   in mrg2 revout locout--> g_00 = soundIn 0--> g_01 =->   let sig = soundIn 0->       rev = f_01 2 sig->   in 0.5 * rev + sig--> g_02 =->   let sig = soundIn 0->       rev = f_02 2 sig->   in 0.5 * rev + sig--> g_03 =->   let sig = soundIn 0->       rev = f_03 2 sig->   in 0.5 * rev + sig
− Help/UGen/nhHall.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let in1 = soundIn 0->       in2 = soundIn 1->       rt60 = mouseX KR 0.1 10.0 Linear 0.1->   in X.nhHall in1 in2 rt60 0.5 200 0.5 4000 0.5 0.5 0.5 0.2 0.3
− Help/UGen/nodeId.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--NodeId, except that negative nodeId are not reported.--> g_01 = sinOsc AR (mce2 (-100) (nodeID IR * 100)) 0 * 0.1--    audition_at (-1,AddToHead,1,[]) g_01-    audition_at (8,AddToHead,1,[]) g_01
− Help/UGen/normalizer.help.lhs
@@ -1,9 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "Normalizer"-> Sound.SC3.UGen.DB.ugenSummary "Normalizer"--> import Sound.SC3--> let {s = fSinOsc AR 500 0->     ;t = impulse AR 8 (lfSaw KR 0.25 (-0.6) * 0.7)->     ;z = decay2 t 0.001 0.3 * s}-> in audition (out 0 (mce [z, normalizer z 0.4 0.01]))
− Help/UGen/numBuffers.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--the number of audio buffers available at the server (by default 1024)--> g_01 = poll (impulse KR 1 0) numBuffers 0 (label "numBuffers")--> g_02 = let f = 110 + numBuffers in sinOsc AR f 0 * 0.1
− Help/UGen/numRunningSynths.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--each concurrent audition increases oscillator frequency--> g_01 = sinOsc AR (numRunningSynths * 200 + 400) 0 * 0.1
− Help/UGen/offsetOut.help.lhs
@@ -1,66 +0,0 @@-> import Sound.OSC {- hosc -}-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let a = offsetOut 0 (impulse AR 5 0)->         b = out 0 (sinOsc AR 60 0 * 0.1)->     in mrg [a,b]--> g_02 =->     let a = out 0 (impulse AR 5 0)->         b = out 0 (sinOsc AR 60 0 * 0.1)->     in mrg [a,b]--Phase cancellation, the `offsetOut` at bus 0 should cancel, the `out` at-bus 1 doesn't (or at least is exceedingly unlikely to).--> sy_01 sr =->     let f = sr / 100->         o = sinOsc AR (constant f) 0 * 0.2->     in synthdef "sy_01" (mrg [offsetOut 0 o,out 1 o])--> bnd_01 sr t =->     let latency = 0.2->         c = 100 / sr {- recip f -}->         m = s_new "sy_01" (-1) AddToHead 1 []->         p = bundle (t + latency) [m]->         q = bundle (t + latency + c/2) [m]->     in [p,q]--> proc_01 :: Transport m => m ()-> proc_01 = do->   sr <- serverSampleRateActual->   _ <- async (d_recv (sy_01 sr))->   t <- time->   mapM_ sendBundle (bnd_01 sr t)--    > withSC3 proc_01--The cancellation isn't completely reliable though.  In supercollider language it seems-to be better, though these _should_ be equivalent...--    Routine(-    {var sr = s.actualSampleRate-    ;var f = sr / 100-    ;var c = 1 / f-    ;var g = {var o = SinOsc.ar(f,0) * 0.2; OffsetOut.ar(0,o); Out.ar(1,o)}-    ;var sy = SynthDef("g",g)-    ;var m = ["/s_new", "g", -1, 0, 1]-    ;var latency = 0.2-    ;sy.send(s)-    ;s.sync-    ;s.sendBundle(latency,m)-    ;s.sendBundle(latency + (c/2),m)}).play--To see/hear scheduler clock and sample clock drift:--    Routine(-    {var g = {OffsetOut.ar(0,Saw.ar(400) * EnvGen.kr(Env.perc, doneAction: 2) * 0.2)}-    ;var h = {OffsetOut.ar(1,Saw.ar(800) * Decay2.ar(Impulse.ar(1)) * 0.2)}-    ;var t_delay = 0.25-    ;SynthDef("g",g).send(s)-    ;SynthDef("h",h).send(s)-    ;s.sync-    ;s.sendBundle(t_delay,["/s_new", "h", -1, 0, 1])-    ;inf.do({s.sendBundle(t_delay,["/s_new", "g", -1, 0, 1]); 1.0.wait})}).play-
− Help/UGen/onePole.help.lhs
@@ -1,14 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "OnePole"-> Sound.SC3.UGen.DB.ugenSummary "OnePole"--> import Sound.SC3--> let n = whiteNoise 'α' AR-> in audition (out 0 (onePole (n * 0.5) 0.95))--> let n = whiteNoise 'α' AR-> in audition (out 0 (onePole (n * 0.5) (-0.95)))--> let {n = whiteNoise 'α' AR->     ;c = line KR (-0.99) 0.99 10 RemoveSynth}-> in audition (out 0 (onePole (n * 0.5) c))
− Help/UGen/oneZero.help.lhs
@@ -1,14 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "OneZero"-> Sound.SC3.UGen.DB.ugenSummary "OneZero"--> import Sound.SC3--> let n = whiteNoise 'α' AR-> in audition (out 0 (oneZero (n * 0.5) 0.5))--> let n = whiteNoise 'α' AR-> in audition (out 0 (oneZero (n * 0.5) (-0.5)))--> let {n = whiteNoise 'α' AR->     ;c = line KR (-0.5) 0.5 10 RemoveSynth}-> in audition (out 0 (oneZero (n * 0.5) c))
− Help/UGen/onsets.help.lhs
@@ -1,40 +0,0 @@-> import Sound.SC3 {- hsc3 -}--    > withSC3 (async (b_alloc 10 512 1))--> f_01 t = t2a t 0--> f_02 t =->     let s = sinOsc AR 440 0 * 0.2->         e = envGen KR t 1 0 1 DoNothing (envPerc 0.001 0.1)->     in s * e--> f_03 f =->     let x = mouseX KR 0 1 Linear 0.2->         i = mix (soundIn (mce2 0 1))->         c = fft' 10 i->         o = onsets' c x (onsetType "rcomplex")->     in f o--> g_01 = f_03 f_01--> g_02 = mce2 (dc AR 0) (mix (soundIn (mce2 0 1) * 0.75))--a generative signal with distinct onsets!--> g_03 =->     let e = linLin (saw AR 2) (-1) 1 0 1->         p = let f = midiCPS (tiRand 'α' 63 75 (impulse KR 2 0))->             in pulse AR f 0.5->         f = linExp (lfNoise2 'β' KR 0.5) (-1) 1 100 10000->     in lpf p f * e--x varies threshold, whitenoise bursts indicate detected onsets--> g_04 =->     let c = fft' 10 g_03->         x = mouseX KR 0 1 Linear 0.2->         o = onsets' c x (onsetType "rcomplex")->         p = let d = envPerc 0.001 0.1->             in whiteNoise 'α' AR * envGen KR o 0.2 0 1 DoNothing d->     in pan2 g_03 (-0.75) 0.2 + pan2 p 0.75 1
− Help/UGen/osc.help.lhs
@@ -1,46 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Allocate and generate wavetable buffer--> m_01 =->   [b_alloc 10 512 1->   ,b_gen_sine1 10 [Normalise,Wavetable,Clear] [1,1/2,1/3,1/4,1/5]]--    > withSC3 (mapM_ maybe_async m_01)--Fixed frequency wavetable oscillator--> g_01 = osc AR 10 220 0 * 0.1--Modulate frequency--> g_02 =->     let f = xLine KR 2000 200 1 DoNothing->     in osc AR 10 f 0 * 0.1--As frequency modulator--> g_03 =->     let f = osc AR 10 (xLine KR 1 1000 9 RemoveSynth) 0 * 200 + 800->     in osc AR 10 f 0 * 0.1--As phase modulator--> g_04 =->     let p = osc AR 10 (xLine KR 20 8000 10 RemoveSynth) 0 * 2 * pi->     in osc AR 10 800 p * 0.1--Fixed frequency wavetable oscillator--> g_05 = osc AR 10 220 0 * 0.1--Change the wavetable while its playing--    > withSC3 (maybe_async (b_gen_sine1 10 [Normalise,Wavetable,Clear] [1,0.6,1/4]))--Send directly calculated wavetable--    > import Sound.SC3.Common.Buffer {- hsc3 -}-    > import Sound.SC3.Common.Math.Window {- hsc3 -}-    > let t = to_wavetable (triangular_table 512)-    > withSC3 (maybe_async (b_setn1 10 0 t))
− Help/UGen/osc1.help.lhs
@@ -1,18 +0,0 @@-> import Sound.OSC {- hosc -}-> import Sound.SC3 {- hsc3 -}--> f_01 (b,l) = do->  let z = [Normalise,Wavetable,Clear]->  _ <- async (b_alloc b 512 1)->  sendMessage (b_gen_sine1 b z (map recip l))--> t_01 :: Transport m => m ()-> t_01 = do->   let a = [[13,8,55,34,5,21,3,1,2],[55,34,1,3,2,13,5,8,21]]->   mapM_ f_01 (zip [10,11] a)--    withSC3 t_01--> g_01 = lfSaw AR (mce2 110 164) 0 * 0.1 * osc1 AR (mce2 10 11) 4 RemoveSynth--    audition g_01
− Help/UGen/oscN.help.lhs
@@ -1,4 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "OscN"-> Sound.SC3.UGen.DB.ugenSummary "OscN"--See osc
− Help/UGen/oteyPianoStrings.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let k = control KR->       freq = k "freq" 440->       gate_ = k "gate" 1->       amp = k "amp" 0.5->       rho = k "rho" 1->       env = envGen AR gate_ 1 0 1 RemoveSynth (envASR 0 1 0.1 EnvLin)->       loc = linLin freq (midiCPS 36) (midiCPS 90) (-0.75) 0.75->       s = X.oteyPianoStrings AR freq amp 0 0.35 2 4 8 1 7e-2 1.4 (-4) 4 rho 1 1 0 1 0.2 1 1 0.142 1 3e-4 1->   in X.oteySoundBoard AR (pan2 (s * env) loc 0.1) 20 20 0.8
− Help/UGen/oteySoundBoard.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let loc = mouseX KR (-1) 1 Linear 0.2->   in X.oteySoundBoard AR (pan2 (soundIn 0) loc 0.1) 20 20 0.8--> g_02 =->   let d = dust 'α' AR 1->       n = whiteNoise 'β' AR->       i = decay (d * 0.5) 0.2 * n->       loc = mouseX KR (-1) 1 Linear 0.2->   in X.oteySoundBoard AR (pan2 i loc 0.1) 20 20 0.8
− Help/UGen/out.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Oscillators at outputs zero (330) and one (331)--> g_01 = out 0 (sinOsc AR (mce2 330 331) 0 * 0.1)--`out` is summing, as opposed to `replaceOut`--> g_02 = mrg [out 0 (sinOsc AR (mce2 330 990) 0 * 0.1)->            ,out 0 (sinOsc AR (mce2 331 991) 0 * 0.1)]
− Help/UGen/packFFT.help.lhs
@@ -1,19 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let b = localBuf 'α' 512 1->       n = 100->       square a = a * a->       r1 z = range 0 1 (fSinOsc KR (expRand (z,'β') 0.1 1) 0)->       m1 = map r1 (id_seq n 'γ')->       m2 = zipWith (*) m1 (map square [1.0, 0.99 ..])->       r2 z = lfPulse KR (2 ** iRand (z,'δ') (-3) 5) 0 0.3->       i = map r2 (id_seq n 'ε')->       m3 = zipWith (*) m2 i->       p = replicate n 0.0->       c1 = fft' b (fSinOsc AR 440 0)->       c2 = packFFT c1 512 0 (constant n - 1) 1 (packFFTSpec m3 p)->       s = ifft' c2->   in mce2 s s--    > putStrLn $ synthstat_concise g_01
− Help/UGen/pan2.help.lhs
@@ -1,11 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = pinkNoise 'α' AR->     in pan2 n (fSinOsc KR 2 0) 0.3--> g_02 =->     let n = pinkNoise 'α' AR->         x = mouseX KR (-1) 1 Linear 0.2->         y = mouseY KR 0 1 Linear 0.2->     in pan2 n x y
− Help/UGen/panAz.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let o = pinkNoise 'α' AR->         nc = 4->         fr = 0.15->     in panAz nc o (lfSaw KR fr 0) 0.1 2 0.5
Help/UGen/partConv.help.lhs view
@@ -4,7 +4,7 @@ > f_01 :: Transport m => m UGen > f_01 = do >   let target_b = 12 {- source signal -}->       target_file = "/home/rohan/data/audio/pf-c5.snd"+>       target_file = "/home/rohan/data/audio/pf-c5.aif" >   _ <- async (b_allocRead target_b target_file 0 0) >   return (playBuf 1 AR (constant target_b) 1 0 0 Loop DoNothing) @@ -13,12 +13,12 @@ >   let fft_size = 2048 >       ir_file = "/home/rohan/data/audio/reverbs/chapel.wav" >       ir_length = 62494 {- frame count of ir_file -}->       accum_size = pc_calcAccumSize fft_size ir_length+>       accum_size = partConv_calcAccumSize fft_size ir_length >       ir_td_b = 10 {- time domain -} >       ir_fd_b = 11 {- frequency domain -} >   _ <- async (b_allocRead ir_td_b ir_file 0 ir_length) >   _ <- async (b_alloc ir_fd_b accum_size 1)->   sendMessage (pc_preparePartConv ir_fd_b ir_td_b fft_size)+>   sendMessage (partConv_preparePartConv ir_fd_b ir_td_b fft_size) >   return (partConv s (constant fft_size) (constant ir_fd_b))      g_01 <- withSC3 f_01
− Help/UGen/pause.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let f = control KR "f" 440->         g = control KR "g" 1->     in mrg [sinOsc AR f 0 * 0.1,pause g 1001]--    > audition_at (1001,AddToTail,1,[]) g_01-    > audition_at (1002,AddToTail,1,[("f",880)]) g_01--Request that node 1002 pause node 1001.--    > withSC3 (send (n_set 1002 [("g",0)]))--Restart node 1001.--    > withSC3 (send (n_set 1002 [("g",1)]))
− Help/UGen/pauseSelf.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR (-1) 1 Linear 0.1->         o = sinOsc AR 440 0 * 0.1->     in mrg [o,pauseSelf x]--Run paused node (assuming no intermediate node is created).--    > withSC3 (send (n_run [(-1, True)]))
− Help/UGen/pauseSelfWhenDone.help.lhs
@@ -1,22 +0,0 @@-> import Sound.SC3 {- hsc3 -}--using PauseSynth done action--> g_01 =->     let x = mouseX KR (-1) 1 Linear 0.1->         e = linen x 1 0.1 1 PauseSynth->     in sinOsc AR 440 0 * e--Run paused node (assuming no intermediate node is created).--    > withSC3 (Sound.OSC.sendMessage (n_run [(-1, True)]))--using pauseSelfWhenDone UGen--> g_02 =->     let x = mouseX KR (-1) 1 Linear 0.1->         e = linen x 1 0.1 1 DoNothing->         o = sinOsc AR 440 0 * e->     in mrg [o,pauseSelfWhenDone e]--    > withSC3 (Sound.OSC.sendMessage (n_run [(-1, True)]))
− Help/UGen/peak.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let t = dust 'α' AR 20->         r = impulse AR 0.4 0->         f = peak t r * 500 + 200->     in sinOsc AR f 0 * 0.2
− Help/UGen/perlin3.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->     let x = integrator (k2a (mouseX KR 0 0.1 Linear 0.2)) 1.0->         y = integrator (k2a (mouseY KR 0 0.1 Linear 0.2)) 1.0->     in X.perlin3 AR x y 0
− Help/UGen/phasor.help.lhs
@@ -1,78 +0,0 @@-> import Sound.SC3--phasor controls sine frequency, end frequency matches second sine.--> g_00 =->     let rate = mouseX KR 0.2 2 Exponential 0.1->         tr = impulse AR rate 0->         sr = sampleRate->         x = phasor AR tr (rate / sr) 0 1 0->         f = mce [linLin x 0 1 600 1000, 1000]->     in sinOsc AR f 0 * 0.2--two phasors control two sine frequencies: mouse y controls resetPos of the second--> g_01 =->     let rate = mouseX KR 1 200 Linear 0.1->         tr = impulse AR rate 0->         sr = sampleRate->         x = phasor AR tr (rate / sr) 0 1 (mce2 0 (mouseY KR 0 1 Linear 0.2))->     in sinOsc AR (x * 500 + 500) 0 * 0.2--Load sound file to buffer zero--    > let fn = "/home/rohan/data/audio/pf-c5.aif"-    > withSC3 (async (b_allocRead 0 fn 0 0))--Phasor as phase input to bufRd--> g_02 =->      let ph = phasor AR 0 (bufRateScale KR 0) 0 (bufFrames KR 0) 0->      in bufRdN 1 AR 0 ph Loop--Allocate and generate (non-wavetable) buffer at index one-(see osc for wavetable oscillator)--    > withSC3 (mapM_ maybe_async [b_alloc 1 256 1,b_gen_sine1 1 [Normalise,Clear] [1]])--Audio rate phasor oscillator as phase input to bufRd--> g_03 =->     let b = 1->         f = 440->         fr = bufFrames KR b->         rt = f * (fr / sampleRate)->         ph = phasor AR b (rt * bufRateScale KR b) 0 fr 0->     in bufRdL 1 AR b ph Loop * 0.1--Phasor as impulse with reset--> g_04 =->     let impulse_reset freq reset =->             let ph = phasor AR reset (freq / sampleRate) 0 1 0->             in hpz1 ph <** 0->         x = mouseX KR 0 1 Linear 0.2 >** 0.5->         ck = impulse AR 3 0->         im = impulse_reset 3 x->         x' = sinOsc AR 440 0 * x * 0.05->         im' = sinOsc AR 220 0 * decay2 (ck + im) 0.01 0.5 * 0.1->     in mce2 x' im'--If one wants Phasor to output a signal with frequency freq oscilating-between start and end, then the rate should be (end - start) * freq /-sr where sr is the sampling rate.  F32 precision is an issue.--> g_05 =->     let f = mouseX KR 220 880 Exponential 0.1->         tr = impulse AR f 0->         sr = sampleRate->         x = phasor AR tr (two_pi * f / sr) 0 two_pi 0->     in sin x * 0.1--phasor as lfSaw, but with precision issues--> g_06 = phasor AR (impulse AR 440 0) (2 * 440 / sampleRate) (-1) 1 0 * 0.2--> g_07 =->   let ph = phasor AR (impulse AR 440 0) (two_pi * 440 / sampleRate) 0 two_pi 0->   in sin ph * 0.2
− Help/UGen/pinkNoise.help.lhs
@@ -1,34 +0,0 @@-> import Sound.SC3 {- hsc3 -}--    audition . (out 0) . (* 0.05) =<< pinkNoiseM AR-    audition . (out 0) . (* 0.05) =<< whiteNoiseM AR-    audition . (out 0) . (* 0.05) =<< brownNoiseM AR--speaker balance--> g_01 = let n = pinkNoise 'γ' AR * 0.05 in mce2 n n--> g_02 =->     let x = mouseX KR 0 1 Linear 0.2->         x' = 1 - x->         n = pinkNoise 'δ' AR * 0.05->     in mce2 (n * x') (n * x)--identifiers & referential transparency--> g_03 = (pinkNoise 'α' AR - pinkNoise 'α' AR) * 0.2--> g_04 = (pinkNoise 'α' AR - pinkNoise 'β' AR) * 0.2--> g_05 = let n = pinkNoise 'α' AR in n - n * 0.2--Drawing--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen1 0.1 (pinkNoise 'ε' AR)--    import Sound.SC3.Plot.FFT {- hsc3-plot -}-    plot_ugen_fft1 0.1 (pinkNoise 'ζ' AR)--![](sw/hsc3/Help/SVG/pinkNoise.0.svg)-![](sw/hsc3/Help/SVG/pinkNoise.1.svg)
− Help/UGen/pitch.help.lhs
@@ -1,34 +0,0 @@- - --> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR 220 660 Linear 0.1->         y = mouseY KR 0.05 0.25 Linear 0.1->         s = sinOsc AR x 0 * y->         a = amplitude KR s 0.05 0.05->         f = pitch s 440 60 4000 100 16 7 0.02 0.5 1 0->     in mce [s, sinOsc AR (mceChannel 0 f / 2) 0 * a]--Live input tracking, carelessly--> g_02 =->     let s = hpf (soundIn 0) 90->         a = lag (amplitude KR s 0.01 0.01) 0.2->         [f,_] = mceChannels (pitch s 440 60 4000 100 16 1 0.02 0.5 1 0)->         fq = midiCPS (roundE (lag (cpsMIDI f) 0.1))->     in mce [s * 0.1, lfTri AR f 0 * lag a 0.2 * lag (f >** 90 * f <** 500) 0.2]--Comparison of input frequency (x) and tracked oscillator frequency (f).-Output is printed to the console by scsynth.--> g_03 =->     let x = mouseX KR 440 880 Exponential 0.1->         o = sinOsc AR x 0 * 0.1->         [f,_] = mceChannels (pitch o 440 60 4000 100 16 7 0.02 0.5 1 0)->         r = sinOsc AR f 0 * 0.1->         t = impulse KR 4 0->         pf = poll t f 0 (label "f")->         px = poll t x 0 (label "x")->     in mce [out 0 (mce2 o r),pf,px]
− Help/UGen/pitchShift.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> gr_01 =->     let s = sinOsc AR 440 0 * 0.1->         r = mouseX KR 0.5 2.0 Linear 0.1->         d = mouseY KR 0.0 0.1 Linear 0.1->     in pitchShift s 0.2 r d 0--> gr_02 =->     let s = soundIn 0->         pd = mouseX KR 0.0 0.1 Linear 0.1->         td = mouseY KR 0.0 0.1 Linear 0.1->     in pitchShift s 0.2 (mce2 1.0 1.5) pd td
− Help/UGen/playBuf.help.lhs
@@ -1,91 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Load sound file to buffer zero (single channel file required for examples)--> fn_01 = "/home/rohan/data/audio/pf-c5.aif"--> m_01 = (b_allocRead 0 fn_01 0 0)--    withSC3 (async m_01)--Play once only.--> f_01 b = playBuf 1 AR b (bufRateScale KR b) 1 0 NoLoop RemoveSynth--> g_01 = f_01 28 -- 0 28--Play in infinite loop.--> g_02 = playBuf 1 AR 0 (bufRateScale KR 0) 1 0 Loop DoNothing--Trigger playback at each pulse.--> g_03 =->     let t = impulse KR 2 0->         s = bufRateScale KR 0->     in playBuf 1 AR 0 s t 0 NoLoop DoNothing--Trigger playback at each pulse (diminishing intervals).--> g_04 =->     let f = xLine KR 0.1 100 10 RemoveSynth->         t = impulse KR f 0->         s = bufRateScale KR 0->     in playBuf 1 AR 0 s t 0 NoLoop DoNothing--Loop playback, accelerating pitch.--> g_05 =->     let r = xLine KR 0.1 100 60 RemoveSynth->     in playBuf 1 AR 0 r 1 0 Loop DoNothing--Sine wave control of playback rate, negative rate plays backwards.--> g_06 =->     let f = xLine KR 0.2 8 30 RemoveSynth->         r = fSinOsc KR f 0 * 3 + 0.6->         s = bufRateScale KR 0 * r->     in playBuf 1 AR 0 s 1 0 Loop DoNothing--Channel mismatch, single channel buffer, two channel playBuf, result-is single channel playback and channel mismatch message in server log.--> g_07 = playBuf 2 AR 0 (bufRateScale KR 0) 1 0 Loop DoNothing--Graph will play both channels after loading a two channel signal to-buffer.--> f_02 = "/home/rohan/data/audio/sp/tinguely.aif"--> m_02 = b_allocRead 0 f_02 0 0--    withSC3 (async m_02)--Release buffer.--    withSC3 (send (b_free 0))--Scan sequence of buffers:--> f_08 n =->     let t = impulse KR 2 0->         b = mouseX KR 0 n Linear 0.2->         r = bufRateScale KR b->     in playBuf 1 AR b r t 0 Loop DoNothing--> g_08 = f_08 52 -- (29 * 6)--In sclanguage:--{var fn = "/home/rohan/data/audio/pf-c5.aif"-;s.sendMsg("/b_allocRead",0,fn,0,0)}.value--{var sc = BufRateScale.kr(0)-;Out.ar(0,PlayBuf.ar(2,0,sc,1,0,1,0))}.play--{var fn = "/home/rohan/data/audio/sp/tinguely.aif"-;s.sendMsg("/b_allocRead",0,fn,0,0)}.value--{var b = MouseX.kr(32,64,0,0.2)-;var r = BufRateScale.kr(b)-;Out.ar(0,PlayBuf.ar(1,b,r,1,0,1,0))}.play
− Help/UGen/playBufCF.help.lhs
@@ -1,31 +0,0 @@-wslib: external/composite--> import Sound.SC3 {- hsc3 -}--Load sound file to buffer zero (single channel file required for examples)--> fn_01 = "/home/rohan/data/audio/pf-c5.aif"-> fn_02 = "/home/rohan/opt/src/supercollider/sounds/a11wlk01.wav"--    > withSC3 (async (b_allocRead 0 fn_02 0 0))--control-rate trigger and start-position inputs--> g_01 =->     let b = 0->         r = bufRateScale KR b->         tr = impulse KR 2 0->         wn = whiteNoise 'α' KR->         sp = linLin wn (-1) 1 0 (bufFrames KR b - (0.5 * 44100))->         o = playBufCF 1 b r tr sp NoLoop 0.1 2->         o' = playBuf 1 AR b r tr sp NoLoop DoNothing->     in mce2 o o'--demand ugens inputs--> g_02 =->     let b = 0->         r = drand 'α' dinf (mce [0.95,1,1.05])->         tr = dwhite 'β' dinf 0.1 0.3->         sp = dbrown 'γ' dinf 0 0.95 0.1 * bufFrames KR b->     in playBufCF 1 b r tr sp NoLoop 2 5
− Help/UGen/pluck.help.lhs
@@ -1,27 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Protect {- hsc3-rw -}--Excitation signal is white noise, triggered twice a second with varying OnePole coef.--> g_01 =->     let n = whiteNoise 'α' AR->         t = impulse KR 9 0->         x = mouseX KR (-0.999) 0.999 Linear 0.1->         y = mouseY KR 0.1 1 Linear 0.1->         dl = 1 / 440->     in pluck (n * 0.25) t dl (dl * y) 10 x--> g_02 =->     let n = 50->         udup = uclone (const False) 'α'->         f = udup n (rand 'β' 0.05 0.2)->         p = udup n (rand 'γ' 0 1)->         w = udup n (whiteNoise 'δ' AR)->         fi = udup n (rand 'ε' 10 12)->         coef = rand 'ζ' 0.01 0.2->         l = udup n (rand 'η' (-1) 1)->         x = mouseX KR 60 1000 Exponential 0.1->         o = linLin (sinOsc KR f p) (-1) 1 x 3000->         i = impulse KR fi 0->         ks = pluck (w * 0.1) i 0.01 (1 / o) 2 coef->     in leakDC (mix (pan2 ks l 1)) 0.995
− Help/UGen/pmOsc.help.lhs
@@ -1,24 +0,0 @@-    :t pmOsc--pmOsc is a composite of sinOsc, ie. sinOsc r cf (sinOsc r mf mp * pm)--> import Sound.SC3 {- hsc3 -}--Random parameters, linear modulation index motion over n seconds--> pmi n =->     let cf = rand 'α' 0 2000->         mf = rand 'β' 0 800->         pme = rand 'γ' 0 12->         l = rand 'δ' (-1) 1->         pm = line KR 0 pme n DoNothing->     in linPan2 (pmOsc AR cf mf pm 0) l 0.05--> g_01 = pmi 2--PM textures--    > import qualified Sound.SC3.Lang.Control.OverlapTexture as L-    > L.overlapTextureU (0,1,8,maxBound) (pmi 1)-    > L.overlapTextureU (1,2,7,maxBound) (pmi 2)-    > L.overlapTextureU (6,6,6,maxBound) (pmi 12)
− Help/UGen/poll.help.lhs
@@ -1,42 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let t = impulse KR 10 0->         l = line KR 0 1 1 RemoveSynth->     in poll t l 0 (label "polling...")--multichannel expansion (requires labels be equal length...)--> g_02 =->     let t = impulse KR (mce2 10 5) 0->         l = line KR 0 (mce2 1 5) (mce2 1 2) DoNothing->     in poll t l 0 (mce2 (label "t1") (label "t2"))--poll will not poll once with a trigger of one, use impulse with frequency zero--> g_03 =->   let k = control KR "k" 0.3->       x = negate (k * 1.1)->       t = impulse KR 0 0 {- 1 -}->   in mrg2 x (poll t x (-1) (label "x"))--poll at trigger control--> g_04 =->   let t = tr_control "t" 0.3->       f1 = lfNoise2 'α' AR 0.25 * 100 + 110->       f2 = lfNoise2 'β' AR 0.25 * 200 + 220->       s = gendy1 'γ' AR 1 1 1 1 f1 f2 0.5 0.5 12 0 * 0.1->       p = poll t (mce2 f1 f2) (-1) (mce2 (label "f1") (label "f2"))->   in mrg2 s p--    import Sound.OSC {- hosc -}-    withSC3 (sendMessage (n_set1 (-1) "t" 1))--print oscillator frequency--> g_05 =->     let x = mouseX KR 200 260 Exponential 0.2->         o = sinOsc AR x 0 * 0.25->         t = impulse KR 2 0->     in mrg2 o (poll t x 0 (label "polling..."))
− Help/UGen/pow.help.lhs
@@ -1,21 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let a = fSinOsc AR 100 0 * 0.1->     in mce2 a (a ** 10)--see also <http://create.ucsb.edu/pipermail/sc-users/2006-December/029998.html>--> g_02 =->     let n0 = lfNoise2 'α' KR 8->         n1 = lfNoise2 'β' KR 3->         s = blip AR (n0 * 200 + 300) (n1 * 10 + 20)->         x = mouseX KR 1000 (sampleRate * 0.5) Exponential 0.1->         y = mouseY KR 1 24 Exponential 0.1->         d = latch s (impulse AR x 0)->         b = roundUp d (0.5 ** y)->     in mce2 d b--optimises identity--> g_03 = (sinOsc AR 440 0 ** 1) * 0.1
− Help/UGen/pulse.help.lhs
@@ -1,20 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Modulate frequency--> g_01 =->     let f = xLine KR 40 4000 6 RemoveSynth->     in pulse AR f 0.1 * 0.1--Modulate pulse width, 0.5 = square wave--> g_02 =->     let w = line KR 0.01 0.99 8 RemoveSynth->     in pulse AR 200 w * 0.1--Two band limited square waves through a resonant low pass filter--> g_03 =->     let p = pulse AR (mce2 100 250) 0.5 * 0.1->         f = xLine KR 8000 400 5 DoNothing->     in rlpf p f 0.05
− Help/UGen/pulseCount.help.lhs
@@ -1,15 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "PulseCount"-> Sound.SC3.UGen.DB.ugenSummary "PulseCount"--> import Sound.SC3 {- hsc3 -}--> let c = pulseCount (impulse AR 10 0) (impulse AR 0.4 0)-> in audition (out 0 (sinOsc AR (c * 200) 0 * 0.05))--printer--> let {b = localBuf 'α' 11 1->     ;t = impulse AR 10 0->     ;p = pulseCount t 0->     ;d = demand t 0 (dbufwr 'α' (-666) b p NoLoop)}-> in audition (mrg [out 0 (dc AR 0),poll t p (label "p") 0])
− Help/UGen/pulseDPW.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.Composite.External as X {- hsc3 -}--> g_01 = X.pulseDPW AR (xLine KR 2000 20 10 DoNothing) 0.5 * 0.1--> g_02 = X.pulseDPW AR (mouseX KR 200 12000 Exponential 0.2) 0.5 * 0.2
− Help/UGen/pulseDivider.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let p = impulse AR 8 0->         d = pulseDivider p (mce [4,7]) 0->         a = sinOsc AR 1200 0 * decay2 p 0.005 0.1->         b = sinOsc AR  600 0 * decay2 d 0.005 0.5->     in a + b * 0.4
Help/UGen/pv_BinDelay.help.lhs view
@@ -4,6 +4,7 @@  function to allocate buffers (fft,delay,feedback) non-local so that they can be set using b_set &etc.+(& because pv_BinDelay fails with localBuf)  > mk_buf sz = do >   _ <- async (b_alloc 10 (sz * 2) 1)@@ -59,3 +60,21 @@ > gr_03 = >     let o = range 0.75 0.95 (blip KR (1/25) 5) >     in recordBuf KR 12 0 1 0 1 Loop 1 DoNothing o++{-++pv_BinDelay - localBuf fails...++let sz = 128+    gen_sin l r n ph = -- function to generate sin table of n places in range (l,r)+      let f x = range l r (sin ((x / n) * 2 * pi + ph))+      in map f [0 .. n - 1]+    b1 = asLocalBuf 'α' (gen_sin 0 0.35 sz 0) -- delay times+    b2 = asLocalBuf 'β' (gen_sin 0.75 0.95 sz pi) -- feedback gain+    z = soundIn 0+    maxdel = 0.5+    c1 = fft (localBuf 'γ' 1 (sz * 2)) z 0.25 0 1 0+    c2 = X.pv_BinDelay c1 maxdel b1 b2 0.25+in z + ifft c2 0 0++-}
− Help/UGen/pv_BinScramble.help.lhs
@@ -1,30 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_BinScramble"-    Sound.SC3.UGen.DB.ugenSummary "PV_BinScramble"--> import Sound.SC3 {- hsc3 -}--> n_01 = "/home/rohan/data/audio/pf-c5.snd"--> m_01 = b_allocRead 12 n_01 0 0--     withSC3 (async m_01)--> g_01 =->   let a = playBuf 1 AR 12 (bufRateScale KR 12) 1 0 Loop DoNothing->       f = fft' (localBuf 'α' 2048 1) a->       x = mouseX KR 0.0 1.0 Linear 0.1->       y = mouseY KR 0.0 1.0 Linear 0.1->       g = pv_BinScramble 'β' f x y (impulse KR 4 0)->   in pan2 (ifft' g) 0 0.5--careful - feedback loop!--> g_02 =->   let a = soundIn 0->       f = fft' (localBuf 'γ' 2048 1) a->       x = mouseX KR 0.15 1 Linear 0.1->       y = mouseY KR 0.15 1 Linear 0.1->       i = impulse KR (lfNoise0 'δ' KR 2 * 8 + 10) 0->       g = pv_BinScramble 'ε' f x y i->       h = ifft' g->   in pan2 h 0 1
− Help/UGen/pv_BinShift.help.lhs
@@ -1,32 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_BinShift"-    Sound.SC3.UGen.DB.ugenSummary "PV_BinShift"--> import Sound.SC3 {- hsc3 -}--source signal (oscillators)--> g_01 =->   let s0 = sinOsc KR 0.08 0 * 6 + 6.2->       s1 = sinOsc KR (squared s0) 0 * 100 + 800->   in sinOsc AR s1 0 * 0.2--source signal (the world)--> g_02 = soundIn 0--default values--> f_01 z = ifft' (pv_BinShift (ffta 'α' 2048 z 0.5 0 1 0) 1 0 0)--> g_03 = f_01 g_02--mouse control--> f_02 z =->   let x = mouseX KR (-10) 100 Linear 0.1->       y = mouseY KR 1 4 Linear 0.1->       b = mouseButton KR 0 1 0.2->       pv = pv_BinShift (ffta 'β' 2048 z 0.5 0 1 0) y x b->   in ifft' pv--> g_04 = f_02 g_02
− Help/UGen/pv_BinWipe.help.lhs
@@ -1,24 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_BinWipe"-    Sound.SC3.UGen.DB.ugenSummary "PV_BinWipe"--> import Sound.SC3 {- hsc3 -}--> n_01 = "/home/rohan/data/audio/pf-c5.snd"--    withSC3 (async (b_allocRead 12 n_01 0 0))--> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing--> g_02 = soundIn 0--> f_01 z =->   let n = whiteNoise 'α' AR * 0.2->       f = fft' (localBuf 'β' 2048 1) n->       g = fft' (localBuf 'γ' 2048 1) z->       x = mouseX KR 0.0 1.0 Linear 0.1->       h = pv_BinWipe f g x->   in pan2 (ifft' h) 0 0.5--> g_03 = f_01 g_01--> g_04 = f_01 g_02
− Help/UGen/pv_BrickWall.help.lhs
@@ -1,14 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_BrickWall"-    Sound.SC3.UGen.DB.ugenSummary "PV_BrickWall"--> import Sound.SC3 {- hsc3 -}--> f_01 z =->   let x = mouseX KR (-1) 1 Linear 0.1->       c = fft' (localBuf 'α' 2048 1) z->   in ifft' (pv_BrickWall c x)--> g_01 = f_01 (whiteNoise 'α' AR * 0.2)--> g_02 = f_01 (soundIn 0)-
− Help/UGen/pv_BufRd.help.lhs
@@ -1,40 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_BufRd"-    Sound.SC3.UGen.DB.ugenSummary "PV_BufRd"--> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--allocate analysis buffer and load soundfile--> n_01 = "/home/rohan/opt/src/supercollider/sounds/a11wlk01.wav"--> m_01 =->   let f = 1024 {- frame size -}->       h = 0.25 {- hop size -}->       p_dur = 4.2832879818594 {- duration (in seconds) of n_01 -}->       b_size = pv_calcPVRecSize p_dur f h 48000->   in [b_alloc 0 b_size 1,b_allocRead 1 n_01 0 0]--    withSC3 (mapM_ async m_01)--do the analysis and store to buffer.  the window type and overlaps are-important for resynthesis parameters--> g_01 =->   let rec_buf = 0->       au_buf = 1->       l_buf = localBuf 'α' 1024 1;->       rt = bufRateScale KR au_buf->       i = playBuf 1 AR au_buf rt 1 0 NoLoop RemoveSynth->       c0 = fft l_buf i 0.25 1 1 0->       c1 = pv_RecordBuf c0 rec_buf 0 1 0 0.25 1->   in mrg2 (dc AR 0) c1--play analysis back--> g_02 =->   let rec_buf = 0->       l_buf = localBuf 'α' 1024 1->       x = mouseX KR 0 1 Linear 0.2->       c0 = pv_BufRd l_buf rec_buf x->   in ifft c0 1 0
− Help/UGen/pv_Compander.help.lhs
@@ -1,36 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--Example signal to process.--> g_01 =->     let e = decay2 (impulse AR 8 0 * lfSaw KR 0.3 0 * 0.3) 0.001 0.3->         p = mix (pulse AR (mce [80, 81]) 0.3)->     in e * p--> g_02 = soundIn 0--mostly compress--> f_01 z =->     let x = mouseX KR 1 50 Linear 0.2->     in mce [z, ifft' (pv_Compander (fft' (localBuf 'α' 2048 1) z) x 1.2 0.25)]--> g_03 = f_01 g_01--moslt expand--> f_02 z =->     let x = mouseX KR 1 50 Linear 0.1->     in mce [z, ifft' (pv_Compander (fft' (localBuf 'β' 2048 1) z) x 2.0 0.85)]--> g_04 = f_02 g_01--pv sustainer--> f_03 z =->   let x = mouseX KR 1 80 Linear 0.1->       s = ifft' (pv_Compander (fft' (localBuf 'γ' 2048 1) z) x 0.5 1.0)->   in mce [z, limiter s 0.999 0.05]--> g_05 = f_03 g_01
− Help/UGen/pv_ConformalMap.help.lhs
@@ -1,30 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_ConformalMap"-    Sound.SC3.UGen.DB.ugenSummary "PV_ConformalMap"--> import Sound.SC3 {- hsc3 -}--> g_01 =->   let i = soundIn 0->       x = mouseX KR (-1) 1 Linear 0.1->       y = mouseY KR (-1) 1 Linear 0.1->   in pan2 (ifft' (pv_ConformalMap (fft' (localBuf 'α' 1024 1) i) x y)) 0 1--With filtering.--> f_01 z =->   let x = mouseX KR 0.01  2.0 Linear 0.1->       y = mouseY KR 0.01 10.0 Linear 0.1->       c = fft' (localBuf 'β' 2048 1) z->       m = ifft' (pv_ConformalMap c x y)->   in pan2 (combN m 0.1 0.1 10 * 0.5 + m) 0 1--> g_02 =->   let o = mce [1, 1.1, 1.5, 1.78, 2.45, 6.7, 8] * 220->       f = sinOsc KR (mce [0.16, 0.33, 0.41]) 0 * 10 + o->   in mix (lfSaw AR f 0) * 0.3--> g_03 = soundIn 0--> g_04 = f_01 g_02--> g_05 = f_01 g_03
− Help/UGen/pv_Diffuser.help.lhs
@@ -1,25 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_Diffuser"-    Sound.SC3.UGen.DB.ugenSummary "PV_Diffuser"--> import Sound.SC3 {- hsc3 -}--> n_01 = "/usr/share/SuperCollider/sounds/a11wlk01.wav"-> n_02 = "/home/rohan/data/audio/instr/bosendorfer/064/C5.aif"--> m_01 = b_allocRead 12 n_02 0 0--    withSC3 (async m_01)--> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing-> g_02 = soundIn 0--Trigger revised phase shifts with MouseX crossing center of screen--> f_01 z =->   let f = fft' (localBuf 'α' 2048 1) z->       x = mouseX KR 0 1 Linear 0.1->       h = pv_Diffuser f (x >** 0.5)->   in ifft' h * 0.5--> g_03 = f_01 g_01-> g_04 = f_01 g_02
− Help/UGen/pv_Freeze.help.lhs
@@ -1,11 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_Freeze"-    Sound.SC3.UGen.DB.ugenSummary "PV_Freeze"--> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let f = fft' (localBuf 'α' 2048 1) (soundIn 0)->       x = mouseX KR 0 1 Linear 0.1->       h = X.pv_Freeze f (x >** 0.5)->   in ifft' h * 0.5
− Help/UGen/pv_HainsworthFoote.help.lhs
@@ -1,23 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_HainsworthFoote"-    Sound.SC3.UGen.DB.ugenSummary "PV_HainsworthFoote"--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let i = soundIn 0->         b = localBuf 'α' 2048 1->         f = fft' b i->         x = mouseX KR 0.5 1.25 Linear 0.2->         h = pv_HainsworthFoote f 1 0 x 0.04->         o = sinOsc AR (mrg2 440 445) 0 * decay (h * 0.1) 0.1 * 0.1->     in o + i--spot note transitions--> g_02 =->     let s = lfSaw AR (lfNoise0 'β' KR 1 * 90 + 400) 0 * 0.5->         b = localBuf 'γ' 2048 1->         f = fft' b s->         d = pv_HainsworthFoote f 1.0 0.0 0.9 0.5->         t = sinOsc AR 440 0 * decay (d * 0.1) 0.1->     in mce2 (s * 0.2) t
− Help/UGen/pv_Invert.help.lhs
@@ -1,19 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_Invert"-    Sound.SC3.UGen.DB.ugenSummary "PV_Invert"--> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--> g_01 =->   let s = sinOsc AR 440 0 * 0.4->       n = pinkNoise 'α' AR * 0.1->   in s + n--> f_01 z =->   let c0 = fft' (localBuf 'β' 2048 1) z->       c1 = pv_Invert c0->   in mce2 z (ifft' c1) * 0.5--> g_02 = f_01 g_01--> g_03 = f_01 (soundIn 0)
− Help/UGen/pv_LocalMax.help.lhs
@@ -1,22 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_LocalMax"-    Sound.SC3.UGen.DB.ugenSummary "PV_LocalMax"--> import Sound.SC3 {- hsc3 -}--> n_01 = "/home/rohan/data/audio/pf-c5.snd"--> m_01 = b_allocRead 12 n_01 0 0--     withSC3 (async m_01)--> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing--> f_01 z =->   let f = fft' (localBuf 'α' 2048 1) z->       x = mouseX KR 0 100 Linear 0.1->       h = pv_LocalMax f x->   in ifft' h * 0.5--> g_02 = f_01 g_01--> g_03 = f_01 (soundIn 0)
− Help/UGen/pv_MagAbove.help.lhs
@@ -1,30 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagAbove"-    Sound.SC3.UGen.DB.ugenSummary "PV_MagAbove"--> import Sound.SC3 {- hsc3 -}--> n_01 = "/home/rohan/data/audio/pf-c5.snd"--> m_01 = b_allocRead 12 n_01 0 0--     withSC3 (async m_01)--> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing--> f_01 z n =->   let f = fft' (localBuf 'α' 2048 1) z->       x = mouseX KR 0 n Linear 0.1->       h = pv_MagAbove f x->   in ifft' h * 0.5--> g_02 = f_01 g_01 100--Synthesised input.--> g_03 =->   let a = sinOsc KR (squared (sinOsc KR 0.08 0 * 6 + 6.2)) 0 * 100 + 800->   in sinOsc AR a 0--> g_04 = f_01 g_03 1024--> g_05 = f_01 (soundIn 0) 32
− Help/UGen/pv_MagBelow.help.lhs
@@ -1,30 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagBelow"-    Sound.SC3.UGen.DB.ugenSummary "PV_MagBelow"--> import Sound.SC3 {- hsc3 -}--> n_01 = "/home/rohan/data/audio/pf-c5.snd"--> m_01 = b_allocRead 12 n_01 0 0--     withSC3 (async m_01)--> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing--> f_01 z n =->   let f = fft' (localBuf 'α' 2048 1) z->       x = mouseX KR 0 n Linear 0.1->       h = pv_MagBelow f x->   in ifft' h * 0.5--> g_02 = f_01 g_01 100--Synthesised input.--> g_03 =->   let a = sinOsc KR (squared (sinOsc KR 0.08 0 * 6 + 6.2)) 0 * 100 + 800->   in sinOsc AR a 0--> g_04 = f_01 g_03 1024--> g_05 = f_01 (soundIn 0) 32
− Help/UGen/pv_MagClip.help.lhs
@@ -1,11 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagClip"-    Sound.SC3.UGen.DB.ugenSummary "PV_MagClip"--> import Sound.SC3--> g_01 =->   let f = fft' (localBuf 'α' 2048 1) (soundIn 0)->       c = 128->       x = mouseX KR 0 c Linear 0.1->       h = pv_MagClip f x->   in ifft' h * 0.5
− Help/UGen/pv_MagFreeze.help.lhs
@@ -1,37 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagFreeze"-    Sound.SC3.UGen.DB.ugenSummary "PV_MagFreeze"--> import Sound.SC3 {- hsc3 -}--Load audio file.--> n_01 = "/home/rohan/data/audio/pf-c5.snd"--> m_01 = [b_allocRead 12 n_01 0 0]--    withSC3 (mapM_ async m_01)--File as signal...--> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing--Synthesised signal...--> g_02 =->   let o1 = sinOsc KR 0.08 0->       o2 = sinOsc KR (squared (o1 * 6 + 6.2)) 0 * 100 + 800->   in sinOsc AR o2 0--Outside world signal...--> g_03 = soundIn 0--Process (freeze) 'z'...--> f_01 z =->   let f = fft' (localBuf 'α' 2048 1) z->       x = mouseX KR 0 1 Linear 0.1->       h = pv_MagFreeze f (x >** 0.5)->   in ifft' h * 0.5--> g_04 = f_01 g_03
− Help/UGen/pv_MagGate.help.lhs
@@ -1,17 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagGate"-    Sound.SC3.UGen.DB.ugenSummary "PV_MagGate"--> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--> f_01 (lhs,rhs) =->   let i = soundIn 0->       c = fft' (localBuf 'α' 2048 1) i->       x = mouseX KR lhs rhs Linear 0.2->       y = mouseY KR 0 1 Linear 0.2->       h = pv_MagGate c x y->   in ifft' h * 0.5--> g_01 = f_01 (0,100)--> g_02 = f_01 (-50,0)
Help/UGen/pv_MagMap.help.lhs view
@@ -20,7 +20,7 @@ > t_01 = f_02 [0,1,0] [0.05,0.95] EnvWelch      import Sound.SC3.Plot {- hsc3-plot -}-    plotTable1 t_01+    plot_p1_ln [t_01]  > f_03 t l c = withSC3 (sendMessage (b_setn1 10 0 (f_02 t l c))) @@ -30,7 +30,7 @@  > g_03 = f_01 g_01 10 -loclBuf fails...+localBuf fails...  > g_09 = f_01 g_01 (asLocalBuf 'γ' t_01) 
− Help/UGen/pv_MagMul.help.lhs
@@ -1,15 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagMul"-    Sound.SC3.UGen.DB.ugenSummary "PV_MagMul"--> import Sound.SC3 {- hsc3 -}--> f_01 z =->     let y = lfSaw AR (midiCPS 43) 0 * 0.2->         c0 = fft' (localBuf 'α' 2048 1) y->         c1 = fft' (localBuf 'β' 2048 1) z->         c2 = pv_MagMul c0 c1->     in ifft' c2 * 0.1--> g_01 = f_01 (whiteNoise 'γ' AR * 0.2)--> g_02 = f_01 (soundIn 0 * 0.5)
− Help/UGen/pv_MagSmear.help.lhs
@@ -1,11 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagSmear"-    Sound.SC3.UGen.DB.ugenSummary "PV_MagSmear"--> import Sound.SC3 {- hsc3 -}--> g_01 =->   let i = soundIn 0->       c = fft' (localBuf 'α' 2048 1) i->       x = mouseX KR 0 100 Linear 0.2->       h = pv_MagSmear c x->   in ifft' h * 0.5
− Help/UGen/pv_Morph.help.lhs
@@ -1,14 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_Morph"-    Sound.SC3.UGen.DB.ugenSummary "PV_Morph"--> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--> g_01 =->   let o1 = pulse AR 180 (lfCub KR 1 0 * 0.1 + 0.3) * 0.5->       o2 = varSaw AR 190 0 (lfCub KR 0.8 0 * 0.4 + 0.5) * 0.5->       c1 = fft' (localBuf 'α' 2048 1) o1->       c2 = fft' (localBuf 'β' 2048 1) o2->       x = mouseX KR 0 1 Linear 0.2->       h = pv_Morph c1 c2 x->   in ifft' h * 0.5
− Help/UGen/pv_Mul.help.lhs
@@ -1,12 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_Mul"-    Sound.SC3.UGen.DB.ugenSummary "PV_Mul"--> import Sound.SC3 {- hsc3 -}--> g_01 =->   let o1 = sinOsc AR 500 0 * 0.5->       o2 = sinOsc AR (line KR 50 400 5 RemoveSynth) 0 * 0.5->       c1 = fft' (localBuf 'α' 2048 1) o1->       c2 = fft' (localBuf 'β' 2048 1) o2->       h = pv_Mul c1 c2->   in ifft' h * 0.5
− Help/UGen/pv_PlayBuf.help.lhs
@@ -1,21 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_PlayBuf"-    Sound.SC3.UGen.DB.ugenSummary "PV_PlayBuf"--> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--see pv_BufRd for code to allocate and fill analysis buffer (rec_buf)--> g_01 =->   let rec_buf = 0->       l_buf = localBuf 'α' 1024 1->       x = mouseX KR (-1) 1 Linear 0.2->       c = pv_PlayBuf l_buf rec_buf x 50 1->   in ifft c 1 0--> g_02 =->   let rec_buf = 0->       l_buf = localBuf 'β' 1024 1->       n = range (-1) 2 (lfNoise2 'γ' KR 0.2)->       c = pv_PlayBuf l_buf rec_buf n 0 1->   in ifft c 1 0
− Help/UGen/pv_RandComb.help.lhs
@@ -1,22 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_RandComb"-    Sound.SC3.UGen.DB.ugenSummary "PV_RandComb"--> import Sound.SC3 {- hsc3 -}--noise signal--> g_01 = whiteNoise 'α' AR * 0.5--outside world--> g_02 = soundIn 0--processor--> f_01 f z =->   let t = impulse KR f 0->       x = mouseX KR 0.6 0.95 Linear 0.1->       c = pv_RandComb 'α' (fft' (localBuf 'α' 2048 1) z) x t->   in pan2 (ifft' c) 0 1--> g_03 = f_01 0.5 g_02
− Help/UGen/pv_RandWipe.help.lhs
@@ -1,25 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_RandWipe"-    Sound.SC3.UGen.DB.ugenSummary "PV_RandWipe"--> import Sound.SC3 {- hsc3 -}-> import qualified System.Random as R {- random -}--> g_01 =->   let n0 = R.randomRs (400.0, 1000.0) (R.mkStdGen 0)->       o0 = map (\n -> lfSaw AR n 0 * 0.1) (take 6 n0)->   in sum_opt o0--> g_02 =->   let n1 = R.randomRs (80.0, 400.0) (R.mkStdGen 1)->       n2 = R.randomRs (0.0, 8.0) (R.mkStdGen 2)->       o1 = map (\n -> lfPulse AR n 0.0 0.2) (take 6 n1)->       o2 = map (\n -> sinOsc KR n 0 * 0.2) (take 6 n2)->   in sum_opt (zipWith (\p s -> p * (max s 0.0)) o1 o2)--> g_03 =->   let f1 = fft' (localBuf 'α' 2048 1) g_01->       f2 = fft' (localBuf 'β' 2048 1) g_02->       x = mouseX KR 0 1 Linear 0.1->       y = mouseY KR 0 1 Linear 0.1->       h = pv_RandWipe 'γ' f1 f2 x (y >** 0.5)->   in pan2 (ifft' h) 0 0.5
− Help/UGen/pv_RecordBuf.help.lhs
@@ -1,4 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_RecordBuf"-    Sound.SC3.UGen.DB.ugenSummary "PV_RecordBuf"--see pv_BufRd
− Help/UGen/pv_RectComb.help.lhs
@@ -1,34 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_RectComb"-    Sound.SC3.UGen.DB.ugenSummary "PV_RectComb"--> import Sound.SC3 {- hsc3 -}--noise source--> g_01 = whiteNoise 'α' AR * 0.3--outside world--> g_02 = soundIn 0--mouse control--> f_01 z =->   let b = localBuf 'β' 2048 1->       x = mouseX KR 0 0.5 Linear 0.1->       y = mouseY KR 0 0.5 Linear 0.1->       c = pv_RectComb (fft' b z) 8 x y->   in pan2 (ifft' c) 0 1--> g_03 = f_01 g_02--lfo control--> f_02 z =->   let b = localBuf 'γ' 2048 1->       p = lfTri KR 0.097 0 *   0.4  + 0.5->       w = lfTri KR 0.240 0 * (-0.5) + 0.5->       c = pv_RectComb (fft' b z) 8 p w->   in pan2 (ifft' c) 0 1--> g_04 = f_02 g_02
− Help/UGen/pv_SpectralMap.help.lhs
@@ -1,21 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_SpectralMap"-    Sound.SC3.UGen.DB.ugenSummary "PV_SpectralMap"--> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> n_01 = "/usr/share/SuperCollider/sounds/a11wlk01.wav"-> n_02 = "/home/rohan/data/audio/instr/bosendorfer/064/C5.aif"--> m_01 = b_allocRead 10 n_01 0 0--    withSC3 (async m_01)--> g_01 =->   let freeze = mouseY KR (-1) 1 Linear 0.2->       a = localBuf 'α' 2048 1->       b = localBuf 'β' 2048 1->       c1 = fft' a (soundIn 0)->       c2 = fft' b (playBuf 1 AR 10 1 1 0 Loop DoNothing)->       c3 = X.pv_SpectralMap c1 c2 0.0 freeze (mouseX KR (-1) 1 Linear 0.2) 1 0->   in ifft' c3
− Help/UGen/pv_XFade.help.lhs
@@ -1,14 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "PV_XFade"-    Sound.SC3.UGen.DB.ugenSummary "PV_XFade"--> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--> g_01 =->   let o1 = pulse AR 180 (lfCub KR 1 0 * 0.1 + 0.3) * 0.5->       o2 = varSaw AR 190 0 (lfCub KR 0.8 0 * 0.4 + 0.5) * 0.5->       c1 = fft' (localBuf 'α' 2048 1) o1->       c2 = fft' (localBuf 'β' 2048 1) o2->       x = mouseX KR 0 1 Linear 0.2->       h = pv_XFade c1 c2 x->   in ifft' h * 0.5
− Help/UGen/quadC.help.lhs
@@ -1,1 +0,0 @@-See quadN
− Help/UGen/quadL.help.lhs
@@ -1,1 +0,0 @@-See quadN
− Help/UGen/quadN.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = quadC AR (sampleRate / 2) 1 (-1) (-0.75) 0 * 0.2--> g_02 =->   let x = mouseX KR 3.5441 4 Linear 0.1->   in quadC AR 4000 (negate x) x 0 0.1 * 0.4--> g_03 =->   let x = mouseX KR 3.5441 4 Linear 0.1->       f = quadC AR 4 (negate x) x 0 0.1 * 800 + 900->   in sinOsc AR f 0 * 0.4
− Help/UGen/rMEQ.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--rm = regalia-mitra-freq = cut-off frequency (hz)-rq = reciprocal-of-Q-k = gain (db)--default parameters--> g_01 = X.rMEQ AR (pinkNoise 'α' AR * 0.1) 440 1 0--> g_02 =->   let freq = mouseX KR 55 3520 Exponential 0.2->       rq = mouseY KR 0.01 2.0 Linear 0.2->       k = 3->   in X.rMEQ AR (pinkNoise 'α' AR * 0.1) freq rq k
− Help/UGen/rMShelf.help.lhs
@@ -1,23 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--rm = regalia-mitra-freq = cut-off frequency (hz)-k = gain (db)--default parameters--> g_01 = X.rMShelf2 AR (whiteNoise 'α' AR * 0.1) 440 0--freq = mouse-x--> g_02 =->   let freq = mouseX KR 55 3520 Exponential 0.2->   in X.rMShelf2 AR (whiteNoise 'α' AR * 0.1) freq 0--k = mouse-y--> g_03 =->   let freq = mouseX KR 55 3520 Exponential 0.2->       k = mouseY KR (-12) 12 Linear 0.2->   in X.rMShelf2 AR (whiteNoise 'α' AR * 0.1) freq k
− Help/UGen/radiansPerSample.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--two pi divided by the nominal sample rate (ie. a very small number)--> g_01 =->     let f = mce2 radiansPerSample ((2 * pi) / sampleRate) * 5e6->     in sinOsc AR f 0 * 0.1
− Help/UGen/ramp.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Used to lag pitch--> g_01 =->     let o = lfPulse KR 4 0 0.5 * 50 + 400->         l = line KR 0 1 15 DoNothing->         f = ramp o l->     in sinOsc AR f 0 * 0.3--mouse control--> g_02 =->     let x = mouseX KR 220 440 Exponential 0->         x' = ramp x (300 / 1000)->     in sinOsc AR (mce2 x x') 0 * 0.1
− Help/UGen/rand.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let f = rand 'α' 200 1200->       l = rand 'β' (-1) 1->       e = line KR 0.2 0 0.1 RemoveSynth->       o = fSinOsc AR f 0->   in pan2 (o * e) l 1
− Help/UGen/randSeed.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3--start a noise patch--> g_01 =->     let n = uclone 'α' 2 (whiteNoise 'β' AR * 0.05 + dust2 'γ' AR 70)->         f = lfNoise1 'δ' KR 3 * 5500 + 6000->     in resonz (n * 5) f 0.5 + n * 0.5--reset the seed at a variable rate (crash?)--> g_02 =->      let s = 1956 -- control KR "seed" 1956->          i = impulse KR (mouseX KR 0.1 100 Linear 0.2) 0->      in randSeed KR i s--always the same (for a given seed)... (crash!)--> g_03 =->     let sd = 1957->         n = tiRand 'α' 4 12 (dust 'β' KR 1)->         f = n * 150 + (mce [0,1])->         r = randSeed IR 1 sd->     in mrg2 (sinOsc AR f 0 * 0.1) r
− Help/UGen/recordBuf.help.lhs
@@ -1,26 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> b_01 :: Num n => n-> b_01 = 0--Allocate a buffer (assume SR of 48k)--> m_01 = b_alloc b_01 (48000 * 4) 1--    > withSC3 (async m_01)--Record for four seconds (until end of buffer)--> g_01 =->     let o = formant AR (xLine KR 400 1000 4 DoNothing) 2000 800 * 0.125->     in mrg2 o (recordBuf AR b_01 0 1 0 1 NoLoop 1 RemoveSynth o)--Play it back--> g_02 = playBuf 1 AR b_01 1 1 0 NoLoop RemoveSynth--Mix second signal equally with existing signal, replay to hear--> g_03 =->     let o = formant AR (xLine KR 200 1000 4 DoNothing) 2000 800 * 0.125->     in mrg2 o (recordBuf AR b_01 0 0.5 0.5 1 NoLoop 1 RemoveSynth o)
− Help/UGen/redPhasor.help.lhs
@@ -1,22 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.HW.External.F0 as F0 {- hsc3 -}--no looping & it will play through once. Mouse x acts as trigger--> g_01 =->   let tr = mouseX KR 0 1 Linear 0.2 >** 0.5->   in sinOsc AR (F0.redPhasor KR tr 0.3 400 800 0 500 600) 0 * 0.2--mouse y controls looping on/off, mouse x trigger--> g_02 =->   let tr = mouseX KR 0 1 Linear 0.2 >** 0.5->       lp = mouseY KR 0 1 Linear 0.2 >** 0.5->   in sinOsc AR (F0.redPhasor KR tr 0.3 400 800 lp 500 600) 0 * 0.2--mouse x controls loop rate, mouse y scales the start looppoint--> g_03 =->   let x = mouseX KR 0 5 Linear 0.2->       y = mouseY KR 200 500 Linear 0.2->   in sinOsc AR (F0.redPhasor KR 0 x 400 800 1 y 600) 0 * 0.2
− Help/UGen/replaceOut.help.lhs
@@ -1,69 +0,0 @@-> import Sound.OSC {- hosc -}-> import Sound.SC3 {- hsc3 -}--> g_01 = replaceOut 0 (sinOsc AR 440 0 * 0.1)--Send signal to a bus, overwrite existing signal.--> f_02 a_out b_out c_out =->     let a = a_out 0 (sinOsc AR (mce [330, 331]) 0 * 0.1)->         b = b_out 0 (sinOsc AR (mce [880, 881]) 0 * 0.1)->         c = c_out 0 (sinOsc AR (mce [120, 121]) 0 * 0.1)->     in mrg [a, b, c]--The MRG nodes are ordered right to left, so below b replaces c and a is summed--> g_02 = f_02 out replaceOut out--Compare to, where c is also heard--> g_03 = f_02 out out out--- a writes noise to bus 24-- b reads 24 and replaces with filtered variant-- c reads 24 and writes to 0--> g_04 =->     let a = out 24 (pinkNoise 'α' AR * 0.1)->         b = replaceOut 24 (bpf (in' 1 AR 24) 440 1)->         c = out 0 (in' 1 AR 24)->     in mrg [c,b,a]--    > putStrLn$ synthstat g_04--~~~~-number of constants       : 5-number of controls        : 0-control rates             : []-number of unit generators : 7-unit generator rates      : [(AR,7)]-unit generator set        : *,BPF,In,Out,PinkNoise,ReplaceOut-unit generator sequence   : PinkNoise,*,Out,In,BPF,ReplaceOut,Out-~~~~--Signal/effect model using separate groups operating at the same bus.--> n_01 =->     let d = dust 'α' AR 1->         n = whiteNoise 'β' AR->         i = decay (d * 0.5) 0.2 * n->     in synthdef "n_01" (out 0 i)--> n_02 =->     let i = in' 1 AR 0->     in synthdef "n_02" (replaceOut 0 (combC i 0.2 0.2 3))--> m_01 =->     [g_new [(1,AddToTail,0)]->     ,g_new [(2,AddToTail,0)]->     ,d_recv n_01->     ,d_recv n_02->     ,s_new "n_01" (-1) AddToTail 1 []->     ,s_new "n_02" (-1) AddToTail 2 []]--> f_01 m =->     if isAsync m->     then async m >> return ()->     else sendMessage m--    withSC3 (mapM_ f_01 m_01)
− Help/UGen/resonz.help.lhs
@@ -1,58 +0,0 @@-> import Sound.SC3 {- hsc3 -}--The Q factor of a resonator is defined as the center-frequency (cf) divided by the bandwidth (bw).--    > let q cf bw = cf / bw--The higher the Q the narrower the filter.--    > let bw_set = [1,4,10,100,200,400]-    > map (q 400) bw_set == [400,100,40,4,2,1]--Q multipled by the band-width gives the center-frequency.--    > map (\bw -> q 400 bw * bw) bw_set == replicate (length bw_set) 400--The third argument to resonz is the reciprocal of Q (rq).--    > let rq cf = recip . q cf-    > map (rq 400) [1,4,10,100,200,400] == [1/400,1/100,1/40,1/4,1/2,1]--1/Q multiplied by the center-frequency gives the bandwidth.--    > map (\bw -> rq 400 bw * 400) bw_set == bw_set--> g_01 =->   let n = whiteNoise 'α' AR->   in resonz (n * 0.5) 2000 0.1--Modulate frequency--> g_02 =->   let n = whiteNoise 'α' AR->       f = xLine KR 1000 8000 10 RemoveSynth->   in resonz (n * 0.5) f 0.05--Modulate bandwidth--> g_03 =->   let n = whiteNoise 'α' AR->       bw = xLine KR 1 0.001 8 RemoveSynth->   in resonz (n * 0.5) 2000 bw--Modulate bandwidth opposite direction--> g_04 =->   let n = whiteNoise 'α' AR->       bw = xLine KR 0.001 1 8 RemoveSynth->   in resonz (n * 0.5) 2000 bw--Mouse exam (1/Q = bandwidth / center-frequency)--> g_05 =->   let n = pinkNoise 'α' AR->       m = mouseX KR 36 85 Linear 0.2 {- midi note -}->       w = mouseY KR 0.1 5 Linear 0.2 {- bandwidth -}->       f = midiCPS (floorE m) {- centre frequency -}->       rq = w / f {- 1/Q (reciprocal of Q) -}->   in resonz (n * 0.5) f rq
− Help/UGen/rhpf.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let f = fSinOsc KR (xLine KR 0.7 300 20 RemoveSynth) 0 * 3600 + 4000->   in rhpf (saw AR 200 * 0.1) f 0.2
− Help/UGen/ring1.help.lhs
@@ -1,12 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Operator.ring1"-    :t ring1--> import Sound.SC3 {- hsc3 -}--> o_01 = fSinOsc AR 800 0-> o_02 = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0-> g_01 = ring1 o_01 o_02 * 0.125--is equivalent to:--> g_02 = ((o_01 * o_02) + o_01) * 0.125
− Help/UGen/ring2.help.lhs
@@ -1,12 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Operator.ring2"-    :t ring2--> import Sound.SC3 {- hsc3 -}--> o_01 = fSinOsc AR 800 0-> o_02 = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0-> g_01 = ring2 o_01 o_02 * 0.125--is equivalent to:--> g_02 = ((o_01 * o_02) + o_01 + o_02) * 0.125
− Help/UGen/ring3.help.lhs
@@ -1,12 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Operator.ring3"-    :t ring3--> import Sound.SC3 {- hsc3 -}--> o_01 = fSinOsc AR 800 0-> o_02 = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0-> g_01 = ring3 o_01 o_02 * 0.125--is equivalent to:--> g_02 = (o_01 * o_01 * o_02) * 0.125
− Help/UGen/ring4.help.lhs
@@ -1,12 +0,0 @@-    Sound.SC3.UGen.Help.viewSC3Help "Operator.ring4"-    :t ring4--> import Sound.SC3 {- hsc3 -}--> a = fSinOsc AR 800 0-> b = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0-> g_01 = ring4 a b * 0.125--is equivalent to:--> g_02 = (((a * a * b) - (a * b * b))) * 0.125
− Help/UGen/ringz.help.lhs
@@ -1,32 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let n = dust 'α' AR 3->   in ringz (n * 0.3) 2000 2--> g_02 =->   let n = whiteNoise 'α' AR->   in ringz (n * 0.005) 2000 0.5--Modulate frequency--> g_03 =->   let {n = whiteNoise 'α' AR->     ;f = xLine KR 100 3000 10 RemoveSynth}->   in ringz (n * 0.005) f 0.5--> g_04 =->   let f = xLine KR 100 3000 10 RemoveSynth->   in ringz (impulse AR 6 0.3) f 0.5--Modulate ring time--> g_05 =->   let rt = xLine KR 4 0.04 8 RemoveSynth->   in ringz (impulse AR 6 0.3) 2000 rt--Modulate ring time opposite direction--> g_06 =->   let rt = xLine KR 0.04 4 8 RemoveSynth->   in ringz (impulse AR 6 0.3) 2000 rt
− Help/UGen/rlpf.help.lhs
@@ -1,20 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let n = whiteNoise 'α' AR->       f = sinOsc AR 0.5 0 * 40 + 220->   in rlpf n f 0.1--> g_02 =->   let f = fSinOsc KR (xLine KR 0.7 300 20 RemoveSynth) 0 * 3600 + 4000->   in rlpf (saw AR 200 * 0.1) f 0.2--> g_03 =->   let ctl = rlpf (saw AR 5 * 0.1) 25 0.03->   in sinOsc AR (ctl * 200 + 400) 0 * 0.1--> g_04 =->   let x = mouseX KR 2 200 Exponential 0.2->       y = mouseY KR 0.01 1 Exponential 0.2->       ctl = rlpf (saw AR 5 * 0.1) x y->   in sinOsc AR (ctl * 200 + 400) 0 * 0.1
− Help/UGen/rlpfD.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let s = mix (lfSaw AR (mce2 120 180) 0 * 0.33)->       f = linExp (lfCub KR 0.1 (0.5 * pi)) (-1) 1 280 1500->   in X.rlpfd s f 0.6 0.5 * 3
− Help/UGen/rlpfd.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let s = mix (lfSaw AR (mce2 120 180) 0 * 0.33)->       f = linExp (lfCub KR 0.1 (0.5 * pi)) (-1) 1 280 1500->   in X.rlpfd s f 0.6 0.5 * 3
− Help/UGen/rotate2.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Rotation of stereo sound, via LFO.--> g_01 =->     let x = pinkNoise 'α' AR->         y = lfTri AR 800 0 * lfPulse KR 3 0 0.3 * 0.2->     in rotate2 x y (lfSaw KR 0.1 0)--Rotation of stereo sound, via mouse.--> g_02 =->     let x = mix (lfSaw AR (mce [198..201]) 0 * 0.1)->         y = sinOsc AR 900 0 * lfPulse KR 3 0 0.3 * 0.2->         p = mouseX KR 0 2 Linear 0.2->     in rotate2 x y p
− Help/UGen/roundUp.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR 60 4000 Linear 0.1->         f = roundUp x 100->     in sinOsc AR f 0 * 0.1--> g_02 =->     let n = line KR 24 108 6 RemoveSynth->     in saw AR (midiCPS (roundUp n 1)) * 0.2
− Help/UGen/runningMax.help.lhs
@@ -1,14 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = dust 'α' AR 20->         t = impulse AR 0.4 0->         f = runningMax n t * 500 + 200->     in t + sinOsc AR f 0 * 0.2--follow a sine lfo, reset rate controlled by mouse x--> g_02 =->     let t = impulse KR (mouseX KR 0.01 2 Linear 0.1) 0->         f = runningMax (sinOsc KR 0.2 0) t * 500 + 200->     in t + sinOsc AR f 0 * 0.2
− Help/UGen/runningMin.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Follow a sine lfo, reset rate controlled by mouseX--> g_01 =->     let o = sinOsc KR 2 pi->         x = mouseX KR 0.01 10 Exponential 0.1->         t = impulse AR x 0->         f = runningMin o t * 500 + 200->     in t + sinOsc AR f 0 * 0.1--> g_02 =->     let n = dust 'α' AR 20->         t = impulse AR 0.4 0->         f = runningMin n t * 500 + 200->     in sinOsc AR f 0 * 0.2
− Help/UGen/runningSum.help.lhs
@@ -1,25 +0,0 @@-> import Sound.SC3 {- hsc3 -}--distorts of course - would need scaling--> g_01 = runningSum (soundIn 4) 40--Running Average over x samples--> g_02 = let x = 100 in runningSum (lfSaw AR 440 0) x * recip x--RMS Power--> g_03 =->     let input = lfSaw AR 440 0->         numsamp = 30->     in runningSum (input * input) numsamp / (sqrt numsamp)--composite UGen--> g_04 = runningSumRMS (soundIn 4) 40--> g_05 =->     let z = soundIn 4->         a = runningSum z 40->     in sinOsc AR 440 0 * a * 0.1
− Help/UGen/sampleDur.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--`sampleDur` is the reciprocal of the nominal sample rate of the server--> g_01 =->     let f = mce2 sampleRate (recip sampleDur) * 0.01->     in sinOsc AR f 0 * 0.1
− Help/UGen/sampleRate.help.lhs
@@ -1,14 +0,0 @@-> import Sound.SC3 {- hsc3 -}--the current nominal sample rate of the server--> g_01 =->     let sr = 48000 {- 44100 -}->         f = mce2 sampleRate sr * 0.01->     in sinOsc AR f 0 * 0.1--The server status command can extract nominal and actual sample rates-from a running server.--    > import Control.Monad-    > withSC3 (liftM2 (,) serverSampleRateNominal serverSampleRateActual)
− Help/UGen/saw.help.lhs
@@ -1,32 +0,0 @@-> import Sound.SC3 {- hsc3 -}--SC3 saw is descending--> g_01 = saw AR (xLine KR 40 4000 6 RemoveSynth) * 0.1--negation is ascending--> g_02 = negate g_01--compare to the non-bandlimited lfSaw--> g_03 = lfSaw AR (xLine KR 40 4000 6 RemoveSynth) 0 * 0.1--Two band limited sawtooth waves thru a resonant low pass filter--> g_04 =->     let f = xLine KR 8000 400 5 DoNothing->     in rlpf (saw AR (mce2 100 250) * 0.1) f 0.05--saw is not useful as a phasor, see lfSaw or phasor--> g_05 = sin (range 0 two_pi (negate (saw AR 440))) * 0.2--Drawings--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen1 0.1 (saw AR 50) -- descending-    > plot_ugen1 0.002 (saw AR 5000) -- ragged--![](sw/hsc3/Help/SVG/saw.0.svg)-![](sw/hsc3/Help/SVG/saw.1.svg)
− Help/UGen/sawDPW.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 = X.sawDPW AR (xLine KR 2000 20 10 DoNothing) 0 * 0.1--> g_02 = X.sawDPW AR (mouseX KR 200 12000 Exponential 0.2) 0 * 0.2
− Help/UGen/scaleNeg.help.lhs
@@ -1,15 +0,0 @@-> import Prelude hiding ((<*)) {- base -}-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let o = fSinOsc AR 1000 0->         l = line AR 1 (-1) 4 RemoveSynth->     in scaleNeg o l * 0.1--written out:--> g_02 =->     let o = fSinOsc AR 1000 0->         l = line AR 1 (-1) 4 RemoveSynth->         c = o <* 0->     in (c * (o * l) + (1 - c) * o) * 0.1
− Help/UGen/schmidt.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--threshold octave jumps--> g_01 =->     let n = lfNoise1 'α' KR 3->         o = schmidt n (-0.15) 0.15 + 1->     in sinOsc AR (n * 200 + 500 * o) 0 * 0.1
− Help/UGen/select.help.lhs
@@ -1,21 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = 3/2->         a = mce [sinOsc AR 440 0, saw AR 440, pulse AR 440 0.1]->     in select (lfSaw KR 1 0 * n + n) a * 0.2--Here used as a sequencer:--> g_02 =->     let n = 10->         a = mce [517, 403, 89, 562, 816, 107, 241, 145, 90, 224]->         c = n / 2->         f = select (lfSaw KR 0.5 0 * c + c) a->     in saw AR f * 0.2--i-rate...--> g_03 =->     let a = mce [rand 'α' 110 220,rand 'β' 220 440,rand 'γ' 440 880]->     in sinOsc AR (select (rand 'δ' 0 3) a) 0 * 0.1
− Help/UGen/selectX.help.lhs
@@ -1,20 +0,0 @@-    :t selectX--selectX is a composite ugen graph--> import Sound.SC3 {- hsc3 -}--> g_01 =->   let n = 3/2->       f = mce2 440 441->       a = mce [sinOsc AR f 0, saw AR f, pulse AR f 0.1]->   in mix (selectX (lfSaw KR 1 0 * n + n) a * 0.2)--Here used as a sequencer:--> g_02 =->   let n = 10->       a = mce [517, 403, 89, 562, 816, 107, 241, 145, 90, 224]->       c = n / 2->       f = mix (selectX (lfSaw KR 0.5 0 * c + c) a)->   in saw AR f * 0.2
− Help/UGen/sendReply.help.lhs
@@ -1,13 +0,0 @@-> import Sound.OSC {- hosc3 -}-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let s0 = lfNoise0 'α' KR 5->       s1 = lfNoise0 'β' KR 5->       o = sinOsc AR (s0 * 200 + 500) 0 * s1 * 0.1->   in mrg [o,sendReply s0 0 "/send-reply" [s0,s1]]--> f_01 :: (DuplexOSC m) => m Message-> f_01 = withNotifications (waitReply "/send-reply")--    withSC3 f_01
− Help/UGen/setResetFF.help.lhs
@@ -1,21 +0,0 @@-> Sound.SC3.UGen.Help.viewSC3Help "SetResetFF"-> Sound.SC3.UGen.DB.ugenSummary "SetResetFF"--> import Sound.SC3--d0 is the set trigger, d1 the reset trigger--> let {n = brownNoise 'α' AR->     ;d0 = dust 'β' AR 5->     ;d1 = dust 'γ' AR 5}-> in audition (out 0 (setResetFF d0 d1 * n * 0.2))--silence--> let tr = setResetFF (impulse KR 5 0) (impulse KR 10 0)-> in audition (out 0 (brownNoise 'α' AR * 0.1 * decay2 tr 0.01 0.05))--duty cycle--> let tr = 1 - setResetFF (impulse KR 10 0) (impulse KR 5 0)-> in audition (out 0 (brownNoise 'α' AR * 0.1 * decay2 tr 0.01 0.05))
− Help/UGen/shaper.help.lhs
@@ -1,70 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.Common.Buffer.Gen as Gen {- hsc3 -}--function to generate wavetable buffer using b_gen_cheby--> mk_b a =->     let tbl_f = [Normalise,Wavetable,Clear]->         msg = [b_alloc 10 512 1,b_gen_cheby 10 tbl_f a]->     in withSC3 (mapM_ async msg)--    > mk_b [1,0,1,1,0,1]--hear waveshaper at pure (sin) tone--> g_01 =->     let z = sinOsc AR 300 0 * line KR 0 1 6 DoNothing->     in shaper 10 z * 0.1--plot wavetable (as in-buffer layout, as plain wavetable)--    > import Sound.SC3.Plot {- hsc3-plot -}-    > withSC3 (plot_buffer1 10)-    > withSC3 (plot_wavetable1 10)--![](sw/hsc3/Help/SVG/shaper.0.svg)-![](sw/hsc3/Help/SVG/shaper.1.svg)--variations--    > mk_b [0.25,0.5,0.25]--> g_02 =->     let z = sinOsc AR 400 (pi / 2) * line KR 0 1 6 DoNothing->     in shaper 10 z * 0.1--wave shape external signal--    > mk_b [1,0,1,1,0,1]--> g_03 =->     let z = soundIn 0->         x = sinOsc KR (1/4) 0->     in xFade2 z (shaper 10 z) x 0.5--    > mk_b [1,0,1,1,0,1,0.5,0,0.25,0,0.75,1]--> g_04 =->     let z = soundIn 0->         x = mouseX KR (-1) 1 Linear 0.2->     in xFade2 z (shaper 10 z) x 0.5--generate table and use localBuf--> t_01 :: (Enum n,Floating n,Ord n) => [n]-> t_01 = Gen.cheby 257 [1,0,1,1,0,1] -- [1,0,1,1,0,1,0.5,0,0.25,0,0.75,1]--> t_02 :: (Enum n,Floating n,Ord n) => [n]-> t_02 = to_wavetable_nowrap t_01--    > plotTable1 t_01-    > plotTable1 t_02-    > length t_02 == 512--![](sw/hsc3/Help/SVG/shaper.2.svg)-![](sw/hsc3/Help/SVG/shaper.3.svg)--> g_05 =->     let z = sinOsc AR 300 0 * line KR 0 1 6 DoNothing->         b = asLocalBuf 'α' t_02->     in shaper b z * 0.1
− Help/UGen/silent.help.lhs
@@ -1,3 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = silent 2
− Help/UGen/sinOsc.help.lhs
@@ -1,119 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Fixed frequency (hz) and initial-phase (radians)--> g_00 = sinOsc AR (midiCPS 69) 0 * 0.75 -- 415 440--Control input for frequency--> g_01 = sinOsc AR (midiCPS (control KR "mnn" 69)) 0 * 0.25--    import Sound.OSC {- hosc -}-    withSC3 (sendMessage (n_set1 (-1) "mnn" 64))--Modulate freq--> g_02 = sinOsc AR (xLine KR 2000 200 1 RemoveSynth) 0 * 0.5--Modulate freq--> g_03 =->     let f1 = xLine KR 1 1000 9 RemoveSynth->         f2 = sinOsc AR f1 0 * 200 + 800 -- (-1,1) ; (-200,200) ; (600,1000)->     in sinOsc AR f2 0 * 0.25--Modulate phase--> g_04 =->     let ph = sinOsc AR (xLine KR 20 8000 10 RemoveSynth) 0 * 2 * pi->     in sinOsc AR 800 ph * 0.1--Mouse control--> g_05 =->     let x = mouseX KR 40 10000 Exponential 0.2->         y = mouseY KR 0.01 0.25 Exponential 0.2->     in sinOsc AR x 0 * y--Simple bell-like tone.--> g_06 =->     let f = mce [0.5,1,1.19,1.56,2,2.51,2.66,3.01,4.1]->         a = mce [0.25,1,0.8,0.5,0.9,0.4,0.3,0.6,0.1]->         o = sinOsc AR (500 * f) 0 * a->         e = envGen KR 1 0.1 0 1 RemoveSynth (envPerc 0.01 10)->     in mix o * e--"When two pure tones of slightly different frequency are superposed,-our ears perceive audible beats at a rate given by the difference of-the two frequencies."--> g_07 =->     let f0 = 220->         f1 = 221.25->         d = abs (f1 - f0)->         i = impulse AR d 0 * max (sinOsc KR 0.05 0 * 0.1) 0->     in sinOsc AR (mce2 f0 f1) 0 * 0.1 + i--"When two tones are sounded together, a tone of lower frequency is-frequently heard. Such a tone is called a combination tone.  The most-commonly heard combination tone occurs at a frequency f2 - f1."--> g_08 =->     let f1 = 300->         f2 = 300 * 3/2 {- 450 -}->         f3 = abs (f2 - f1) {- 150 -}->         a3 = max (sinOsc KR 0.05 0 * 0.1) 0->     in mix (sinOsc AR (mce3 f1 f2 f3) 0 * mce3 0.1 0.1 a3)--With frequency of zero, operates as table lookup variant of sin.--> mk_phasor (l,r) f = phasor AR 0 ((r - l) * f / sampleRate) l r l--> g_09 =->   let ph = mk_phasor (0,two_pi) 440->       o1 = sinOsc AR 440 0->       o2 = sinOsc AR 0 ph->       o3 = sin ph->   in mce2 o1 (xFade2 o2 o3 (lfTri KR 0.1 0) 1) * 0.1--sync, ie. <https://www.listarc.bham.ac.uk/lists/sc-dev/msg58316.html>--> g_10 =->   let dt = mce2 1.0 1.003->	freq = mouseX KR (100 * dt) (3000 * dt) Exponential 0.2->       sync_freq = mouseY KR 100 500 Exponential 0.2->       ph_freq = impulse AR sync_freq 0 + impulse AR freq 0->       o = sinOsc AR 0 (phasor AR ph_freq (freq / sampleRate) 0 1 0 * 2 * pi)->   in o * 0.15--reverse sync--> g_11 =->   let dt = mce2 1.0 1.003->       freq = mouseX KR (100 * dt) (3000 * dt) Exponential 0.2->       sync_freq = mouseY KR 100 500 Exponential 0.2->       direction = toggleFF (impulse AR sync_freq 0) * (-2) + 1->       o = sinOsc AR 0 (wrap (sweep (impulse AR freq 0) (direction * freq)) 0 (2 * pi))->   in o * 0.15--reverse cycle & reverse sync--> g_12 =->   let freq = mouseX KR (100 * mce2 1.0 1.003) (3000 * mce2 1.0 1.003) Exponential 0.2->       sync_freq = mouseY KR 100 500 Exponential 0.2->       direction = toggleFF (impulse AR sync_freq 0 + impulse AR freq 0) * (-2) + 1->       o = sinOsc AR 0 (wrap (sweep (k2a 0) (direction * freq)) 0 (2 * pi))->   in o * 0.5--15.5 khz--> f_13 x = pan2 (sinOsc AR x 0) 0--> g_13 = f_13 15500 0.75--12 khz - 15.5 khz sweep--> f_14 x = pan2 (sinOsc AR (range_hs x (sinOsc KR (1/6) 0)) 0) 0--> g_14 = f_14 (12000,15500) 0.75
− Help/UGen/sinOscFB.help.lhs
@@ -1,25 +0,0 @@-> import Sound.SC3 {- hsc3 -}--    {SinOscFB.ar([400,301],MouseX.kr(0,4))*0.1}.play--> g_01 =->     let x = mouseX KR 0 4 Linear 0.2->     in sinOscFB AR (mce2 400 301) x * 0.1--    {var y = MouseY.kr(10,1000,'exponential')-    ;var x = MouseX.kr(0.5pi,pi)-    ;SinOscFB.ar(y,x) * 0.1}.play--> g_02 =->     let y = mouseY KR 10 1000 Exponential 0.2->         x = mouseX KR (pi/2) pi Linear 0.2->     in sinOscFB AR y x * 0.1--    {var y = MouseY.kr(1,1000,'exponential')-    ;var x = MouseX.kr(0.5pi,pi)-    ;SinOscFB.ar(100 * SinOscFB.ar(y)+200,x) * 0.1}.play--> g_03 =->     let y = mouseY KR 1 1000 Exponential 0.2->         x = mouseX KR (pi/2) pi Linear 0.2->     in sinOscFB AR (100 * sinOscFB AR y 0 + 200) x * 0.1
− Help/UGen/sineShaper.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--{SineShaper.ar(SinOsc.ar([400, 404], 0, 0.2), MouseX.kr(0, 1))}.play--> g_01 = X.sineShaper (sinOsc AR (mce2 400 404) 0 * 0.2) (mouseX KR 0 1 Linear 0.2)--{SineShaper.ar(SoundIn.ar, MouseX.kr(0, 1))}.play--> g_02 = X.sineShaper (soundIn 0) (mouseX KR 0 1 Linear 0.2)
− Help/UGen/slew.help.lhs
@@ -1,25 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = let z = lfPulse AR 800 0 0.5 * 0.1 in mce2 z (slew z 4000 4000)--> g_02 = let z = saw AR 800 * 0.1 in mce2 z (slew z 400 400)--> f_01 s =->   let x = mouseX KR 200 12000 Exponential 0.2->       y = mouseY KR 200 12000 Exponential 0.2->   in slew s x y * 0.15--> g_03 = f_01 (0 - saw AR 440)-> g_04 = f_01 (lfPulse AR 800 0 0.5)--Drawings--    > import Sound.SC3.Plot {- hsc3-plot -}-    > let z = lfPulse AR 800 0 0.5-    > plot_ugen1 0.05 z-    > plot_ugen1 0.05 (slew z 4000 4000)-    > plot_ugen1 0.05 (slew z 500 500)--![](sw/hsc3/Help/SVG/slew.0.svg)-![](sw/hsc3/Help/SVG/slew.1.svg)-![](sw/hsc3/Help/SVG/slew.2.svg)
− Help/UGen/slope.help.lhs
@@ -1,19 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> f_01 f0 =->     let a = lfNoise2 'α' AR f0 {- quadratic noise -}->         b = slope a {- first derivative, line segments -}->         c = slope b {- second derivative, constant segments -}->         s = 0.0002->     in [a, b * s, c * s * s]--> g_01 =->     let f = mce (f_01 2) * 220 + 220->     in mix (sinOsc AR f 0 * 0.1)--Drawing--    > import Sound.SC3.Plot {- hsc3-plot -}-    > plot_ugen 0.05 (mce (f_01 2000))--![](sw/hsc3/Help/SVG/slope.0.svg)
− Help/UGen/sms.help.lhs
@@ -1,16 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--sine reconstruction left channel, noises on right--> g_01 =->   let z = soundIn 0->       y = mouseY KR 1 50 Linear 0.2->       x = mouseX KR 0.5 4 Linear 0.2->   in X.sms {- AR -} z 50 y 8 0.3 x 0 0 0 1 (-1)--default param--> g_02 =->   let z = soundIn 0->   in X.sms {- AR -} z 80 80 4 0.2 1 0 0 0 1 (-1)
− Help/UGen/softClip.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let e = xLine KR 0.1 10 10 RemoveSynth->         o = fSinOsc AR 500 0.0->     in softClip (o * e) * 0.25
− Help/UGen/softClipAmp.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--> g_01 = softClipAmp4 AR (sinOsc AR 220 0 * 0.1) (mouseX KR 1 16 Linear 0.2)--> g_02 = softClipAmp4 AR (soundIn 0) (mouseX KR 1 8 Linear 0.2)-
− Help/UGen/sos.help.lhs
@@ -1,25 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Same as TwoPole--> g_01 =->   let theta = line KR (0.2 * pi) pi 5 RemoveSynth->       rho = line KR 0.6 0.99 5 RemoveSynth->       b1 = 2 * rho * cos theta->       b2 = - (rho * rho)->   in sos (lfSaw AR 200 0 * 0.1) 1 0 0 b1 b2--<http://www.earlevel.com/main/2011/01/02/biquad-formulas/>--> g_02 =->   let fc = 100->       sr = 48000->       k = tan (pi * fc / sr)->       q = 0.707->       norm = 1 / (1 + k / q + k * k)->       a0 = k * k * norm->       a1 = 2 * a0->       a2 = a0->       b1 = 2 * (k * k - 1) * norm->       b2 = (1 - k / q + k * k) * norm->   in sos (whiteNoise 'a' AR * 0.2) a0 a1 a2 (- b1) (- b2)
− Help/UGen/soundIn.help.lhs
@@ -1,21 +0,0 @@-soundIn is a composite of the UGens in' and numOutputBuses--> import Sound.SC3 {- hsc3 -}--copy fifth second channel (index 4) to first output channel (index 0)--> gr_01 = soundIn 0--Copy input from 1 & 0 to outputs 0 & 1.--> gr_02 = soundIn (mce2 1 0)--io matrix:--  0 1 2 3-0 *-1     *-2   *-3       *--> gr_03 = soundIn (mce [0, 2, 1, 3])
− Help/UGen/specCentroid.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}--as the number of harmonics increases, the centroid is pushed higher--> g_01 =->   let f0 = mouseY KR 1000 100 Exponential 0.2->       nh = mouseX KR 1 100 Exponential 0.2->       z = blip AR f0 nh->       f = fft' (localBuf 'α' 2048 1) z->       c = specCentroid KR f->       p = poll' (impulse KR 1 0) c 0 (label "c")->   in sinOsc AR p 0 * 0.1
− Help/UGen/specFlatness.help.lhs
@@ -1,11 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--> g_01 =->   let z = soundIn 0->       g = 1 {- gain, set as required -}->       a = poll' 1 (wAmp KR z 0.05) 0 (label "a")->       f = fft' (localBuf 'α' 2048 1) z->       c = poll' 1 (specCentroid KR f) 0 (label "c")->       w = poll' 1 (specFlatness KR f) 0 (label "w")->   in bpf (pinkNoise 'a' AR) c w * a * g
− Help/UGen/splay.help.lhs
@@ -1,59 +0,0 @@-splay is a composite UGen, arguments are:-inArray spread=1 level=1 center=0 levelComp=true--> import Sound.SC3 {- hsc3 -}--mouse control--> g_01 =->     let i = 6->         r = map (\e -> rand e 10 20) (take i ['α'..])->         n = lfNoise2 'β' KR (mce r)->         x = mouseX KR (-1) 1 Linear 0.1->         y = mouseY KR 1 0 Linear 0.1->         ci = constant . fromIntegral->         f = mce [1 .. ci i] + 3 * 100->         o = sinOsc AR (n * 200 + f) 0->     in splay o y 0.2 x True--n_set control--> g_02 =->     let i = 10->         s = control KR "spread" 1->         l = control KR "level" 0.2->         c = control KR "center" 0->         r = map (\e -> rand e 10 20) (take i ['α'..])->         ci = constant . fromIntegral->         f = mce [1 .. ci i] + 3 * 100->         n = lfNoise2 'β' KR (mce r) * 200 + f->     in splay (sinOsc AR n 0) s l c True--full stereo--    > import Sound.OSC {- hosc -}-    > withSC3 (sendMessage (n_set (-1) [("spread",1),("center",0)]))--less wide--    > withSC3 (sendMessage (n_set (-1) [("spread",0.5),("center",0)]))--mono center--    > withSC3 (sendMessage (n_set (-1) [("spread",0),("center",0)]))--from center to right--    > withSC3 (sendMessage (n_set (-1) [("spread",0.5),("center",0.5)]))--all left--    > withSC3 (sendMessage (n_set (-1) [("spread",0),("center",-1)]))--single channel input--> g_03 =->     let x = mouseX KR (-1) 1 Linear 0.1->         y = mouseY KR 1 0 Linear 0.1->         o = sinOsc AR (lfNoise2 'α' KR 6 * 9 + 440) 0 * 0.1->     in splay o y 0.2 x True
− Help/UGen/spreader.help.lhs
@@ -1,18 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let theta = pi / 2->       filtsPerOctave = 8->   in X.spreader AR (pinkNoise 'α' AR * 0.1) theta filtsPerOctave--> g_02 =->   let theta = mouseX KR 0 (pi / 2) Linear 0.2->       filtsPerOctave = 8->   in X.spreader AR (pinkNoise 'α' AR * 0.1) theta filtsPerOctave--> g_03 =->   let in_ = sinOsc AR (mouseX KR 110 880 Exponential 0.2) 0 * 0.1->       theta = pi / 2->       filtsPerOctave = 8->   in X.spreader AR in_ theta filtsPerOctave
− Help/UGen/squiz.help.lhs
@@ -1,27 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> f_01 zmax s =->   let x = mouseX KR 1 10 Exponential 0.2->       y = mouseY KR 1 zmax Linear 0.2->   in X.squiz s x y 0.1 * 0.1--Squiz of sin oscillator--> g_01 = f_01 10 (sinOsc AR 440 0)---> g_02 = f_01 100 (soundIn 0)--Load sound file to buffer zero--    > let fn = "/home/rohan/data/audio/pf-c5.aif"-    > let fn = "/home/rohan/opt/src/supercollider/sounds/a11wlk01.wav"-    > withSC3 (async (b_allocRead 0 fn 0 0))--Squiz of audio file.--> g_03 =->   let r = bufRateScale KR 0->       p = playBuf 1 AR 0 (r * 0.5) 1 0 Loop DoNothing->   in f_01 100 p
− Help/UGen/standard2DL.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}--> def_k = 1.4-> def_x0 = 4.9789799812499-> def_y0 = 5.7473416156381--mouse-controlled param--> g_01 = standard2DL AR 11025 44100 (mouseX KR 0.9 4 Linear 0.2) def_x0 def_y0 * 0.3--as a frequency control--> g_02 =->   let x = mouseX KR 0.9 4 Linear 0.2->       f = standard2DL AR 10 20 x def_x0 def_y0 * 800 + 900->   in sinOsc AR f 0 * 0.3
− Help/UGen/standardL.help.lhs
@@ -1,15 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_00 = standardL AR (sampleRate / 2) 1.0 0.5 0 * 0.2--vary frequency--> g_01 = standardL AR (mouseX KR 20 sampleRate Linear 0.2) 1 0.5 0 * 0.3--mouse-controlled param--> g_02 = standardL AR (sampleRate / 2) (mouseX KR 0.9 4 Linear 0.2) 0.5 0 * 0.3--as a frequency control--> g_03 = sinOsc AR (standardL AR 40 (mouseX KR 0.9 4 Linear 0.2) 0.5 0 * 800 + 900) 0 * 0.3
− Help/UGen/stepper.help.lhs
@@ -1,52 +0,0 @@-> import Sound.OSC {- hosc -}-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let i = impulse KR 10 0->       f = stepper i 0 4 16 (-3) 4 * 100->   in sinOsc AR f 0 * 0.1--Using Stepper and BufRd for sequencing--> compose :: [t -> t] -> t -> t-> compose = foldl (flip (.)) id--> rvb :: ID z => z -> UGen -> UGen-> rvb z0 s =->   let f z1 i =->         let dly = mce [rand ((z0,z1),'α') 0 0.5->                       ,rand ((z0,z1),'β') 0 0.5]->         in allpassN i 0.05 dly (rand z1 1.5 2)->   in compose (map f (id_seq 5 'γ')) s--> stpr :: UGen-> stpr =->   let rate = mouseX KR 1.75 2.25 Exponential 0.1->       clock = impulse KR rate 0->       envl = decay2 clock 0.002 2.5->       indx = stepper clock 0 0 15 1 0->       freq = bufRdN 1 KR 10 indx Loop->       ffreq = lag2 freq 0.1 + mce [0,0.3]->       lfo = sinOsc KR 0.2 (mce [0,pi/2]) * 0.0024 + 0.0025->       top = mix (lfPulse AR (freq * mce [1,1.5,2]) 0 0.3)->       chn = [\s -> rlpf s ffreq 0.3 * envl->             ,\s -> rlpf s ffreq 0.3 * envl->             ,\s -> s * 0.5->             ,\s -> combL s 1 (0.66 / rate) 2 * 0.8 + s->             ,\s -> s + (rvb 'γ' s * 0.3)->             ,\s -> leakDC s 0.1->             ,\s -> delayL s 0.1 lfo + s->             ,\s -> onePole s 0.9]->   in compose chn top--> stpr_init :: DuplexOSC m => m ()-> stpr_init = do->   let n = [97.999,195.998,523.251,466.164,195.998->           ,233.082,87.307,391.995,87.307,261.626->           ,195.998,77.782,233.082,195.998,97.999->           ,155.563]->   _ <- async (b_alloc 10 128 1)->   sendMessage (b_setn 10 [(0,n)])--    > withSC3 stpr_init-    > audition stpr
− Help/UGen/stkBandedWG.help.lhs
@@ -1,32 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Record.Plain.StkBandedWG {- hsc3-rec -}--> g_01 = mkStkBandedWG stkBandedWGR--instr: Uniform Bar = 0, Tuned Bar = 1, Glass Harmonica = 2, Tibetan Bowl = 3--> g_02 = mkStkBandedWG stkBandedWGR {instr = 3}--> g_03 =->   let tr = impulse KR (mouseX KR 0.5 12 Linear 0.2) 0 - 0.5->       u = stkBandedWGR->           {freq = midiCPS (tExpRand 'α' 24 96 tr)->           ,modalresonance = tRand 'ζ' 0 127 tr->           ,instr = 3->           ,trig_ = tr}->   in mkStkBandedWG u--setstriking: 0 = Plucked, 127 = Bowed--> g_04 =->   let u = stkBandedWGR->           {freq = rand 'α' 110 440->           ,instr = iRand 'β' 1 3->           ,bowpressure = iRand 'γ' 32 96->           ,bowmotion = rand 'δ' 32 96->           ,integration = rand 'ε' 0 64->           ,modalresonance = rand 'ζ' 32 96->           ,bowvelocity = rand 'η' 64 96->           ,setstriking = 127->           ,trig_ = 1}->   in mkStkBandedWG u
− Help/UGen/stkMandolin.help.lhs
@@ -1,29 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Record.Plain.StkMandolin {- hsc3-rec -}--> g_01 =->   let x = mouseX KR 0.25 16 Linear 0.2->       tr = impulse KR x 0 - 0.5->       u = stkMandolinR->         {freq = midiCPS (tiRand 'α' 32 96 tr)->         ,bodysize = tRand 'β' 0 127 tr->         ,pickposition = tRand 'γ' 0 127 tr->         ,stringdamping = tRand 'δ' 0 127 tr->         ,stringdetune = tRand 'ε' 0 127 tr->         ,aftertouch = tRand 'ζ' 0 127 tr->         ,trig_ = tr}->   in mkStkMandolin u--> g_02 =->   let x = mouseX KR 3 16 Linear 0.2->       tr = impulse KR x 0 - 0.5 -- trig->       tr3 = pulseDivider tr 3 0->       u = stkMandolinR->         {freq = midiCPS (tiRand 'α' 54 66 tr)->         ,bodysize = tRand 'β' 72 94 tr3->         ,pickposition = tRand 'γ' 32 42 tr3->         ,stringdamping = tRand 'δ' 64 72 tr3->         ,stringdetune = tRand 'ε' 0 4 tr3->         ,aftertouch = tRand 'ζ' 2 8 tr3->         ,trig_ = tr}->   in mkStkMandolin u
− Help/UGen/stkModalBar.help.lhs
@@ -1,37 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Record.Plain.StkModalBar {- hsc3-rec -}--instrument: Marimba=0, Vibraphone=1, Agogo=2, Wood1=3, Reso=4, Wood2=5, Beats=6, Two Fixed=7, Clump=8--> g_01 =->   let x = mouseX KR 0.25 12 Linear 0.2->       tr = impulse KR x 0 - 0.5->       u = stkModalBarR->         {freq = midiCPS (tiRand 'α' 25 96 tr)->         ,instrument = tiRand 'β' 0 9 tr->         ,stickhardness = tRand 'γ' 0 127 tr->         ,stickposition = tRand 'δ' 0 127 tr->         ,vibratogain = tRand 'ε' 0 127 tr->         ,vibratofreq = tRand 'ζ' 0 127 tr->         ,directstickmix = tRand 'η' 0 127 tr->         ,volume = tRand 'θ' 0 127 tr->         ,trig_ = tr}->   in mkStkModalBar u--> g_02 =->   let x = mouseX KR 1 12 Linear 0.2->       tr = impulse KR x 0 - 0.5->       tr3 = pulseDivider tr 3 0->       u = stkModalBarR->         {freq = midiCPS (tiRand 'α' 52 64 tr)->         ,instrument = 1->         ,stickhardness = tRand 'β' 10 50 tr3->         ,stickposition = tRand 'γ' 40 80 tr3->         ,vibratogain = tRand 'δ' 66 98 tr3->         ,vibratofreq = tRand 'ε' 4 12 tr3->         ,directstickmix = tRand 'ζ' 0 1 tr3->         ,volume = tRand 'η' 16 48 tr3->         ,trig_ = tr}->   in mkStkModalBar u--<https://ccrma.stanford.edu/software/stk/classstk_1_1ModalBar.html>
− Help/UGen/stkMoog.help.lhs
@@ -1,40 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Record.Plain.StkMoog {- hsc3-rec -}--> g_01 =->   let tr = mouseButton KR 0 1 0 - 0.5->       u = stkMoogR->         {freq = midiCPS (tiRand 'α' 12 96 tr)->         ,filterQ = tRand 'β' 0 127 tr->         ,sweeprate = tRand 'γ' 0 127 tr->         ,vibfreq = tRand 'δ' 0 127 tr->         ,vibgain = tRand 'ε' 0 127 tr->         ,gain = tRand 'ζ' 0 127 tr->         ,trig_ = tr}->   in mkStkMoog u--> g_02 =->   let x = mouseX KR 0.25 16 Linear 0.2->       tr = impulse KR x 0 - 0.5->       u = stkMoogR->         {freq = midiCPS (tiRand 'α' 24 72 tr)->         ,filterQ = tRand 'β' 0 32 tr->         ,sweeprate = tRand 'γ' 0 32 tr->         ,vibfreq = tRand 'δ' 0 96 tr->         ,vibgain = tRand 'ε' 0 16 tr->         ,gain = tRand 'ζ' 32 127 tr->         ,trig_ = tr}->   in mkStkMoog u--> g_03 =->   let nsig z l r f = range l r (lfNoise2 z KR f)->       scl = asLocalBuf 'α' [0,2,3.2,5,7,9,10]->       mnn = 48 + degreeToKey scl (nsig 'β' 0 15 0.35) 12->       u = stkMoogR->         {freq = midiCPS mnn->         ,filterQ = nsig 'γ' 0 64 0.5->         ,sweeprate = nsig 'δ' 0 64 0.5->         ,vibfreq = nsig 'ε' 0 64 0.5->         ,vibgain = nsig 'ζ' 0 16 0.5->         ,gain = nsig 'η' 16 96 0.5}->   in mkStkMoog u
− Help/UGen/stkPluck.help.lhs
@@ -1,11 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Record.Plain.StkPluck {- hsc3-rec -}--> g_01 = mkStkPluck stkPluckR--> g_02 =->   let u = stkPluckR->           {freq = midiCPS (iRand 'α' 32 96)->           ,decay_ = rand 'β' 0 127}->       s = leakDC (mkStkPluck u) 0.995->   in mrg2 s (detectSilence s 0.01 0.5 RemoveSynth)
− Help/UGen/stkShakers.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import Sound.SC3.UGen.Record.Plain.StkShakers {- hsc3-rec -}--> gr_01 = mkStkShakers stkShakersR--> gr_02 =->     let x = mouseX KR 0.25 4 Linear 0.2->         tr = impulse KR x 0 - 0.5->         u = stkShakersR->           {instr = tRand 'α' 0 23 tr->           ,energy = tRand 'β' 0 127 tr->           ,decay_ = tRand 'γ' 0 127 tr->           ,objects = tRand 'δ' 0 127 tr->           ,resfreq = tRand 'ε' 0 127 tr}->     in mkStkShakers u--<https://ccrma.stanford.edu/software/stk/classstk_1_1Shakers.html>
− Help/UGen/streson.help.lhs
@@ -1,17 +0,0 @@-<http://www.csounds.com/manual/html/streson.html>--> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> k_01 = recip (linExp (lfCub KR 0.1 (0.5 * pi)) (-1) 1 280 377)--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen_nrt (20,1) 16.0 k_01--> f_01 z = X.streson z k_01 0.9 * 0.3--> g_01 = f_01 (lfSaw AR (mce2 220 180) 0 * 0.2)--> g_02 = f_01 (soundIn 0)--see also Sound.SC3.Data.Modal.modal_frequency_ratios
− Help/UGen/sub.help.lhs
@@ -1,14 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let o = fSinOsc AR 800 0->         n = pinkNoise 'α' AR->     in (o - n) * 0.1--DC offset.--> g_02 = fSinOsc AR 440 0 * 0.1 - 0.5--Optimises identity--> g_03 = (sinOsc AR 440 0 - 0) * 0.1
− Help/UGen/subsampleOffset.help.lhs
@@ -1,30 +0,0 @@-> import Sound.OSC {- hosc -}-> import Sound.SC3 {- hsc3 -}--Impulse train that can be moved between samples--> sy_01 =->     let a = control KR "a" 0->         i = impulse AR 2000 0 * 0.3->         d = sampleDur->         x = 4->         o = (1 - subsampleOffset) + mouseX KR 0 a Linear 0.1->         r = delayC i (d * (1 + x)) (d * (o + x))->     in synthdef "s" (offsetOut 0 r)--Create two pulse trains one sample apart, move one relative to the-other.  When cursor is at the left, the impulses are adjacent, on the-right, they are exactly 1 sample apart.  View this with an-oscilloscope.--> run s = do->       {_ <- async (d_recv s)->       ;t <- time->       ;sr <- serverSampleRateActual->       ;let {t' = t + 0.2->            ;dt = 1 / sr->            ;m n = s_new "s" (-1) AddToTail 1 [("a", n)]}->        in do {sendBundle (bundle t' [m 3])->              ;sendBundle (bundle (t' + dt) [m 0]) }}--   > withSC3 (run sy_01)
− Help/UGen/sum3.help.lhs
@@ -1,9 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = sum3 (sinOsc AR 440 0) (sinOsc AR 441 0) (sinOsc AR 442 0) * 0.1--there is an optimiser/re-writer, applicable at ADD--> g_02 = (sinOsc AR 440 0 + sinOsc AR 441 0 + sinOsc AR 442 0) * 0.1--> g_03 = mix (sinOsc AR (mce [440 .. 442]) 0) * 0.1
− Help/UGen/sum4.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = sum4 (sinOsc AR 440 0) (sinOsc AR 441 0) (sinOsc AR 442 0) (sinOsc AR 443 0) * 0.1--> g_02 = mix (sinOsc AR (mce [440 .. 443]) 0) * 0.1
− Help/UGen/sumSqr.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let a = fSinOsc AR 800 0->         b = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0->     in sumSqr a b * 0.125--Written out:--> g_02 =->     let a = fSinOsc AR 800 0->         b = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0->     in (a * a + b * b) * 0.125
− Help/UGen/svf.help.lhs
@@ -1,23 +0,0 @@-> import Sound.OSC {- hosc -}-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let signal = lfSaw AR (range 110 35 (lfSaw KR 2 0)) 0->       cutoff = mouseX KR 20 20000 Exponential 0.2->       res = mouseY KR 1 0 Linear 0.2->       k = control KR->       low = k "low" 0.1->       band = k "band" 0.0->       high = k "high" 0.0->       notch = k "notch" 0.0->       peak_ = k "peak" 0.0->   in X.svf signal cutoff res low band high notch peak_--> f_01 k v = withSC3 (sendMessage (n_set1 (-1) k v))--    f_01 "low" 0.1-    f_01 "band" 0.0-    f_01 "high" 0.0-    f_01 "notch" 0.0-    f_01 "peak" 0.0
− Help/UGen/sweep.help.lhs
@@ -1,70 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Using sweep to modulate sine frequency--> g_01 =->   let x = mouseX KR 0.5 20 Exponential 0.1->       t = impulse KR x 0->       f = sweep t 700 + 500->   in sinOsc AR f 0 * 0.2--Load audio to buffer--> n_01 = "/home/rohan/data/audio/pf-c5.aif"--> m_01 = b_allocRead 0 n_01 0 0--    > withSC3 (maybe_async m_01)--Using sweep to index into a buffer--> g_02 =->   let x = mouseX KR 0.5 20 Exponential 0.1->       t = impulse AR x 0->       p = sweep t (bufSampleRate KR 0)->   in bufRdL 1 AR 0 p NoLoop--Backwards, variable offset--> g_03 =->   let n = lfNoise0 'α' KR 15->       x = mouseX KR 0.5 10 Exponential 0.1->       t = impulse AR x 0->       r = bufSampleRate KR 0->       p = sweep t (negate r) + (bufFrames KR 0 * n)->   in bufRdL 1 AR 0 p NoLoop--Raising rate--> g_04 =->   let x = mouseX KR 0.5 10 Exponential 0.1->       t = impulse AR x 0->       r = sweep t 2 + 0.5->       p = sweep t (bufSampleRate KR 0 * r)->   in bufRdL 1 AR 0 p NoLoop--f0 (sc-users, 2012-02-09)--> g_05 =->   let lf = range 0.01 1.25 (lfNoise2 'α' KR 1)->       du = duty AR lf 0 DoNothing lf->       tr = abs (hpz1 du) >** 0->       ph = sweep tr (1/du)->       fr = linExp ph 0 1 400 800->   in sinOsc AR fr 0 * 0.2--line segments, set start & end values, transition time and trigger.-continues past end point if not re-triggered.--> g_06 =->   let tr = tr_control "tr" 0->       st = control KR "st" 440->       en = control KR "en" 880->       tm = control KR "tm" 2->       rt = ((en - st) / tm)->       sw = sweep tr rt + st->   in sinOsc AR sw 0 * 0.2--    > import Sound.OSC {- hosc -}-    > withSC3 (sendMessage (n_set (-1) [("st",660),("en",550),("tm",4),("tr",1)]))-    > withSC3 (sendMessage (n_set (-1) [("st",110),("en",990),("tm",1),("tr",1)]))
− Help/UGen/switchDelay.help.lhs
@@ -1,15 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--simple feedback delay--> g_01 = X.switchDelay (soundIn 0) 1 1 1 0.99 20--> g_02 = X.switchDelay (soundIn 0) 1 0.7 0.4 0.6 20--change the buffer read pointer periodically.--> g_03 =->   let ix = stepper (impulse KR 0.5 0) 0 0 3 1 0->       dt = select ix (mce [0.02,0.1,0.725,0.25])->   in X.switchDelay (soundIn 0) 1 0.6 dt 0.7 20
− Help/UGen/syncSaw.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let f = line KR 100 800 12 RemoveSynth->     in syncSaw AR 100 f * 0.1--Mouse control--> g_02 =->     let sy_f = mouseY KR 80 220 Exponential 0.2->         sw_f = sy_f * mouseX KR 1 3 Linear 0.2->     in syncSaw AR sy_f sw_f * 0.1
− Help/UGen/t2a.help.lhs
@@ -1,19 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let tr = impulse KR (mouseX KR 1 100 Exponential 0.2) 0->     in ringz (t2a tr 0) 800 0.01 * 0.4--compare with k2a (oscilloscope)--> g_02 =->     let tr = impulse KR 200 0->     in lag (mce2 (t2a tr 0) (k2a tr)) 0.001--removing jitter by randomising offset--> g_03 =->     let tr = impulse KR (mouseX KR 1 100 Exponential 0.2) 0->         o = range 0 (blockSize - 1) (whiteNoise 'β' KR)->     in ringz (t2a tr o) 880 0.1 * 0.4-
− Help/UGen/t2k.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->   let tr = t2k (dust 'α' AR 4)->   in trig tr 0.1 * sinOsc AR 800 0 * 0.1
− Help/UGen/tBetaRand.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->     let t = dust 'α' KR 10->         f = X.tBetaRand 'β' 300 3000 0.1 0.1 t->     in sinOsc AR f 0 * 0.1--mouse control of parameters (...scsynth -> 100% CPU)--> g_02 =->     let t = dust 'α' AR 10->         p1 = mouseX KR 1 5 Linear 0.2->         p2 = mouseY KR 1 5 Linear 0.2->         f = X.tBetaRand 'β' 300 3000 p1 p2 t->     in sinOsc AR f 0 * 0.1--...audio rate crashes server...--> g_03 =->     let t = dust 'α' AR 100->         p1 = mouseX KR 1 5 Linear 0.2->         p2 = mouseY KR 1 5 Linear 0.2->     in lag (X.tBetaRand 'β' (-1) 1 p1 p2 t) (10 / 48000)
− Help/UGen/tBrownRand.help.lhs
@@ -1,24 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->     let t = dust 'α' KR 10->         dist = mouseX KR 0 5 Linear 0.2->         f = X.tBrownRand 'β' 300 3000 1 dist t->     in sinOsc AR f 0 * 0.1--> g_02 =->     let t = dust 'α' KR 10->         n = X.tBrownRand 'β' 0 1 0.2 0 t->         f = linExp n 0 1 300 3000->         o = sinOsc AR f 0->         l = X.tBrownRand 'γ' (-1) 1 1 4 t->     in pan2 o l 0.1--audio rate noise--> g_03 =->   let x = mouseX KR 500 5000 Exponential 0.2->       y = mouseY KR 10 500 Exponential 0.2->       t = dust 'α' AR x->   in lag (X.tBrownRand 'β' (-1) 1 0.2 0 t) (y / 48000)
− Help/UGen/tChoose.help.lhs
@@ -1,13 +0,0 @@-tChoose is a composite of tIRand and select.--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR 1 1000 Exponential 0.1->         t = dust 'a' AR x->         f = midiCPS (tIRand 'b' 48 60 t)->         o = let a = mce [sinOsc AR f 0->                         ,saw AR (f * 2)->                         ,pulse AR (f * 0.5) 0.1]->             in tChoose 'c' t a->     in o * 0.1
− Help/UGen/tDelay.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let z = impulse AR 2 0->         z' = tDelay z 0.5->         o = sinOsc AR 440 0 * 0.1->     in mce [z * 0.1,toggleFF z' * o]
− Help/UGen/tDuty.help.lhs
@@ -1,43 +0,0 @@-> import Data.List {- base -}-> import Sound.SC3 {- hsc3 -}--Play a little rhythm--> g_01 =->     let d = dseq 'α' dinf (mce [0.1, 0.2, 0.4, 0.3])->     in tDuty AR d 0 DoNothing 1 0--Amplitude changes--> g_02 =->     let d0 = dseq 'α' dinf (mce [0.1, 0.2, 0.4, 0.3])->         d1 = dseq 'β' dinf (mce [0.1, 0.4, 0.01, 0.5, 1.0])->     in ringz (tDuty AR d0 0 DoNothing d1 1) 1000 0.1--Mouse control.--> g_03 =->     let d = dseq 'α' dinf (mce [0.1, 0.4, 0.01, 0.5, 1.0])->         x = mouseX KR 0.003 1 Exponential 0.1->     in ringz (tDuty AR x 0 DoNothing d 1) 1000 0.1 * 0.5--Note that the 440 is the shorter pitch, since gap is set to false--> g_04 =->     let d0 = dser 'α' 12 (mce [0.1, 0.3])->         d1 = dser 'β' 12 (mce [440, 880])->         t = tDuty AR d0 0 RemoveSynth d1 0->     in sinOsc AR (latch t t) 0 * 0.1--Abstraction--> g_05 =->     let bp n d act = let (e,t) = unzip d->                          mk z l = dser z n (mce l)->                          sq = tDuty AR (mk 'α' t) 0 act (mk 'β' e) 0->                      in latch sq sq->         bp' d = bp (genericLength d) d->         tm m = let f (e,t) = (e,t * m) in map f->         f1 = midiCPS (bp 35 (tm 0.125 [(60,1),(63,1),(67,2),(68,1),(62,1)]) RemoveSynth)->         f2 = midiCPS (bp' [(60,1),(63,0.5),(67,0.5),(68,1),(62,1)] DoNothing)->     in sinOsc AR (mce2 f1 f2) 0 * 0.1
− Help/UGen/tExpRand.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_00 =->  let f = tExpRand 'α' 300.0 3000.0 (dust 'β' KR 10)->  in sinOsc AR f 0 * 0.1--> g_01 :: UId m => m UGen-> g_01 = do->  f <- tExpRandM 300.0 3000.0 =<< dustM KR 10->  return (sinOsc AR f 0 * 0.1)
− Help/UGen/tGaussRand.help.lhs
@@ -1,15 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> f_01 rand_f =->     let t = dust 'α' KR 10->         f = rand_f 'β' 300 3000 t->         o = sinOsc AR f 0->         l = rand_f 'γ' (-1) 1 t->     in pan2 o l 0.1--> g_01 = f_01 X.tGaussRand--compare to tRand--> g_02 = f_01 tRand
− Help/UGen/tGrains.help.lhs
@@ -1,66 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Load audio (#10) data--> f_01 = "/home/rohan/data/audio/pf-c5.aif"--> m_01 = b_allocRead 10 f_01 0 0--    > withSC3 (async m_01)--Mouse control--> g_01 =->     let tRate = mouseY KR 2 200 Exponential 0.1->         ctr = mouseX KR 0 (bufDur KR 10) Linear 0.1->         tr = impulse AR tRate 0->     in tGrains 2 tr 10 1 ctr (4 / tRate) 0 0.25 2--> g_02 =->     let b = 10->         rt = mouseY KR 8 120 Exponential 0.1->         dur = 4 / rt->         clk = dust 'α' AR rt->         r = tRand 'β' 0 0.01 clk->         pan = whiteNoise 'γ' KR * 0.6->         x = mouseX KR 0 (bufDur KR b) Linear 0.1->         pos = x + r->     in tGrains 2 clk b 1 pos dur pan 0.25 2--> g_03 =->     let b = 10->         rt = mouseY KR 2 120 Exponential 0.1->         dur = 1.2 / rt->         clk = impulse AR rt 0->         pos = mouseX KR 0 (bufDur KR b) Linear 0.1->         n0 = whiteNoise 'α' KR->         n1 = whiteNoise 'β' KR->         rate = shiftLeft 1.2 (roundTo (n0 * 3) 1)->     in tGrains 2 clk b rate pos dur (n1 * 0.6) 0.25 2--Demand UGens as inputs (may eventually hang scsynth?)--> g_04 =->     let b = 10->         rt = mouseY KR 2 100 Linear 0.2->         d e = dwhite e 1 0.1 0.2->         z e0 e1 = drand e0 1 (mce [dgeom e0 (diwhite e0 1 20 40) 0.1 (1 + d e0)->                                   ,dgeom e1 (diwhite e1 1 20 40) 1 (1 - d e1)])->         clk = impulse AR rt 0->         dsq e xs = dseq e dinf (mce xs)->         rate = dsq 'α' [1,1,z 'β' 'γ',0.5,0.5,0.2,0.1,0.1,0.1,0.1] * 2 + 1->         pos = dsq 'δ' (take 8 (zipWith z ['ε'..] ['ζ'..]))->         dur = dsq 'η' [1,d 'θ',1,z 'ι' 'κ',0.5,0.5,0.1,z 'λ' 'μ'] * 2 / rt->         pan = dsq 'ν' [1,1,1,0.5,0.2,0.1,0,0,0] * 2 - 1->         amp = dsq 'ξ' [1,0,z 'ο' 'π',0,2,1,1,0.1,0.1]->     in tGrains 2 clk b rate pos dur pan amp 2--http://sc-users.bham.ac.narkive.com/sj4Tw3ub/sync-osc#post5--> g_05 =->   let b = 10->       freq = 100->       dur = 2 / freq->       clk = impulse AR freq 0->       x = mouseX KR 0.5 16 Exponential 0.2->   in tGrains 2 clk b x (0.3 * bufDur KR b) dur 0 0.1 2
− Help/UGen/tRand.help.lhs
@@ -1,13 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let t = dust 'α' KR (mce2 5 12)->         f = tRand 'β' (mce2 200 1600) (mce2 500 3000) t->     in sinOsc AR f 0 * 0.2--> g_02_m = do->   t <- dustM KR (mce2 5 12)->   f <- tRandM (mce2 200 1600) (mce2 500 3000) t->   return (sinOsc AR f 0 * 0.2)--> g_02 = uid_st_eval g_02_m
− Help/UGen/tWindex.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let p = mce [1/5, 2/5, 2/5]->         a = mce [400, 500, 600]->         t = impulse KR 6 0->         i = tWindex 'α' t 0 p->     in sinOsc AR (select i  a) 0 * 0.1--Modulating probability values--> g_02 =->     let p = mce [1/4, 1/2, sinOsc KR 0.3 0 * 0.5 + 0.5]->         a = mce [400, 500, 600]->         t = impulse KR 6 0->         i = tWindex 'α' t 1 p->     in sinOsc AR (select i a) 0 * 0.1
− Help/UGen/tanh.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let e = xLine KR 0.1 10 10 DoNothing->         o = fSinOsc AR 500 0.0->     in tanh (o * e) * 0.25
− Help/UGen/tartini.help.lhs
@@ -1,33 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--Comparison of input frequency (x) and tracked oscillator frequency (f).--> g_01 =->   let x = mouseX KR 440 880 Exponential 0.1->       o = lfSaw AR x 0 * 0.05 {- sinOsc AR x 0 * 0.1 -}->       [f,_e] = mceChannels (X.tartini KR o 0.2 2048 0 1024 0.5)->       r = sinOsc AR f 0 * 0.1->       t = impulse KR 4 0->       pf = poll t f 0 (label "f")->       px = poll t x 0 (label "x")->   in mrg [out 0 (mce2 o r),pf,px]--Fast test of live pitch tracking, not careful with amplitude of input--> g_02 =->   let z = hpf (soundIn 0) 90->       [f,e] = mceChannels (X.tartini KR z 0.2 2048 0 1024 0.5)->   in mce2 (z * 0.1) (lfTri AR f 0 * 0.2 * lag e 0.2 * lag (f >** 90 * f <** 500) 0.2)--Printer for pitch tracker--> g_03 =->   let i = soundIn 0->       [f,_e] = mceChannels (X.tartini KR i 0.2 2048 0 1024 0.5)->       r = sinOsc AR f 0 * 0.1->       t = impulse KR 4 0->       pf = poll t f 0 (label "f")->   in mrg [out 0 (mce2 i r),pf]--ZELL = C4 - C5 = 247 259 277 295 309 331 345 369 387 415 441 462 493 (hz)
− Help/UGen/thresh.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--low-rent gate--> g_01 = let n = lfNoise0 'α' AR 50 * 0.5 in thresh n 0.45
− Help/UGen/tiRand.help.lhs
@@ -1,17 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_00 =->   let l = tiRand 'α' (-1) 1 (dust 'β' KR 10)->   in pan2 (pinkNoise 'γ' AR * 0.1) l 1--> g_01 :: UId m => m UGen-> g_01 = do->   l <- tiRandM (-1) 1 =<< dustM KR 10->   n <- pinkNoiseM AR->   return (pan2 (n * 0.1) l 1)--> g_02 :: UId m => m UGen-> g_02 = do->   n <- tiRandM 4 12 =<< dustM KR 10->   let f = n * 150 + (mce [0,1])->   return (sinOsc AR f 0 * 0.1)
− Help/UGen/timer.help.lhs
@@ -1,5 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let t = impulse KR (mouseX KR 0.5 20 Exponential 0.1) 0->     in sinOsc AR (timer t * 500 + 500) 0 * 0.2
− Help/UGen/toggleFF.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let tr = dust 'α' AR (xLine KR 1 1000 60 DoNothing)->         fr = toggleFF tr * 400 + 800->     in sinOsc AR fr 0 * 0.1
− Help/UGen/trig.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let d = dust 'α' AR 1->         o = fSinOsc AR 800 0 * 0.5->     in o * trig d 0.2
− Help/UGen/trig1.help.lhs
@@ -1,8 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let d = dust 'α' AR 1->         o = fSinOsc AR 800 0 * 0.2->     in o * trig1 d 0.2--> g_02 = sinOsc AR 440 0 * trig1 (impulse KR 10 0) 0.1 * 0.25
− Help/UGen/trigControl.help.lhs
@@ -1,38 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Graph with the three types of non-audio controls.--> g_01 =->     let freq = control KR "freq" 440->         phase = control IR "phase" 0->         gate' = tr_control "gate" 1->         amp = control KR "amp" 0.1->         e = envGen KR gate' amp 0 1 DoNothing (envASR 0.01 0.1 1 EnvLin)->     in sinOsc AR freq phase * e--Make a graph drawing--    > import Sound.SC3.UGen.Dot {- hsc3-ugen -}-    > draw (out 0 g_01)--Listen--    > audition_at (10,AddToHead,1,[]) (out 0 g_01)--Set frequency and the trigger gate.--    > import Sound.OSC {- hosc -}-    > withSC3 (sendMessage (n_set1 10 "freq" 2200))-    > withSC3 (sendMessage (n_set1 10 "gate" 1))--Make a control rate graph to write freq and gate values.--> g_02 = mce2 (tRand 'α' 220 2200 (dust 'β' KR 1)) (dust 'γ' KR 3)--Add it _before_ the node it will map to, the trigger is only on the bus for the current cycle.--    > audition_at (-1,AddBefore,10,[]) (out 0 g_02)--Map the control values at the audio graph.--    > withSC3 (sendMessage (n_map 10 [("freq",0),("gate",1)]))
− Help/UGen/twChoose.help.lhs
@@ -1,13 +0,0 @@-tWChoose is a composite of tWindex and select--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let x = mouseX KR 1 1000 Exponential 0.1->         d = dust 'α' AR x->         a = mce [sinOsc AR 220 0->                 ,saw AR 440->                 ,pulse AR 110 0.1]->         w = mce [0.5, 0.35, 0.15]->         o = tWChoose 'β' d a w 0->     in o * 0.1
− Help/UGen/twoPole.help.lhs
@@ -1,10 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = whiteNoise 'α' AR->     in twoPole (n * 0.005) 2000 0.95--> g_02 =->     let n = whiteNoise 'α' AR->         f = xLine KR 800 8000 8 RemoveSynth->     in twoPole (n * 0.005) f 0.95
− Help/UGen/twoTube.help.lhs
@@ -1,11 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_01 =->   let dly1 = 100->       dly2 = 40->       env = envelope [1,1,0] [(dly1 + dly2) / sampleRate,0.0] [EnvLin]->       x = mouseX KR (-1) 1 Linear 0.2->       y = mouseY KR 1 4 Linear 0.2->       src = whiteNoise 'α' AR * 0.5 * envGen AR (impulse KR y 0) 1 0 1 DoNothing env->   in X.twoTube AR src x 0.99 dly1 dly2
− Help/UGen/twoZero.help.lhs
@@ -1,6 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let n = whiteNoise 'α' AR->         f = xLine KR 20 20000 8 RemoveSynth->     in twoZero (n * 0.125) f 1
− Help/UGen/vDiskIn.help.lhs
@@ -1,12 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> fn_01 = "/home/rohan/data/audio/pf-c5.snd"-> nc_01 = 1-> msg_01 = [b_alloc 0 8192 nc_01,b_read 0 fn_01 0 (-1) 0 True]-> msg_02 = [b_close 0,b_free 0]--    > withSC3 (mapM_ async msg_01)--> g_01 = vDiskIn nc_01 0 (sinOsc KR 0.25 0 * 0.25 + 1) Loop 0--    > withSC3 (mapM_ async msg_02)
− Help/UGen/vOsc.help.lhs
@@ -1,35 +0,0 @@-> import Sound.OSC {- hosc -}-> import Sound.SC3 {- hsc3 -}--Allocate and fill tables 0 to 7.--> b_flags = [Normalise,Wavetable,Clear]-> gen_harm i =->     let square a = a * a->         n = square (fromIntegral i + 1)->         f j = square ((n - j) / n)->     in map f [0 .. n - 1]-> gen_setup i = (b_alloc i 1024 1,b_gen_sine1 i b_flags (gen_harm i))-> run_setup (p,q) = (async p >> sendMessage q)--    import Sound.SC3.Plot {- hsc3-plot -}-    plotImpulses [gen_harm 7]-    withSC3 (mapM_ (run_setup . gen_setup) [0 .. 7])--Oscillator at buffers 0 through 7, mouse selects buffer.--> f_01 k n =->     let x = mouseX KR k (k + n - 1) Linear 0.1->         y = mouseY KR 0.01 0.2 Exponential 0.2->     in vOsc AR x (mce [120, 121]) 0 * y--> g_01 = f_01 0 8--    > audition (f_01 0 24)--Reallocate buffers while oscillator is running.--    > import Sound.SC3.Lang.Random.IO {- hsc3-lang -}-    >-    > resetTable i = do {h <- nrrand 12 0 1;sendMessage (b_gen_sine1 i b_flags h)}-    > withSC3 (mapM_ resetTable [0 .. 7])
− Help/UGen/vOsc3.help.lhs
@@ -1,18 +0,0 @@-> import Sound.SC3 {- hsc3 -}--see vOsc help for code to allocate and fill tables 0 to 7...--oscillator at buffers 0 through 7, mouse selects buffer.--> f_01 k0 kN =->     let x = mouseX KR k0 (k0 + kN - 1) Linear 0.1->         y = mouseY KR 0.01 0.2 Exponential 0.2->         o1 = vOsc3 AR x 120 121 129->         o2 = vOsc3 AR x 119 123 127->     in mce2 o1 o2 * y--> g_01 = f_01 0 8--  let k = 0 in audition (f_01 k 24)-  audition (f_01 0 102)-  audition (f_01 19 31)
− Help/UGen/varLag.help.lhs
@@ -1,49 +0,0 @@-> import Sound.SC3 {- hsc3 -}--The implemented varLag UGen has five inputs: (input, lagTime, curvature, warp, start)--> g_00 = varLag (lfPulse AR 50 0 0.5) (mouseX KR 0.0 (1/50) Linear 0.2) 0 5 0 * 0.2--> g_01 = varLag (impulse AR 50 0) (mouseX KR 0.0 (1/50) Linear 0.2) 0 5 0 * 0.2--The varLag_env composite UGen has various odd behaviours--> f_01 f = sinOsc AR (f (exprange 200 400 (lfNoise1 'α' KR 5)) 0.1) 0 * 0.2--> g_02 = f_01 lag--> g_03 = f_01 (\s t -> varLag_env s t (EnvNum 0) s)--> f_02 f =->     let x = mouseX KR 220 440 Linear 0.2->     in sinOsc AR (mce [x, f x 1]) 0 * 0.1--> g_04 = f_02 lag--> g_05 = f_02 (\s t -> varLag_env s t (EnvNum 0) s)--> g_06 =->   let fr = range 100 400 (lfPulse KR 1 0 0.5) -- frequency modulator->       sh = line KR (-8) 8 15 RemoveSynth -- modulate shape->       fr_lag = varLag_env fr 0.2 (EnvNum sh) 0 -- lag the modulator->   in sinOsc AR fr_lag 0 * 0.3--as signal filter (step behaviour is wrong?)--> f_03 s =->   let x = mouseX KR 0.0001 0.01 Exponential 0.2->   in varLag s x 0 5 s--> g_07 = f_03 (0 - saw AR 440) * 0.15-> g_08 = f_03 (impulse AR (range 6 24 (lfNoise2 'γ' KR 4)) 0) * 0.5--> g_09 =->   let s = varSaw AR 220 0 (range 0 1 (sinOsc KR 0.25 0))->   in f_03 s * 0.1--used to lag pitch--> g_10 =->   let f1 = range 100 400 (lfPulse KR 1 0 0.5)->       f2 = varLag f1 0.2 (line KR (-8) 8 15 RemoveSynth) 5 0->   in sinOsc AR f2 0 * 0.3
− Help/UGen/varSaw.help.lhs
@@ -1,58 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_00 =->   let x = mouseX KR 0 1 Linear 0.2->   in varSaw AR 220 0 x * 0.1--> g_01 =->     let f = lfPulse KR (mce2 3 3.03) 0 0.3 * 200 + 200->         w = linLin (lfTri KR 1 0) (-1) 1 0 1->     in varSaw AR f 0 w * 0.1--Compare with lfPulse at AR--> g_02 =->     let f = lfPulse KR 3 0 0.3 * 200 + 200->     in mce [varSaw AR f 0 0.2->            ,lfPulse AR f 0 0.2] * 0.1--per-note width modulation--> g_03 =->     let d = linLin (lfNoise2 'α' KR 0.1) (-1) 1 0.15 0.5->         t = impulse AR (1 / d) 0->         w0 = tRand 'β' 0 0.35 t->         w1 = tRand 'γ' 0.65 1 t->         w = phasor AR t ((w1 - w0) * sampleDur) w0 w1 0->         e = decay2 t 0.1 d->         f = midiCPS (tRand 'δ' 36 72 t)->         o = varSaw AR f 0 w * e * 0.1->         l = tRand 'ε' (-1) 1 t->     in pan2 o l 1--http://sc-users.bham.ac.narkive.com/sj4Tw3ub/sync-osc#post6--> g_04 =->   let freq = control KR "freq" 110->       factor = control KR "factor" 1->       x = mouseX KR 0 1.0 Linear 0.2->       y = mouseY KR (mce2 23 17) 0 Linear 0.2->       ph = varSaw AR (freq * factor) 0 x * y->   in sinOsc AR (freq * mce2 1.001 1) ph * 0.2--    > import Sound.OSC {- hosc -}-    > set_factor n = withSC3 (sendMessage (n_set1 (-1) "factor" n))-    > set_factor 0.125 {- 0.125 0.5 1.3 1.5 23.0 -}--slow indeterminate modulation of width, <http://sccode.org/1-5as>--> g_05 =->   let midinote = 60->       gate_ = 1->       amp = 0.25->       asr = envASR 0.1 1 0.1 (EnvNum (-4))-> 	env = envGen KR gate_ 1 0 1 RemoveSynth asr->       freq = midiCPS midinote->       width = range 0.2 0.8 (lfNoise2 'β' KR 1) *->               range 0.7 0.8 (sinOsc KR 5 (rand 'α' 0.0 1.0))->   in varSaw AR freq 0 width * env * amp
− Help/UGen/vibrato.help.lhs
@@ -1,45 +0,0 @@-> import Sound.SC3 {- hsc3 -}--vibrato at 1 Hz, note the use of DC.ar--    {SinOsc.ar(Vibrato.ar(DC.ar(400.0),1,0.02))*0.1}.play--> g_01 =->     let v = vibrato 'α' AR (dc AR 400) 1 0.02 0 0 0.04 0.1 0 0->     in sinOsc AR v 0 * 0.1--compare: k-rate freq input can be a constant--    {SinOsc.ar(Vibrato.kr(400.0,1,0.02))}.play--> g_02 =->     let v = vibrato 'α' KR 400 1 0.02 0 0 0.04 0.1 0 0->     in sinOsc AR v 0 * 0.1--control rate and rateVariation--    {x=MouseX.kr(2.0,100.0)-    ;y=MouseY.kr(0.0,1.0)-    ;v=Vibrato.ar(DC.ar(400.0),x,0.1,1.0,1.0,y,0.1)-    ;SinOsc.ar(v)}.play--> g_03 =->     let x = mouseX KR 2 100 Linear 0.2->         y = mouseY KR 0 1 Linear 0.2->         v = vibrato 'α' AR (dc AR 400) x 0.1 1 1 y 0.1 0 0->     in sinOsc AR v 0 * 0.1--control depth and depthVariation--    {n=LFNoise1.kr(1,3,7)-    ;x=MouseX.kr(0.0,1.0)-    ;y=MouseY.kr(0.0,1.0)-    ;v=Vibrato.ar(DC.ar(400.0),n,x,1.0,1.0,y,0.1)-    ;SinOsc.ar(v)}.play--> g_04 =->     let n = lfNoise1 'α' KR 1 * 3 + 7->         x = mouseX KR 0 1 Linear 0.2->         y = mouseY KR 0 1 Linear 0.2->         v = vibrato 'β' AR (dc AR 400) n x 1 1 y 0.1 0 0->     in sinOsc AR v 0 * 0.1
− Help/UGen/vosim.help.lhs
@@ -1,28 +0,0 @@-> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}--> g_00 =->     let trg = impulse AR 100 0->         frq = mouseX KR 440 880 Exponential 0.2->         n_cycles = 3->         dcy = 0.1->     in X.vosim AR trg frq n_cycles dcy * 0.25--> g_01 =->     let p = tRand 'α' 0 1 (impulse AR 6 0)->         t = impulse AR (9 * ( 1 + ( p >** 0.95))) 0->         x = mouseX KR 0.25 2 Linear 0.2->         y = mouseY KR 0.25 0.75 Linear 0.2->         z = 9->         rng i = linLin i (-1) 1->         mk_n e = rng (lfNoise2 e KR z) 0.25 2->         tR e ll rl = tRand e (mce ll) (mce rl)->         f = tR 'β' [40,120,220] [440,990,880] t->         n = tR 'γ' [4] [8,16,32] t->         d = tR 'δ' [0.2,0.4,0.6] [0.6,0.8,1] t->         a = tR 'ε' [0] [0.05,0.15,0.25] t->         l = tR 'ζ' [-1] [1] t->         xn = mk_n 'η'->         yn = mk_n 'θ'->         v = X.vosim AR t (f * x * xn) n (d * y * yn) * a->     in pan2 (mix v) l 1
− Help/UGen/warp1.help.lhs
@@ -1,28 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> fn_01 = "/home/rohan/data/audio/pf-c5.aif"--> m_01 = b_allocRead 10 fn_01 0 0--    withSC3 (async m_01)--> g_01 =->     let p = linLin (lfSaw KR 0.05 0) (-1) 1 0 1->         x = mouseX KR 0.5 2 Linear 0.1->     in warp1 1 10 p x 0.1 (-1) 8 0.1 2--real-time (delayed) input--> m_02 = b_alloc 10 8192 1--    withSC3 (async m_02)--> g_02 =->     let i = soundIn 0->         r = recordBuf AR 10 0 1 0 1 Loop 1 DoNothing i->         ph = (8192 / sampleRate) * 2 * pi->         p = lfSaw KR (1 / bufDur KR 10) ph * 0.5 + 0.5->         x = mouseX KR 0.5 2 Linear 0.2->         y = mouseY KR 0.01 0.2 Linear 0.2->         w = warp1 1 10 p x 0.1 (-1) 8 y 4->     in mrg2 (i + w) r
Help/UGen/waveTerrain.help.lhs view
@@ -31,7 +31,7 @@  Confirm table -    plotTable [tbl']+    plot_p1_ln [tbl']  Send table to scsynth 
− Help/UGen/whiteNoise.help.lhs
@@ -1,66 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_00 = let n = whiteNoise 'α' AR * 0.05 in mce2 n n--> g_01_m = fmap (* 0.05) (whiteNoiseM AR)--> g_01 = uid_st_eval g_01_m--Random filtered noise bursts.--> g_02 =->     let n = whiteNoise 'α' AR->         t = dust 'β' AR (mce [3, 7])->         f = tExpRand 'γ' 20 1800 t->         bw = tExpRand 'δ' 0.001 1 t->         e = decay2 t 0.01 0.2->     in resonz (n * e) f bw--Monadic form of above graph.--> g_03_m = do->   n <- whiteNoiseM AR->   t <- dustM AR (mce [3, 7])->   f <- tExpRandM 20 1800 t->   bw <- tExpRandM 0.001 1 t->   let e = decay2 t 0.01 0.2->   return (resonz (n * e) f bw)--> g_03 = uid_st_eval g_03_m--The same graph again, without using do notation.--> g_04_m =->     whiteNoiseM AR >>= \n ->->     dustM AR (mce [3, 7]) >>= \t ->->     tExpRandM 20 1800 t >>= \f ->->     tExpRandM 0.001 1 t >>= \bw ->->     let e = decay2 t 0.01 0.2->     in return (resonz (n * e) f bw)--> g_04 = uid_st_eval g_04_m--Drawing--    import Sound.SC3.Plot {- hsc3-plot -}-    plot_ugen1 0.01 (whiteNoise 'γ' AR)-    plot_ugen1 0.05 (lpf (whiteNoise 'γ' AR) 500)--    import Sound.SC3.Plot.FFT {- hsc3-plot -}-    plot_ugen_fft1 0.1 (whiteNoise 'α' AR)--![](sw/hsc3/Help/SVG/whiteNoise.0.svg)-![](sw/hsc3/Help/SVG/whiteNoise.1.svg)-![](sw/hsc3/Help/SVG/whiteNoise.2.svg)--Speaker balance--> g_05 = let n = whiteNoise 'α' AR * 0.1 in mce2 n n--> g_06 =->     let x = mouseX KR 0.1 2 Linear 0.2->         l = sinOsc KR x 0->         n = whiteNoise 'α' AR->     in pan2 n l 0.1--> g_07 = hpz1 (whiteNoise 'α' AR * 0.01)
− Help/UGen/wrapIndex.help.lhs
@@ -1,7 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let b = asLocalBuf 'α' [200,300,400,500,600,800]->         x = mouseX KR 0 18 Linear 0.1->         f = wrapIndex b x->     in sinOsc AR f 0 * 0.1
− Help/UGen/xFade2.help.lhs
@@ -1,3 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 = xFade2 (saw AR 440) (sinOsc AR 440 0) (lfTri KR 0.1 0) 0.1
− Help/UGen/xLine.help.lhs
@@ -1,7 +0,0 @@-Note: SC3 reorders mul and add inputs to precede the doneAction input.--> import Sound.SC3 {- hsc3 -}--> g_01 =->     let f = xLine KR 200 17000 10 RemoveSynth->     in sinOsc AR f 0 * 0.1
− Help/UGen/xOut.help.lhs
@@ -1,14 +0,0 @@-> import Sound.SC3 {- hsc3 -}--Send signal to a bus, crossfading with existing contents.--> g_01 =->     let p a b = sinOsc AR (mce2 a b) 0 * 0.1->         x = mouseX KR 0 1 Linear 0.1->         y = mouseY KR 0 1 Linear 0.1->     in mrg [out  0   (p 220 221)->            ,xOut 0 x (p 330 331)->            ,xOut 0 y (p 440 441)->            ,out  0   (p 120 121)]--out is a summing output, see replaceOut for over-writing output.
− Help/UGen/zeroCrossing.help.lhs
@@ -1,9 +0,0 @@-> import Sound.SC3 {- hsc3 -}--> g_01 =->     let a = sinOsc AR (sinOsc KR 1 0 * 600 + 700) 0 * 0.1->     in mce [a, impulse AR (zeroCrossing a) 0 * 0.25]--> g_02 =->     let a = soundIn 0->     in mce [a, sinOsc AR (zeroCrossing a) 0 * 0.1]
− Help/UGen/zitaRev.help.lhs
@@ -1,49 +0,0 @@-<http://kokkinizita.linuxaudio.org/linuxaudio/zita-rev1-doc/quickguide.html>--> import Sound.SC3 {- hsc3 -}-> import qualified Sound.SC3.UGen.Bindings.HW.External.X as X {- hsc3 -}--    > X.zitaRev_param--mostly default settings--> g_01 =->     let i = soundIn 0->         in_delay = 60->         eq1_freq = 315->         eq2_freq = 1500->         dry_wet_mix = 0.5->         level = 0->     in X.zitaRev i i in_delay 200 3 2 6000 eq1_freq 0 eq2_freq 0 dry_wet_mix level--longer--> g_02 =->     let i = soundIn 0->         in_delay = 80->         low_rt60 = 6->         mid_rt60 = 4->         eq1_freq = 190->         eq1_level = -6->         eq2_freq = 3500->         eq2_level = 6->         dry_wet_mix = 0->         level = 0->     in X.zitaRev i i in_delay 200 low_rt60 mid_rt60 6000 eq1_freq eq1_level eq2_freq eq2_level dry_wet_mix level--longer still--> g_03 =->     let i = soundIn 0->         in_delay = 100->         low_rt60 = 6->         mid_rt60 = 8->         eq1_freq = 190->         eq1_level = -6->         eq2_freq = 3500->         eq2_level = 6->         dry_wet_mix = 0.5->         level = 0.0->     in X.zitaRev i i in_delay 200 low_rt60 mid_rt60 6000 eq1_freq eq1_level eq2_freq eq2_level dry_wet_mix level--
− README
@@ -1,81 +0,0 @@-hsc3 - haskell supercollider-------------------------------[hsc3](http://rohandrape.net/?t=hsc3)-provides `Sound.SC3`, a module for using-[Haskell](http://haskell.org/)-as a client to the-[SuperCollider](http://audiosynth.com/)-synthesis server.-hsc3 requires-[hosc](http://rohandrape.net/?t=hosc).--There is an-[introduction](http://rohandrape.net/?t=hsc3-texts&e=lhs/hsc3-introduction.lhs)-and a-[tutorial](http://rohandrape.net/?t=hsc3-texts&e=lhs/hsc3-tutorial.lhs)-at-[hsc3-texts](http://rohandrape.net/?t=hsc3-texts).--There are a number of related projects:--- [hsc3-dot](?t=hsc3-dot): UGen graph drawing (2006)-- [hsc3-graphs](?t=hsc3-graphs): UGen graph collection (2006)-- [hsc3-db](?t=hsc3-db): UGen Database (2006)-- [hsc3-sf](?t=hsc3-sf): Sound file IO (2006)-- [hsc3-unsafe](?t=hsc3-unsafe): Unsafe UGen variants (2006)-- [hsc3-lang](?t=hsc3-lang): SC3 language (2007)-- [hsc3-rec](?t=hsc3-rec): Record UGens (2008)-- [hsc3-sf-hsndfile](?t=hsc3-sf-hsndfile): Sound file IO (libsndfile) (2010)-- [hsc3-auditor](?t=hsc3-auditor): Simple-minded auditioner (2010)-- [hsc3-cairo](?t=hsc3-cairo): Drawing (2012)-- [hsc3-plot](?t=hsc3-plot): Plotting (2013)-- [hsc3-data](?t=hsc3-data): Data formats &etc. (2013)-- [hsc3-rw](?t=hsc3-rw): UGen Graph Re-writing (2013)-- [hsc3-forth](?t=hsc3-forth): FORTH SuperCollider (2014)-- [hsc3-lisp](?t=hsc3-lisp): LISP SuperCollider (2014)-- [hsc3-m](?t=hsc3-m): UGen variants (2018)--The hsc3 interaction environment ([hsc3.el](?t=hsc3&e=emacs/hsc3.el))-is written for-[GNU](http://gnu.org/)-[Emacs](http://gnu.org/software/emacs/).--<!---There is also, more obliquely related:--- [sc3-rdu](?t=sc3-rdu): SuperCollider UGens (1998)-- [rsc3](?t=rsc3): Scheme SuperCollider (2004)-- [smlsc3](?t=smlsc3): Standard ML SuperCollider (2008)--->--## cli--[scsynth](?t=hsc3&e=md/scsynth.md),-[setup](?t=hsc3&e=md/setup.md)--## help--[UGen Index](?t=hsc3&e=Help/UGen/ix.md)--[rohan drape](http://rohandrape.net/)-and others, 2005-2020,-[gpl](http://gnu.org/copyleft/)--with contributions by:--- henning thielemann-- stefan kersten-- alex mclean-- brent yorgey-- shae erisson--see the-[git](https://git-scm.com/)-[history](?t=hsc3&q=history)-for details--initial announcement:-[[2005-11-29/haskell-cafe](?t=hsc3&e=md/announce.text),- [haskell.org](http://www.haskell.org/pipermail/haskell-cafe/2005-November/012483.html)]
+ README.md view
@@ -0,0 +1,83 @@+hsc3 - haskell supercollider+----------------------------++[hsc3](http://rohandrape.net/?t=hsc3)+provides `Sound.SC3`, a module for using+[Haskell](http://haskell.org/)+as a client to the+[SuperCollider](http://audiosynth.com/)+synthesis server.+hsc3 requires+[hosc](http://rohandrape.net/?t=hosc).++There is an+[introduction](http://rohandrape.net/?t=hsc3-texts&e=lhs/hsc3-introduction.lhs)+and a+[tutorial](http://rohandrape.net/?t=hsc3-texts&e=lhs/hsc3-tutorial.lhs)+at+[hsc3-texts](http://rohandrape.net/?t=hsc3-texts).++There are a number of related projects:++- [sc3-rdu](http://rohandrape.net/?t=sc3-rdu): SuperCollider UGens (1998)+- [rsc3](http://rohandrape.net/?t=rsc3): Scheme SuperCollider (2004)+- [hsc3-dot](http://rohandrape.net/?t=hsc3-dot): UGen graph drawing (2006)+- [hsc3-graphs](http://rohandrape.net/?t=hsc3-graphs): UGen graph collection (2006)+- [hsc3-db](http://rohandrape.net/?t=hsc3-db): UGen Database (2006)+- [hsc3-sf](http://rohandrape.net/?t=hsc3-sf): Sound file IO (2006)+- [hsc3-unsafe](http://rohandrape.net/?t=hsc3-unsafe): Unsafe UGen variants (2006)+- [hsc3-lang](http://rohandrape.net/?t=hsc3-lang): SC3 language (2007)+- [hsc3-rec](http://rohandrape.net/?t=hsc3-rec): Record UGens (2008)+- [smlsc3](http://rohandrape.net/?t=smlsc3): Standard ML SuperCollider (2008)+- [hsc3-sf-hsndfile](http://rohandrape.net/?t=hsc3-sf-hsndfile): Sound file IO (libsndfile) (2010)+- [hsc3-auditor](http://rohandrape.net/?t=hsc3-auditor): Simple sound event auditioner (2010)+- [hsc3-cairo](http://rohandrape.net/?t=hsc3-cairo): Drawing (2012)+- [hsc3-plot](http://rohandrape.net/?t=hsc3-plot): Plotting (2013)+- [hsc3-data](http://rohandrape.net/?t=hsc3-data): Data formats &etc. (2013)+- [hsc3-rw](http://rohandrape.net/?t=hsc3-rw): UGen Graph Re-writing (2013)+- [hsc3-forth](http://rohandrape.net/?t=hsc3-forth): FORTH SuperCollider (2014)+- [hsc3-lisp](http://rohandrape.net/?t=hsc3-lisp): LISP SuperCollider (2014)+- [hsc3-m](http://rohandrape.net/?t=hsc3-m): UGen variants (2018)+- [stsc3](http://rohandrape.net/?t=stsc3): Smalltalk SuperCollider (2019)+- [hsc3-util](http://rohandrape.net/?t=hsc3-util): hsc3 & related utilities (2020)++The hsc3 interaction environment ([hsc3.el](http://rohandrape.net/?t=hsc3&e=emacs/hsc3.el))+is written for+[GNU](http://gnu.org/)+[Emacs](http://gnu.org/software/emacs/).++<!--+There is also, more obliquely related:+-->++## cli++[help](http://rohandrape.net/?t=hsc3&e=md/help.md),+[scsynth](http://rohandrape.net/?t=hsc3&e=md/scsynth.md),+[setup](http://rohandrape.net/?t=hsc3&e=md/setup.md)++## help++[UGen Index](http://rohandrape.net/?t=hsc3&e=Help/UGen/ix.md)++[rohan drape](http://rohandrape.net/)+and others, 2005-2021,+[gpl-3](http://gnu.org/copyleft/)++with contributions by:++- henning thielemann+- stefan kersten+- alex mclean+- brent yorgey+- shae erisson++see the+[git](https://git-scm.com/)+[history](http://rohandrape.net/?t=hsc3&q=history)+for details++initial announcement:+[[2005-11-29/haskell-cafe](http://rohandrape.net/?t=hsc3&e=md/announce.text),+ [haskell.org](http://www.haskell.org/pipermail/haskell-cafe/2005-November/012483.html)]
Sound/SC3/Common.hs view
@@ -4,8 +4,10 @@ import Sound.SC3.Common.Buffer as M import Sound.SC3.Common.Enum as M import Sound.SC3.Common.Envelope as M+import Sound.SC3.Common.Help as M import Sound.SC3.Common.Math as M import Sound.SC3.Common.Math.Operator as M+import Sound.SC3.Common.Math.Warp as M import Sound.SC3.Common.Monad as M import Sound.SC3.Common.Rate as M import Sound.SC3.Common.UId as M
Sound/SC3/Common/Base.hs view
@@ -24,6 +24,13 @@ -- | Quaternary function. type Fn4 a b c d e = a -> b -> c -> d -> e +-- | Apply /f/ n times, ie. iterate f x !! n+--+-- > iter 3 (* 2) 1 == 8+-- > iterate (* 2) 1 !! 3 == 8+iter :: Int -> (a -> a) -> a -> a+iter n f x = if n == 0 then x else f (iter (n - 1) f x)+ -- * Read  -- | Variant of 'reads' requiring exact match.@@ -212,6 +219,10 @@ -- | [x,y] -> (x,y) t2_from_list :: [t] -> T2 t t2_from_list l = case l of {[p,q] -> (p,q);_ -> error "t2_from_list"}++-- | [x,y,z] -> (x,y,z)+t3_from_list :: [t] -> (t,t,t)+t3_from_list l = case l of {[p,q,r] -> (p,q,r);_ -> error "t3_from_list"}  -- * System 
Sound/SC3/Common/Buffer.hs view
@@ -23,16 +23,12 @@ clipAt :: Int -> [a] -> a clipAt ix c = if ix > length c - 1 then last c else if ix < 0 then c !! 0 else c !! ix --- | 'abs' of '(-)'.-absdif :: Num a => a -> a -> a-absdif i j = abs (j - i)- -- | 'blendAt' with @clip@ function as argument. blendAtBy :: (Integral i,RealFrac n) => (i -> t -> n) -> n -> t -> n blendAtBy f ix c =     let m = floor ix         m' = fromIntegral m-    in blend (absdif ix m') (f m c) (f (m + 1) c)+    in blend (S.absdif ix m') (f m c) (f (m + 1) c)  -- | @SequenceableCollection.blendAt@ returns a linearly interpolated -- value between the two closest indices.  Inverse operation is
Sound/SC3/Common/Buffer/Gen.hs view
@@ -22,7 +22,7 @@ -- | 'sine3_p' with zero phase. -- -- > import Sound.SC3.Plot {- hsc3-plot -}--- > plotTable1 (sine1_p 512 (1,1))+-- > plot_p1_ln [sine1_p 512 (1,1)] sine1_p :: (Enum n,Floating n) => Int -> (n,n) -> [n] sine1_p n (pfreq,ampl) = sine3_p n (pfreq,ampl,0) @@ -32,13 +32,13 @@  -- | 'sum_l' of 'sine1_l'. ----- > plotTable1 (sine1 256 [1,0.95 .. 0.5])+-- > plot_p1_ln [sine1 256 [1,0.95 .. 0.5]] sine1 :: (Enum n,Floating n) => Int -> [n] -> [n] sine1 n = sum_l . sine1_l n  -- | 'nrm_u' of 'sine1_l'. ----- > plotTable1 (sine1_nrm 256 [1,0.95 .. 0.5])+-- > plot_p1_ln [sine1_nrm 256 [1,0.95 .. 0.5]] sine1_nrm :: (Enum n,Floating n,Ord n) => Int -> [n] -> [n] sine1_nrm n = nrm_u . sine1 n @@ -50,8 +50,8 @@  -- | 'sum_l' of 'sine2_l'. ----- > plotTable1 (sine2 256 (zip [1,2..] [1,0.95 .. 0.5]))--- > plotTable1 (sine2 256 (zip [1,1.5 ..] [1,0.95 .. 0.5]))+-- > plot_p1_ln [sine2 256 (zip [1,2..] [1,0.95 .. 0.5])]+-- > plot_p1_ln [sine2 256 (zip [1,1.5 ..] [1,0.95 .. 0.5])] sine2 :: (Enum n,Floating n) => Int -> [(n,n)] -> [n] sine2 n = sum_l . sine2_l n @@ -73,7 +73,7 @@  -- | 'sum_l' of 'sine3_l'. ----- > plotTable1 (sine3 256 (zip3 [1,1.5 ..] [1,0.95 .. 0.5] [0,pi/7..]))+-- > plot_p1_ln [sine3 256 (zip3 [1,1.5 ..] [1,0.95 .. 0.5] [0,pi/7..])] sine3 :: (Enum n,Floating n) => Int -> [(n,n,n)] -> [n] sine3 n = sum_l . sine3_l n @@ -81,8 +81,7 @@  {- | Generate Chebyshev waveshaping table, see b_gen_cheby. -> plotTable1 (gen_cheby 256 [1,0,1,1,0,1])-+> Sound.SC3.Plot.plot_p1_ln [gen_cheby 256 [1,0,1,1,0,1]] -} gen_cheby :: (Enum n, Floating n, Ord n, Integral i) => i -> [n] -> [n] gen_cheby n =@@ -91,7 +90,7 @@         ix = [-1,-1 + (2 / (fromIntegral n - 1)) .. 1]         mix = map sum . transpose         c_normalize x = let m = maximum (map abs x) in map (* (recip m)) x-    in c_normalize . mix . map (\(k,a) -> map ((* a) . (c k)) ix) . zip [1..]+    in c_normalize . mix . zipWith (\k a -> map ((* a) . c k) ix) [1..]  -- | Type specialised 'gen_cheby'. cheby :: (Enum n, Floating n, Ord n) => Int -> [n] -> [n]
Sound/SC3/Common/Enum.hs view
@@ -94,6 +94,8 @@   deriving (Eq, Show)  -- | Resolve 'Warp'.+--+-- > map from_warp [Linear,Exponential] == [0,1] from_warp :: Num t => Warp t -> t from_warp e =     case e of
Sound/SC3/Common/Envelope.hs view
@@ -106,7 +106,11 @@ instance Functor Envelope where   fmap = envelope_coerce --- | Variant without release and loop node inputs (defaulting to nil).+{- | Variant without release and loop node inputs (defaulting to nil).++> Sound.SC3.Plot.plotEnvelope [envelope [0,1,0] [3,2] [EnvSin,EnvSin]]++-} envelope :: Num a => [a] -> [a] -> [Envelope_Curve a] -> Envelope a envelope l t c = Envelope l t c Nothing Nothing 0 @@ -159,7 +163,7 @@  -- | An envelope is /normal/ if it has no segments with zero duration. envelope_is_normal :: (Eq n,Num n) => Envelope n -> Bool-envelope_is_normal = not . any (== 0) . env_times+envelope_is_normal = notElem 0 . env_times  -- | Normalise envelope by deleting segments of zero duration. envelope_normalise :: (Num a, Ord a) => Envelope a -> Envelope a@@ -209,16 +213,19 @@        then replicate n EnvLin        else take n (cycle c) --- | Linear SC3 form of 'Envelope' data.------ Form is: l0 #t reset loop l1 t0 c0 c0' ...------ > let {l = [0,0.6,0.3,1.0,0]--- >     ;t = [0.1,0.02,0.4,1.1]--- >     ;c = [EnvLin,EnvExp,EnvNum (-6),EnvSin]--- >     ;e = Envelope l t c Nothing Nothing--- >     ;r = [0,4,-99,-99,0.6,0.1,1,0,0.3,0.02,2,0,1,0.4,5,-6,0,1.1,3,0]}--- > in envelope_sc3_array e == Just r+{- | Linear SC3 form of 'Envelope' data.++Form is: l0 #t reset loop l1 t0 c0 c0' ...++envelope_sc3_array (envelope [0,1] [0.1] [EnvLin]) == Just [0,1,-99,-99,1,0.1,1,0]++> let {l = [0,0.6,0.3,1.0,0]+>     ;t = [0.1,0.02,0.4,1.1]+>     ;c = [EnvLin,EnvExp,EnvNum (-6),EnvSin]+>     ;e = Envelope l t c Nothing Nothing+>     ;r = [0,4,-99,-99,0.6,0.1,1,0,0.3,0.02,2,0,1,0.4,5,-6,0,1.1,3,0]}+> in envelope_sc3_array e == Just r+-} envelope_sc3_array :: Num a => Envelope a -> Maybe [a] envelope_sc3_array e =     let Envelope l t _ rn ln _ = e@@ -232,14 +239,15 @@          l0:l' -> Just (l0 : n' : rn' : ln' : concat (zipWith3 f l' t c))          _ -> Nothing --- | @IEnvGen@ SC3 form of 'Envelope' data.------ > let {l = [0,0.6,0.3,1.0,0]--- >     ;t = [0.1,0.02,0.4,1.1]--- >     ;c = [EnvLin,EnvExp,EnvNum (-6),EnvSin]--- >     ;e = Envelope l t c Nothing Nothing--- >     ;r = [0,0,4,1.62,0.1,1,0,0.6,0.02,2,0,0.3,0.4,5,-6,1,1.1,3,0,0]}--- > in envelope_sc3_ienvgen_array e == Just r+{- | @IEnvGen@ SC3 form of 'Envelope' data.++> l = [0,0.6,0.3,1.0,0]+> t = [0.1,0.02,0.4,1.1]+> c = [EnvLin,EnvExp,EnvNum (-6),EnvSin]+> e = Envelope l t c Nothing Nothing 0+> r = [0,0,4,1.62,0.1,1,0,0.6,0.02,2,0,0.3,0.4,5,-6,1,1.1,3,0,0]+> envelope_sc3_ienvgen_array e == Just r+-} envelope_sc3_ienvgen_array :: Num a => Envelope a -> Maybe [a] envelope_sc3_ienvgen_array e =     let Envelope l t _ _ _ os = e@@ -310,7 +318,7 @@              ,(1,gte_f skew 1)]     in envCoord bp dur amp EnvLin -{- | Co-ordinate based static envelope generator.  Points are (time,value) pairs.+{- | Coordinate based static envelope generator.  Points are (time,value) pairs.  > let e = envCoord [(0,0),(1/4,1),(1,0)] 1 1 EnvLin > envelope_sc3_array e == Just [0,2,-99,-99,1,1/4,1,0,0,3/4,1,0]@@ -321,20 +329,14 @@  -} envCoord :: Num n => [(n,n)] -> n -> n -> Envelope_Curve n -> Envelope n-envCoord xy dur amp c =-    let n = length xy-        (times,levels) = unzip xy-        times' = map (* dur) (Base.d_dx' times)-        levels' = map (* amp) levels-        offset = times' !! 0-    in Envelope levels' times' (replicate (n - 1) c) Nothing Nothing offset+envCoord xy dur amp c = envXYC (map (\(x,y) -> (x * dur,y * amp,c)) xy)  -- | Segments given as pairs of (time,level). --   The input is sorted by time before processing. -- -- > envPairs [(0, 1), (3, 1.4), (2.1, 0.5)] EnvSin envPairs :: (Num n,Ord n) => [(n,n)] -> Envelope_Curve n -> Envelope n-envPairs xy c = envCoord (sortOn fst xy) 1 1 c+envPairs xy = envCoord (sortOn fst xy) 1 1  -- | Variant 'envPerc' with user specified 'Envelope_Curve a'. envPerc_c :: Num a => a -> a -> a -> Envelope_Curve_2 a -> Envelope a@@ -392,12 +394,13 @@ envLinen_c :: Num a => a -> a -> a -> a -> Envelope_Curve_3 a -> Envelope a envLinen_c aT sT rT lv c = envLinen_r (LINEN aT sT rT lv c) --- | Linear envelope parameter constructor.------ > let {e = envLinen 0 1 0 1--- >     ;s = envelope_segments e--- >     ;p = pack_envelope_segments s}--- > in p == (env_levels e,env_times e,env_curves e)+{- | Linear envelope parameter constructor.++> e = envLinen 0 1 0 1+> s = envelope_segments e+> p = pack_envelope_segments s+> p == (env_levels e,env_times e,env_curves e)+-} envLinen :: Num a => a -> a -> a -> a -> Envelope a envLinen aT sT rT lv =     let c = (EnvLin,EnvLin,EnvLin)@@ -470,11 +473,12 @@ envASR_c :: Num a => a -> a -> a -> Envelope_Curve_2 a -> Envelope a envASR_c aT sL rT c = envASR_r (ASR aT sL rT c) --- | Attack, sustain, release envelope parameter constructor.------ > let {c = 3--- >     ;r = Just [0,2,1,-99,0.1,3,c,0,0,2,c,0]}--- > in envelope_sc3_array (envASR 3 0.1 2 EnvSin) == r+{- | Attack, sustain, release envelope parameter constructor.++> c = 3+> r = Just [0,2,1,-99,0.1,3,c,0,0,2,c,0]+> envelope_sc3_array (envASR 3 0.1 2 EnvSin) == r+-} envASR :: Num a => a -> a -> a -> Envelope_Curve a -> Envelope a envASR aT sL rT c = envASR_c aT sL rT (c,c) @@ -494,14 +498,18 @@     else let levels' = head levels : levels          in Envelope levels' times [EnvStep] releaseNode loopNode 0 --- | Segments given as triples of (time,level,curve).  The final curve--- is ignored. The input is sorted by time before processing.+-- | Segments given as triples of (time,level,curve).  The final curve is ignored. ----- > envXYC [(0, 1, EnvSin), (3, 1.4, EnvLin), (2.1, 0.5, EnvLin)]-envXYC :: (Num n,Ord n) => [(n,n,Envelope_Curve n)] -> Envelope n+-- > envXYC [(0, 1, EnvSin), (2.1, 0.5, EnvLin), (3, 1.4, EnvLin)]+envXYC :: Num n => [(n,n,Envelope_Curve n)] -> Envelope n envXYC xyc =   let n = length xyc-      xyc_asc = sortOn (\(x,_,_) -> x) xyc-      (times,levels,curves) = unzip3 xyc_asc+      (times,levels,curves) = unzip3 xyc       offset = times !! 0   in Envelope levels (Base.d_dx' times) (take (n - 1) curves) Nothing Nothing offset++-- | Variant where the input is sorted by time before processing.+--+-- > envXYC_sort [(0, 1, EnvSin), (3, 1.4, EnvLin), (2.1, 0.5, EnvLin)]+envXYC_sort :: (Num n,Ord n) => [(n,n,Envelope_Curve n)] -> Envelope n+envXYC_sort = envXYC . sortOn (\(x,_,_) -> x)
+ Sound/SC3/Common/Help.hs view
@@ -0,0 +1,167 @@+-- | Functions to access to the SC3 RTF & HTML based help systems.+module Sound.SC3.Common.Help where++import Control.Monad {- base -}+import Data.Char {- base -}+import Data.Maybe {- base -}+import System.Environment {- base -}+import System.FilePath {- filepath -}+import System.Process {- process -}++import qualified Data.List.Split as Split {- split -}++import qualified Sound.SC3.Common.Base as Base {- hsc3 -}++-- * RTF++-- | Directory containing SC3 RTF help files.+sc3_rtf_help_dir :: IO FilePath+sc3_rtf_help_dir = getEnv "SC3_RTF_HELP_DIR"++{- | Find (case-insensitively) indicated file at 'sc3_rtf_help_dir'.+     Runs the command "find -name" (so UNIX only).++> sc3_rtf_find_file "SinOsc.help.rtf"+> sc3_rtf_find_file "lfsaw.help.rtf"+> sc3_rtf_find_file "softClip.rtf"+-}+sc3_rtf_find_file :: FilePath -> IO (Maybe FilePath)+sc3_rtf_find_file fn = do+  d <- sc3_rtf_help_dir+  r <- System.Process.readProcess "find" [d,"-iname",fn] ""+  case lines r of+    [] -> return Nothing+    [r0] -> return (Just r0)+    _ -> error "sc3_rtf_find_file: multiple files?"++-- | 'error' variant.+sc3_rtf_find_file_err :: FilePath -> IO FilePath+sc3_rtf_find_file_err = fmap (fromMaybe (error "sc3_rtf_find_file")) . sc3_rtf_find_file++-- | Run the command unrtf (so UNIX only) to convert an RTF file to a TEXT (.scd) file.+sc3_rtf_to_scd :: FilePath -> FilePath -> IO ()+sc3_rtf_to_scd rtf_fn scd_fn = do+  txt <- System.Process.readProcess "unrtf" ["--text",rtf_fn] ""+  let delete_trailing_whitespace = reverse . dropWhile isSpace . reverse+      tidy = unlines . map delete_trailing_whitespace . drop 4 . lines+  writeFile scd_fn (tidy txt)++-- | 'sc3_rtf_to_scd' of 'sc3_rtf_find_file_err', writing output to TMPDIR+sc3_rtf_help_translate :: String -> IO FilePath+sc3_rtf_help_translate nm = do+  tmp <- Base.get_env_default "TMPDIR" "/tmp"+  rtf_fn <- sc3_rtf_find_file_err (nm <.> "*rtf")+  let scd_fn = tmp </> takeFileName rtf_fn -<.> "scd"+  sc3_rtf_to_scd rtf_fn scd_fn+  return scd_fn++-- | 'sc3_rtf_help_translate' and run editor.+sc3_rtf_help_scd_open :: (String,[String]) -> String -> IO ()+sc3_rtf_help_scd_open (cmd,arg) nm = do+  scd_fn <- sc3_rtf_help_translate nm+  System.Process.callProcess cmd (arg ++ [scd_fn])++-- | 'sc3_rtf_help_scd_open' with emacsclient --no-wait.+--+-- > sc3_rtf_help_scd_open_emacs "lfsaw"+sc3_rtf_help_scd_open_emacs :: String -> IO ()+sc3_rtf_help_scd_open_emacs = sc3_rtf_help_scd_open ("emacsclient",["--no-wait"])++-- * SC-DOC++-- | URL for online SC-DOC SuperCollider documentation.+sc3_scdoc_help_url :: String+sc3_scdoc_help_url = "http://doc.sccode.org/"++-- | Read the environment variable @SC3_SCDOC_HTML_HELP_DIR@.+--   The default value is @~\/.local\/share\/SuperCollider/Help@.+sc3_scdoc_help_dir :: IO String+sc3_scdoc_help_dir = do+  h <- getEnv "HOME"+  let d = h </> ".local/share/SuperCollider/Help"+  Base.get_env_default "SC3_SCDOC_HTML_HELP_DIR" d++-- | Path to indicated SC3 class help file.+--+-- > sc3_scdoc_help_class "SinOsc" == "Classes/SinOsc.html"+sc3_scdoc_help_class :: String -> String+sc3_scdoc_help_class c = "Classes" </> c <.> "html"++-- | Generate path to indicated SC3 operator help file.+--+-- > sc3_scdoc_help_operator "+" == "Overviews/Operators.html#+"+sc3_scdoc_help_operator :: String -> FilePath+sc3_scdoc_help_operator = (++) "Overviews/Operators.html#"++-- | Generate path to indicated SC3 method help.+--+-- > sc3_scdoc_help_method '*' ("C","m") == "Classes/C.html#*m"+sc3_scdoc_help_method :: Char -> (String,String) -> FilePath+sc3_scdoc_help_method z (c,m) = "Classes" </> c <.> "html#" ++ [z] ++ m++-- | Generate path to indicated SC3 class method help.+--+-- > sc3_scdoc_help_class_method ("C","m") == "Classes/C.html#*m"+sc3_scdoc_help_class_method :: (String,String) -> FilePath+sc3_scdoc_help_class_method = sc3_scdoc_help_method '*'++-- | Generate path to indicated SC3 instance method help.+--+-- > sc3_scdoc_help_instance_method ("C","m") == "Classes/C.html#-m"+sc3_scdoc_help_instance_method :: (String,String) -> FilePath+sc3_scdoc_help_instance_method = sc3_scdoc_help_method '-'++{- | SC3 help path documenting x.++> sc3_scdoc_help_path "Operator.distort" == "Overviews/Operators.html#.distort"+> sc3_scdoc_help_path "Collection.*fill" == "Classes/Collection.html#*fill"+> sc3_scdoc_help_path "Collection.inject" == "Classes/Collection.html#-inject"+> sc3_scdoc_help_path "SinOsc" == "Classes/SinOsc.html"+-}+sc3_scdoc_help_path :: String -> String+sc3_scdoc_help_path s = do+  case Split.splitOn "." s of+    ["Operator",m] -> sc3_scdoc_help_operator m+    [c,'*':m] -> sc3_scdoc_help_class_method (c,m)+    [c,m] -> sc3_scdoc_help_instance_method (c,m)+    _ -> sc3_scdoc_help_class s++{- | Open SC3 help path, either the local file or the online version.+     Use @BROWSER@ or @x-www-browser@.++> Base.get_env_default "BROWSER" "x-www-browser"++> sc3_scdoc_help_open True (sc3_scdoc_help_path "SinOsc")+> sc3_scdoc_help_open True (sc3_scdoc_help_path "Collection.*fill")+> sc3_scdoc_help_open False (sc3_scdoc_help_path "Collection.inject")+-}+sc3_scdoc_help_open :: Bool -> String -> IO ()+sc3_scdoc_help_open use_loc p = do+  d <- sc3_scdoc_help_dir+  b <- Base.get_env_default "BROWSER" "x-www-browser"+  let u = if use_loc then "file://" ++ (d </> p) else sc3_scdoc_help_url ++ p+  void (System.Process.rawSystem b [u])++{- | Generate path to indicated SC3 instance method help.+     Adds initial forward slash if not present.++> let r = "Reference/Server-Command-Reference.html#/b_alloc"+> sc3_scdoc_help_server_command_path "b_alloc" == r++-}+sc3_scdoc_help_server_command_path :: String -> FilePath+sc3_scdoc_help_server_command_path c =+    let c' = case c of+               '/':_ -> c+               _ -> '/':c+    in "Reference/Server-Command-Reference.html" ++ ('#' : c')++{- | 'sc3_scdoc_help_open' of 'sc3_server_command_path'++> sc3_scdoc_help_server_command_open True "s_new"+> sc3_scdoc_help_server_command_open False "/b_allocRead"+-}+sc3_scdoc_help_server_command_open :: Bool -> String -> IO ()+sc3_scdoc_help_server_command_open use_loc =+  sc3_scdoc_help_open use_loc .+  sc3_scdoc_help_server_command_path
Sound/SC3/Common/Math.hs view
@@ -21,6 +21,10 @@ two_pi :: Floating n => n two_pi = 2 * pi +-- | 'abs' of '(-)'.+absdif :: Num a => a -> a -> a+absdif i j = abs (j - i)+ -- | SC3 MulAdd type signature, arguments in SC3 order of input, multiply, add. type SC3_MulAdd t = t -> t -> t -> t @@ -74,6 +78,43 @@ sc3_idiv :: RealFrac n => n -> n -> n sc3_idiv a b = fromInteger (floor a `div` floor b) +{- | 'sc3_lcm'++Least common multiple. This definition extends the usual definition+and returns a negative number if any of the operands is negative. This+makes it consistent with the lattice-theoretical interpretation and+its idempotency, commutative, associative, absorption laws.++> lcm 4 6 == 12+> lcm 1 1 == 1+> lcm 1624 26 == 21112+> lcm 1624 (-26) /= (-21112)+> lcm (-1624) (-26) /= (-21112)+> lcm 513 (gcd 513 44) == 513+-}+sc3_lcm :: t -> t -> t+sc3_lcm = error "sc3_lcm: undefined"++{- | 'sc3_gcd'++Greatest common divisor. This definition extends the usual+definition and returns a negative number if both operands are+negative. This makes it consistent with the lattice-theoretical+interpretation and its idempotency, commutative, associative,+absorption laws. <https://www.jsoftware.com/papers/eem/gcd.htm>++> gcd 4 6 == 2+> gcd 0 1 == 1+> gcd 1024 256 == 256+> gcd 1024 (-256) == 256+> gcd (-1024) (-256) /= (-256)+> gcd (-1024) (lcm (-1024) 256) /= (-1024)+> gcd 66 54 * lcm 66 54 == 66 * 54++-}+sc3_gcd :: t -> t -> t+sc3_gcd = error "sc3_gcd: undefined"+ {- | The SC3 @%@ UGen operator is the 'Data.Fixed.mod'' function.  > > 1.5 % 1.2 // ~= 0.3@@ -138,27 +179,40 @@  > map (sc3_wrap_ni 0 5) [4,5,6] == [4,0,1] > map (sc3_wrap_ni 5 10) [3..12] == [8,9,5,6,7,8,9,5,6,7]+> Sound.SC3.Plot.plot_fn_r1_ln (sc3_wrap_ni (-1) 1) (-2,2)  -} sc3_wrap_ni :: RealFrac a => a -> a -> a -> a sc3_wrap_ni lo hi n = sc3_mod (n - lo) (hi - lo) + lo -{- | Wrap /n/ to within range /(i,j)/, ie. @AbstractFunction.wrap@,-ie. /inclusive/ at right edge.  'wrap' is a 'UGen', hence prime.+{- | sc_wrap::int  > > [5,6].wrap(0,5) == [5,0]-> map (wrap_hs (0,5)) [5,6] == [5,0]+> map (wrap_hs_int (0,5)) [5,6] == [5,0]  > > [9,10,5,6,7,8,9,10,5,6].wrap(5,10) == [9,10,5,6,7,8,9,10,5,6]-> map (wrap_hs (5,10)) [3..12] == [9,10,5,6,7,8,9,10,5,6]+> map (wrap_hs_int (5,10)) [3..12] == [9,10,5,6,7,8,9,10,5,6]+-}+wrap_hs_int :: Integral a => (a, a) -> a -> a+wrap_hs_int (i,j) n = ((n - i) `mod` (j - i + 1)) + i +{- | Wrap /n/ to within range /(i,j)/, ie. @AbstractFunction.wrap@,+ie. /inclusive/ at right edge.  'wrap' is a 'UGen', hence prime.++> > [5.0,6.0].wrap(0.0,5.0) == [0.0,1.0]+> map (wrap_hs (0,5)) [5,6] == [0,1]+> map (wrap_hs (5,10)) [3..12] == [8,9,5,6,7,8,9,5,6,7]++> Sound.SC3.Plot.plot_fn_r1_ln (wrap_hs (-1,1)) (-2,2)+ -} wrap_hs :: RealFrac n => (n,n) -> n -> n wrap_hs (i,j) n =-    let r = j - i + 1-    in if n >= i && n <= j-       then n-       else n - r * sc3_floor ((n - i) / r)+    let r = j - i -- + 1+        n' = if n >= j then n - r else if n < i then n + r else n+    in if n' >= i && n' < j+       then n'+       else n' - r * sc3_floor ((n' - i) / r)  -- | Variant of 'wrap_hs' with @SC3@ argument ordering. --@@ -222,7 +276,7 @@     let l = length s         d' = round d         a = (d - fromIntegral d') * 10.0 * (n / 12.0)-    in (n * fromIntegral (d' `div` l)) + (Safe.atNote "degree_to_key" s (d' `mod` l)) + a+    in (n * fromIntegral (d' `div` l)) + Safe.atNote "degree_to_key" s (d' `mod` l) + a  -- | Linear amplitude to decibels. --@@ -230,9 +284,19 @@ amp_to_db :: Floating a => a -> a amp_to_db = (* 20) . logBase 10 --- | Decibels to linear amplitude.------ > map (floor . (* 100). db_to_amp) [-40,-26,-24,-18,-12,-6] == [01,05,06,12,25,50]+{- | Decibels to linear amplitude.++map (floor . (* 100). db_to_amp) [-40,-26,-24,-18,-12,-6] == [01,05,06,12,25,50]++let amp = map (2 **) [0 .. 15]+let db = [0,-6 .. -90]+map (round . ampDb . (/) 1) amp == db+map (round . amp_to_db . (/) 1) amp == db+ zip amp db++db_to_amp (-3) == 0.7079457843841379+amp_to_db 0.7079457843841379 == -3+-} db_to_amp :: Floating a => a -> a db_to_amp = (10 **) .  (* 0.05) @@ -336,7 +400,7 @@ -- > sc3_not sc3_true == sc3_false -- > sc3_not sc3_false == sc3_true sc3_not :: (Ord n,Num n) => n -> n-sc3_not = sc3_bool . not . (> 0)+sc3_not = sc3_bool . (<= 0)  -- | Translate 'Bool' to 'sc3_true' and 'sc3_false'. sc3_bool :: Num n => Bool -> n@@ -432,6 +496,10 @@ range_hs :: Fractional a => (a,a) -> a -> a range_hs = uncurry range +-- | 'flip' 'range_hs'.  This allows cases such as osc `in_range` (0,1)+in_range :: Fractional a => a -> (a,a) -> a+in_range = flip range_hs+ -- | Calculate multiplier and add values for 'linlin' transform. --   Inputs are: input-min input-max output-min output-max --@@ -550,20 +618,20 @@ -- > map (sc3_explin 10 100 1 2) [10,10,31,100,100] sc3_explin :: (Ord a, Floating a) => a -> a -> a -> a -> a -> a sc3_explin src_l src_r dst_l dst_r x =-    case apply_clip_rule Clip_Both src_l src_r dst_l dst_r x of-      Just r -> r-      Nothing -> (log (x / src_l)) / (log (src_r / src_l)) * (dst_r - dst_l) + dst_l+  fromMaybe+  (logBase (src_r / src_l) (x / src_l) * (dst_r - dst_l) + dst_l)+  (apply_clip_rule Clip_Both src_l src_r dst_l dst_r x)  -- * ExpExp  -- | Translate from one exponential range to another. ----- > map (sc3_expexp 0.1 10 4.3 100) [1.. 10]+-- > map (sc3_expexp 0.1 10 4.3 100) [1 .. 10] sc3_expexp :: (Ord a, Floating a) => a -> a -> a -> a -> a -> a sc3_expexp src_l src_r dst_l dst_r x =-    case apply_clip_rule Clip_Both src_l src_r dst_l dst_r x of-      Just r -> r-      Nothing -> ((dst_r / dst_l) ** (log (x / src_l) / log (src_r / src_l))) * dst_l+  fromMaybe+  ((dst_r / dst_l) ** logBase (src_r / src_l) (x / src_l) * dst_l)+  (apply_clip_rule Clip_Both src_l src_r dst_l dst_r x)  -- * LinCurve 
Sound/SC3/Common/Math/Filter/BEQ.hs view
@@ -104,7 +104,7 @@       alpha = sin_w0 * 0.5 * sqrt((a + recip a) * (rs - 1) + 2.0)       i = (a+1) * cos_w0       j = (a-1) * cos_w0-      k = 2 * sqrt(a) * alpha+      k = 2 * sqrt a * alpha       b0rz = recip ((a + 1) - j + k)       a0 = a * ((a + 1) + j + k) * b0rz       a1 = -2.0 * a * ((a - 1) + i) * b0rz
Sound/SC3/Common/Math/Interpolate.hs view
@@ -3,89 +3,98 @@  import Sound.SC3.Common.Math {- hsc3 -} --- | An interpolation function takes three arguments. /x0/ is the left--- or begin value, /x1/ is the right or end value, and /t/ is a (0,1)--- index.+{- | An interpolation function takes three arguments.+     x0 is the left or begin value, x1 is the right or end value, t is a (0,1) index.+-} type Interpolation_F t = t -> t -> t -> t --- | Clip /x/ to (0,1) and run /f/.+-- | Clip x to (0,1) and run f. -- -- > interpolate linear (-1,1) 0.5 == 0 interpolate :: (Num t,Ord t) => Interpolation_F t -> (t,t) -> t -> t interpolate f (l,r) x = if x < 0 then l else if x > 1 then r else f l r x --- | Step function, ignores /t/ and returns /x1/.+-- | Step function, ignores t and returns x1. step :: Interpolation_F t step _ x1 _ = x1 --- | Linear interpolation funtion, /x0/ is at /t/ of zero, and /x1/ at /t/ of one.------ > map (linear 1 10) [0,0.25 .. 1] == [1,3.25,5.5,7.75,10]------ > import Sound.SC3.Plot {- hsc3-plot -}--- > plotTable1 (map (linear (-1) 1) [0,0.01 .. 1])+{- | Linear interpolation funtion.++> map (linear 1 10) [0,0.25 .. 1] == [1,3.25,5.5,7.75,10]++> import Sound.SC3.Plot {- hsc3-plot -}+> plot_fn_r1_ln (linear (-1) 1) (0,1)+-} linear :: Num t => Interpolation_F t linear x0 x1 t = t * (x1 - x0) + x0 --- | Exponential interpolation, /x0/ must not be @0@, (/x0/,/x1/) must--- not span @0@.------ > plotTable1 (map (exponential 0.001 1) [0,0.01 .. 1])+{- | Exponential interpolation.+     x0 must not be zero and (x0,x1) must not span zero.++> plot_fn_r1_ln (exponential 0.001 1) (0,1)+> plot_fn_r1_ln (exponential 1 2) (0,1)+> plot_fn_r1_ln (exponential 20 20000) (0,1)+-} exponential :: Floating t => Interpolation_F t exponential x0 x1 t = x0 * ((x1 / x0) ** t) --- | Variant that allows /x0/ to be @0@, though (/x0/,/x1/) must not--- span @0@.------ > plotTable1 (map (exponential' 0 1) [0,0.01 .. 1])--- > plotTable1 (map (exponential' 0 (-1)) [0,0.01 .. 1])-exponential' :: (Eq t,Floating t) => Interpolation_F t-exponential' x0 x1 =+{- | Variant that allows x0 to be zero, though (x0,x1) must not span zero.++> plot_fn_r1_ln (exponential_0 0 1) (0,1)+> plot_fn_r1_ln (exponential_0 0 (-1)) (0,1)+-}+exponential_0 :: (Eq t,Floating t) => Interpolation_F t+exponential_0 x0 x1 =     let epsilon = 1e-6         x0' = if x0 == 0 then epsilon * signum x1 else x0     in exponential x0' x1 --- | 'linear' of 'exponential'', ie. allows (/x0/,/x1/) to span @0@.+-- | 'linear' of 'exponential_0' of (0,1), ie. allows (x0,x1) to span zero. ----- > plotTable1 (map (exponential'' (-1) 1) [0,0.01 .. 1])-exponential'' :: (Eq t,Floating t) => Interpolation_F t-exponential'' x0 x1 t = linear x0 x1 (exponential' 0 1 t)+-- > plot_fn_r1_ln (exponential_lin (-1) 1) (0,1)+exponential_lin :: (Eq t,Floating t) => Interpolation_F t+exponential_lin x0 x1 t = linear x0 x1 (exponential_0 0 1 t) --- | 'linear' with /t/ transformed by sine function over (-pi/2,pi/2).+-- | 'linear' with t transformed by sine function over (-pi/2,pi/2). ----- > plotTable1 (map (sine (-1) 1) [0,0.01 .. 1])+-- > plot_fn_r1_ln (sine (-1) 1) (0,1) sine :: Floating t => Interpolation_F t sine x0 x1 t =     let t' = - cos (pi * t) * 0.5 + 0.5     in linear x0 x1 t' --- | If /x0/ '<' /x1/ rising sine segment (0,pi/2), else falling--- segment (pi/2,pi).+-- | If x0 '<' x1 rising sine segment (0,pi/2), else falling segment (pi/2,pi). ----- > plotTable1 (map (welch (-1) 1) [0,0.01 .. 1])--- > plotTable1 (map (welch 1 (-1)) [0,0.01 .. 1])+-- > plot_fn_r1_ln (welch (-1) 1) (0,1)+-- > plot_fn_r1_ln (welch 1 (-1)) (0,1) welch :: (Ord t, Floating t) => Interpolation_F t welch x0 x1 t =     if x0 < x1     then x0 + (x1 - x0) * sin (half_pi * t)     else x1 - (x1 - x0) * sin (half_pi - (half_pi * t)) --- | Curvature controlled by single parameter /c/.  @0@ is 'linear',--- increasing /c/ approaches 'exponential'.------ > plotTable (map (\c-> map (curve c (-1) 1) [0,0.01 .. 1]) [-6,-4 .. 6])+{- | Curvature controlled by single parameter c.+     Zero is 'linear', increasing c approaches 'exponential' and continues past it.+     The value for c at which the curve is close to exponential depends on the range.++> plot_p1_ln (map (\c-> map (curve c (-1) 1) [0,0.01 .. 1]) [-6,-4 .. 6])+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [curve 4.4 1 100,exponential 1 100,curve 4.5 1 100])+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [exponential 20 20000,curve 7 20 20000])+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [fader 0 2,curve 2 0 2])+-} curve :: (Ord t, Floating t) => t -> Interpolation_F t curve c x0 x1 t =     if abs c < 0.0001-    then t * (x1 - x0) + x0+    then linear x0 x1 t     else let d = 1 - exp c              n = 1 - exp (t * c)          in x0 + (x1 - x0) * (n/d) --- | Square of 'linear' of 'sqrt' of /x0/ and /x1/, therefore neither--- may be negative.------ > plotTable1 (map (squared 0 1) [0,0.01 .. 1])+{- | Square of 'linear' of 'sqrt' of x0 and x1, therefore neither may be negative.++> plot_fn_r1_ln (squared 0 1) (0,1)+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [curve 2.05 0 1,squared 0 1])+-} squared :: Floating t => Interpolation_F t squared x0 x1 t =     let x0' = sqrt x0@@ -93,9 +102,11 @@         l = linear x0' x1' t     in l * l --- | Cubic variant of 'squared'.------ > plotTable1 (map (cubed 0 1) [0,0.01 .. 1])+{- | Cubic variant of 'squared'.++> plot_fn_r1_ln (cubed 0 1) (0,1)+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [curve 3.25 0 1,cubed 0 1])+-} cubed :: Floating t => Interpolation_F t cubed x0 x1 t =     let x0' = x0 ** (1/3)@@ -105,6 +116,17 @@  -- | x0 until end, then immediately x1. ----- > plotTable1 (map (hold 0 1) [0,0.01 .. 1])+-- > plot_fn_r1_ln (hold 0 1) (0,2) hold :: (Num t,Ord t) => Interpolation_F t hold x0 x1 t = if t >= 1 then x1 else x0++{- | Fader curve, equal to 'squared' when x1 > x0.++> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [squared 0 1,fader 0 1])+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [curve 2 1 0,fader 1 0])+-}+fader :: (Num t,Ord t) => Interpolation_F t+fader x0 x1 t =+  let rng = x1 - x0+      sqr i = i * i+  in sqr (if rng > 0 then t else 1 - (1 - t)) * rng + x0
Sound/SC3/Common/Math/Operator.hs view
@@ -22,50 +22,52 @@ -- * Unary  -- | Enumeration of @SC3@ unary operator UGens.+--+-- > zip (map show [minBound :: SC3_Unary_Op .. maxBound]) [0..] data SC3_Unary_Op             = Neg -- -             | Not -- !             | IsNil             | NotNil             | BitNot-            | Abs+            | Abs -- 5             | AsFloat             | AsInt-            | Ceil-            | Floor-            | Frac+            | Ceil -- 8+            | Floor -- 9+            | Frac -- 10             | Sign             | Squared             | Cubed             | Sqrt-            | Exp-            | Recip-            | MIDICPS+            | Exp -- 15+            | Recip -- 16+            | MIDICPS -- 17             | CPSMIDI             | MIDIRatio-            | RatioMIDI+            | RatioMIDI -- 20             | DbAmp             | AmpDb             | OctCPS             | CPSOct-            | Log+            | Log -- 25             | Log2             | Log10-            | Sin+            | Sin -- 28             | Cos-            | Tan+            | Tan -- 30             | ArcSin             | ArcCos             | ArcTan             | SinH-            | CosH-            | TanH+            | CosH -- 35+            | TanH -- 36             | Rand_ -- UGen             | Rand2             | LinRand_ -- UGen-            | BiLinRand+            | BiLinRand -- 40             | Sum3Rand-            | Distort+            | Distort -- 42             | SoftClip             | Coin             | DigitValue@@ -103,8 +105,8 @@  -- | Given name of unary operator derive index. ----- > mapMaybe (unaryIndex CI) (words "NEG CUBED") == [0,13]--- > unaryIndex CS "SinOsc" == Nothing+-- > mapMaybe (unaryIndex Base.CI) (words "abs CUBED midicps NEG") == [5,13,17,0]+-- > unaryIndex Base.CS "SinOsc" == Nothing unaryIndex :: Base.Case_Rule -> String -> Maybe Int unaryIndex cr nm =     let ix = Base.rlookup_str cr nm unary_sym_tbl@@ -115,6 +117,7 @@ -- -- > map (is_unary CI) (words "ABS MIDICPS NEG") -- > map (is_unary CI) (words "- RAND")+-- > map (is_unary CI) (words "arctan atan") is_unary :: Base.Case_Rule -> String -> Bool is_unary cr = isJust . unaryIndex cr @@ -122,7 +125,7 @@  -- | Enumeration of @SC3@ unary operator UGens. ----- > map show [minBound :: Binary .. maxBound]+-- > zip (map show [minBound :: SC3_Binary_Op .. maxBound]) [0..] data SC3_Binary_Op             = Add -- 0             | Sub -- 1@@ -137,36 +140,36 @@             | LE -- 10             | GE -- 11             | Min -- 12-            | Max-            | BitAnd-            | BitOr+            | Max -- 13+            | BitAnd -- 14+            | BitOr -- 15             | BitXor-            | LCM-            | GCD-            | Round-            | RoundUp+            | LCM -- 17+            | GCD -- 18+            | Round -- 19+            | RoundUp -- 20             | Trunc             | Atan2             | Hypot             | Hypotx             | Pow -- 25-            | ShiftLeft-            | ShiftRight+            | ShiftLeft -- 26+            | ShiftRight -- 27             | UnsignedShift             | Fill-            | Ring1+            | Ring1 -- 30             | Ring2             | Ring3             | Ring4             | DifSqr-            | SumSqr+            | SumSqr -- 35             | SqrSum             | SqrDif             | AbsDif             | Thresh-            | AMClip+            | AMClip -- 40             | ScaleNeg-            | Clip2+            | Clip2 -- 42             | Excess             | Fold2             | Wrap2@@ -206,7 +209,7 @@ -- > map fst sc3_binary_op_sym_tbl sc3_binary_op_sym_tbl :: [(String,Int)] sc3_binary_op_sym_tbl =-  let f x = maybe (show x) id (lookup x binary_sym_tbl)+  let f x = fromMaybe (show x) (lookup x binary_sym_tbl)   in zip (map f [Add .. ExpRandRange]) [0..]  -- | Lookup possibly symbolic name for standard binary operators.@@ -219,8 +222,9 @@  -- | Given name of binary operator derive index. ----- > mapMaybe (binaryIndex CI) (words "* MUL RING1") == [2,2,30]--- > binaryIndex CI "SINOSC" == Nothing+-- > mapMaybe (binaryIndex Base.CI) (words "* MUL RING1 +") == [2,2,30,0]+-- > binaryIndex Base.CI "SINOSC" == Nothing+-- > map (\x -> (x,binaryIndex Base.CI x)) (map snd binary_sym_tbl) binaryIndex :: Base.Case_Rule -> String -> Maybe Int binaryIndex cr nm =     let ix = Base.rlookup_str cr nm binary_sym_tbl@@ -235,13 +239,21 @@  -- * Operator +-- | Lookup operator name for operator UGens, else UGen name.+ugen_operator_name :: String -> Int -> Maybe String+ugen_operator_name nm n =+    case nm of+      "UnaryOpUGen" -> Just (unaryName n)+      "BinaryOpUGen" -> Just (binaryName n)+      _ -> Nothing+ -- | Order of lookup: binary then unary. -- -- > map (resolve_operator Sound.SC3.Common.Base.CI) (words "+ - ADD SUB NEG") resolve_operator :: Base.Case_Rule -> String -> (String,Maybe Int) resolve_operator cr nm =     case binaryIndex cr nm of-      Just sp -> ("SC3_Binary_OpOpUGen",Just sp)+      Just sp -> ("BinaryOpUGen",Just sp)       Nothing -> case unaryIndex cr nm of                    Just sp -> ("UnaryOpUGen",Just sp)                    _ -> (nm,Nothing)@@ -369,7 +381,7 @@     fold2 :: a -> a -> a     fold2 a b = Math.sc3_fold a (-b) b     gcdE :: a -> a -> a-    gcdE = error "gcdE"+    gcdE = Math.sc3_gcd     hypot :: a -> a -> a     hypot = Math.sc3_hypot     hypotx :: a -> a -> a@@ -377,9 +389,9 @@     iDiv :: a -> a -> a     iDiv = Math.sc3_idiv     lcmE :: a -> a -> a-    lcmE = error "lcmE"+    lcmE = Math.sc3_lcm     modE :: a -> a -> a-    modE = error "modE"+    modE = Math.sc3_mod     randRange :: a -> a -> a     randRange = error "randRange"     ring1 :: a -> a -> a@@ -411,13 +423,13 @@     fold2 a b = Math.sc3_fold a (-b) b     modE = F.mod'     roundUp a b = if b == 0 then a else ceilingE (a/b + 0.5) * b-    wrap2 a b = Math.sc3_wrap_ni a (-b) b+    wrap2 a b = Math.sc3_wrap_ni (-b) b a  instance BinaryOp Double where     fold2 a b = Math.sc3_fold a (-b) b     modE = F.mod'     roundUp a b = if b == 0 then a else ceilingE (a/b + 0.5) * b-    wrap2 a b = Math.sc3_wrap_ni a (-b) b+    wrap2 a b = Math.sc3_wrap_ni (-b) b a  -- * Infix 
+ Sound/SC3/Common/Math/Warp.hs view
@@ -0,0 +1,135 @@+-- | A warp is a mapping from the space @[0,1]@ to a user defined space @[l,r]@.+module Sound.SC3.Common.Math.Warp where++import Numeric {- base -}++import qualified Sound.SC3.Common.Math as Math {- hsc3 -}++-- | A warp function is lhs -> rhs -> x -> y+type Warp_f t = t -> t -> t -> t++{- | Linear real value map.++> map (warp_lin 1 2) [0,1/2,1] == [1,3/2,2]+> map (warp_lin (-1) 1) [0,1/2,1] == [-1,0,1]+-}+warp_lin :: Fractional t => Warp_f t+warp_lin l r n = let z = r - l in n * z + l++{- | Inverse of 'warp_lin'++> map (warp_lin_inv 1 2) [1,3/2,2] == [0,1/2,1]+> map (warp_lin_inv (-1) 1) [-1,0,1] == [0,1/2,1]+-}+warp_lin_inv :: Fractional t => Warp_f t+warp_lin_inv l r n = let z = r - l in (n - l) / z++{- | The left and right must both be non zero and have the same sign.++> map (warp_exp 1 2) [0,0.5,1] == [1,2 ** 0.5,2]+> import Sound.SC3.Plot {- hsc3-plot -}+> plot_p1_ln [map (warp_exp 1 2) [0,0.01 .. 1]]+-}+warp_exp :: Floating a => Warp_f a+warp_exp l r n = let z = r / l in (z ** n) * l++warp_exp_inv :: Floating a => Warp_f a+warp_exp_inv l r n = let z = r / l in logBase z (n / l)++{- | Cosine warp++> map (warp_cos 1 2) [0,0.25,0.5,0.75,1]+> plot_p1_ln [map (warp_cos 1 2) [0,0.01 .. 1]]+-}+warp_cos :: Floating t => Warp_f t+warp_cos l r n = warp_lin 0 (r - l) (0.5 - (cos (pi * n) / 2))++warp_cos_inv :: Floating a => Warp_f a+warp_cos_inv l r n = acos (1.0 - (warp_lin_inv 0 (r - l) n * 2)) / pi++{- | Sine warp++> map (warp_sin 1 2) [0,0.25,0.5,0.75,1]+> plot_p1_ln [map (warp_sin 1 2) [0,0.01 .. 1]]+-}+warp_sin :: Floating t => Warp_f t+warp_sin l r n = warp_lin 0 (r - l) (sin (pi * 0.5 * n))++warp_sin_inv :: Floating t => Warp_f t+warp_sin_inv l r n = asin (warp_lin_inv 0 (r - l) n) / (pi / 2)++{- | Fader warp.  Left and right values are ordinarily zero and one.++> map (warp_amp 0 1) [0,0.5,1] == [0,0.25,1]++> plot_p1_ln [map (warp_amp 0 2) [0,0.01 .. 1]]+> plot_p1_ln [map (warp_amp_inv 0 1 . warp_amp 0 1) [0,0.01 .. 1]]+-}+warp_amp :: Num a => Warp_f a+warp_amp l r n = (n * n) * (r - l) + l++warp_amp_inv :: Floating a => Warp_f a+warp_amp_inv l r n = sqrt ((n - l) / (r - l))++{- | DB fader warp. Left and right values are ordinarily negative+infinity and zero.  An input of @0@ gives @-180@.++> map (round . warp_db (-180) 0) [0,0.5,1] == [-180,-12,0]++> plot_p1_ln [map (warp_db (-60) 0) [0,0.01 .. 1]]+> plot_p1_ln [map (warp_db_inv 0 60) [0 .. 60]]+-}+warp_db :: (Eq a, Floating a) => Warp_f a+warp_db l r n =+  let n' = if n == 0 then -180 else Math.amp_to_db (n * n)+  in Math.sc3_linlin n' (-180) 0 l r++warp_db_inv :: Floating a => Warp_f a+warp_db_inv l r n = sqrt (Math.db_to_amp (Math.sc3_linlin n l r (-180) 0))++{- | A curve warp given by a real /n/.++> warp_curve (-3) 1 2 0.25 == 1.5552791692202022+> warp_curve (-3) 1 2 0.50 == 1.8175744761936437++> plot_p1_ln [map (warp_curve (-3) 1 2) [0,0.01 .. 1]]+> plot_p1_ln (map (\c -> map (warp_curve c 1 2) [0,0.01 .. 1]) [0,3,6,9])+> plot_p1_ln [map (warp_curve_inv 7 20 20000 . warp_curve 7 20 20000) [0,0.01 .. 1]]+-}+warp_curve :: (Ord a, Floating a) => a -> Warp_f a+warp_curve k l r n =+  if abs k < 0.001+  then warp_lin l r n+  else let e = exp k+           a = (r - l) / (1 - e)+           b = l + a+       in b - ((e ** n) * a)++warp_curve_inv :: (Ord a, Floating a) => a -> Warp_f a+warp_curve_inv k l r n =+  if abs k < 0.001+  then warp_lin l r n+  else let e = exp k+           a = (r - l) / (1 - e)+           b = l + a+       in log ((b - n) / a) / k++{- | Select warp functions by name.  Numerical names are interpreted as /curve/ values for 'warpCurve'.++> let Just w = warp_named "lin"+> let Just w = warp_named "-3"+> let Just w = warp_named "6"+> plot_p1_ln [map ((fst w) 1 2) [0,0.01 .. 1]]+-}+warp_named :: (Floating t, RealFrac t) => String -> Maybe (Warp_f t, Warp_f t)+warp_named nm =+    case nm of+      "lin" -> Just (warp_lin,warp_lin_inv)+      "exp" -> Just (warp_exp,warp_exp_inv)+      "sin" -> Just (warp_sin,warp_sin_inv)+      "cos" -> Just (warp_cos,warp_cos_inv)+      "amp" -> Just (warp_amp,warp_amp_inv)+      "db" -> Just (warp_db,warp_db_inv)+      _ -> case readSigned readFloat nm of+             [(c,"")] -> Just (warp_curve c,warp_curve_inv c)+             _ -> Nothing
Sound/SC3/Common/UId.hs view
@@ -4,12 +4,10 @@ --   Used by non-deterministic (noise) and non-sharable (demand) unit generators. module Sound.SC3.Common.UId where -import Control.Monad {- base -} import Data.Functor.Identity {- base -} import Data.List {- base -} import qualified Data.Unique as Unique {- base -} ---import qualified Control.Monad.Trans.Identity as Identity {- transformers -} import qualified Control.Monad.Trans.Reader as Reader {- transformers -} import qualified Control.Monad.Trans.State as State {- transformers -} import qualified Data.Digest.Murmur32 as Murmur32 {- hashable -}@@ -31,7 +29,7 @@     generateUId = State.get >>= \n -> State.put (n + 1) >> return n  instance UId IO where-    generateUId = liftM Unique.hashUnique Unique.newUnique+    generateUId = fmap Unique.hashUnique Unique.newUnique  instance UId m => UId (Reader.ReaderT t m) where    generateUId = Reader.ReaderT (const generateUId)@@ -98,6 +96,7 @@ -- > map resolveID ['α','β'] == [1439603815,4131151318] -- > map resolveID [('α','β'),('β','α')] == [3538183581,3750624898] -- > map resolveID [('α',('α','β')),('β',('α','β'))] == [0020082907,2688286317]+-- > map resolveID [('α','α','β'),('β','α','β')] == [0020082907,2688286317] class Murmur32.Hashable32 a => ID a where     resolveID :: a -> Id     resolveID = fromIntegral . Murmur32.asWord32 . Murmur32.hash32@@ -105,6 +104,7 @@ instance ID Char where instance ID Int where instance (ID p,ID q) => ID (p,q) where+instance (ID p,ID q,ID r) => ID (p,q,r) where  -- | /n/ identifiers from /x/. --
Sound/SC3/Server/Command/Generic.hs view
@@ -465,9 +465,8 @@ -- * UGen commands.  -- | Generate accumulation buffer given time-domain IR buffer and FFT size.-pc_preparePartConv :: Integral i => i -> i -> i -> Message-pc_preparePartConv b irb fft_size =-    b_gen b "PreparePartConv" (map int32 [irb, fft_size])+partConv_preparePartConv :: Integral i => i -> i -> i -> Message+partConv_preparePartConv b irb fft_size = b_gen b "PreparePartConv" (map int32 [irb, fft_size])  -- * Unpack @@ -522,7 +521,7 @@ unpack_b_setn_err :: (Num i,Fractional f) => Message -> (i,i,i,[f]) unpack_b_setn_err = fromMaybe (error "unpack_b_setn") . unpack_b_setn --- | Unpack @b_info@ message, fields are (id,frames,channels,sample-rate).+-- | Unpack b_info message, fields are (id,frames,channels,sample-rate). unpack_b_info :: (Num i,Fractional f) => Message -> Maybe (i,i,i,f) unpack_b_info m =     let to_i = fromIntegral
Sound/SC3/Server/Command/Plain.hs view
@@ -390,8 +390,8 @@ -- * UGen commands.  -- | Generate accumulation buffer given time-domain IR buffer and FFT size.-pc_preparePartConv :: Int -> Int -> Int -> Message-pc_preparePartConv = G.pc_preparePartConv+partConv_preparePartConv :: Int -> Int -> Int -> Message+partConv_preparePartConv = G.partConv_preparePartConv  -- * Unpack 
Sound/SC3/Server/Graphdef.hs view
@@ -3,19 +3,26 @@ module Sound.SC3.Server.Graphdef where  import Control.Monad {- base -}-import qualified Data.ByteString.Lazy as L {- bytestring -} import Data.List {- base -}-import qualified Safe {- safe -}+import Data.Maybe {- base -} import System.FilePath {- filepath -}-import System.IO {- base -}+import Text.Printf {- base -} +import qualified Data.Binary.Get as Get {- binary -}+import qualified Data.Binary.IEEE754 as IEEE754 {- data-binary-ieee754 -}+import qualified Data.ByteString.Lazy as L {- bytestring -}+import qualified Safe {- safe -}+ import qualified Sound.OSC.Coding.Byte as Byte {- hosc -} import qualified Sound.OSC.Coding.Cast as Cast {- hosc -} import qualified Sound.OSC.Datum as Datum {- hosc -} +import qualified Sound.SC3.Common.Math.Operator as Operator {- hsc3 -}+import qualified Sound.SC3.Common.Rate as Rate {- hsc3 -}+ -- * Type --- | Names are ASCII strings.+-- | Names are ASCII strings (ie. ByteString.Char8) type Name = Datum.ASCII  -- | Controls are a name and a ugen-index.@@ -24,14 +31,20 @@ -- | Constants are floating point. type Sample = Double --- | Inputs are a ugen-index and a port-index.---   If the ugen-index is -1 it indicates a constant.-data Input = Input Int Int deriving (Eq,Show)+-- | UGen indices are Int.+type UGen_Index = Int --- | Read ugen-index of input, else Nothing.-input_ugen_ix :: Input -> Maybe Int-input_ugen_ix (Input u p) = if p == -1 then Nothing else Just u+-- | Port indices are Int.+type Port_Index = Int +-- | Index used to indicate constants at UGen inputs.+--   Ie. if the ugen-index is this value (-1) it indicates a constant.+constant_index :: UGen_Index+constant_index = -1++-- | Inputs are a ugen-index and a port-index.+data Input = Input UGen_Index Port_Index deriving (Eq,Show)+ -- | Rates are encoded as integers (IR = 0, KR = 1, AR = 2, DR = 3). type Rate = Int @@ -44,10 +57,23 @@ -- | Unit generator type. type UGen = (Name,Rate,[Input],[Output],Special) +-- | 'UGen' name.+ugen_name_str :: UGen -> String+ugen_name_str (nm,_,_,_,_) = Datum.ascii_to_string nm++-- | 'UGen' name, using operator name if appropriate.+ugen_name_op :: UGen -> String+ugen_name_op (nm,_,_,_,k) =+  let s = Datum.ascii_to_string nm+  in fromMaybe s (Operator.ugen_operator_name s k)+ -- | 'UGen' 'Rate'. ugen_rate :: UGen -> Rate ugen_rate (_,r,_,_,_) = r +ugen_rate_enum :: UGen -> Rate.Rate+ugen_rate_enum = toEnum . ugen_rate+ -- | 'UGen' 'Input's. ugen_inputs :: UGen -> [Input] ugen_inputs (_,_,i,_,_) = i@@ -56,17 +82,15 @@ ugen_outputs :: UGen -> [Output] ugen_outputs (_,_,_,o,_) = o --- | Predicate to examine Ugen name and decide if it is a control.+-- | Predicate to examine UGen name and decide if it is a control. ugen_is_control :: UGen -> Bool-ugen_is_control (nm,_,_,_,_) =-  Datum.ascii_to_string nm `elem` ["Control","LagControl","TrigControl"]+ugen_is_control =+  (`elem` ["Control","LagControl","TrigControl"]) .+  ugen_name_str --- | Input is a UGen and the UGen is a control.+-- | Input is a UGen (ie. not a constant, indicated by a ugen-index of -1) and the UGen is a control. input_is_control :: Graphdef -> Input -> Bool-input_is_control g (Input u _) =-    if u == -1-    then False-    else ugen_is_control (graphdef_ugen g u)+input_is_control g (Input u _) = (u /= constant_index) && ugen_is_control (graphdef_ugen g u)  -- | Graph definition type. data Graphdef = Graphdef {graphdef_name :: Name@@ -76,7 +100,7 @@                 deriving (Eq,Show)  -- | Lookup UGen by index.-graphdef_ugen :: Graphdef -> Int -> UGen+graphdef_ugen :: Graphdef -> UGen_Index -> UGen graphdef_ugen g = Safe.atNote "graphdef_ugen" (graphdef_ugens g)  -- | Lookup Control and default value by index.@@ -95,75 +119,88 @@ graphdef_ugen_nid :: Graphdef -> Int -> Int graphdef_ugen_nid g n = graphdef_control_nid g 0 + length (graphdef_controls g) + n --- * Read (version 0 or 2).+-- * BINARY GET (version 0|1 or 2) --- | Read a 'Sample'.-read_sample :: Handle -> IO Sample-read_sample = fmap realToFrac . Byte.read_f32+-- | Get a 'Name' (Pascal string).+get_pstr :: Get.Get Name+get_pstr = do+  n <- fmap fromIntegral Get.getWord8+  fmap Byte.decode_ascii (Get.getLazyByteString n) --- | Read a 'Control'.-read_control :: (Handle -> IO Int) -> Handle -> IO Control-read_control read_i h = do-  nm <- Byte.read_pstr h-  ix <- read_i h+-- | Get functions for Graphdef types, (str_f,i8_f,i16_f,i32_f,f32_f)+type GET_F m = (m Name,m Int,m Int,m Int,m Double)++-- | GET_F for binary .scsyndef files.+binary_get_f :: GET_F Get.Get+binary_get_f =+  (get_pstr+  ,fmap fromIntegral Get.getInt8+  ,fmap fromIntegral Get.getInt16be+  ,fmap fromIntegral Get.getInt32be+  ,fmap realToFrac IEEE754.getFloat32be)++-- | Get a 'Control'.+get_control :: Monad m => (GET_F m,m Int) -> m Control+get_control ((get_str,_,_,_,_),get_i) = do+  nm <- get_str+  ix <- get_i   return (nm,ix) --- | Read an 'Input'.-read_input :: (Handle -> IO Int) -> Handle -> IO Input-read_input read_i h = do-  u <- read_i h-  p <- read_i h+-- | Get an 'Input'.+get_input :: Monad m => m Int -> m Input+get_input get_i = do+  u <- get_i+  p <- get_i   return (Input u p) --- | Read an 'output'.-read_output :: Handle -> IO Output-read_output = Byte.read_i8---- | Read a 'UGen'.-read_ugen :: (Handle -> IO Int) -> Handle -> IO UGen-read_ugen read_i h = do-  name <- Byte.read_pstr h-  rate <- Byte.read_i8 h-  number_of_inputs <- read_i h-  number_of_outputs <- read_i h-  special <- Byte.read_i16 h-  inputs <- replicateM number_of_inputs (read_input read_i h)-  outputs <- replicateM number_of_outputs (read_output h)+-- | Get a 'UGen'+get_ugen :: Monad m => (GET_F m,m Int) -> m UGen+get_ugen ((get_str,get_i8,get_i16,_,_),get_i) = do+  name <- get_str+  rate <- get_i8+  number_of_inputs <- get_i+  number_of_outputs <- get_i+  special <- get_i16+  inputs <- replicateM number_of_inputs (get_input get_i)+  outputs <- replicateM number_of_outputs get_i8   return (name          ,rate          ,inputs          ,outputs          ,special) --- | Read a 'Graphdef'. Ignores variants.-read_graphdef :: Handle -> IO Graphdef-read_graphdef h = do-  magic <- fmap Byte.decode_ascii (L.hGet h 4)-  version <- Byte.read_i32 h-  let read_i =+-- | Get a 'Graphdef'. Supports version 0|1 and version 2 files.  Ignores variants.+get_graphdef :: Monad m => GET_F m -> m Graphdef+get_graphdef c@(get_str,_,get_i16,get_i32,get_f32) = do+  magic <- get_i32+  version <- get_i32+  let get_i =           case version of-            0 -> Byte.read_i16-            2 -> Byte.read_i32-            _ -> error ("read_graphdef: version not at {zero | two}: " ++ show version)-  number_of_definitions <- Byte.read_i16 h-  when (magic /= Datum.ascii "SCgf")-       (error "read_graphdef: illegal magic string")+            0 -> get_i16+            1 -> get_i16 -- version one allows variants, which are not allowed by hsc3+            2 -> get_i32+            _ -> error ("get_graphdef: version not at {zero | one | two}: " ++ show version)+  number_of_definitions <- get_i16+  when (magic /= scgf_i32)+       (error "get_graphdef: illegal magic string")   when (number_of_definitions /= 1)-       (error "read_graphdef: non unary graphdef file")-  name <- Byte.read_pstr h-  number_of_constants <- read_i h-  constants <- replicateM number_of_constants (read_sample h)-  number_of_control_defaults <- read_i h-  control_defaults <- replicateM number_of_control_defaults (read_sample h)-  number_of_controls <- read_i h-  controls <- replicateM number_of_controls (read_control read_i h)-  number_of_ugens <- read_i h-  ugens <- replicateM number_of_ugens (read_ugen read_i h)+       (error "get_graphdef: non unary graphdef file")+  name <- get_str+  number_of_constants <- get_i+  constants <- replicateM number_of_constants get_f32+  number_of_control_defaults <- get_i+  control_defaults <- replicateM number_of_control_defaults get_f32+  number_of_controls <- get_i+  controls <- replicateM number_of_controls (get_control (c,get_i))+  number_of_ugens <- get_i+  ugens <- replicateM number_of_ugens (get_ugen (c,get_i))   return (Graphdef name                    constants                    (zip controls control_defaults)                    ugens) +-- * READ+ {- | Read Graphdef from .scsyndef file.  > dir = "/home/rohan/sw/rsc3-disassembler/scsyndef/"@@ -172,16 +209,15 @@ > pp "with-ctl.scsyndef" > pp "mce.scsyndef" > pp "mrg.scsyndef"- -} read_graphdef_file :: FilePath -> IO Graphdef read_graphdef_file nm = do-  h <- openFile nm ReadMode-  g <- read_graphdef h-  hClose h-  return g+  b <- L.readFile nm+  return (Get.runGet (get_graphdef binary_get_f) b) --- | Read scsyndef file and run 'graphdef_stat'.+-- * STAT++-- | 'read_graphdef_file' and run 'graphdef_stat'. scsyndef_stat :: FilePath -> IO String scsyndef_stat fn = do   g <- read_graphdef_file fn@@ -189,50 +225,80 @@  -- * Encode (version zero) --- | Pascal (length prefixed) encoding of string.+-- | (join_f,str_f,i8_f,i16_f,i32_f,f32_f,com_f)+type ENCODE_F t = ([t] -> t,Name -> t,Int -> t,Int -> t,Int -> t,Double -> t,String -> t)++-- | 'ENCODE_F' for 'L.ByteString'+enc_bytestring :: ENCODE_F L.ByteString+enc_bytestring =+  (L.concat,encode_pstr,Byte.encode_i8,Byte.encode_i16,Byte.encode_i32,encode_sample+  ,const L.empty)++-- | Pascal (length prefixed) encoding of 'Name'. encode_pstr :: Name -> L.ByteString encode_pstr = L.pack . Cast.str_pstr . Datum.ascii_to_string +encode_input_f :: ENCODE_F t -> Input -> t+encode_input_f (join_f,_,_,i16_f,_,_,_) (Input u p) = join_f (map i16_f [u,p])+ -- | Byte-encode 'Input'. encode_input :: Input -> L.ByteString-encode_input (Input u p) = L.append (Byte.encode_i16 u) (Byte.encode_i16 p)+encode_input = encode_input_f enc_bytestring +encode_control_f :: ENCODE_F t -> Control -> t+encode_control_f (join_f,str_f,_,i16_f,_,_,_) (nm,k) = join_f [str_f nm,i16_f k]+ -- | Byte-encode 'Control'. encode_control :: Control -> L.ByteString-encode_control (nm,k) = L.concat [encode_pstr nm,Byte.encode_i16 k]+encode_control = encode_control_f enc_bytestring +encode_ugen_f :: ENCODE_F t -> UGen -> t+encode_ugen_f enc (nm,r,i,o,s) =+  let (join_f,str_f,i8_f,i16_f,_,_,com_f) = enc+  in join_f [com_f "ugen-name",str_f nm+            ,com_f "ugen-rate",i8_f r+            ,com_f "ugen-number-of-inputs",i16_f (length i)+            ,com_f "ugen-number-of-outputs",i16_f (length o)+            ,com_f "ugen-special",i16_f s+            ,com_f "ugen-inputs (ugen-index,port-index)",join_f (map (encode_input_f enc) i)+            ,com_f "ugen-output-rates",join_f (map i8_f o)+            ]+ -- | Byte-encode 'UGen'. encode_ugen :: UGen -> L.ByteString-encode_ugen (nm,r,i,o,s) =-    L.concat [encode_pstr nm-             ,Byte.encode_i8 r-             ,Byte.encode_i16 (length i)-             ,Byte.encode_i16 (length o)-             ,Byte.encode_i16 s-             ,L.concat (map encode_input i)-             ,L.concat (map Byte.encode_i8 o)]+encode_ugen = encode_ugen_f enc_bytestring  -- | Encode 'Sample' as 32-bit IEEE float. encode_sample :: Sample -> L.ByteString encode_sample = Byte.encode_f32 . realToFrac +encode_graphdef_f :: ENCODE_F t -> Graphdef -> t+encode_graphdef_f enc (Graphdef nm cs ks us) =+    let (join_f,str_f,_,i16_f,i32_f,f32_f,com_f) = enc+        (ks_ctl,ks_def) = unzip ks+    in join_f [com_f "SCgf",i32_f scgf_i32+              ,com_f "version",i32_f 0+              ,com_f "number of graphs",i16_f 1+              ,com_f "name",str_f nm+              ,com_f "number-of-constants",i16_f (length cs)+              ,com_f "constant-values",join_f (map f32_f cs)+              ,com_f "number-of-controls",i16_f (length ks_def)+              ,com_f "control-default-values",join_f (map f32_f ks_def)+              ,com_f "number-of-controls",i16_f (length ks_ctl)+              ,com_f "controls",join_f (map (encode_control_f enc) ks_ctl)+              ,com_f "number-of-ugens",i16_f (length us)+              ,join_f (map (encode_ugen_f enc) us)]+ -- | Encode 'Graphdef'. encode_graphdef :: Graphdef -> L.ByteString-encode_graphdef (Graphdef nm cs ks us) =-    let (ks_ctl,ks_def) = unzip ks-    in L.concat [Byte.encode_ascii (Datum.ascii "SCgf")-                ,Byte.encode_i32 0 -- version-                ,Byte.encode_i16 1 -- number of graphs-                ,encode_pstr nm-                ,Byte.encode_i16 (length cs)-                ,L.concat (map encode_sample cs)-                ,Byte.encode_i16 (length ks_def)-                ,L.concat (map encode_sample ks_def)-                ,Byte.encode_i16 (length ks_ctl)-                ,L.concat (map encode_control ks_ctl)-                ,Byte.encode_i16 (length us)-                ,L.concat (map encode_ugen us)]+encode_graphdef = encode_graphdef_f enc_bytestring +-- | "SCgf" encoded as 32-bit unsigned integer.+--+-- > Byte.decode_i32 (Byte.encode_ascii (Datum.ascii "SCgf"))+scgf_i32 :: Num n => n+scgf_i32 = 1396926310+ -- * IO  -- | Write 'Graphdef' to indicated file.@@ -251,11 +317,10 @@ -- | Simple statistics printer for 'Graphdef'. graphdef_stat :: Graphdef -> String graphdef_stat (Graphdef nm cs ks us) =-    let u_nm (sc3_nm,_,_,_,_) = Datum.ascii_to_string sc3_nm-        f g = let h (x:xs) = (x,length (x:xs))+    let f g = let h (x:xs) = (x,length (x:xs))                   h [] = error "graphdef_stat"               in show . map h . group . sort . map g-        sq pp_f = intercalate "," (pp_f (map u_nm us))+        sq pp_f = intercalate "," (pp_f (map ugen_name_op us))     in unlines ["name                      : " ++ show nm                ,"number of constants       : " ++ show (length cs)                ,"number of controls        : " ++ show (length ks)@@ -264,3 +329,35 @@                ,"unit generator set        : " ++ sq (nub . sort)                ,"unit generator sequence   : " ++ sq id] +-- * Dump UGens++-- | Pretty print UGen in the manner of SynthDef>>dumpUGens.+ugen_dump_ugen_str :: [Sample] -> [UGen] -> UGen_Index -> UGen -> String+ugen_dump_ugen_str c_sq u_sq ix u =+  let in_brackets :: String -> String+      in_brackets x = printf "[%s]" x+      input_pp (Input i j) =+        let ui = u_sq !! i+        in if i >= 0+           then if length (ugen_outputs ui) > 1+                then printf "%d_%s:%d" i (ugen_name_op ui) j+                else printf "%d_%s" i (ugen_name_op ui)+           else printf "%f" (c_sq !! j)+      inputs_pp = in_brackets . intercalate "," . map input_pp+  in printf "%d_%s, %s, %s" ix (ugen_name_op u) (show (ugen_rate_enum u)) (inputs_pp (ugen_inputs u))++-- | Print graphdef in format equivalent to SynthDef>>dumpUGens in SuperCollider+graphdef_dump_ugens_str :: Graphdef -> [String]+graphdef_dump_ugens_str (Graphdef _nm cs _ks us) = zipWith (ugen_dump_ugen_str cs us) [0..] us++{- | 'putStrLn' of 'unlines' of 'graphdef_dump_ugens_str'++> dir = "/home/rohan/sw/rsc3-disassembler/scsyndef/"+> pp nm = read_graphdef_file (dir ++ nm) >>= graphdef_dump_ugens+> pp "simple.scsyndef"+> pp "with-ctl.scsyndef"+> pp "mce.scsyndef"+> pp "mrg.scsyndef"+-}+graphdef_dump_ugens :: Graphdef -> IO ()+graphdef_dump_ugens = putStrLn . unlines . graphdef_dump_ugens_str
Sound/SC3/Server/Graphdef/Graph.hs view
@@ -1,15 +1,16 @@ -- | Transform 'Graph.U_Graph' to 'Graphdef.Graphdef'. module Sound.SC3.Server.Graphdef.Graph where -import qualified Data.IntMap as M {- containers -} import Data.Maybe {- base -} +import qualified Data.IntMap as M {- containers -}+ import qualified Sound.OSC.Datum as Datum {- hosc -} -import qualified Sound.SC3.Common.Rate as Rate-import qualified Sound.SC3.UGen.Graph as Graph-import qualified Sound.SC3.UGen.Type as Type-import qualified Sound.SC3.Server.Graphdef as Graphdef+import qualified Sound.SC3.Common.Rate as Rate {- hsc3 -}+import qualified Sound.SC3.UGen.Graph as Graph {- hsc3 -}+import qualified Sound.SC3.UGen.Type as Type {- hsc3 -}+import qualified Sound.SC3.Server.Graphdef as Graphdef {- hsc3 -}  -- * Maps 
Sound/SC3/Server/Graphdef/Read.hs view
@@ -3,35 +3,34 @@  import Sound.OSC.Datum {- hosc -} -import qualified Sound.SC3.Common.Rate as Rate-import           Sound.SC3.Server.Graphdef as Graphdef-import qualified Sound.SC3.UGen.Graph as Graph-import qualified Sound.SC3.UGen.Type as Type+import qualified Sound.SC3.Common.Rate as Rate {- hsc3 -}+import qualified Sound.SC3.Server.Graphdef as Graphdef {- hsc3 -}+import qualified Sound.SC3.UGen.Graph as Graph {- hsc3 -}+import qualified Sound.SC3.UGen.Type as Type {- hsc3 -} -control_to_node :: Graphdef -> Type.UID_t -> (Control,Type.Sample) -> Graph.U_Node+control_to_node :: Graphdef.Graphdef -> Type.UID_t -> (Graphdef.Control,Type.Sample) -> Graph.U_Node control_to_node g z ((nm,ix),v) =-    let z' = graphdef_control_nid g z+    let z' = Graphdef.graphdef_control_nid g z         nm' = ascii_to_string nm     in Graph.U_Node_K z' Rate.KR (Just ix) nm' v Rate.K_KR Nothing -input_to_from_port :: Graphdef -> Input -> Graph.From_Port-input_to_from_port g (Input u p) =+-- | Note: Graphs with multiple Control UGens are not accounted for.+input_to_from_port :: Graphdef.Graphdef -> Graphdef.Input -> Graph.From_Port+input_to_from_port g (Graphdef.Input u p) =     if u == -1-    then Graph.From_Port_C (graphdef_constant_nid g p)-    else if input_is_control g (Input u p)-         then if u /= 0-              then error "multiple control UGens..."-              else Graph.From_Port_K (graphdef_control_nid g p) Rate.K_KR-         else let ugen = graphdef_ugens g !! u-                  port = if length (ugen_outputs ugen) > 1+    then Graph.From_Port_C (Graphdef.graphdef_constant_nid g p)+    else if Graphdef.input_is_control g (Graphdef.Input u p)+         then Graph.From_Port_K (Graphdef.graphdef_control_nid g p) Rate.K_KR+         else let ugen = Graphdef.graphdef_ugens g !! u+                  port = if length (Graphdef.ugen_outputs ugen) > 1                          then Just p                          else Nothing-              in Graph.From_Port_U (graphdef_ugen_nid g u) port+              in Graph.From_Port_U (Graphdef.graphdef_ugen_nid g u) port -ugen_to_node :: Graphdef -> Type.UID_t -> UGen -> Graph.U_Node+ugen_to_node :: Graphdef.Graphdef -> Type.UID_t -> Graphdef.UGen -> Graph.U_Node ugen_to_node g z u =     let (name,rate,inputs,outputs,special) = u-        z' = graphdef_ugen_nid g z+        z' = Graphdef.graphdef_ugen_nid g z         rate' = toEnum rate         name' = ascii_to_string name         inputs' = map (input_to_from_port g) inputs@@ -39,12 +38,12 @@         special' = Type.Special special     in Graph.U_Node_U z' rate' name' inputs' outputs' special' (Type.UId z') -graphdef_to_graph :: Graphdef -> (String,Graph.U_Graph)+graphdef_to_graph :: Graphdef.Graphdef -> (String,Graph.U_Graph) graphdef_to_graph g =-    let constants_nd = zipWith Graph.U_Node_C [0..] (graphdef_constants g)-        controls_nd = zipWith (control_to_node g) [0 ..] (graphdef_controls g)-        ugens_nd = zipWith (ugen_to_node g) [0 ..] (graphdef_ugens g)-        nm = ascii_to_string (graphdef_name g)+    let constants_nd = zipWith Graph.U_Node_C [0..] (Graphdef.graphdef_constants g)+        controls_nd = zipWith (control_to_node g) [0 ..] (Graphdef.graphdef_controls g)+        ugens_nd = zipWith (ugen_to_node g) [0 ..] (Graphdef.graphdef_ugens g)+        nm = ascii_to_string (Graphdef.graphdef_name g)         gr = Graph.U_Graph (-1) constants_nd controls_nd ugens_nd     in (nm,gr) -- S.Synthdef nm gr 
+ Sound/SC3/Server/Graphdef/Text.hs view
@@ -0,0 +1,63 @@+module Sound.SC3.Server.Graphdef.Text where++import Control.Monad {- base -}+import Data.Char {- base -}+import Data.Functor.Identity {- base -}++import qualified Numeric {- base -}++import qualified Control.Monad.State as S {- mtl -}++import qualified Sound.OSC.Datum as Datum {- hosc -}++import Sound.SC3.Server.Graphdef {- hsc3 -}++-- | * PRINT++-- | Print string.  Strings must not have internal whitespace or semi-colons.+print_string :: Datum.ASCII -> String+print_string a =+  let s = Datum.ascii_to_string a+  in if any isSpace s || ';' `elem` s then error "print_string" else s++-- | 'ENCODE_F' for plain text output.+enc_text :: (String -> String) -> ENCODE_F String+enc_text com_f =+  (unwords . filter (not . null),print_string,show,show,show,\n -> Numeric.showFFloat Nothing n ""+  ,com_f)++{- | 'encode_graphdef_f' of 'enc_text' with optional semi-colon delimited comments.++> dir = "/home/rohan/sw/rsc3-disassembler/scsyndef/"+> pp nm = read_graphdef_file (dir ++ nm) >>= putStrLn . print_graphdef True+> pp "simple.scsyndef"+> pp "with-ctl.scsyndef"+> pp "mce.scsyndef"+> pp "mrg.scsyndef"+-}+print_graphdef :: Bool -> Graphdef -> String+print_graphdef with_com =+    let com_f = if with_com then \c -> concat ["\n; ",c,"\n"] else const ""+    in encode_graphdef_f (enc_text com_f)++-- * LIST INPUT++-- | Read the next value from a list.+list_read_f :: (t -> u) -> S.State [t] u+list_read_f f = do+  l <- S.get+  when (null l) (error "list_read_f")+  S.put (tail l)+  return (f (head l))++-- | GET_F for text representation of Graphdef.+text_get_f :: GET_F (S.StateT [String] Identity)+text_get_f = (list_read_f Datum.ascii,list_read_f read,list_read_f read,list_read_f read,list_read_f read)++-- | Read text representation of Graphdef, as written by 'print_graphdef'.+--+-- > read_graphdef "1396926310 0 1 simple 2 0.0 440.0 0 0 2 SinOsc 2 2 1 0 -1 1 -1 0 2 Out 2 2 0 0 -1 0 0 0"+read_graphdef :: String -> Graphdef+read_graphdef txt =+  let delete_comments = filter (\x -> not (null x) && (head x /= ';'))+  in S.evalState (get_graphdef text_get_f) (concatMap words (delete_comments (lines txt)))
Sound/SC3/Server/NRT.hs view
@@ -22,7 +22,7 @@     in B.append l b  -- | An 'NRT' score is a sequence of 'Bundle's.-data NRT = NRT {nrt_bundles :: [Bundle]} deriving (Show)+newtype NRT = NRT {nrt_bundles :: [Bundle]} deriving (Show)  -- | Trivial NRT statistics. type NRT_STAT =@@ -103,7 +103,7 @@ OSC file name, input audio file name and input number of channels, output audio file name and output number of channels,-sample rate,+sample rate (int), sample format, further parameters (ie. ["-m","32768"]) to be inserted before the NRT -N option. 
Sound/SC3/Server/Options.hs view
@@ -10,6 +10,10 @@ sc3_opt_value :: SC3_OPT i -> i sc3_opt_value (_,_,v) = v +-- | Default address string.+sc3_addr_def :: String+sc3_addr_def = "127.0.0.1"+ -- | Default port number, either a 'u' or a 't' option is required. sc3_port_def :: Num i => i sc3_port_def = 57110@@ -30,6 +34,7 @@   sc3_opt_port_def p :   [('a',"number-of-audio-bus-channels",1024)   ,('b',"number-of-sample-buffers",1024)+  --,('B',"bind-to-address","127.0.0.1")   ,('c',"number-of-control-bus-channels",16384)   ,('D',"load-synthdefs?",1)   ,('d',"max-number-of-synth-defs",1024)
Sound/SC3/Server/Param.hs view
@@ -1,4 +1,4 @@--- * Synthesis parameters+-- | Synthesis parameters module Sound.SC3.Server.Param where  import Data.Function {- base -}
Sound/SC3/Server/Status.hs view
@@ -77,7 +77,7 @@     case n of       Query_Group k _ -> show k       Query_Synth k nm c ->-          let c' = unwords (map query_ctl_pp (fromMaybe [] c))+          let c' = unwords (maybe [] (map query_ctl_pp) c)           in show (k,nm,c')  -- | Control (parameter) data may be given as names or indices and as
Sound/SC3/Server/Synthdef.hs view
@@ -3,21 +3,21 @@  import qualified Data.ByteString.Lazy as L {- bytestring -} -import Sound.SC3.UGen.Graph-import Sound.SC3.UGen.Help.Graph-import Sound.SC3.UGen.Type+import qualified Sound.SC3.UGen.Graph as UGen.Graph {- hsc3 -}+import qualified Sound.SC3.UGen.Help.Graph as Help.Graph {- hsc3 -}+import qualified Sound.SC3.UGen.Type as UGen {- hsc3 -} -import qualified Sound.SC3.Server.Graphdef as Graphdef-import qualified Sound.SC3.Server.Graphdef.Graph as Graph-import qualified Sound.SC3.Server.Param as Param+import qualified Sound.SC3.Server.Graphdef as Graphdef {- hsc3 -}+import qualified Sound.SC3.Server.Graphdef.Graph as Graph {- hsc3 -}+import qualified Sound.SC3.Server.Param as Param {- hsc3 -}  -- | A named unit generator graph. data Synthdef = Synthdef {synthdefName :: String-                         ,synthdefUGen :: UGen}+                         ,synthdefUGen :: UGen.UGen}                 deriving (Eq,Show)  -- | Alias for 'Synthdef'.-synthdef :: String -> UGen -> Synthdef+synthdef :: String -> UGen.UGen -> Synthdef synthdef = Synthdef  {- | The SC3 /default/ instrument 'Synthdef', see 'default_ugen_graph'.@@ -29,7 +29,7 @@  -} defaultSynthdef :: Synthdef-defaultSynthdef = synthdef "default" default_ugen_graph+defaultSynthdef = synthdef "default" Help.Graph.default_ugen_graph  -- | The SC3 /default/ sample (buffer) playback instrument 'Synthdef', -- see 'default_sampler_ugen_graph'.@@ -39,22 +39,29 @@ defaultSampler :: Bool -> Synthdef defaultSampler use_gate =     let nm = "default-sampler-" ++ if use_gate then "gate" else "fixed"-    in synthdef nm (default_sampler_ugen_graph use_gate)+    in synthdef nm (Help.Graph.default_sampler_ugen_graph use_gate)  -- | 'ugen_to_graph' of 'synthdefUGen'.-synthdefGraph :: Synthdef -> U_Graph-synthdefGraph = ugen_to_graph . synthdefUGen+synthdefGraph :: Synthdef -> UGen.Graph.U_Graph+synthdefGraph = UGen.Graph.ugen_to_graph . synthdefUGen  -- | Parameter names at 'Synthdef'. -- -- > synthdefParam defaultSynthdef == [("amp",0.1),("pan",0),("gate",1),("freq",440),("out",0)] synthdefParam :: Synthdef -> Param.Param-synthdefParam = map (\n -> (u_node_k_name n,u_node_k_default n)) . ug_controls . synthdefGraph+synthdefParam =+  map (\n -> (UGen.Graph.u_node_k_name n,UGen.Graph.u_node_k_default n)) .+  UGen.Graph.ug_controls .+  synthdefGraph  -- | 'graph_to_graphdef' at 'Synthdef'. synthdef_to_graphdef :: Synthdef -> Graphdef.Graphdef-synthdef_to_graphdef (Synthdef nm u) = Graph.graph_to_graphdef nm (ugen_to_graph u)+synthdef_to_graphdef (Synthdef nm u) = Graph.graph_to_graphdef nm (UGen.Graph.ugen_to_graph u) +-- | 'graph_to_graphdef' at 'Synthdef'.+ugen_to_graphdef :: UGen.UGen -> Graphdef.Graphdef+ugen_to_graphdef = synthdef_to_graphdef . Synthdef "anonymous"+ -- | Encode 'Synthdef' as a binary data stream. synthdefData :: Synthdef -> L.ByteString synthdefData = Graphdef.encode_graphdef . synthdef_to_graphdef@@ -69,21 +76,25 @@ synthdefWrite_dir dir = Graphdef.graphdefWrite_dir dir . synthdef_to_graphdef  -- | 'graph_stat_ln' of 'synth'.-synthstat_ln :: UGen -> [String]-synthstat_ln = ug_stat_ln . ugen_to_graph+synthstat_ln :: UGen.UGen -> [String]+synthstat_ln = UGen.Graph.ug_stat_ln . UGen.Graph.ugen_to_graph  -- | 'unlines' of 'synthstat_ln'.-synthstat :: UGen -> String+synthstat :: UGen.UGen -> String synthstat = unlines . synthstat_ln  -- | 'putStrLn' of 'synthstat'. -- -- > synthstat_wr Sound.SC3.UGen.Help.Graph.default_ugen_graph-synthstat_wr :: UGen -> IO ()+synthstat_wr :: UGen.UGen -> IO () synthstat_wr = putStrLn . synthstat  -- | Variant without UGen sequence. -- -- > putStrLn $ synthstat_concise (default_sampler_ugen_graph True)-synthstat_concise :: UGen -> String+synthstat_concise :: UGen.UGen -> String synthstat_concise = unlines . reverse . drop 1 . reverse . synthstat_ln++-- | 'graphdef_dump_ugens' of 'ugen_to_graphdef'+ugen_dump_ugens :: UGen.UGen -> IO ()+ugen_dump_ugens = Graphdef.graphdef_dump_ugens . ugen_to_graphdef
Sound/SC3/Server/Transport/FD.hs view
@@ -92,7 +92,7 @@  -- | 'withSC3' of 'nrt_play' nrt_audition :: NRT -> IO ()-nrt_audition sc = withSC3 (\fd -> nrt_play fd sc)+nrt_audition sc = withSC3 (`nrt_play` sc)  -- * Audible @@ -157,27 +157,27 @@   let f m = let (_,nf,nc,_) = unpack_b_info_err m                 ix = (0,nf * nc)                 deinterleave = transpose . Split.chunksOf nc-            in liftM deinterleave (b_getn1_data_segment fd n b ix)+            in fmap deinterleave (b_getn1_data_segment fd n b ix)   sendMessage fd (b_query1 b)   waitReply fd "/b_info" >>= f  -- | 'head' of 'b_fetch'. b_fetch1 :: Transport t => t -> Int -> Int -> IO [Double]-b_fetch1 fd n b = liftM head (b_fetch fd n b)+b_fetch1 fd n b = fmap head (b_fetch fd n b)  -- * Status  -- | Collect server status information. serverStatus :: Transport t => t -> IO [String]-serverStatus = liftM statusFormat . serverStatusData+serverStatus = fmap statusFormat . serverStatusData  -- | Read nominal sample rate of server. serverSampleRateNominal :: Transport t => t -> IO Double-serverSampleRateNominal = liftM (extractStatusField 7) . serverStatusData+serverSampleRateNominal = fmap (extractStatusField 7) . serverStatusData  -- | Read actual sample rate of server. serverSampleRateActual :: Transport t => t -> IO Double-serverSampleRateActual = liftM (extractStatusField 8) . serverStatusData+serverSampleRateActual = fmap (extractStatusField 8) . serverStatusData  -- | Retrieve status data from server. serverStatusData :: Transport t => t -> IO [Datum]
Sound/SC3/Server/Transport/Monad.hs view
@@ -2,18 +2,19 @@ module Sound.SC3.Server.Transport.Monad where  import Control.Monad {- base -}-import qualified Data.ByteString.Lazy as L {- bytestring -} import Data.List {- base -}-import qualified Data.List.Split as Split {- split -} import Data.Maybe {- base -}-import qualified Data.Tree as Tree {- containers -}-import qualified Safe {- safe -} import System.Directory {- directory -} import System.FilePath {- filepath -} +import qualified Data.ByteString.Lazy as L {- bytestring -}+import qualified Data.List.Split as Split {- split -}+import qualified Data.Tree as Tree {- containers -}+import qualified Safe {- safe -}+ import Sound.OSC {- hosc -} -import Sound.SC3.Server.Command+import qualified Sound.SC3.Server.Command as Command import qualified Sound.SC3.Server.Command.Generic as Generic import qualified Sound.SC3.Server.Enum as Enum import qualified Sound.SC3.Server.Graphdef as Graphdef@@ -21,9 +22,8 @@ import qualified Sound.SC3.Server.Options as Options import qualified Sound.SC3.Server.Status as Status import qualified Sound.SC3.Server.Synthdef as Synthdef--import Sound.SC3.UGen.Bindings.Composite (wrapOut)-import Sound.SC3.UGen.Type (UGen)+import qualified Sound.SC3.UGen.Bindings.Composite as Composite+import qualified Sound.SC3.UGen.Type as UGen  {- import qualified Control.Monad.IO.Class as M {- transformers -}@@ -43,30 +43,35 @@  -- | If 'isAsync' then 'async_' else 'sendMessage'. maybe_async :: DuplexOSC m => Message -> m ()-maybe_async m = if isAsync m then async_ m else sendMessage m+maybe_async m = if Command.isAsync m then async_ m else sendMessage m  -- | Variant that timestamps synchronous messages. maybe_async_at :: DuplexOSC m => Time -> Message -> m () maybe_async_at t m =-    if isAsync m+    if Command.isAsync m     then async_ m     else sendBundle (bundle t [m])  -- | Local host (ie. @127.0.0.1@) at port 'sc3_port_def'-sc3_default_udp :: IO UDP-sc3_default_udp = openUDP "127.0.0.1" Options.sc3_port_def+sc3_default_udp :: (String,Int)+sc3_default_udp = (Options.sc3_addr_def,Options.sc3_port_def)  -- | Maximum packet size, in bytes, that can be sent over UDP.+--   However, see also <https://tools.ietf.org/html/rfc2675> sc3_udp_limit :: Num n => n sc3_udp_limit = 65507 --- | Bracket @SC3@ communication, ie. 'withTransport' 'sc3_default_udp'.+-- | Bracket @SC3@ communication at indicated host and port.+withSC3At :: (String,Int) -> Connection UDP a -> IO a+withSC3At (h,p) = withTransport (openUDP h p)++-- | Bracket @SC3@ communication, ie. 'withSC3At' 'sc3_default_udp'. -- -- > import Sound.SC3.Server.Command -- -- > withSC3 (sendMessage status >> waitReply "/status.reply") withSC3 :: Connection UDP a -> IO a-withSC3 = withTransport sc3_default_udp+withSC3 = withSC3At sc3_default_udp  -- | 'void' of 'withSC3'. withSC3_ :: Connection UDP a -> IO ()@@ -76,30 +81,42 @@ withSC3_tm :: Double -> Connection UDP a -> IO (Maybe a) withSC3_tm tm = timeout_r tm . withSC3 +-- | Run /f/ at /k/ scsynth servers with sequential port numbers starting at 'Options.sc3_port_def'.+--+-- > withSC3At_seq sc3_default_udp 2 (sendMessage status >> waitReply "/status.reply")+withSC3At_seq :: (String,Int) -> Int -> Connection UDP a -> IO [a]+withSC3At_seq (h,p) k f = do+  let mk_udp i = openUDP h (p + i)+  mapM (\i -> withTransport (mk_udp i) f) [0 .. k - 1]++-- | 'void' of 'withSC3_seq'.+withSC3At_seq_ :: (String,Int) -> Int -> Connection UDP a -> IO ()+withSC3At_seq_ loc k = void . withSC3At_seq loc k+ -- * Server control  -- | Free all nodes ('g_freeAll') at group @1@. stop :: SendOSC m => m ()-stop = sendMessage (g_freeAll [1])+stop = sendMessage (Command.g_freeAll [1])  -- * Composite  -- | Runs 'clearSched' and then frees and re-creates groups @1@ and @2@. reset :: SendOSC m => m () reset =-    let m = [clearSched-            ,n_free [1,2]-            ,g_new [(1,Enum.AddToHead,0),(2,Enum.AddToTail,0)]]+    let m = [Command.clearSched+            ,Command.n_free [1,2]+            ,Command.g_new [(1,Enum.AddToHead,0),(2,Enum.AddToTail,0)]]     in sendBundle (bundle immediately m)  -- | (node-id,add-action,group-id,parameters)-type Play_Opt = (Node_Id,Enum.AddAction,Group_Id,[(String,Double)])+type Play_Opt = (Command.Node_Id,Enum.AddAction,Command.Group_Id,[(String,Double)])  -- | Make 's_new' message to play 'Graphdef.Graphdef'. play_graphdef_msg :: Play_Opt -> Graphdef.Graphdef -> Message play_graphdef_msg (nid,act,gid,param) g =     let nm = ascii_to_string (Graphdef.graphdef_name g)-    in s_new nm nid act gid param+    in Command.s_new nm nid act gid param  -- | If the graph size is less than 'sc3_udp_limit' encode and send -- using 'd_recv_bytes', else write to temporary directory and read@@ -112,8 +129,8 @@       by = Graphdef.encode_graphdef g       sz = L.length by   if sz < sc3_udp_limit-    then async (d_recv_bytes by)-    else liftIO (Graphdef.graphdefWrite fn g) >> async (d_load fn)+    then async (Command.d_recv_bytes by)+    else liftIO (Graphdef.graphdefWrite fn g) >> async (Command.d_load fn)  -- | Send 'd_recv' and 's_new' messages to scsynth. playGraphdef :: Transport m => Play_Opt -> Graphdef.Graphdef -> m ()@@ -124,11 +141,11 @@ playSynthdef opt = playGraphdef opt . Synthdef.synthdef_to_graphdef  -- | Send an /anonymous/ instrument definition using 'playSynthdef'.-playUGen :: Transport m => Play_Opt -> UGen -> m ()+playUGen :: Transport m => Play_Opt -> UGen.UGen -> m () playUGen loc =     playSynthdef loc .     Synthdef.synthdef "Anonymous" .-    wrapOut Nothing+    Composite.wrapOut Nothing  -- * NRT @@ -161,7 +178,7 @@ nrt_play_reorder s = do   let (i,r) = NRT.nrt_span (<= 0) s       i' = concatMap bundleMessages i-      (a,b) = partition_async i'+      (a,b) = Command.partition_async i'   mapM_ async a   t <- liftIO time   mapM_ (run_bundle t) (Bundle 0 b : r)@@ -185,25 +202,37 @@ instance Audible Synthdef.Synthdef where     play_at = playSynthdef -instance Audible UGen where+instance Audible UGen.UGen where     play_at = playUGen --- | 'withSC3' of 'play_at'.-audition_at :: Audible e => Play_Opt -> e -> IO ()-audition_at k = withSC3 . play_at k+-- | 'withSC3At' of 'play_at'.+audition_at :: Audible e => (String,Int) -> Play_Opt -> e -> IO ()+audition_at loc opt = withSC3At loc . play_at opt --- | Variant where /id/ is @-1@.+-- | 'withSC3_seq' of 'play_at'.+audition_at_seq :: Audible e => (String,Int) -> Play_Opt -> Int -> e -> IO ()+audition_at_seq loc opt k = withSC3At_seq_ loc k . play_at opt++-- | Default 'Play_Opt', ie. (-1,addToHead,1,[])+def_play_opt :: Play_Opt+def_play_opt = (-1,Enum.AddToHead,1,[])++-- | 'audition_at' 'def_play_opt' audition :: Audible e => e -> IO ()-audition = audition_at (-1,Enum.AddToHead,1,[])+audition = audition_at sc3_default_udp def_play_opt +-- | 'audition_at_seq' 'def_play_opt'+audition_seq :: Audible e => Int -> e -> IO ()+audition_seq = audition_at_seq sc3_default_udp def_play_opt+ -- * Notifications  -- | Turn on notifications, run /f/, turn off notifications, return result. withNotifications :: DuplexOSC m => m a -> m a withNotifications f = do-  async_ (notify True)+  async_ (Command.notify True)   r <- f-  async_ (notify False)+  async_ (Command.notify False)   return r  -- * Buffer & control & node variants.@@ -213,9 +242,9 @@ -- > withSC3_tm 1.0 (b_getn1_data 0 (0,5)) b_getn1_data :: DuplexOSC m => Int -> (Int,Int) -> m [Double] b_getn1_data b s = do-  let f m = let (_,_,_,r) = unpack_b_setn_err m in r-  sendMessage (b_getn1 b s)-  liftM f (waitReply "/b_setn")+  let f m = let (_,_,_,r) = Command.unpack_b_setn_err m in r+  sendMessage (Command.b_getn1 b s)+  fmap f (waitReply "/b_setn")  -- | Variant of 'b_getn1_data' that segments individual 'b_getn' -- messages to /n/ elements.@@ -224,25 +253,25 @@ b_getn1_data_segment :: DuplexOSC m =>                         Int -> Int -> (Int,Int) -> m [Double] b_getn1_data_segment n b (i,j) = do-  let ix = b_indices n j i+  let ix = Command.b_indices n j i   d <- mapM (b_getn1_data b) ix   return (concat d)  -- | Variant of 'b_getn1_data_segment' that gets the entire buffer. b_fetch :: DuplexOSC m => Int -> Int -> m [[Double]] b_fetch n b = do-  let f m = let (_,nf,nc,_) = unpack_b_info_err m+  let f m = let (_,nf,nc,_) = Command.unpack_b_info_err m                 ix = (0,nf * nc)                 deinterleave = transpose . Split.chunksOf nc-            in liftM deinterleave (b_getn1_data_segment n b ix)-  sendMessage (b_query1 b)+            in fmap deinterleave (b_getn1_data_segment n b ix)+  sendMessage (Command.b_query1 b)   waitReply "/b_info" >>= f  -- | First channel of 'b_fetch', errors if there is no data. -- -- > withSC3 (b_fetch1 512 123456789) b_fetch1 :: DuplexOSC m => Int -> Int -> m [Double]-b_fetch1 n b = liftM (Safe.headNote "b_fetch1: no data") (b_fetch n b)+b_fetch1 n b = fmap (Safe.headNote "b_fetch1: no data") (b_fetch n b)  -- | Combination of 'b_query1_unpack' and 'b_fetch'. b_fetch_hdr :: Transport m => Int -> Int -> m ((Int,Int,Int,Double),[[Double]])@@ -254,44 +283,44 @@ -- | 'b_info_unpack_err' of 'b_query1'. b_query1_unpack_generic :: (DuplexOSC m,Num n,Fractional r) => Int -> m (n,n,n,r) b_query1_unpack_generic n = do-  sendMessage (b_query1 n)+  sendMessage (Command.b_query1 n)   q <- waitReply "/b_info"   return (Generic.unpack_b_info_err q)  -- | Type specialised 'b_query1_unpack_generic'. -- -- > withSC3 (b_query1_unpack 0)-b_query1_unpack :: DuplexOSC m => Buffer_Id -> m (Int,Int,Int,Double)+b_query1_unpack :: DuplexOSC m => Command.Buffer_Id -> m (Int,Int,Int,Double) b_query1_unpack = b_query1_unpack_generic  -- | Variant of 'c_getn1' that waits for the reply and unpacks the data.-c_getn1_data :: DuplexOSC m => (Int,Int) -> m [Double]+c_getn1_data :: (DuplexOSC m,Floating t) => (Int,Int) -> m [t] c_getn1_data s = do   let f d = case d of               Int32 _:Int32 _:x -> mapMaybe datum_floating x               _ -> error "c_getn1_data"-  sendMessage (c_getn1 s)-  liftM f (waitDatum "/c_setn")+  sendMessage (Command.c_getn1 s)+  fmap f (waitDatum "/c_setn")  -- | Apply /f/ to result of 'n_query'.-n_query1_unpack_f :: DuplexOSC m => (Message -> t) -> Node_Id -> m t+n_query1_unpack_f :: DuplexOSC m => (Message -> t) -> Command.Node_Id -> m t n_query1_unpack_f f n = do-  sendMessage (n_query [n])+  sendMessage (Command.n_query [n])   r <- waitReply "/n_info"   return (f r)  -- | Variant of 'n_query' that waits for and unpacks the reply.-n_query1_unpack :: DuplexOSC m => Node_Id -> m (Maybe (Int,Int,Int,Int,Int,Maybe (Int,Int)))-n_query1_unpack = n_query1_unpack_f unpack_n_info+n_query1_unpack :: DuplexOSC m => Command.Node_Id -> m (Maybe (Int,Int,Int,Int,Int,Maybe (Int,Int)))+n_query1_unpack = n_query1_unpack_f Command.unpack_n_info  -- | Variant of 'n_query1_unpack' that returns plain (un-lifted) result.-n_query1_unpack_plain :: DuplexOSC m => Node_Id -> m [Int]-n_query1_unpack_plain = n_query1_unpack_f unpack_n_info_plain+n_query1_unpack_plain :: DuplexOSC m => Command.Node_Id -> m [Int]+n_query1_unpack_plain = n_query1_unpack_f Command.unpack_n_info_plain  -- | Variant of 'g_queryTree' that waits for and unpacks the reply.-g_queryTree1_unpack :: DuplexOSC m => Group_Id -> m Status.Query_Node+g_queryTree1_unpack :: DuplexOSC m => Command.Group_Id -> m Status.Query_Node g_queryTree1_unpack n = do-  sendMessage (g_queryTree [(n,True)])+  sendMessage (Command.g_queryTree [(n,True)])   r <- waitReply "/g_queryTree.reply"   return (Status.queryTree (messageDatum r)) @@ -301,30 +330,30 @@ -- -- > withSC3 serverStatus >>= mapM putStrLn serverStatus :: DuplexOSC m => m [String]-serverStatus = liftM Status.statusFormat serverStatusData+serverStatus = fmap Status.statusFormat serverStatusData  -- | Collect server status information. -- -- > withSC3 server_status_concise >>= putStrLn server_status_concise :: DuplexOSC m => m String-server_status_concise = liftM Status.status_format_concise serverStatusData+server_status_concise = fmap Status.status_format_concise serverStatusData  -- | Read nominal sample rate of server. -- -- > withSC3 serverSampleRateNominal serverSampleRateNominal :: DuplexOSC m => m Double-serverSampleRateNominal = liftM (Status.extractStatusField 7) serverStatusData+serverSampleRateNominal = fmap (Status.extractStatusField 7) serverStatusData  -- | Read actual sample rate of server. -- -- > withSC3 serverSampleRateActual serverSampleRateActual :: DuplexOSC m => m Double-serverSampleRateActual = liftM (Status.extractStatusField 8) serverStatusData+serverSampleRateActual = fmap (Status.extractStatusField 8) serverStatusData  -- | Retrieve status data from server. serverStatusData :: DuplexOSC m => m [Datum] serverStatusData = do-  sendMessage status+  sendMessage Command.status   waitDatum "/status.reply"  -- * Tree@@ -336,4 +365,4 @@ serverTree = do   qt <- g_queryTree1_unpack 0   let tr = Status.queryTree_rt qt-  return (["***** SuperCollider Server Tree *****",Tree.drawTree (fmap Status.query_node_pp tr)])+  return ["***** SuperCollider Server Tree *****",Tree.drawTree (fmap Status.query_node_pp tr)]
Sound/SC3/UGen.hs view
@@ -4,9 +4,11 @@ import Sound.SC3.UGen.Analysis as U import Sound.SC3.UGen.Envelope as U import Sound.SC3.UGen.Enum as U+import Sound.SC3.UGen.Event as U import Sound.SC3.UGen.Help.Graph as U import Sound.SC3.UGen.Math as U import Sound.SC3.UGen.Math.Composite as U+import Sound.SC3.UGen.MCE as U import Sound.SC3.UGen.Name as U import Sound.SC3.UGen.Optimise as U import Sound.SC3.UGen.Type as U
Sound/SC3/UGen/Analysis.hs view
@@ -3,8 +3,9 @@  import Data.List {- base -} -import qualified Sound.SC3.UGen.Bindings.DB as DB-import qualified Sound.SC3.UGen.MCE as MCE+import qualified Sound.SC3.Common.Rate as Rate {- hsc3 -}+import qualified Sound.SC3.UGen.Bindings.DB as DB {- hsc3 -}+import qualified Sound.SC3.UGen.MCE as MCE {- hsc3 -} import Sound.SC3.UGen.Type  -- | UGen primitive set.@@ -65,3 +66,18 @@ -- | 'pv_track_buffer' then 'buffer_nframes'. pv_track_nframes :: UGen -> Either String UGen pv_track_nframes u = pv_track_buffer u >>= Right . buffer_nframes++{- | 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'.+-}+ugen_remove_out_node :: UGen -> (String,UGen)+ugen_remove_out_node u =+  let err = error "ugen_remove_out_node?"+      assert_is_output x = if x `elem` ["Out","ReplaceOut","OffsetOut"] then x else err+  in case u of+       Primitive_U (Primitive Rate.AR nm (_bus:inputs) [] _special _uid) -> (assert_is_output nm,mce inputs)+       MRG_U (MRG lhs rhs) -> let (nm,res) = ugen_remove_out_node lhs in (nm,MRG_U (MRG res rhs))+       _ -> err
Sound/SC3/UGen/Bindings/Composite.hs view
@@ -27,6 +27,10 @@         s = setBuf' b xs 0     in mrg2 b s +-- | balance2 with MCE input.+balanceStereo :: UGen -> UGen -> UGen -> UGen+balanceStereo sig pos level = let (x,y) = unmce2 sig in balance2 x y pos level+ -- | 24db/oct rolloff - 4th order resonant Low Pass Filter bLowPass4 :: UGen -> UGen -> UGen -> UGen bLowPass4 i f rq =@@ -101,6 +105,10 @@ exprange :: UGen -> UGen -> UGen -> UGen exprange l r s = linExp s (-1) 1 l r +-- | Variant of `exprange` with arguments to make writing post-fix nicer.+in_exprange :: UGen -> (UGen, UGen) -> UGen+in_exprange s (l,r) = exprange l r s+ -- | Variant FFT constructor with default values for hop size (0.5), -- window type (0), active status (1) and window size (0). fft' :: UGen -> UGen -> UGen@@ -126,6 +134,17 @@         h = hilbert i     in mix (h * o) +{- | UGen function to re-trigger an EnvGen envelope.+     Inputs are /gate/ (as set at EnvGen) and /reset/.+     The four state logic is: (1,0)->1 (1,1)->-1 (0,1)->0 (0,0)->0.+     If the gate input to EnvGen.kr is -1 the envelope ramps to zero in one control period.+     The reset input sequence 0,1,0 when the gate is open produces (1,-1,1), which resets the envelope.++> map (uncurry gateReset) [(1,0),(1,1),(0,1),(0,0)] == [1,-1,0,0]+-}+gateReset :: Num a => a -> a -> a+gateReset gt tr = gt - (gt * tr * 2)+ -- | Variant of 'hilbert' using FFT (with a delay) for better results. -- Buffer should be 2048 or 1024. -- 2048 = better results, more delay.@@ -242,20 +261,56 @@ mix :: UGen -> UGen mix = sum_opt . mceChannels +-- | Mix divided by number of inputs.+mceMean :: UGen -> UGen+mceMean e = let p = mceChannels e in sum_opt p / constant (length p)+ -- | Mix variant, sum to n channels. mixN :: Int -> UGen -> UGen mixN n u =     let xs = transpose (Split.chunksOf n (mceChannels u))     in mce (map sum_opt xs) +-- | Construct an MCE array of UGens.+mceFill :: Integral n => Int -> (n -> UGen) -> UGen+mceFill n f = mce (map f [0 .. fromIntegral n - 1])++-- | Type specialised mceFill+mceFillInt :: Int -> (Int -> UGen) -> UGen+mceFillInt = mceFill++-- | Construct a list of ID UGens.+listFill_z :: (Integral n, ID z, Enum z) => z -> Int -> (z -> n -> UGen) -> [UGen]+listFill_z z n f = zipWith f [z..] [0 .. fromIntegral n - 1]++-- | 'mce' of 'listFill_z'+mceFill_z :: (Integral n, ID z, Enum z) => z -> Int -> (z -> n -> UGen) -> UGen+mceFill_z z n = mce . listFill_z z n+ -- | Construct and sum a set of UGens. mixFill :: Integral n => Int -> (n -> UGen) -> UGen-mixFill n f = mix (mce (map f [0 .. fromIntegral n - 1]))+mixFill n = mix . mceFill n +-- | Type specialised mixFill+mixFillInt :: Int -> (Int -> UGen) -> UGen+mixFillInt = mixFill++-- | Type specialised mixFill+mixFillUGen :: Int -> (UGen -> UGen) -> UGen+mixFillUGen = mixFill++-- | Construct and sum a set of ID UGens.+mixFill_z :: (Integral n, ID z, Enum z) => z -> Int -> (z -> n -> UGen) -> UGen+mixFill_z z n = mix . mceFill_z z n+ -- | Monad variant on mixFill. mixFillM :: (Integral n,Monad m) => Int -> (n -> m UGen) -> m UGen-mixFillM n f = liftM sum_opt (mapM f [0 .. fromIntegral n - 1])+mixFillM n f = fmap sum_opt (mapM f [0 .. fromIntegral n - 1]) +-- | Apply the ID UGen processor /f/ /k/ times in sequence to /i/, ie. for k=4 /f (f (f (f i)))/.+useq_z :: (ID z, Enum z) => z -> Int -> (z -> UGen -> UGen) -> UGen -> UGen+useq_z z k f i = if k <= 0 then i else useq_z (succ z) (k - 1) f (f z i)+ -- | Variant that is randomly pressed. mouseButton' :: Rate -> UGen -> UGen -> UGen -> UGen mouseButton' rt l r tm =@@ -296,8 +351,8 @@     in mce (interleave m p)  -- | Calculate size of accumulation buffer given FFT and IR sizes.-pc_calcAccumSize :: Int -> Int -> Int-pc_calcAccumSize fft_size ir_length =+partConv_calcAccumSize :: Int -> Int -> Int+partConv_calcAccumSize fft_size ir_length =     let partition_size = fft_size `div` 2         num_partitions = (ir_length `div` partition_size) + 1     in fft_size * num_partitions@@ -360,6 +415,10 @@ rand2M :: UId m => UGen -> m UGen rand2M n = randM (negate n) n +-- | rotate2 with MCE input.+rotateStereo :: UGen -> UGen -> UGen+rotateStereo sig pos = let (x,y) = unmce2 sig in rotate2 x y pos+ -- | RMS variant of 'runningSum'. runningSumRMS :: UGen -> UGen -> UGen runningSumRMS z n = sqrt (runningSum (z * z) n * recip n)@@ -404,19 +463,19 @@ splay i s l c lc =     let n = max 2 (fromIntegral (fromMaybe 1 (mceDegree i)))         m = n - 1-        p = map ( (+ (-1.0)) . (* (2 / m)) ) [0 .. m]+        p = map ((+ (-1.0)) . (* (2 / m))) [0 .. m]         a = if lc then sqrt (1 / n) else 1-    in mix (pan2 i (mce p * s + c) 1) * l * a+    in mix (pan2 i (s * mce p + c) 1) * l * a  -- | Optimised UGen sum function. sum_opt :: [UGen] -> UGen sum_opt = sum_opt_f sum3 sum4 --- | Single tap into a delayline-tap :: Int -> UGen -> UGen -> UGen-tap numChannels bufnum delaytime =+-- | Single tap into a delayline.  AR only.+tap :: Int -> Rate -> UGen -> UGen -> UGen+tap numChannels rt bufnum delaytime =     let n = delaytime * negate sampleRate-    in playBuf numChannels AR bufnum 1 0 n Loop DoNothing+    in playBuf numChannels rt bufnum 1 0 n Loop DoNothing  -- | Randomly select one of several inputs on trigger. tChoose :: ID m => m -> UGen -> UGen -> UGen@@ -428,6 +487,18 @@   r <- tiRandM 0 (constant (length (mceChannels a) - 1)) t   return (select r a) +-- | Triggered Line, implemented in terms of EnvGen.+tLine :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+tLine rt start end dur trig_ =+  let p = envCoord [(0,0),(0,start),(dur,end)] 1 1 EnvLin+  in envGen rt trig_ 1 0 1 DoNothing p++-- | Triggered xLine, implemented in terms of EnvGen.+tXLine :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+tXLine rt start end dur trig_ =+  let p = envCoord [(0,0),(0,start),(dur,end)] 1 1 EnvExp+  in envGen rt trig_ 1 0 1 DoNothing p+ -- | Triangle wave as sum of /n/ sines. -- For partial n, amplitude is (1 / square n) and phase is pi at every other odd partial. triAS :: Int -> UGen -> UGen@@ -455,11 +526,13 @@ unpackFFT :: UGen -> Int -> Int -> Int -> UGen -> [UGen] unpackFFT c nf from to w = map (\i -> unpack1FFT c (constant nf) (constant i) w) [from .. to] --- | VarLag in terms of envGen-varLag_env :: UGen -> UGen -> Envelope_Curve UGen -> UGen -> UGen-varLag_env in_ time curve start =+-- | VarLag in terms of envGen.  Note: in SC3 curvature and warp are separate arguments.+varLag_env :: UGen -> UGen -> Envelope_Curve UGen -> Maybe UGen -> UGen+varLag_env in_ time warp start =   let rt = rateOf in_-      e = Envelope [start,in_] [time] [curve] Nothing Nothing 0+      start_ = fromMaybe in_ start+      e = Envelope [start_,in_] [time] [warp] Nothing Nothing 0+      -- e[6] = curve; e[7] = curvature;       time_ch = if rateOf time == IR then 0 else changed time 0       tr = changed in_ 0 + time_ch + impulse rt 0 0   in envGen rt tr 1 0 1 DoNothing e@@ -474,10 +547,9 @@ -} wrapOut :: Maybe Double -> UGen -> UGen wrapOut fadeTime z =-    let bus = control KR "out" 0-    in if isSink z-       then z-       else out bus (z * maybe 1 makeFadeEnv fadeTime)+  if isSink z+  then z+  else out (control KR "out" 0) (maybe z ((* z) . makeFadeEnv) fadeTime)  -- * wslib @@ -500,10 +572,10 @@                     then demand trigger' 0 startPos                     else startPos         lag'' = 1 / lag'-        s = map-            (\(on',r) -> let p = playBuf nc AR bufnum r on' startPos' loop DoNothing-                         in p * sqrt (slew on' lag'' lag''))-            (zip on rate')+        s = zipWith+            (\on' r -> let p = playBuf nc AR bufnum r on' startPos' loop DoNothing+                       in p * sqrt (slew on' lag'' lag''))+            on rate'     in sum_opt s  -- * adc
Sound/SC3/UGen/Bindings/Composite/External.hs view
@@ -1,15 +1,151 @@ -- | Common unit generator graphs. module Sound.SC3.UGen.Bindings.Composite.External where -import Sound.SC3.Common.Math-import Sound.SC3.Common.Rate-import Sound.SC3.UGen.Type+import Data.List {- base -}+import Data.Maybe {- base -} +import Sound.SC3.Common.Math {- hsc3 -}+import Sound.SC3.Common.Rate {- hsc3 -}+import Sound.SC3.UGen.Type {- hsc3 -}+import Sound.SC3.UGen.UGen {- hsc3 -}+ import qualified Sound.SC3.UGen.Bindings.DB.External as External  -- | FM7 variant where input matrices are not in MCE form. fm7_mx :: [[UGen]] -> [[UGen]] -> UGen fm7_mx ctlMatrix modMatrix = External.fm7 AR (mce (concat ctlMatrix)) (mce (concat modMatrix))++{- | greyhole re-orders parameters as well as unpacking the input signal.++in1=0.0 in2=0.0 damping=0.0 delayTime=2.0 diffusion=0.5 feedback=0.9 moddepth=0.1 modfreq=2.0 size=1.0+in              delayTime=2.0 damping=0.0 size=1.0 diffusion=0.7 feedback=0.9 modDepth=0.1 modFreq=2.0+-}+greyhole :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+greyhole i delayTime damping size diffusion feedback modDepth modFreq =+  let (i1,i2) = unmce2 i+  in External.greyholeRaw i1 i2 damping delayTime diffusion feedback modDepth modFreq size++-- | Association list giving names for MiBraids modes.+miBraids_mode_dict :: Num n => [(n,String)]+miBraids_mode_dict =+  [(0,"CSAW")+  ,(1,"MORPH")+  ,(2,"SAW_SQUARE")+  ,(3,"SINE_TRIANGLE")+  ,(4,"BUZZ")+  ,(5,"SQUARE_SUB")+  ,(6,"SAW_SUB")+  ,(7,"SQUARE_SYNC")+  ,(8,"SAW_SYNC")+  ,(9,"TRIPLE_SAW")+  ,(10,"TRIPLE_SQUARE")+  ,(11,"TRIPLE_TRIANGLE")+  ,(12,"TRIPLE_SINE")+  ,(13,"TRIPLE_RING_MOD")+  ,(14,"SAW_SWARM")+  ,(15,"SAW_COMB")+  ,(16,"TOY")+  ,(17,"DIGITAL_FILTER_LP")+  ,(18,"DIGITAL_FILTER_PK")+  ,(19,"DIGITAL_FILTER_BP")+  ,(20,"DIGITAL_FILTER_HP")+  ,(21,"VOSIM")+  ,(22,"VOWEL")+  ,(23,"VOWEL_FOF")+  ,(24,"HARMONICS")+  ,(25,"FM")+  ,(26,"FEEDBACK_FM")+  ,(27,"CHAOTIC_FEEDBACK_FM")+  ,(28,"PLUCKED")+  ,(29,"BOWED")+  ,(30,"BLOWN")+  ,(31,"FLUTED")+  ,(32,"STRUCK_BELL")+  ,(33,"STRUCK_DRUM")+  ,(34,"KICK")+  ,(35,"CYMBAL")+  ,(36,"SNARE")+  ,(37,"WAVETABLES")+  ,(38,"WAVE_MAP")+  ,(39,"WAVE_LINE")+  ,(40,"WAVE_PARAPHONIC")+  ,(41,"FILTERED_NOISE")+  ,(42,"TWIN_PEAKS_NOISE")+  ,(43,"CLOCKED_NOISE")+  ,(44,"GRANULAR_CLOUD")+  ,(45,"PARTICLE_NOISE")+  ,(46,"DIGITAL_MODULATION")+  ,(47,"QUESTION_MARK")]++-- | Reverse lookup of 'miBraids_mode_dict'.+miBraids_mode_maybe :: Num n => String -> Maybe n+miBraids_mode_maybe x = fmap fst (find ((== x) . snd) miBraids_mode_dict)++-- | 'error' of 'miBraids_mode_maybe'+miBraids_mode :: Num n => String -> n+miBraids_mode = fromMaybe (error "miBraids_mode?") . miBraids_mode_maybe++-- | Association list giving names for MiClouds modes.+miClouds_mode_dict :: Num n => [(n,String)]+miClouds_mode_dict =+  [(0,"GRANULAR")+  ,(1,"STRETCH")+  ,(2,"LOOPING_DELAY")+  ,(3,"SPECTRAL")]++-- | Reverse lookup of 'miClouds_mode_dict'.+miClouds_mode_maybe :: Num n => String -> Maybe n+miClouds_mode_maybe x = fmap fst (find ((== x) . snd) miClouds_mode_dict)++-- | 'error' of 'miClouds_mode_maybe'+miClouds_mode :: Num n => String -> n+miClouds_mode = fromMaybe (error "miClouds_mode?") . miClouds_mode_maybe++-- | Association list giving names for MiPlaits modes.+miPlaits_mode_dict :: Num n => [(n,String)]+miPlaits_mode_dict =+  [(0,"virtual_analog")+  ,(1,"waveshaping")+  ,(2,"fm")+  ,(3,"grain")+  ,(4,"additive")+  ,(5,"wavetable")+  ,(6,"chord")+  ,(7,"speech")+  ,(8,"swarm")+  ,(9,"noise")+  ,(10,"particle")+  ,(11,"string")+  ,(12,"modal")+  ,(13,"bass_drum")+  ,(14,"snare_drum")+  ,(15,"hi_hat")]++-- | Reverse lookup of 'miPlaits_mode_dict'.+miPlaits_mode_maybe :: Num n => String -> Maybe n+miPlaits_mode_maybe x = fmap fst (find ((== x) . snd) miPlaits_mode_dict)++-- | 'error' of 'miPlaits_mode_maybe'+miPlaits_mode :: Num n => String -> n+miPlaits_mode = fromMaybe (error "miPlaits_mode?") . miPlaits_mode_maybe++-- | Association list giving names for MiPlaits modes.+miRings_mode_dict :: Num n => [(n,String)]+miRings_mode_dict =+  [(0,"MODAL_RESONATOR")+  ,(1,"SYMPATHETIC_STRING")+  ,(2,"MODULATED/INHARMONIC_STRING")+  ,(3,"2-OP_FM_VOICE")+  ,(4,"SYMPATHETIC_STRING_QUANTIZED")+  ,(5,"STRING_AND_REVERB")]++-- | Reverse lookup of 'miRings_mode_dict'.+miRings_mode_maybe :: Num n => String -> Maybe n+miRings_mode_maybe x = fmap fst (find ((== x) . snd) miRings_mode_dict)++-- | 'error' of 'miRings_mode_maybe'+miRings_mode :: Num n => String -> n+miRings_mode = fromMaybe (error "miRings_mode?") . miRings_mode_maybe  -- | pulse signal as difference of two 'sawDPW' signals. pulseDPW :: Rate -> UGen -> UGen -> UGen
Sound/SC3/UGen/Bindings/DB.hs view
@@ -264,7 +264,7 @@ -- --  BufRd [KR,AR] bufnum=0.0 phase=0.0 loop=1.0 interpolation=2.0;    NC INPUT: True, ENUMERATION INPUTS: 2=Loop, 3=Interpolation bufRd :: Int -> Rate -> UGen -> UGen -> Loop UGen -> Interpolation UGen -> UGen-bufRd numChannels rate bufnum phase loop interpolation = mkUGen Nothing [KR,AR] (Left rate) "BufRd" [bufnum,phase,(from_loop loop),(from_interpolation interpolation)] Nothing numChannels (Special 0) NoId+bufRd numChannels rate bufnum phase loop interpolation = mkUGen Nothing [KR,AR] (Left rate) "BufRd" [bufnum,phase,from_loop loop,from_interpolation interpolation] Nothing numChannels (Special 0) NoId  -- | Buffer sample rate. --@@ -282,7 +282,7 @@ -- --  BufWr [KR,AR] bufnum=0.0 phase=0.0 loop=1.0 *inputArray=0.0;    MCE=1, FILTER: TRUE, REORDERS INPUTS: [3,0,1,2], ENUMERATION INPUTS: 2=Loop bufWr :: UGen -> UGen -> Loop UGen -> UGen -> UGen-bufWr bufnum phase loop inputArray = mkUGen Nothing [KR,AR] (Right [3]) "BufWr" [bufnum,phase,(from_loop loop)] (Just [inputArray]) 1 (Special 0) NoId+bufWr bufnum phase loop inputArray = mkUGen Nothing [KR,AR] (Right [3]) "BufWr" [bufnum,phase,from_loop loop] (Just [inputArray]) 1 (Special 0) NoId  -- | Chorusing wavetable oscillator. --@@ -414,13 +414,13 @@ -- --  Dbufrd [DR] bufnum=0.0 phase=0.0 loop=1.0;    ENUMERATION INPUTS: 2=Loop, DEMAND/NONDET dbufrd :: ID a => a -> UGen -> UGen -> Loop UGen -> UGen-dbufrd z bufnum phase loop = mkUGen Nothing [DR] (Left DR) "Dbufrd" [bufnum,phase,(from_loop loop)] Nothing 1 (Special 0) (toUId z)+dbufrd z bufnum phase loop = mkUGen Nothing [DR] (Left DR) "Dbufrd" [bufnum,phase,from_loop loop] Nothing 1 (Special 0) (toUId z)  -- | Buffer write demand ugen -- --  Dbufwr [DR] bufnum=0.0 phase=0.0 loop=1.0 input=0.0;    REORDERS INPUTS: [3,0,1,2], ENUMERATION INPUTS: 3=Loop, DEMAND/NONDET dbufwr :: ID a => a -> UGen -> UGen -> UGen -> Loop UGen -> UGen-dbufwr z bufnum phase loop input = mkUGen Nothing [DR] (Left DR) "Dbufwr" [bufnum,phase,loop,(from_loop input)] Nothing 1 (Special 0) (toUId z)+dbufwr z bufnum phase loop input = mkUGen Nothing [DR] (Left DR) "Dbufwr" [bufnum,phase,loop,from_loop input] Nothing 1 (Special 0) (toUId z)  -- | Constrain a demand-rate stream to a given sum --@@ -504,7 +504,7 @@ -- --  DemandEnvGen [KR,AR] level=0.0 dur=0.0 shape=1.0 curve=0.0 gate=1.0 reset=1.0 levelScale=1.0 levelBias=0.0 timeScale=1.0 doneAction=0.0;    ENUMERATION INPUTS: 9=DoneAction demandEnvGen :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> DoneAction UGen -> UGen-demandEnvGen rate level dur shape curve gate_ reset levelScale levelBias timeScale doneAction = mkUGen Nothing [KR,AR] (Left rate) "DemandEnvGen" [level,dur,shape,curve,gate_,reset,levelScale,levelBias,timeScale,(from_done_action doneAction)] Nothing 1 (Special 0) NoId+demandEnvGen rate level dur shape curve gate_ reset levelScale levelBias timeScale doneAction = mkUGen Nothing [KR,AR] (Left rate) "DemandEnvGen" [level,dur,shape,curve,gate_,reset,levelScale,levelBias,timeScale,from_done_action doneAction] Nothing 1 (Special 0) NoId  -- | Search a buffer for a value --@@ -516,7 +516,7 @@ -- --  DetectSilence [KR,AR] in=0.0 amp=1.0e-4 time=0.1 doneAction=0.0;    FILTER: TRUE, ENUMERATION INPUTS: 3=DoneAction detectSilence :: UGen -> UGen -> UGen -> DoneAction UGen -> UGen-detectSilence in_ amp time doneAction = mkUGen Nothing [KR,AR] (Right [0]) "DetectSilence" [in_,amp,time,(from_done_action doneAction)] Nothing 1 (Special 0) NoId+detectSilence in_ amp time doneAction = mkUGen Nothing [KR,AR] (Right [0]) "DetectSilence" [in_,amp,time,from_done_action doneAction] Nothing 1 (Special 0) NoId  -- | Demand rate geometric series UGen. --@@ -534,7 +534,7 @@ -- --  DiskIn [AR] bufnum=0.0 loop=0.0;    NC INPUT: True, ENUMERATION INPUTS: 1=Loop diskIn :: Int -> UGen -> Loop UGen -> UGen-diskIn numChannels bufnum loop = mkUGen Nothing [AR] (Left AR) "DiskIn" [bufnum,(from_loop loop)] Nothing numChannels (Special 0) NoId+diskIn numChannels bufnum loop = mkUGen Nothing [AR] (Left AR) "DiskIn" [bufnum,from_loop loop] Nothing numChannels (Special 0) NoId  -- | Record to a soundfile to disk. --@@ -636,7 +636,7 @@ -- --  Duty [KR,AR] dur=1.0 reset=0.0 doneAction=0.0 level=1.0;    REORDERS INPUTS: [0,1,3,2], ENUMERATION INPUTS: 2=DoneAction duty :: Rate -> UGen -> UGen -> DoneAction UGen -> UGen -> UGen-duty rate dur reset doneAction level = mkUGen Nothing [KR,AR] (Left rate) "Duty" [dur,reset,(from_done_action doneAction),level] Nothing 1 (Special 0) NoId+duty rate dur reset doneAction level = mkUGen Nothing [KR,AR] (Left rate) "Duty" [dur,reset,from_done_action doneAction,level] Nothing 1 (Special 0) NoId  -- | Demand rate white noise random generator. --@@ -662,7 +662,7 @@ -- --  EnvGen [KR,AR] gate=1.0 levelScale=1.0 levelBias=0.0 timeScale=1.0 doneAction=0.0 *envelope=0.0;    MCE=1, REORDERS INPUTS: [5,0,1,2,3,4,5], ENUMERATION INPUTS: 4=DoneAction, 5=Envelope envGen :: Rate -> UGen -> UGen -> UGen -> UGen -> DoneAction UGen -> Envelope UGen -> UGen-envGen rate gate_ levelScale levelBias timeScale doneAction envelope_ = mkUGen Nothing [KR,AR] (Left rate) "EnvGen" [gate_,levelScale,levelBias,timeScale,(from_done_action doneAction)] (Just [(envelope_to_ugen envelope_)]) 1 (Special 0) NoId+envGen rate gate_ levelScale levelBias timeScale doneAction envelope_ = mkUGen Nothing [KR,AR] (Left rate) "EnvGen" [gate_,levelScale,levelBias,timeScale,from_done_action doneAction] (Just [envelope_to_ugen envelope_]) 1 (Special 0) NoId  -- | Exponential single random number generator. --@@ -884,7 +884,7 @@ -- --  IEnvGen [KR,AR] index=0.0 *envelope=0.0;    MCE=1, REORDERS INPUTS: [1,0], ENUMERATION INPUTS: 1=Envelope iEnvGen :: Rate -> UGen -> Envelope UGen -> UGen-iEnvGen rate index_ envelope_ = mkUGen Nothing [KR,AR] (Left rate) "IEnvGen" [index_] (Just [(envelope_to_ugen envelope_)]) 1 (Special 0) NoId+iEnvGen rate index_ envelope_ = mkUGen Nothing [KR,AR] (Left rate) "IEnvGen" [index_] (Just [envelope_to_ienvgen_ugen envelope_]) 1 (Special 0) NoId  -- | Inverse Fast Fourier Transform --@@ -1034,7 +1034,7 @@ -- --  LFGauss [KR,AR] duration=1.0 width=0.1 iphase=0.0 loop=1.0 doneAction=0.0;    ENUMERATION INPUTS: 3=Loop, 4=DoneAction lfGauss :: Rate -> UGen -> UGen -> UGen -> Loop UGen -> DoneAction UGen -> UGen-lfGauss rate duration width iphase loop doneAction = mkUGen Nothing [KR,AR] (Left rate) "LFGauss" [duration,width,iphase,(from_loop loop),(from_done_action doneAction)] Nothing 1 (Special 0) NoId+lfGauss rate duration width iphase loop doneAction = mkUGen Nothing [KR,AR] (Left rate) "LFGauss" [duration,width,iphase,from_loop loop,from_done_action doneAction] Nothing 1 (Special 0) NoId  -- | Step noise --@@ -1225,20 +1225,20 @@ -- | Two channel linear crossfade. -- --  LinXFade2 [KR,AR] inA=0.0 inB=0.0 pan=0.0 level=1.0;    FILTER: TRUE, PSUEDO INPUTS: [3]-linXFade2 :: UGen -> UGen -> UGen -> UGen -> UGen-linXFade2 inA inB pan level = mkUGen Nothing [KR,AR] (Right [0,1]) "LinXFade2" [inA,inB,pan,level] Nothing 1 (Special 0) NoId+linXFade2 :: UGen -> UGen -> UGen -> UGen+linXFade2 inA inB pan = mkUGen Nothing [KR,AR] (Right [0,1]) "LinXFade2" [inA,inB,pan] Nothing 1 (Special 0) NoId  -- | Line generator. -- --  Line [KR,AR] start=0.0 end=1.0 dur=1.0 doneAction=0.0;    ENUMERATION INPUTS: 3=DoneAction line :: Rate -> UGen -> UGen -> UGen -> DoneAction UGen -> UGen-line rate start end dur doneAction = mkUGen Nothing [KR,AR] (Left rate) "Line" [start,end,dur,(from_done_action doneAction)] Nothing 1 (Special 0) NoId+line rate start end dur doneAction = mkUGen Nothing [KR,AR] (Left rate) "Line" [start,end,dur,from_done_action doneAction] Nothing 1 (Special 0) NoId  -- | Simple linear envelope generator. -- --  Linen [KR] gate=1.0 attackTime=1.0e-2 susLevel=1.0 releaseTime=1.0 doneAction=0.0;    ENUMERATION INPUTS: 4=DoneAction linen :: UGen -> UGen -> UGen -> UGen -> DoneAction UGen -> UGen-linen gate_ attackTime susLevel releaseTime doneAction = mkUGen Nothing [KR] (Left KR) "Linen" [gate_,attackTime,susLevel,releaseTime,(from_done_action doneAction)] Nothing 1 (Special 0) NoId+linen gate_ attackTime susLevel releaseTime doneAction = mkUGen Nothing [KR] (Left KR) "Linen" [gate_,attackTime,susLevel,releaseTime,from_done_action doneAction] Nothing 1 (Special 0) NoId  -- | Allocate a buffer local to the synth --@@ -1303,8 +1303,8 @@ -- | Minimum difference of two values in modulo arithmetics -- --  ModDif [IR,KR,AR] x=0.0 y=0.0 mod=1.0-modDif :: Rate -> UGen -> UGen -> UGen -> UGen-modDif rate x y mod_ = mkUGen Nothing [IR,KR,AR] (Left rate) "ModDif" [x,y,mod_] Nothing 1 (Special 0) NoId+modDif :: UGen -> UGen -> UGen -> UGen+modDif x y mod_ = mkUGen Nothing [IR,KR,AR] (Right [0]) "ModDif" [x,y,mod_] Nothing 1 (Special 0) NoId  -- | Moog VCF implementation, designed by Federico Fontana --@@ -1328,13 +1328,13 @@ -- --  MouseX [KR] minval=0.0 maxval=1.0 warp=0.0 lag=0.2;    ENUMERATION INPUTS: 2=Warp mouseX :: Rate -> UGen -> UGen -> Warp UGen -> UGen -> UGen-mouseX rate minval maxval warp lag_ = mkUGen Nothing [KR] (Left rate) "MouseX" [minval,maxval,(from_warp warp),lag_] Nothing 1 (Special 0) NoId+mouseX rate minval maxval warp lag_ = mkUGen Nothing [KR] (Left rate) "MouseX" [minval,maxval,from_warp warp,lag_] Nothing 1 (Special 0) NoId  -- | Cursor tracking UGen. -- --  MouseY [KR] minval=0.0 maxval=1.0 warp=0.0 lag=0.2;    ENUMERATION INPUTS: 2=Warp mouseY :: Rate -> UGen -> UGen -> Warp UGen -> UGen -> UGen-mouseY rate minval maxval warp lag_ = mkUGen Nothing [KR] (Left rate) "MouseY" [minval,maxval,(from_warp warp),lag_] Nothing 1 (Special 0) NoId+mouseY rate minval maxval warp lag_ = mkUGen Nothing [KR] (Left rate) "MouseY" [minval,maxval,from_warp warp,lag_] Nothing 1 (Special 0) NoId  -- | Sum of uniform distributions. --@@ -1510,13 +1510,13 @@ --  PV_HainsworthFoote [KR,AR] maxSize=0.0 pv_HainsworthFoote :: UGen -> UGen pv_HainsworthFoote maxSize = mkUGen Nothing [KR,AR] (Left KR) "PV_HainsworthFoote" [maxSize] Nothing 1 (Special 0) NoId--}  -- | FFT feature detector for onset detection. -- --  PV_JensenAndersen [KR,AR] maxSize=0.0 pv_JensenAndersen :: UGen -> UGen pv_JensenAndersen maxSize = mkUGen Nothing [KR,AR] (Left KR) "PV_JensenAndersen" [maxSize] Nothing 1 (Special 0) NoId+-}  -- | Pass bins which are a local maximum. --@@ -1738,7 +1738,7 @@ -- --  PlayBuf [KR,AR] bufnum=0.0 rate=1.0 trigger=1.0 startPos=0.0 loop=0.0 doneAction=0.0;    NC INPUT: True, ENUMERATION INPUTS: 4=Loop, 5=DoneAction playBuf :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> Loop UGen -> DoneAction UGen -> UGen-playBuf numChannels rate bufnum rate_ trigger startPos loop doneAction = mkUGen Nothing [KR,AR] (Left rate) "PlayBuf" [bufnum,rate_,trigger,startPos,(from_loop loop),(from_done_action doneAction)] Nothing numChannels (Special 0) NoId+playBuf numChannels rate bufnum rate_ trigger startPos loop doneAction = mkUGen Nothing [KR,AR] (Left rate) "PlayBuf" [bufnum,rate_,trigger,startPos,from_loop loop,from_done_action doneAction] Nothing numChannels (Special 0) NoId  -- | A Karplus-Strong UGen --@@ -1836,7 +1836,7 @@ -- --  RecordBuf [KR,AR] bufnum=0.0 offset=0.0 recLevel=1.0 preLevel=0.0 run=1.0 loop=1.0 trigger=1.0 doneAction=0.0 *inputArray=0.0;    MCE=1, REORDERS INPUTS: [8,0,1,2,3,4,5,6,7], ENUMERATION INPUTS: 5=Loop, 7=DoneAction recordBuf :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> Loop UGen -> UGen -> DoneAction UGen -> UGen -> UGen-recordBuf rate bufnum offset recLevel preLevel run loop trigger doneAction inputArray = mkUGen Nothing [KR,AR] (Left rate) "RecordBuf" [bufnum,offset,recLevel,preLevel,run,(from_loop loop),trigger,(from_done_action doneAction)] (Just [inputArray]) 1 (Special 0) NoId+recordBuf rate bufnum offset recLevel preLevel run loop trigger doneAction inputArray = mkUGen Nothing [KR,AR] (Left rate) "RecordBuf" [bufnum,offset,recLevel,preLevel,run,from_loop loop,trigger,from_done_action doneAction] (Just [inputArray]) 1 (Special 0) NoId  -- | Send signal to a bus, overwriting previous contents. --@@ -1932,7 +1932,7 @@ -- --  SetResetFF [KR,AR] trig=0.0 reset=0.0;    FILTER: TRUE setResetFF :: UGen -> UGen -> UGen-setResetFF trig_ reset = mkUGen Nothing [KR,AR] (Right [0]) "SetResetFF" [trig_,reset] Nothing 1 (Special 0) NoId+setResetFF trig_ reset = mkUGen Nothing [KR,AR] (Right [0,1]) "SetResetFF" [trig_,reset] Nothing 1 (Special 0) NoId  -- | Wave shaper. --@@ -2070,7 +2070,7 @@ -- --  TDuty [KR,AR] dur=1.0 reset=0.0 doneAction=0.0 level=1.0 gapFirst=0.0;    REORDERS INPUTS: [0,1,3,2,4], ENUMERATION INPUTS: 2=DoneAction tDuty :: Rate -> UGen -> UGen -> DoneAction UGen -> UGen -> UGen -> UGen-tDuty rate dur reset doneAction level gapFirst = mkUGen Nothing [KR,AR] (Left rate) "TDuty" [dur,reset,(from_done_action doneAction),level,gapFirst] Nothing 1 (Special 0) NoId+tDuty rate dur reset doneAction level gapFirst = mkUGen Nothing [KR,AR] (Left rate) "TDuty" [dur,reset,from_done_action doneAction,level,gapFirst] Nothing 1 (Special 0) NoId  -- | Triggered exponential random number generator. --@@ -2148,7 +2148,7 @@ -- --  VDiskIn [AR] bufnum=0.0 rate=1.0 loop=0.0 sendID=0.0;    NC INPUT: True, ENUMERATION INPUTS: 2=Loop vDiskIn :: Int -> UGen -> UGen -> Loop UGen -> UGen -> UGen-vDiskIn numChannels bufnum rate_ loop sendID = mkUGen Nothing [AR] (Left AR) "VDiskIn" [bufnum,rate_,(from_loop loop),sendID] Nothing numChannels (Special 0) NoId+vDiskIn numChannels bufnum rate_ loop sendID = mkUGen Nothing [AR] (Left AR) "VDiskIn" [bufnum,rate_,from_loop loop,sendID] Nothing numChannels (Special 0) NoId  -- | Variable wavetable oscillator. --@@ -2214,7 +2214,7 @@ -- --  XLine [KR,AR] start=1.0 end=2.0 dur=1.0 doneAction=0.0;    ENUMERATION INPUTS: 3=DoneAction xLine :: Rate -> UGen -> UGen -> UGen -> DoneAction UGen -> UGen-xLine rate start end dur doneAction = mkUGen Nothing [KR,AR] (Left rate) "XLine" [start,end,dur,(from_done_action doneAction)] Nothing 1 (Special 0) NoId+xLine rate start end dur doneAction = mkUGen Nothing [KR,AR] (Left rate) "XLine" [start,end,dur,from_done_action doneAction] Nothing 1 (Special 0) NoId  -- | Send signal to a bus, crossfading with previous contents. --
Sound/SC3/UGen/Bindings/DB/External.hs view
@@ -1,2468 +1,2580 @@--- | SC3 external (sce3-plugins) UGen bindings (auto-generated).-module Sound.SC3.UGen.Bindings.DB.External where--import Sound.SC3.Common.Rate-import Sound.SC3.Common.UId-import Sound.SC3.UGen.Type-import Sound.SC3.UGen.UGen---- | (Undocumented class)------  A2B [AR] a=0.0 b=0.0 c=0.0 d=0.0-a2B :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-a2B rate a b c d = mkUGen Nothing [AR] (Left rate) "A2B" [a,b,c,d] Nothing 4 (Special 0) NoId---- | Emulator of the AY (aka YM) soundchip, used in Spectrum/Atari------  AY [AR] tonea=1777.0 toneb=1666.0 tonec=1555.0 noise=1.0 control=7.0 vola=15.0 volb=15.0 volc=15.0 envfreq=4.0 envstyle=1.0 chiptype=0.0-ay :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-ay tonea toneb tonec noise control_ vola volb volc envfreq envstyle chiptype = mkUGen Nothing [AR] (Left AR) "AY" [tonea,toneb,tonec,noise,control_,vola,volb,volc,envfreq,envstyle,chiptype] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Allpass1 [AR] in=0.0 freq=1200.0-allpass1 :: Rate -> UGen -> UGen -> UGen-allpass1 rate in_ freq = mkUGen Nothing [AR] (Left rate) "Allpass1" [in_,freq] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Allpass2 [AR] in=0.0 freq=1200.0 rq=1.0-allpass2 :: Rate -> UGen -> UGen -> UGen -> UGen-allpass2 rate in_ freq rq = mkUGen Nothing [AR] (Left rate) "Allpass2" [in_,freq,rq] Nothing 1 (Special 0) NoId---- | amplitude follower------  AmplitudeMod [KR,AR] in=0.0 attackTime=1.0e-2 releaseTime=1.0e-2-amplitudeMod :: Rate -> UGen -> UGen -> UGen -> UGen-amplitudeMod rate in_ attackTime releaseTime = mkUGen Nothing [KR,AR] (Left rate) "AmplitudeMod" [in_,attackTime,releaseTime] Nothing 1 (Special 0) NoId---- | event analyser (BBCut)------  AnalyseEvents2 [AR] in=0.0 bufnum=0.0 threshold=0.34 triggerid=101.0 circular=0.0 pitch=0.0-analyseEvents2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-analyseEvents2 rate in_ bufnum threshold triggerid circular pitch_ = mkUGen Nothing [AR] (Left rate) "AnalyseEvents2" [in_,bufnum,threshold,triggerid,circular,pitch_] Nothing 1 (Special 0) NoId---- | 2-species Predator-Prey model------  ArneodoCoulletTresser [AR] freq=22050.0 alpha=1.5 h=5.0e-2 xi=0.5 yi=0.5 zi=0.5-arneodoCoulletTresser :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-arneodoCoulletTresser rate freq alpha h xi yi zi = mkUGen Nothing [AR] (Left rate) "ArneodoCoulletTresser" [freq,alpha,h,xi,yi,zi] Nothing 3 (Special 0) NoId---- | detect the largest value (and its position) in an array of UGens------  ArrayMax [KR,AR] array=0.0-arrayMax :: Rate -> UGen -> UGen-arrayMax rate array = mkUGen Nothing [KR,AR] (Left rate) "ArrayMax" [array] Nothing 2 (Special 0) NoId---- | detect the smallest value (and its position) in an array of UGens------  ArrayMin [KR,AR] array=0.0-arrayMin :: Rate -> UGen -> UGen-arrayMin rate array = mkUGen Nothing [KR,AR] (Left rate) "ArrayMin" [array] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  AtsAmp [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0-atsAmp :: Rate -> UGen -> UGen -> UGen -> UGen-atsAmp rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsAmp" [atsbuffer,partialNum,filePointer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  AtsBand [AR] atsbuffer=0.0 band=0.0 filePointer=0.0-atsBand :: Rate -> UGen -> UGen -> UGen -> UGen-atsBand rate atsbuffer band filePointer = mkUGen Nothing [AR] (Left rate) "AtsBand" [atsbuffer,band,filePointer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  AtsFreq [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0-atsFreq :: Rate -> UGen -> UGen -> UGen -> UGen-atsFreq rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsFreq" [atsbuffer,partialNum,filePointer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  AtsNoiSynth [AR] atsbuffer=0.0 numPartials=0.0 partialStart=0.0 partialSkip=1.0 filePointer=0.0 sinePct=1.0 noisePct=1.0 freqMul=1.0 freqAdd=0.0 numBands=25.0 bandStart=0.0 bandSkip=1.0-atsNoiSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-atsNoiSynth rate atsbuffer numPartials partialStart partialSkip filePointer sinePct noisePct freqMul freqAdd numBands bandStart bandSkip = mkUGen Nothing [AR] (Left rate) "AtsNoiSynth" [atsbuffer,numPartials,partialStart,partialSkip,filePointer,sinePct,noisePct,freqMul,freqAdd,numBands,bandStart,bandSkip] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  AtsNoise [KR,AR] atsbuffer=0.0 bandNum=0.0 filePointer=0.0-atsNoise :: Rate -> UGen -> UGen -> UGen -> UGen-atsNoise rate atsbuffer bandNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsNoise" [atsbuffer,bandNum,filePointer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  AtsParInfo [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0-atsParInfo :: Rate -> UGen -> UGen -> UGen -> UGen-atsParInfo rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsParInfo" [atsbuffer,partialNum,filePointer] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  AtsPartial [AR] atsbuffer=0.0 partial=0.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0-atsPartial :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-atsPartial rate atsbuffer partial filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "AtsPartial" [atsbuffer,partial,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  AtsSynth [AR] atsbuffer=0.0 numPartials=0.0 partialStart=0.0 partialSkip=1.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0-atsSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-atsSynth rate atsbuffer numPartials partialStart partialSkip filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "AtsSynth" [atsbuffer,numPartials,partialStart,partialSkip,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  AtsUGen [] maxSize=0.0-atsUGen :: Rate -> UGen -> UGen-atsUGen rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "AtsUGen" [maxSize] Nothing 1 (Special 0) NoId---- | Detect onsets and assess the nature of the attack slope------  AttackSlope [KR] input=0.0 windowsize=1024.0 peakpicksize=20.0 leak=0.999 energythreshold=1.0e-2 sumthreshold=20.0 mingap=30.0 numslopesaveraged=10.0-attackSlope :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-attackSlope rate input windowsize peakpicksize leak energythreshold sumthreshold mingap numslopesaveraged = mkUGen Nothing [KR] (Left rate) "AttackSlope" [input,windowsize,peakpicksize,leak,energythreshold,sumthreshold,mingap,numslopesaveraged] Nothing 6 (Special 0) NoId---- | (Undocumented class)------  AudioMSG [AR] in=0.0 index=0.0-audioMSG :: Rate -> UGen -> UGen -> UGen-audioMSG rate in_ index_ = mkUGen Nothing [AR] (Left rate) "AudioMSG" [in_,index_] Nothing 1 (Special 0) NoId---- | calculates mean average of audio or control rate signal------  AverageOutput [KR,AR] in=0.0 trig=0.0-averageOutput :: UGen -> UGen -> UGen-averageOutput in_ trig_ = mkUGen Nothing [KR,AR] (Right [0]) "AverageOutput" [in_,trig_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  B2A [AR] w=0.0 x=0.0 y=0.0 z=0.0-b2A :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-b2A rate w x y z = mkUGen Nothing [AR] (Left rate) "B2A" [w,x,y,z] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  B2Ster [AR] w=0.0 x=0.0 y=0.0-b2Ster :: Rate -> UGen -> UGen -> UGen -> UGen-b2Ster rate w x y = mkUGen Nothing [AR] (Left rate) "B2Ster" [w,x,y] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  B2UHJ [AR] w=0.0 x=0.0 y=0.0-b2UHJ :: Rate -> UGen -> UGen -> UGen -> UGen-b2UHJ rate w x y = mkUGen Nothing [AR] (Left rate) "B2UHJ" [w,x,y] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  BBlockerBuf [AR] freq=0.0 bufnum=0.0 startpoint=0.0-bBlockerBuf :: Rate -> UGen -> UGen -> UGen -> UGen-bBlockerBuf rate freq bufnum startpoint = mkUGen Nothing [AR] (Left rate) "BBlockerBuf" [freq,bufnum,startpoint] Nothing 9 (Special 0) NoId---- | (Undocumented class)------  BFDecode1 [AR] w=0.0 x=0.0 y=0.0 z=0.0 azimuth=0.0 elevation=0.0 wComp=0.0-bFDecode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bFDecode1 rate w x y z azimuth elevation wComp = mkUGen Nothing [AR] (Left rate) "BFDecode1" [w,x,y,z,azimuth,elevation,wComp] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  BFDecoder [] maxSize=0.0-bFDecoder :: Rate -> UGen -> UGen-bFDecoder rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFDecoder" [maxSize] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  BFEncode1 [AR] in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0-bFEncode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bFEncode1 rate in_ azimuth elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncode1" [in_,azimuth,elevation,rho,gain,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  BFEncode2 [AR] in=0.0 point_x=1.0 point_y=1.0 elevation=0.0 gain=1.0 wComp=0.0-bFEncode2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bFEncode2 rate in_ point_x point_y elevation gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncode2" [in_,point_x,point_y,elevation,gain,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  BFEncodeSter [AR] l=0.0 r=0.0 azimuth=0.0 width=1.5707963267949 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0-bFEncodeSter :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bFEncodeSter rate l r azimuth width elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncodeSter" [l,r,azimuth,width,elevation,rho,gain,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  BFGrainPanner [] maxSize=0.0-bFGrainPanner :: Rate -> UGen -> UGen-bFGrainPanner rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFGrainPanner" [maxSize] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  BFManipulate [AR] w=0.0 x=0.0 y=0.0 z=0.0 rotate=0.0 tilt=0.0 tumble=0.0-bFManipulate :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bFManipulate rate w x y z rotate_ tilt_ tumble_ = mkUGen Nothing [AR] (Left rate) "BFManipulate" [w,x,y,z,rotate_,tilt_,tumble_] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  BFPanner [] maxSize=0.0-bFPanner :: Rate -> UGen -> UGen-bFPanner rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFPanner" [maxSize] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  BLBufRd [KR,AR] bufnum=0.0 phase=0.0 ratio=1.0-bLBufRd :: Rate -> UGen -> UGen -> UGen -> UGen-bLBufRd rate bufnum phase ratio = mkUGen Nothing [KR,AR] (Left rate) "BLBufRd" [bufnum,phase,ratio] Nothing 1 (Special 0) NoId---- | 24db/oct rolloff - 4nd order resonant Low/High/Band Pass Filter------  BMoog [AR] in=0.0 freq=440.0 q=0.2 mode=0.0 saturation=0.95-bMoog :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bMoog in_ freq q mode saturation = mkUGen Nothing [AR] (Right [0]) "BMoog" [in_,freq,q,mode,saturation] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Balance [AR] in=0.0 test=0.0 hp=10.0 stor=0.0-balance :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-balance rate in_ test hp stor = mkUGen Nothing [AR] (Left rate) "Balance" [in_,test,hp,stor] Nothing 1 (Special 0) NoId---- | Extracts statistics on a beat histogram------  BeatStatistics [KR] fft=0.0 leak=0.995 numpreviousbeats=4.0-beatStatistics :: Rate -> UGen -> UGen -> UGen -> UGen-beatStatistics rate fft_ leak numpreviousbeats = mkUGen Nothing [KR] (Left rate) "BeatStatistics" [fft_,leak,numpreviousbeats] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  BinData [KR,AR] buffer=0.0 bin=0.0 overlaps=0.5-binData :: Rate -> UGen -> UGen -> UGen -> UGen-binData rate buffer bin overlaps = mkUGen Nothing [KR,AR] (Left rate) "BinData" [buffer,bin,overlaps] Nothing 2 (Special 0) NoId---- | Band limited impulse generation------  BlitB3 [AR] freq=440.0-blitB3 :: Rate -> UGen -> UGen-blitB3 rate freq = mkUGen Nothing [AR] (Left rate) "BlitB3" [freq] Nothing 1 (Special 0) NoId---- | BLIT derived sawtooth------  BlitB3Saw [AR] freq=440.0 leak=0.99-blitB3Saw :: Rate -> UGen -> UGen -> UGen-blitB3Saw rate freq leak = mkUGen Nothing [AR] (Left rate) "BlitB3Saw" [freq,leak] Nothing 1 (Special 0) NoId---- | Bipolar BLIT derived square waveform------  BlitB3Square [AR] freq=440.0 leak=0.99-blitB3Square :: Rate -> UGen -> UGen -> UGen-blitB3Square rate freq leak = mkUGen Nothing [AR] (Left rate) "BlitB3Square" [freq,leak] Nothing 1 (Special 0) NoId---- | Bipolar BLIT derived triangle------  BlitB3Tri [AR] freq=440.0 leak=0.99 leak2=0.99-blitB3Tri :: Rate -> UGen -> UGen -> UGen -> UGen-blitB3Tri rate freq leak leak2 = mkUGen Nothing [AR] (Left rate) "BlitB3Tri" [freq,leak,leak2] Nothing 1 (Special 0) NoId---- | breakcore simulator------  Breakcore [AR] bufnum=0.0 capturein=0.0 capturetrigger=0.0 duration=0.1 ampdropout=0.0-breakcore :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-breakcore rate bufnum capturein capturetrigger duration ampdropout = mkUGen Nothing [AR] (Left rate) "Breakcore" [bufnum,capturein,capturetrigger,duration,ampdropout] Nothing 1 (Special 0) NoId---- | Prigogine oscillator------  Brusselator [AR] reset=0.0 rate=1.0e-2 mu=1.0 gamma=1.0 initx=0.5 inity=0.5-brusselator :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-brusselator rate reset rate_ mu gamma initx inity = mkUGen Nothing [AR] (Left rate) "Brusselator" [reset,rate_,mu,gamma,initx,inity] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  BufGrain [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 interp=2.0-bufGrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bufGrain rate trigger dur sndbuf rate_ pos interp = mkUGen Nothing [AR] (Left rate) "BufGrain" [trigger,dur,sndbuf,rate_,pos,interp] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  BufGrainB [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf=0.0 interp=2.0-bufGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bufGrainB rate trigger dur sndbuf rate_ pos envbuf interp = mkUGen Nothing [AR] (Left rate) "BufGrainB" [trigger,dur,sndbuf,rate_,pos,envbuf,interp] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  BufGrainBBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0-bufGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bufGrainBBF rate trigger dur sndbuf rate_ pos envbuf azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainBBF" [trigger,dur,sndbuf,rate_,pos,envbuf,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  BufGrainBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0-bufGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bufGrainBF rate trigger dur sndbuf rate_ pos azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainBF" [trigger,dur,sndbuf,rate_,pos,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  BufGrainI [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 interp=2.0-bufGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bufGrainI rate trigger dur sndbuf rate_ pos envbuf1 envbuf2 ifac interp = mkUGen Nothing [AR] (Left rate) "BufGrainI" [trigger,dur,sndbuf,rate_,pos,envbuf1,envbuf2,ifac,interp] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  BufGrainIBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0-bufGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-bufGrainIBF rate trigger dur sndbuf rate_ pos envbuf1 envbuf2 ifac azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainIBF" [trigger,dur,sndbuf,rate_,pos,envbuf1,envbuf2,ifac,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId---- | detect the largest value (and its position) in an array of UGens------  BufMax [KR] bufnum=0.0 gate=1.0-bufMax :: Rate -> UGen -> UGen -> UGen-bufMax rate bufnum gate_ = mkUGen Nothing [KR] (Left rate) "BufMax" [bufnum,gate_] Nothing 2 (Special 0) NoId---- | detect the largest value (and its position) in an array of UGens------  BufMin [KR] bufnum=0.0 gate=1.0-bufMin :: Rate -> UGen -> UGen -> UGen-bufMin rate bufnum gate_ = mkUGen Nothing [KR] (Left rate) "BufMin" [bufnum,gate_] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  CQ_Diff [KR] in1=0.0 in2=0.0 databufnum=0.0-cQ_Diff :: Rate -> UGen -> UGen -> UGen -> UGen-cQ_Diff rate in1 in2 databufnum = mkUGen Nothing [KR] (Left rate) "CQ_Diff" [in1,in2,databufnum] Nothing 1 (Special 0) NoId---- | Quefrency analysis and liftering------  Cepstrum [] cepbuf=0.0 fftchain=0.0-cepstrum :: Rate -> UGen -> UGen -> UGen-cepstrum rate cepbuf fftchain = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Cepstrum" [cepbuf,fftchain] Nothing 1 (Special 0) NoId---- | Octave chroma band based representation of energy in a signal; Chromagram for nTET tuning systems with any base reference------  Chromagram [KR] fft=0.0 fftsize=2048.0 n=12.0 tuningbase=32.703195662575 octaves=8.0 integrationflag=0.0 coeff=0.9 octaveratio=2.0 perframenormalize=0.0-chromagram :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-chromagram rate fft_ fftsize n tuningbase octaves integrationflag coeff octaveratio perframenormalize = mkUGen Nothing [KR] (Left rate) "Chromagram" [fft_,fftsize,n,tuningbase,octaves,integrationflag,coeff,octaveratio,perframenormalize] Nothing 12 (Special 0) NoId---- | (Undocumented class)------  ChuaL [AR] freq=22050.0 a=0.3286 b=0.9336 c=-0.8126 d=0.399 rr=0.0 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0-chuaL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-chuaL rate freq a b c d rr h xi yi zi = mkUGen Nothing [AR] (Left rate) "ChuaL" [freq,a,b,c,d,rr,h,xi,yi,zi] Nothing 1 (Special 0) NoId---- | circular linear lag------  CircleRamp [KR,AR] in=0.0 lagTime=0.1 circmin=-180.0 circmax=180.0-circleRamp :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-circleRamp rate in_ lagTime circmin circmax = mkUGen Nothing [KR,AR] (Left rate) "CircleRamp" [in_,lagTime,circmin,circmax] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Clipper32 [AR] in=0.0 lo=-0.8 hi=0.8-clipper32 :: Rate -> UGen -> UGen -> UGen -> UGen-clipper32 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper32" [in_,lo,hi] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Clipper4 [AR] in=0.0 lo=-0.8 hi=0.8-clipper4 :: Rate -> UGen -> UGen -> UGen -> UGen-clipper4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper4" [in_,lo,hi] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Clipper8 [AR] in=0.0 lo=-0.8 hi=0.8-clipper8 :: Rate -> UGen -> UGen -> UGen -> UGen-clipper8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper8" [in_,lo,hi] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Clockmus [KR] -clockmus :: Rate -> UGen-clockmus rate = mkUGen Nothing [KR] (Left rate) "Clockmus" [] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  CombLP [AR] in=0.0 gate=1.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0 coef=0.5-combLP :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-combLP rate in_ gate_ maxdelaytime delaytime decaytime coef = mkUGen Nothing [AR] (Left rate) "CombLP" [in_,gate_,maxdelaytime,delaytime,decaytime,coef] Nothing 1 (Special 0) NoId---- | FM-modulable resonating filter------  ComplexRes [AR] in=0.0 freq=100.0 decay=0.2;    FILTER: TRUE-complexRes :: UGen -> UGen -> UGen -> UGen-complexRes in_ freq decay_ = mkUGen Nothing [AR] (Right [0]) "ComplexRes" [in_,freq,decay_] Nothing 1 (Special 0) NoId---- | Concatenative Cross-Synthesis on Live Streams------  Concat [AR] control=0.0 source=0.0 storesize=1.0 seektime=1.0 seekdur=1.0 matchlength=5.0e-2 freezestore=0.0 zcr=1.0 lms=1.0 sc=1.0 st=0.0 randscore=0.0-concat :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-concat rate control_ source storesize seektime seekdur matchlength freezestore zcr lms sc st randscore = mkUGen Nothing [AR] (Left rate) "Concat" [control_,source,storesize,seektime,seekdur,matchlength,freezestore,zcr,lms,sc,st,randscore] Nothing 1 (Special 0) NoId---- | Concatenative Cross-Synthesis on Live Streams------  Concat2 [AR] control=0.0 source=0.0 storesize=1.0 seektime=1.0 seekdur=1.0 matchlength=5.0e-2 freezestore=0.0 zcr=1.0 lms=1.0 sc=1.0 st=0.0 randscore=0.0 threshold=1.0e-2-concat2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-concat2 rate control_ source storesize seektime seekdur matchlength freezestore zcr lms sc st randscore threshold = mkUGen Nothing [AR] (Left rate) "Concat2" [control_,source,storesize,seektime,seekdur,matchlength,freezestore,zcr,lms,sc,st,randscore,threshold] Nothing 1 (Special 0) NoId---- | an amplitude tracking based onset detector------  Coyote [KR] in=0.0 trackFall=0.2 slowLag=0.2 fastLag=1.0e-2 fastMul=0.5 thresh=5.0e-2 minDur=0.1-coyote :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-coyote rate in_ trackFall slowLag fastLag fastMul thresh minDur = mkUGen Nothing [KR] (Left rate) "Coyote" [in_,trackFall,slowLag,fastLag,fastMul,thresh,minDur] Nothing 1 (Special 0) NoId---- | Measure the temporal crest factor of a signal------  Crest [KR] in=0.0 numsamps=400.0 gate=1.0-crest :: Rate -> UGen -> UGen -> UGen -> UGen-crest rate in_ numsamps gate_ = mkUGen Nothing [KR] (Left rate) "Crest" [in_,numsamps,gate_] Nothing 1 (Special 0) NoId---- | port of some ladspa plugins------  CrossoverDistortion [AR] in=0.0 amp=0.5 smooth=0.5-crossoverDistortion :: UGen -> UGen -> UGen -> UGen-crossoverDistortion in_ amp smooth = mkUGen Nothing [AR] (Right [0]) "CrossoverDistortion" [in_,amp,smooth] Nothing 1 (Special 0) NoId---- | Digitally modelled analog filter------  DFM1 [AR] in=0.0 freq=1000.0 res=0.1 inputgain=1.0 type=0.0 noiselevel=3.0e-4-dfm1 :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dfm1 in_ freq res inputgain type_ noiselevel = mkUGen Nothing [AR] (Right [0]) "DFM1" [in_,freq,res,inputgain,type_,noiselevel] Nothing 1 (Special 0) NoId---- | Demand rate implementation of a Wiard noise ring------  DNoiseRing [DR] change=0.5 chance=0.5 shift=1.0 numBits=8.0 resetval=0.0;    DEMAND/NONDET-dNoiseRing :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dNoiseRing change chance shift numBits resetval = mkUGen Nothing [DR] (Left DR) "DNoiseRing" [change,chance,shift,numBits,resetval] Nothing 1 (Special 0) NoId---- | Triangle via 3rd order differerentiated polynomial waveform------  DPW3Tri [AR] freq=440.0-dpw3Tri :: Rate -> UGen -> UGen-dpw3Tri rate freq = mkUGen Nothing [AR] (Left rate) "DPW3Tri" [freq] Nothing 1 (Special 0) NoId---- | Sawtooth via 4th order differerentiated polynomial waveform------  DPW4Saw [AR] freq=440.0-dpw4Saw :: Rate -> UGen -> UGen-dpw4Saw rate freq = mkUGen Nothing [AR] (Left rate) "DPW4Saw" [freq] Nothing 1 (Special 0) NoId---- | Plucked physical model.------  DWGBowed [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=3.0 impZ=0.55 fB=2.0-dWGBowed :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dWGBowed rate freq velb force gate_ pos release c1 c3 impZ fB = mkUGen Nothing [AR] (Left rate) "DWGBowed" [freq,velb,force,gate_,pos,release,c1,c3,impZ,fB] Nothing 1 (Special 0) NoId---- | Plucked physical model.------  DWGBowedSimple [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=30.0-dWGBowedSimple :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dWGBowedSimple rate freq velb force gate_ pos release c1 c3 = mkUGen Nothing [AR] (Left rate) "DWGBowedSimple" [freq,velb,force,gate_,pos,release,c1,c3] Nothing 1 (Special 0) NoId---- | Plucked physical model.------  DWGBowedTor [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=3.0 impZ=0.55 fB=2.0 mistune=5.2 c1tor=1.0 c3tor=3000.0 iZtor=1.8-dWGBowedTor :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dWGBowedTor rate freq velb force gate_ pos release c1 c3 impZ fB mistune c1tor c3tor iZtor = mkUGen Nothing [AR] (Left rate) "DWGBowedTor" [freq,velb,force,gate_,pos,release,c1,c3,impZ,fB,mistune,c1tor,c3tor,iZtor] Nothing 1 (Special 0) NoId---- | Plucked physical model.------  DWGPlucked [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1-dWGPlucked :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dWGPlucked rate freq amp gate_ pos c1 c3 inp release = mkUGen Nothing [AR] (Left rate) "DWGPlucked" [freq,amp,gate_,pos,c1,c3,inp,release] Nothing 1 (Special 0) NoId---- | Plucked physical model.------  DWGPlucked2 [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1 mistune=1.008 mp=0.55 gc=1.0e-2-dWGPlucked2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dWGPlucked2 rate freq amp gate_ pos c1 c3 inp release mistune mp gc = mkUGen Nothing [AR] (Left rate) "DWGPlucked2" [freq,amp,gate_,pos,c1,c3,inp,release,mistune,mp,gc] Nothing 1 (Special 0) NoId---- | Plucked physical model.------  DWGPluckedStiff [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1 fB=2.0-dWGPluckedStiff :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dWGPluckedStiff rate freq amp gate_ pos c1 c3 inp release fB = mkUGen Nothing [AR] (Left rate) "DWGPluckedStiff" [freq,amp,gate_,pos,c1,c3,inp,release,fB] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  DWGSoundBoard [AR] inp=0.0 c1=20.0 c3=20.0 mix=0.8 d1=199.0 d2=211.0 d3=223.0 d4=227.0 d5=229.0 d6=233.0 d7=239.0 d8=241.0-dWGSoundBoard :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dWGSoundBoard rate inp c1 c3 mix d1 d2 d3 d4 d5 d6 d7 d8 = mkUGen Nothing [AR] (Left rate) "DWGSoundBoard" [inp,c1,c3,mix,d1,d2,d3,d4,d5,d6,d7,d8] Nothing 1 (Special 0) NoId---- | demand rate brownian movement with Gendyn distributions------  Dbrown2 [] lo=0.0 hi=0.0 step=0.0 dist=0.0 length=1.0e8-dbrown2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dbrown2 rate lo hi step dist length_ = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dbrown2" [lo,hi,step,dist,length_] Nothing 1 (Special 0) NoId---- | demand rate tag system on a buffer------  DbufTag [DR] bufnum=0.0 v=0.0 axiom=0.0 rules=0.0 recycle=0.0 mode=0.0;    DEMAND/NONDET-dbufTag :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dbufTag rate bufnum v axiom rules recycle mode = mkUGen Nothing [DR] (Left rate) "DbufTag" [bufnum,v,axiom,rules,recycle,mode] Nothing 1 (Special 0) NoId---- | port of some ladspa plugins------  Decimator [AR] in=0.0 rate=44100.0 bits=24.0-decimator :: Rate -> UGen -> UGen -> UGen -> UGen-decimator rate in_ rate_ bits = mkUGen Nothing [AR] (Left rate) "Decimator" [in_,rate_,bits] Nothing 1 (Special 0) NoId---- | Demand version of the BetaBlocker VChip------  DetaBlockerBuf [DR] bufnum=0.0 startpoint=0.0;    DEMAND/NONDET-detaBlockerBuf :: Rate -> UGen -> UGen -> UGen-detaBlockerBuf rate bufnum startpoint = mkUGen Nothing [DR] (Left rate) "DetaBlockerBuf" [bufnum,startpoint] Nothing 1 (Special 0) NoId---- | demand rate finite state machine------  Dfsm [DR] rules=0.0 n=1.0 rgen=0.0;    DEMAND/NONDET-dfsm :: Rate -> UGen -> UGen -> UGen -> UGen-dfsm rate rules n rgen = mkUGen Nothing [DR] (Left rate) "Dfsm" [rules,n,rgen] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Dgauss [] lo=0.0 hi=0.0 length=1.0e8-dgauss :: Rate -> UGen -> UGen -> UGen -> UGen-dgauss rate lo hi length_ = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dgauss" [lo,hi,length_] Nothing 1 (Special 0) NoId---- | Ring modulation based on the physical model of a diode.------  DiodeRingMod [AR] car=0.0 mod=0.0;    FILTER: TRUE-diodeRingMod :: UGen -> UGen -> UGen-diodeRingMod car mod_ = mkUGen Nothing [AR] (Right [0]) "DiodeRingMod" [car,mod_] Nothing 1 (Special 0) NoId---- | port of some ladspa plugins------  Disintegrator [AR] in=0.0 probability=0.5 multiplier=0.0;    FILTER: TRUE, NONDET-disintegrator :: ID a => a -> UGen -> UGen -> UGen -> UGen-disintegrator z in_ probability multiplier = mkUGen Nothing [AR] (Right [0]) "Disintegrator" [in_,probability,multiplier] Nothing 1 (Special 0) (toUId z)---- | discrete time neurodynamics------  Dneuromodule [KR,AR] dt=0.0 numChannels=0.0 theta=0.0 x=0.0 weights=0.0-dneuromodule :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dneuromodule rate dt numChannels theta x weights = mkUGen Nothing [KR,AR] (Left rate) "Dneuromodule" [dt,numChannels,theta,x,weights] Nothing 1 (Special 0) NoId---- | Nested Allpass filters as proposed by Vercoe and Pluckett------  DoubleNestedAllpassC [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE-doubleNestedAllpassC :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-doubleNestedAllpassC in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassC" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId---- | Nested Allpass filters as proposed by Vercoe and Pluckett------  DoubleNestedAllpassL [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE-doubleNestedAllpassL :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-doubleNestedAllpassL in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassL" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId---- | Nested Allpass filters as proposed by Vercoe and Pluckett------  DoubleNestedAllpassN [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE-doubleNestedAllpassN :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-doubleNestedAllpassN in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassN" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId----- | Forced DoubleWell Oscillator------  DoubleWell [AR] reset=0.0 ratex=1.0e-2 ratey=1.0e-2 f=1.0 w=1.0e-3 delta=1.0 initx=0.0 inity=0.0-doubleWell :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-doubleWell rate reset ratex ratey f w delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell" [reset,ratex,ratey,f,w,delta,initx,inity] Nothing 1 (Special 0) NoId---- | Forced DoubleWell Oscillator------  DoubleWell2 [AR] reset=0.0 ratex=1.0e-2 ratey=1.0e-2 f=1.0 w=1.0e-3 delta=1.0 initx=0.0 inity=0.0-doubleWell2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-doubleWell2 rate reset ratex ratey f w delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell2" [reset,ratex,ratey,f,w,delta,initx,inity] Nothing 1 (Special 0) NoId---- | Forced DoubleWell Oscillator------  DoubleWell3 [AR] reset=0.0 rate=1.0e-2 f=0.0 delta=0.25 initx=0.0 inity=0.0-doubleWell3 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-doubleWell3 rate reset rate_ f delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell3" [reset,rate_,f,delta,initx,inity] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  DriveNoise [AR] in=0.0 amount=1.0 multi=5.0-driveNoise :: Rate -> UGen -> UGen -> UGen -> UGen-driveNoise rate in_ amount multi = mkUGen Nothing [AR] (Left rate) "DriveNoise" [in_,amount,multi] Nothing 1 (Special 0) NoId---- | Crosscorrelation search and drum pattern matching beat tracker------  DrumTrack [KR] in=0.0 lock=0.0 dynleak=0.0 tempowt=0.0 phasewt=0.0 basswt=0.0 patternwt=1.0 prior=0.0 kicksensitivity=1.0 snaresensitivity=1.0 debugmode=0.0-drumTrack :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-drumTrack rate in_ lock dynleak tempowt phasewt basswt patternwt prior kicksensitivity snaresensitivity debugmode = mkUGen Nothing [KR] (Left rate) "DrumTrack" [in_,lock,dynleak,tempowt,phasewt,basswt,patternwt,prior,kicksensitivity,snaresensitivity,debugmode] Nothing 4 (Special 0) NoId---- | demand rate tag system------  Dtag [] bufsize=0.0 v=0.0 axiom=0.0 rules=0.0 recycle=0.0 mode=0.0-dtag :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-dtag rate bufsize v axiom rules recycle mode = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dtag" [bufsize,v,axiom,rules,recycle,mode] Nothing 1 (Special 0) NoId---- | Envelope Follower Filter------  EnvDetect [AR] in=0.0 attack=100.0 release=0.0-envDetect :: Rate -> UGen -> UGen -> UGen -> UGen-envDetect rate in_ attack release = mkUGen Nothing [AR] (Left rate) "EnvDetect" [in_,attack,release] Nothing 1 (Special 0) NoId---- | Envelope Follower------  EnvFollow [KR,AR] input=0.0 decaycoeff=0.99-envFollow :: Rate -> UGen -> UGen -> UGen-envFollow rate input decaycoeff = mkUGen Nothing [KR,AR] (Left rate) "EnvFollow" [input,decaycoeff] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FFTComplexDev [KR] buffer=0.0 rectify=0.0 powthresh=0.1-fFTComplexDev :: Rate -> UGen -> UGen -> UGen -> UGen-fFTComplexDev rate buffer rectify powthresh = mkUGen Nothing [KR] (Left rate) "FFTComplexDev" [buffer,rectify,powthresh] Nothing 1 (Special 0) NoId---- | Spectral crest measure------  FFTCrest [KR] buffer=0.0 freqlo=0.0 freqhi=50000.0-fFTCrest :: Rate -> UGen -> UGen -> UGen -> UGen-fFTCrest rate buffer freqlo freqhi = mkUGen Nothing [KR] (Left rate) "FFTCrest" [buffer,freqlo,freqhi] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FFTDiffMags [KR] bufferA=0.0 bufferB=0.0-fFTDiffMags :: Rate -> UGen -> UGen -> UGen-fFTDiffMags rate bufferA bufferB = mkUGen Nothing [KR] (Left rate) "FFTDiffMags" [bufferA,bufferB] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FFTFlux [KR] buffer=0.0 normalise=1.0-fFTFlux :: Rate -> UGen -> UGen -> UGen-fFTFlux rate buffer normalise = mkUGen Nothing [KR] (Left rate) "FFTFlux" [buffer,normalise] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FFTFluxPos [KR] buffer=0.0 normalise=1.0-fFTFluxPos :: Rate -> UGen -> UGen -> UGen-fFTFluxPos rate buffer normalise = mkUGen Nothing [KR] (Left rate) "FFTFluxPos" [buffer,normalise] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FFTMKL [KR] buffer=0.0 epsilon=1.0e-6-fFTMKL :: Rate -> UGen -> UGen -> UGen-fFTMKL rate buffer epsilon = mkUGen Nothing [KR] (Left rate) "FFTMKL" [buffer,epsilon] Nothing 1 (Special 0) NoId---- | Find peak value in an FFT frame------  FFTPeak [KR] buffer=0.0 freqlo=0.0 freqhi=50000.0-fFTPeak :: Rate -> UGen -> UGen -> UGen -> UGen-fFTPeak rate buffer freqlo freqhi = mkUGen Nothing [KR] (Left rate) "FFTPeak" [buffer,freqlo,freqhi] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  FFTPhaseDev [KR] buffer=0.0 weight=0.0 powthresh=0.1-fFTPhaseDev :: Rate -> UGen -> UGen -> UGen -> UGen-fFTPhaseDev rate buffer weight powthresh = mkUGen Nothing [KR] (Left rate) "FFTPhaseDev" [buffer,weight,powthresh] Nothing 1 (Special 0) NoId---- | Instantaneous spectral power------  FFTPower [KR] buffer=0.0 square=1.0-fFTPower :: Rate -> UGen -> UGen -> UGen-fFTPower rate buffer square = mkUGen Nothing [KR] (Left rate) "FFTPower" [buffer,square] Nothing 1 (Special 0) NoId---- | Spectral slope------  FFTSlope [KR] buffer=0.0-fFTSlope :: Rate -> UGen -> UGen-fFTSlope rate buffer = mkUGen Nothing [KR] (Left rate) "FFTSlope" [buffer] Nothing 1 (Special 0) NoId---- | Spectral spread------  FFTSpread [KR] buffer=0.0 centroid=0.0-fFTSpread :: Rate -> UGen -> UGen -> UGen-fFTSpread rate buffer centroid = mkUGen Nothing [KR] (Left rate) "FFTSpread" [buffer,centroid] Nothing 1 (Special 0) NoId---- | Spectral flatness, divided into subbands------  FFTSubbandFlatness [KR] chain=0.0 cutfreqs=0.0-fFTSubbandFlatness :: Rate -> UGen -> UGen -> UGen-fFTSubbandFlatness rate chain cutfreqs = mkUGen Nothing [KR] (Left rate) "FFTSubbandFlatness" [chain,cutfreqs] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FFTSubbandFlux [KR] chain=0.0 cutfreqs=0.0 posonly=0.0-fFTSubbandFlux :: Rate -> UGen -> UGen -> UGen -> UGen-fFTSubbandFlux rate chain cutfreqs posonly = mkUGen Nothing [KR] (Left rate) "FFTSubbandFlux" [chain,cutfreqs,posonly] Nothing 1 (Special 0) NoId---- | Spectral power, divided into subbands------  FFTSubbandPower [KR] chain=0.0 cutfreqs=0.0 square=1.0 scalemode=1.0-fFTSubbandPower :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-fFTSubbandPower rate chain cutfreqs square scalemode = mkUGen Nothing [KR] (Left rate) "FFTSubbandPower" [chain,cutfreqs,square,scalemode] Nothing 1 (Special 0) NoId---- | Phase modulation oscillator matrix.------  FM7 [AR] *ctlMatrix=0.0 *modMatrix=0.0-fm7 :: Rate -> UGen -> UGen -> UGen-fm7 rate ctlMatrix modMatrix = mkUGen Nothing [AR] (Left rate) "FM7" [] (Just [ctlMatrix,modMatrix]) 6 (Special 0) NoId---- | (Undocumented class)------  FMGrain [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0-fmGrain :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fmGrain trigger dur carfreq modfreq index_ = mkUGen Nothing [AR] (Right [0]) "FMGrain" [trigger,dur,carfreq,modfreq,index_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FMGrainB [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf=0.0-fmGrainB :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fmGrainB trigger dur carfreq modfreq index_ envbuf = mkUGen Nothing [AR] (Right [0]) "FMGrainB" [trigger,dur,carfreq,modfreq,index_,envbuf] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FMGrainBBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0-fmGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fmGrainBBF rate trigger dur carfreq modfreq index_ envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainBBF" [trigger,dur,carfreq,modfreq,index_,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  FMGrainBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0-fmGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fmGrainBF rate trigger dur carfreq modfreq index_ azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainBF" [trigger,dur,carfreq,modfreq,index_,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  FMGrainI [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5-fmGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fmGrainI rate trigger dur carfreq modfreq index_ envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "FMGrainI" [trigger,dur,carfreq,modfreq,index_,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FMGrainIBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0-fmGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fmGrainIBF rate trigger dur carfreq modfreq index_ envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainIBF" [trigger,dur,carfreq,modfreq,index_,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  FMHDecode1 [AR] w=0.0 x=0.0 y=0.0 z=0.0 r=0.0 s=0.0 t=0.0 u=0.0 v=0.0 azimuth=0.0 elevation=0.0-fMHDecode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fMHDecode1 rate w x y z r s t u v azimuth elevation = mkUGen Nothing [AR] (Left rate) "FMHDecode1" [w,x,y,z,r,s,t,u,v,azimuth,elevation] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FMHEncode0 [AR] in=0.0 azimuth=0.0 elevation=0.0 gain=1.0-fMHEncode0 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-fMHEncode0 rate in_ azimuth elevation gain = mkUGen Nothing [AR] (Left rate) "FMHEncode0" [in_,azimuth,elevation,gain] Nothing 9 (Special 0) NoId---- | (Undocumented class)------  FMHEncode1 [AR] in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0-fMHEncode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fMHEncode1 rate in_ azimuth elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "FMHEncode1" [in_,azimuth,elevation,rho,gain,wComp] Nothing 9 (Special 0) NoId---- | (Undocumented class)------  FMHEncode2 [AR] in=0.0 point_x=0.0 point_y=0.0 elevation=0.0 gain=1.0 wComp=0.0-fMHEncode2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fMHEncode2 rate in_ point_x point_y elevation gain wComp = mkUGen Nothing [AR] (Left rate) "FMHEncode2" [in_,point_x,point_y,elevation,gain,wComp] Nothing 9 (Special 0) NoId---- | Storing feature data from UGens in NRT mode------  FeatureSave [KR] features=0.0 trig=0.0-featureSave :: Rate -> UGen -> UGen -> UGen-featureSave rate features trig_ = mkUGen Nothing [KR] (Left rate) "FeatureSave" [features,trig_] Nothing 1 (Special 0) NoId---- | FitzHughNagumo Neuron Firing Oscillator------  Fhn2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0-fhn2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fhn2DC rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DC" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId---- | FitzHughNagumo Neuron Firing Oscillator------  Fhn2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0-fhn2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fhn2DL rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DL" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId---- | FitzHughNagumo Neuron Firing Oscillator------  Fhn2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0-fhn2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fhn2DN rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DN" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FhnTrig [KR,AR] minfreq=4.0 maxfreq=10.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0-fhnTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fhnTrig rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "FhnTrig" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  FincoSprottL [AR] freq=22050.0 a=2.45 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0-fincoSprottL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fincoSprottL rate freq a h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottL" [freq,a,h,xi,yi,zi] Nothing 3 (Special 0) NoId---- | (Undocumented class)------  FincoSprottM [AR] freq=22050.0 a=-7.0 b=4.0 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0-fincoSprottM :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fincoSprottM rate freq a b h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottM" [freq,a,b,h,xi,yi,zi] Nothing 3 (Special 0) NoId---- | (Undocumented class)------  FincoSprottS [AR] freq=22050.0 a=8.0 b=2.0 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0-fincoSprottS :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fincoSprottS rate freq a b h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottS" [freq,a,b,h,xi,yi,zi] Nothing 3 (Special 0) NoId---- | Neuron Firing Model Oscillator------  FitzHughNagumo [AR] reset=0.0 rateu=1.0e-2 ratew=1.0e-2 b0=1.0 b1=1.0 initu=0.0 initw=0.0-fitzHughNagumo :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-fitzHughNagumo rate reset rateu ratew b0 b1 initu initw = mkUGen Nothing [AR] (Left rate) "FitzHughNagumo" [reset,rateu,ratew,b0,b1,initu,initw] Nothing 1 (Special 0) NoId---- | First Order Ambisonic (FOA) UGen superclass------  Foa [] maxSize=0.0-foa :: Rate -> UGen -> UGen-foa rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Foa" [maxSize] Nothing 1 (Special 0) NoId---- | First Order Ambisonic (FOA) asymmetry transformer------  FoaAsymmetry [AR] in=0.0 angle=0.0-foaAsymmetry :: Rate -> UGen -> UGen -> UGen-foaAsymmetry rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaAsymmetry" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) directivity transformer------  FoaDirectO [AR] in=0.0 angle=0.0-foaDirectO :: Rate -> UGen -> UGen -> UGen-foaDirectO rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaDirectO" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) directivity transformer------  FoaDirectX [AR] in=0.0 angle=0.0-foaDirectX :: Rate -> UGen -> UGen -> UGen-foaDirectX rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaDirectX" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) directivity transformer------  FoaDirectY [AR] in=0.0 angle=0.0-foaDirectY :: Rate -> UGen -> UGen -> UGen-foaDirectY rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaDirectY" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) directivity transformer------  FoaDirectZ [AR] in=0.0 angle=0.0-foaDirectZ :: Rate -> UGen -> UGen -> UGen-foaDirectZ rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaDirectZ" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) dominance transformer------  FoaDominateX [AR] in=0.0 gain=0.0-foaDominateX :: Rate -> UGen -> UGen -> UGen-foaDominateX rate in_ gain = mkUGen Nothing [AR] (Left rate) "FoaDominateX" [in_,gain] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) dominance transformer------  FoaDominateY [AR] in=0.0 gain=0.0-foaDominateY :: Rate -> UGen -> UGen -> UGen-foaDominateY rate in_ gain = mkUGen Nothing [AR] (Left rate) "FoaDominateY" [in_,gain] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) dominance transformer------  FoaDominateZ [AR] in=0.0 gain=0.0-foaDominateZ :: Rate -> UGen -> UGen -> UGen-foaDominateZ rate in_ gain = mkUGen Nothing [AR] (Left rate) "FoaDominateZ" [in_,gain] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) focus transformer------  FoaFocusX [AR] in=0.0 angle=0.0-foaFocusX :: Rate -> UGen -> UGen -> UGen-foaFocusX rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaFocusX" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) focus transformer------  FoaFocusY [AR] in=0.0 angle=0.0-foaFocusY :: Rate -> UGen -> UGen -> UGen-foaFocusY rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaFocusY" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) focus transformer------  FoaFocusZ [AR] in=0.0 angle=0.0-foaFocusZ :: Rate -> UGen -> UGen -> UGen-foaFocusZ rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaFocusZ" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) nearfield compensation filter------  FoaNFC [AR] in=0.0 distance=1.0-foaNFC :: Rate -> UGen -> UGen -> UGen-foaNFC rate in_ distance = mkUGen Nothing [AR] (Left rate) "FoaNFC" [in_,distance] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) panner------  FoaPanB [AR] in=0.0 azimuth=0.0 elevation=0.0-foaPanB :: Rate -> UGen -> UGen -> UGen -> UGen-foaPanB rate in_ azimuth elevation = mkUGen Nothing [AR] (Left rate) "FoaPanB" [in_,azimuth,elevation] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) press transformer------  FoaPressX [AR] in=0.0 angle=0.0-foaPressX :: Rate -> UGen -> UGen -> UGen-foaPressX rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPressX" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) press transformer------  FoaPressY [AR] in=0.0 angle=0.0-foaPressY :: Rate -> UGen -> UGen -> UGen-foaPressY rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPressY" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) press transformer------  FoaPressZ [AR] in=0.0 angle=0.0-foaPressZ :: Rate -> UGen -> UGen -> UGen-foaPressZ rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPressZ" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) proximity effect filter------  FoaProximity [AR] in=0.0 distance=1.0-foaProximity :: Rate -> UGen -> UGen -> UGen-foaProximity rate in_ distance = mkUGen Nothing [AR] (Left rate) "FoaProximity" [in_,distance] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) psychoacoustic shelf filter------  FoaPsychoShelf [AR] in=0.0 freq=400.0 k0=0.0 k1=0.0-foaPsychoShelf :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-foaPsychoShelf rate in_ freq k0 k1 = mkUGen Nothing [AR] (Left rate) "FoaPsychoShelf" [in_,freq,k0,k1] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) push transformer------  FoaPushX [AR] in=0.0 angle=0.0-foaPushX :: Rate -> UGen -> UGen -> UGen-foaPushX rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPushX" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) push transformer------  FoaPushY [AR] in=0.0 angle=0.0-foaPushY :: Rate -> UGen -> UGen -> UGen-foaPushY rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPushY" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) push transformer------  FoaPushZ [AR] in=0.0 angle=0.0-foaPushZ :: Rate -> UGen -> UGen -> UGen-foaPushZ rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPushZ" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) rotation transformer------  FoaRotate [AR] in=0.0 angle=0.0-foaRotate :: Rate -> UGen -> UGen -> UGen-foaRotate rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaRotate" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) rotation transformer------  FoaTilt [AR] in=0.0 angle=0.0-foaTilt :: Rate -> UGen -> UGen -> UGen-foaTilt rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaTilt" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) rotation transformer------  FoaTumble [AR] in=0.0 angle=0.0-foaTumble :: Rate -> UGen -> UGen -> UGen-foaTumble rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaTumble" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) zoom transformer------  FoaZoomX [AR] in=0.0 angle=0.0-foaZoomX :: Rate -> UGen -> UGen -> UGen-foaZoomX rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaZoomX" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) zoom transformer------  FoaZoomY [AR] in=0.0 angle=0.0-foaZoomY :: Rate -> UGen -> UGen -> UGen-foaZoomY rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaZoomY" [in_,angle] Nothing 4 (Special 0) NoId---- | First Order Ambisonic (FOA) zoom transformer------  FoaZoomZ [AR] in=0.0 angle=0.0-foaZoomZ :: Rate -> UGen -> UGen -> UGen-foaZoomZ rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaZoomZ" [in_,angle] Nothing 4 (Special 0) NoId---- | calculates spectral MSE distance of two fft chains------  FrameCompare [KR] buffer1=0.0 buffer2=0.0 wAmount=0.5-frameCompare :: Rate -> UGen -> UGen -> UGen -> UGen-frameCompare rate buffer1 buffer2 wAmount = mkUGen Nothing [KR] (Left rate) "FrameCompare" [buffer1,buffer2,wAmount] Nothing 1 (Special 0) NoId---- | A physical model of a system with dry-friction. A chaotic filter.------  Friction [KR,AR] in=0.0 friction=0.5 spring=0.414 damp=0.313 mass=0.1 beltmass=1.0-friction :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-friction rate in_ friction_ spring_ damp mass beltmass = mkUGen Nothing [KR,AR] (Left rate) "Friction" [in_,friction_,spring_,damp,mass,beltmass] Nothing 1 (Special 0) NoId---- | Single gammatone filter------  Gammatone [AR] input=0.0 centrefrequency=440.0 bandwidth=200.0-gammatone :: Rate -> UGen -> UGen -> UGen -> UGen-gammatone rate input centrefrequency bandwidth = mkUGen Nothing [AR] (Left rate) "Gammatone" [input,centrefrequency,bandwidth] Nothing 1 (Special 0) NoId---- | Gaussian classifier------  GaussClass [KR] in=0.0 bufnum=0.0 gate=0.0-gaussClass :: Rate -> UGen -> UGen -> UGen -> UGen-gaussClass rate in_ bufnum gate_ = mkUGen Nothing [KR] (Left rate) "GaussClass" [in_,bufnum,gate_] Nothing 1 (Special 0) NoId---- | impulses around a certain frequency------  GaussTrig [KR,AR] freq=440.0 dev=0.3-gaussTrig :: Rate -> UGen -> UGen -> UGen-gaussTrig rate freq dev = mkUGen Nothing [KR,AR] (Left rate) "GaussTrig" [freq,dev] Nothing 1 (Special 0) NoId---- | gingerbreadman map 2D chaotic generator------  Gbman2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1-gbman2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-gbman2DC rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DC" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId---- | gingerbreadman map 2D chaotic generator------  Gbman2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1-gbman2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-gbman2DL rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DL" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId---- | gingerbreadman map 2D chaotic generator------  Gbman2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1-gbman2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-gbman2DN rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DN" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  GbmanTrig [KR,AR] minfreq=5.0 maxfreq=10.0 x0=1.2 y0=2.1-gbmanTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-gbmanTrig rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "GbmanTrig" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId---- | Dynamic stochastic synthesis generator------  Gendy4 [KR,AR] ampdist=1.0 durdist=1.0 adparam=1.0 ddparam=1.0 minfreq=440.0 maxfreq=660.0 ampscale=0.5 durscale=0.5 initCPs=12.0 knum=0.0-gendy4 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-gendy4 rate ampdist durdist adparam ddparam minfreq maxfreq ampscale durscale initCPs knum = mkUGen Nothing [KR,AR] (Left rate) "Gendy4" [ampdist,durdist,adparam,ddparam,minfreq,maxfreq,ampscale,durscale,initCPs,knum] Nothing 1 (Special 0) NoId---- | Dynamic stochastic synthesis generator------  Gendy5 [KR,AR] ampdist=1.0 durdist=1.0 adparam=1.0 ddparam=1.0 minfreq=440.0 maxfreq=660.0 ampscale=0.5 durscale=0.5 initCPs=12.0 knum=0.0-gendy5 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-gendy5 rate ampdist durdist adparam ddparam minfreq maxfreq ampscale durscale initCPs knum = mkUGen Nothing [KR,AR] (Left rate) "Gendy5" [ampdist,durdist,adparam,ddparam,minfreq,maxfreq,ampscale,durscale,initCPs,knum] Nothing 1 (Special 0) NoId---- | Read (numeric) shell environment variables into a synth------  Getenv [] key=0.0 defaultval=0.0-getenv :: Rate -> UGen -> UGen -> UGen-getenv rate key defaultval = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Getenv" [key,defaultval] Nothing 1 (Special 0) NoId---- | backward compatibility------  GlitchBPF [KR,AR] in=0.0 freq=440.0 rq=1.0-glitchBPF :: Rate -> UGen -> UGen -> UGen -> UGen-glitchBPF rate in_ freq rq = mkUGen Nothing [KR,AR] (Left rate) "GlitchBPF" [in_,freq,rq] Nothing 1 (Special 0) NoId---- | backward compatibility------  GlitchBRF [KR,AR] in=0.0 freq=440.0 rq=1.0-glitchBRF :: Rate -> UGen -> UGen -> UGen -> UGen-glitchBRF rate in_ freq rq = mkUGen Nothing [KR,AR] (Left rate) "GlitchBRF" [in_,freq,rq] Nothing 1 (Special 0) NoId---- | backward compatibility------  GlitchHPF [KR,AR] in=0.0 freq=440.0-glitchHPF :: Rate -> UGen -> UGen -> UGen-glitchHPF rate in_ freq = mkUGen Nothing [KR,AR] (Left rate) "GlitchHPF" [in_,freq] Nothing 1 (Special 0) NoId---- | backward compatibility------  GlitchRHPF [KR,AR] in=0.0 freq=440.0 rq=1.0-glitchRHPF :: Rate -> UGen -> UGen -> UGen -> UGen-glitchRHPF rate in_ freq rq = mkUGen Nothing [KR,AR] (Left rate) "GlitchRHPF" [in_,freq,rq] Nothing 1 (Special 0) NoId---- | Calculate a single DFT bin, to detect presence of a frequency------  Goertzel [KR] in=0.0 bufsize=1024.0 freq=0.0 hop=1.0-goertzel :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-goertzel rate in_ bufsize freq hop = mkUGen Nothing [KR] (Left rate) "Goertzel" [in_,bufsize,freq,hop] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  GrainBufJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 loop=0.0 interp=2.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0-grainBufJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-grainBufJ rate numChannels trigger dur sndbuf rate_ pos loop interp grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainBufJ" [numChannels,trigger,dur,sndbuf,rate_,pos,loop,interp,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  GrainFMJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0-grainFMJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-grainFMJ rate numChannels trigger dur carfreq modfreq index_ grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainFMJ" [numChannels,trigger,dur,carfreq,modfreq,index_,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  GrainInJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 in=0.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0-grainInJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-grainInJ rate numChannels trigger dur in_ grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainInJ" [numChannels,trigger,dur,in_,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  GrainSinJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 freq=440.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0-grainSinJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-grainSinJ rate numChannels trigger dur freq grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainSinJ" [numChannels,trigger,dur,freq,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId---- | dynamical system simulation (Newtonian gravitational force)------  GravityGrid [AR] reset=0.0 rate=0.1 newx=0.0 newy=0.0 bufnum=0.0-gravityGrid :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-gravityGrid rate reset rate_ newx newy bufnum = mkUGen Nothing [AR] (Left rate) "GravityGrid" [reset,rate_,newx,newy,bufnum] Nothing 1 (Special 0) NoId---- | dynamical system simulation (Newtonian gravitational force)------  GravityGrid2 [AR] reset=0.0 rate=0.1 newx=0.0 newy=0.0 bufnum=0.0-gravityGrid2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-gravityGrid2 rate reset rate_ newx newy bufnum = mkUGen Nothing [AR] (Left rate) "GravityGrid2" [reset,rate_,newx,newy,bufnum] Nothing 1 (Special 0) NoId---- | algorithmic delay------  GreyholeRaw [AR] in1=0.0 in2=0.0 damping=0.0 delaytime=2.0 diffusion=0.5 feedback=0.9 moddepth=0.1 modfreq=2.0 size=1.0-greyholeRaw :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-greyholeRaw in1 in2 damping delaytime diffusion feedback moddepth modfreq size = mkUGen Nothing [AR] (Right [0,1]) "GreyholeRaw" [in1,in2,damping,delaytime,diffusion,feedback,moddepth,modfreq,size] Nothing 2 (Special 0) NoId---- | Simple cochlear hair cell model------  HairCell [KR,AR] input=0.0 spontaneousrate=0.0 boostrate=200.0 restorerate=1000.0 loss=0.99-hairCell :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-hairCell rate input spontaneousrate boostrate restorerate loss = mkUGen Nothing [KR,AR] (Left rate) "HairCell" [input,spontaneousrate,boostrate,restorerate,loss] Nothing 1 (Special 0) NoId---- | henon map 2D chaotic generator------  Henon2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933-henon2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-henon2DC rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DC" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId---- | henon map 2D chaotic generator------  Henon2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933-henon2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-henon2DL rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DL" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId---- | henon map 2D chaotic generator------  Henon2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933-henon2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-henon2DN rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DN" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  HenonTrig [KR,AR] minfreq=5.0 maxfreq=10.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933-henonTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-henonTrig rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "HenonTrig" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId---- | Transform a cepstrum back to a spectrum------  ICepstrum [] cepchain=0.0 fftbuf=0.0-iCepstrum :: Rate -> UGen -> UGen -> UGen-iCepstrum rate cepchain fftbuf = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "ICepstrum" [cepchain,fftbuf] Nothing 1 (Special 0) NoId---- | 24db/oct rolloff, 4nd order resonant Low Pass Filter------  IIRFilter [AR] in=0.0 freq=440.0 rq=1.0-iirFilter :: UGen -> UGen -> UGen -> UGen-iirFilter in_ freq rq = mkUGen Nothing [AR] (Right [0]) "IIRFilter" [in_,freq,rq] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  InGrain [AR] trigger=0.0 dur=1.0 in=0.0-inGrain :: Rate -> UGen -> UGen -> UGen -> UGen-inGrain rate trigger dur in_ = mkUGen Nothing [AR] (Left rate) "InGrain" [trigger,dur,in_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  InGrainB [AR] trigger=0.0 dur=1.0 in=0.0 envbuf=0.0-inGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-inGrainB rate trigger dur in_ envbuf = mkUGen Nothing [AR] (Left rate) "InGrainB" [trigger,dur,in_,envbuf] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  InGrainBBF [AR] trigger=0.0 dur=1.0 in=0.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0-inGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-inGrainBBF rate trigger dur in_ envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainBBF" [trigger,dur,in_,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  InGrainBF [AR] trigger=0.0 dur=1.0 in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0-inGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-inGrainBF rate trigger dur in_ azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainBF" [trigger,dur,in_,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  InGrainI [AR] trigger=0.0 dur=1.0 in=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5-inGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-inGrainI rate trigger dur in_ envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "InGrainI" [trigger,dur,in_,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  InGrainIBF [AR] trigger=0.0 dur=1.0 in=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0-inGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-inGrainIBF rate trigger dur in_ envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainIBF" [trigger,dur,in_,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId---- | Distortion by subtracting magnitude from 1------  InsideOut [KR,AR] in=0.0-insideOut :: Rate -> UGen -> UGen-insideOut rate in_ = mkUGen Nothing [KR,AR] (Left rate) "InsideOut" [in_] Nothing 1 (Special 0) NoId---- | instruction synthesis (breakpoint set interpreter)------  Instruction [AR] bufnum=0.0-instruction :: Rate -> UGen -> UGen-instruction rate bufnum = mkUGen Nothing [AR] (Left rate) "Instruction" [bufnum] Nothing 1 (Special 0) NoId---- | Raw version of the JPverb algorithmic reverberator, designed to produce long tails with chorusing------  JPverbRaw [KR,AR] in1=0.0 in2=0.0 damp=0.0 earlydiff=0.707 highband=2000.0 highx=1.0 lowband=500.0 lowx=1.0 mdepth=0.1 mfreq=2.0 midx=1.0 size=1.0 t60=1.0;    FILTER: TRUE-jPverbRaw :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-jPverbRaw in1 in2 damp earlydiff highband highx lowband lowx mdepth mfreq midx size t60 = mkUGen Nothing [KR,AR] (Right [0]) "JPverbRaw" [in1,in2,damp,earlydiff,highband,highx,lowband,lowx,mdepth,mfreq,midx,size,t60] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  JoshGrain [] maxSize=0.0-joshGrain :: Rate -> UGen -> UGen-joshGrain rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "JoshGrain" [maxSize] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  JoshMultiChannelGrain [] maxSize=0.0-joshMultiChannelGrain :: Rate -> UGen -> UGen-joshMultiChannelGrain rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "JoshMultiChannelGrain" [maxSize] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  JoshMultiOutGrain [] maxSize=0.0-joshMultiOutGrain :: Rate -> UGen -> UGen-joshMultiOutGrain rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "JoshMultiOutGrain" [maxSize] Nothing 1 (Special 0) NoId---- | k-means classification in real time------  KMeansRT [KR] bufnum=0.0 inputdata=0.0 k=5.0 gate=1.0 reset=0.0 learn=1.0-kMeansRT :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-kMeansRT rate bufnum inputdata k gate_ reset learn = mkUGen Nothing [KR] (Left rate) "KMeansRT" [bufnum,inputdata,k,gate_,reset,learn] Nothing 1 (Special 0) NoId---- | Running score of maximum correlation of chromagram with key profiles------  KeyClarity [KR] chain=0.0 keydecay=2.0 chromaleak=0.5-keyClarity :: Rate -> UGen -> UGen -> UGen -> UGen-keyClarity rate chain keydecay chromaleak = mkUGen Nothing [KR] (Left rate) "KeyClarity" [chain,keydecay,chromaleak] Nothing 1 (Special 0) NoId---- | Find best correlated key mode with chromagram between major, minor and chromatic cluster------  KeyMode [KR] chain=0.0 keydecay=2.0 chromaleak=0.5-keyMode :: Rate -> UGen -> UGen -> UGen -> UGen-keyMode rate chain keydecay chromaleak = mkUGen Nothing [KR] (Left rate) "KeyMode" [chain,keydecay,chromaleak] Nothing 1 (Special 0) NoId---- | K-means Oscillator------  KmeansToBPSet1 [AR] freq=440.0 numdatapoints=20.0 maxnummeans=4.0 nummeans=4.0 tnewdata=1.0 tnewmeans=1.0 soft=1.0 bufnum=0.0-kmeansToBPSet1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-kmeansToBPSet1 rate freq numdatapoints maxnummeans nummeans tnewdata tnewmeans soft bufnum = mkUGen Nothing [AR] (Left rate) "KmeansToBPSet1" [freq,numdatapoints,maxnummeans,nummeans,tnewdata,tnewmeans,soft,bufnum] Nothing 1 (Special 0) NoId---- | random walk step------  LFBrownNoise0 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET-lfBrownNoise0 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen-lfBrownNoise0 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise0" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)---- | random walk linear interp------  LFBrownNoise1 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET-lfBrownNoise1 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen-lfBrownNoise1 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise1" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)---- | random walk cubic interp------  LFBrownNoise2 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET-lfBrownNoise2 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen-lfBrownNoise2 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise2" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)---- | Live Linear Predictive Coding Analysis and Resynthesis------  LPCAnalyzer [AR] input=0.0 source=1.0e-2 n=256.0 p=10.0 testE=0.0 delta=0.999 windowtype=0.0;    FILTER: TRUE-lpcAnalyzer :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-lpcAnalyzer input source n p testE delta windowtype = mkUGen Nothing [AR] (Right [0,1]) "LPCAnalyzer" [input,source,n,p,testE,delta,windowtype] Nothing 1 (Special 0) NoId---- | Linear Predictive Coding Gone Wrong------  LPCError [AR] input=0.0 p=10.0-lpcError :: Rate -> UGen -> UGen -> UGen-lpcError rate input p = mkUGen Nothing [AR] (Left rate) "LPCError" [input,p] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  LPCSynth [AR] buffer=0.0 signal=0.0 pointer=0.0-lpcSynth :: UGen -> UGen -> UGen -> UGen-lpcSynth buffer signal pointer = mkUGen Nothing [AR] (Left AR) "LPCSynth" [buffer,signal,pointer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  LPCVals [KR,AR] buffer=0.0 pointer=0.0-lpcVals :: Rate -> UGen -> UGen -> UGen-lpcVals rate buffer pointer = mkUGen Nothing [KR,AR] (Left rate) "LPCVals" [buffer,pointer] Nothing 3 (Special 0) NoId---- | (Undocumented class)------  LPF1 [KR,AR] in=0.0 freq=1000.0-lPF1 :: Rate -> UGen -> UGen -> UGen-lPF1 rate in_ freq = mkUGen Nothing [KR,AR] (Left rate) "LPF1" [in_,freq] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  LPF18 [AR] in=0.0 freq=100.0 res=1.0 dist=0.4-lPF18 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-lPF18 rate in_ freq res dist = mkUGen Nothing [AR] (Left rate) "LPF18" [in_,freq,res,dist] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  LPFVS6 [KR,AR] in=0.0 freq=1000.0 slope=0.5-lPFVS6 :: Rate -> UGen -> UGen -> UGen -> UGen-lPFVS6 rate in_ freq slope_ = mkUGen Nothing [KR,AR] (Left rate) "LPFVS6" [in_,freq,slope_] Nothing 1 (Special 0) NoId---- | Linear Time Invariant General Filter Equation------  LTI [AR] input=0.0 bufnuma=0.0 bufnumb=1.0-lti :: Rate -> UGen -> UGen -> UGen -> UGen-lti rate input bufnuma bufnumb = mkUGen Nothing [AR] (Left rate) "LTI" [input,bufnuma,bufnumb] Nothing 1 (Special 0) NoId---- | latoocarfian 2D chaotic generator------  Latoocarfian2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332-latoocarfian2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-latoocarfian2DC rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DC" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId---- | latoocarfian 2D chaotic generator------  Latoocarfian2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332-latoocarfian2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-latoocarfian2DL rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DL" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId---- | latoocarfian 2D chaotic generator------  Latoocarfian2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332-latoocarfian2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-latoocarfian2DN rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DN" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  LatoocarfianTrig [KR,AR] minfreq=5.0 maxfreq=10.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332-latoocarfianTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-latoocarfianTrig rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "LatoocarfianTrig" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId---- | Emit a sequence of triggers at specified time offsets------  ListTrig [KR] bufnum=0.0 reset=0.0 offset=0.0 numframes=0.0-listTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-listTrig rate bufnum reset offset numframes = mkUGen Nothing [KR] (Left rate) "ListTrig" [bufnum,reset,offset,numframes] Nothing 1 (Special 0) NoId---- | Emit a sequence of triggers at specified time offsets------  ListTrig2 [KR] bufnum=0.0 reset=0.0 numframes=0.0-listTrig2 :: Rate -> UGen -> UGen -> UGen -> UGen-listTrig2 rate bufnum reset numframes = mkUGen Nothing [KR] (Left rate) "ListTrig2" [bufnum,reset,numframes] Nothing 1 (Special 0) NoId---- | Store values to a buffer, whenever triggered------  Logger [KR] inputArray=0.0 trig=0.0 bufnum=0.0 reset=0.0-logger :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-logger rate inputArray trig_ bufnum reset = mkUGen Nothing [KR] (Left rate) "Logger" [inputArray,trig_,bufnum,reset] Nothing 1 (Special 0) NoId---- | sample looping oscillator------  LoopBuf [AR] bufnum=0.0 rate=1.0 gate=1.0 startPos=0.0 startLoop=0.0 endLoop=0.0 interpolation=2.0;    NC INPUT: True-loopBuf :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-loopBuf numChannels rate bufnum rate_ gate_ startPos startLoop endLoop interpolation = mkUGen Nothing [AR] (Left rate) "LoopBuf" [bufnum,rate_,gate_,startPos,startLoop,endLoop,interpolation] Nothing numChannels (Special 0) NoId---- | lorenz 2D chaotic generator------  Lorenz2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363-lorenz2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-lorenz2DC rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DC" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId---- | lorenz 2D chaotic generator------  Lorenz2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363-lorenz2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-lorenz2DL rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DL" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId---- | lorenz 2D chaotic generator------  Lorenz2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363-lorenz2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-lorenz2DN rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DN" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId---- | lorenz chaotic trigger generator------  LorenzTrig [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363-lorenzTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-lorenzTrig rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "LorenzTrig" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  MCLDChaosGen [] maxSize=0.0-mCLDChaosGen :: Rate -> UGen -> UGen-mCLDChaosGen rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "MCLDChaosGen" [maxSize] Nothing 1 (Special 0) NoId---- | First order Markov Chain implementation for audio signals------  MarkovSynth [AR] in=0.0 isRecording=1.0 waitTime=2.0 tableSize=10.0-markovSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-markovSynth rate in_ isRecording waitTime tableSize = mkUGen Nothing [AR] (Left rate) "MarkovSynth" [in_,isRecording,waitTime,tableSize] Nothing 1 (Special 0) NoId---- | Real time sparse representation------  MatchingP [KR,AR] dict=0.0 in=0.0 dictsize=1.0 ntofind=1.0 hop=1.0 method=0.0-matchingP :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-matchingP rate dict in_ dictsize ntofind hop method = mkUGen Nothing [KR,AR] (Left rate) "MatchingP" [dict,in_,dictsize,ntofind,hop,method] Nothing 4 (Special 0) NoId---- | maximum within last x samples------  Max [KR] in=0.0 numsamp=64.0-max :: Rate -> UGen -> UGen -> UGen-max rate in_ numsamp = mkUGen Nothing [KR] (Left rate) "Max" [in_,numsamp] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Maxamp [AR] in=0.0 numSamps=1000.0-maxamp :: Rate -> UGen -> UGen -> UGen-maxamp rate in_ numSamps = mkUGen Nothing [AR] (Left rate) "Maxamp" [in_,numSamps] Nothing 1 (Special 0) NoId---- | Piano synthesiser------  MdaPiano [AR] freq=440.0 gate=1.0 vel=100.0 decay=0.8 release=0.8 hard=0.8 velhard=0.8 muffle=0.8 velmuff=0.8 velcurve=0.8 stereo=0.2 tune=0.5 random=0.1 stretch=0.1 sustain=0.0-mdaPiano :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-mdaPiano rate freq gate_ vel decay_ release hard velhard muffle velmuff velcurve stereo tune random stretch sustain = mkUGen Nothing [AR] (Left rate) "MdaPiano" [freq,gate_,vel,decay_,release,hard,velhard,muffle,velmuff,velcurve,stereo,tune,random,stretch,sustain] Nothing 2 (Special 0) NoId---- | Mean of recent values, triggered------  MeanTriggered [KR,AR] in=0.0 trig=0.0 length=10.0-meanTriggered :: Rate -> UGen -> UGen -> UGen -> UGen-meanTriggered rate in_ trig_ length_ = mkUGen Nothing [KR,AR] (Left rate) "MeanTriggered" [in_,trig_,length_] Nothing 1 (Special 0) NoId---- | Meddis cochlear hair cell model------  Meddis [KR,AR] input=0.0-meddis :: Rate -> UGen -> UGen-meddis rate input = mkUGen Nothing [KR,AR] (Left rate) "Meddis" [input] Nothing 1 (Special 0) NoId---- | Separate harmonic and percussive parts of a signal------  MedianSeparation [] fft=0.0 fftharmonic=0.0 fftpercussive=0.0 fftsize=1024.0 mediansize=17.0 hardorsoft=0.0 p=2.0 medianormax=0.0-medianSeparation :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-medianSeparation rate fft_ fftharmonic fftpercussive fftsize mediansize hardorsoft p medianormax = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "MedianSeparation" [fft_,fftharmonic,fftpercussive,fftsize,mediansize,hardorsoft,p,medianormax] Nothing 2 (Special 0) NoId---- | Median of recent values, triggered------  MedianTriggered [KR,AR] in=0.0 trig=0.0 length=10.0-medianTriggered :: Rate -> UGen -> UGen -> UGen -> UGen-medianTriggered rate in_ trig_ length_ = mkUGen Nothing [KR,AR] (Left rate) "MedianTriggered" [in_,trig_,length_] Nothing 1 (Special 0) NoId---- | Waveguide mesh physical models of drum membranes------  MembraneCircle [AR] excitation=0.0 tension=5.0e-2 loss=0.99999-membraneCircle :: Rate -> UGen -> UGen -> UGen -> UGen-membraneCircle rate excitation tension loss = mkUGen Nothing [AR] (Left rate) "MembraneCircle" [excitation,tension,loss] Nothing 1 (Special 0) NoId---- | Waveguide mesh physical models of drum membranes------  MembraneHexagon [AR] excitation=0.0 tension=5.0e-2 loss=0.99999-membraneHexagon :: Rate -> UGen -> UGen -> UGen -> UGen-membraneHexagon rate excitation tension loss = mkUGen Nothing [AR] (Left rate) "MembraneHexagon" [excitation,tension,loss] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Metro [KR,AR] bpm=0.0 numBeats=0.0-metro :: Rate -> UGen -> UGen -> UGen-metro rate bpm numBeats = mkUGen Nothing [KR,AR] (Left rate) "Metro" [bpm,numBeats] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  MonoGrain [AR] in=0.0 winsize=0.1 grainrate=10.0 winrandpct=0.0-monoGrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-monoGrain rate in_ winsize grainrate winrandpct = mkUGen Nothing [AR] (Left rate) "MonoGrain" [in_,winsize,grainrate,winrandpct] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  MonoGrainBF [AR] in=0.0 winsize=0.1 grainrate=10.0 winrandpct=0.0 azimuth=0.0 azrand=0.0 elevation=0.0 elrand=0.0 rho=1.0-monoGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-monoGrainBF rate in_ winsize grainrate winrandpct azimuth azrand elevation elrand rho = mkUGen Nothing [AR] (Left rate) "MonoGrainBF" [in_,winsize,grainrate,winrandpct,azimuth,azrand,elevation,elrand,rho] Nothing 4 (Special 0) NoId---- | Moog Filter Emulation------  MoogLadder [KR,AR] in=0.0 ffreq=440.0 res=0.0-moogLadder :: UGen -> UGen -> UGen -> UGen-moogLadder in_ ffreq res = mkUGen Nothing [KR,AR] (Right [0]) "MoogLadder" [in_,ffreq,res] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  MoogVCF [AR] in=0.0 fco=0.0 res=0.0-moogVCF :: UGen -> UGen -> UGen -> UGen-moogVCF in_ fco res = mkUGen Nothing [AR] (Right [0]) "MoogVCF" [in_,fco,res] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  MultiOutDemandUGen [DR] maxSize=0.0;    DEMAND/NONDET-multiOutDemandUGen :: Rate -> UGen -> UGen-multiOutDemandUGen rate maxSize = mkUGen Nothing [DR] (Left rate) "MultiOutDemandUGen" [maxSize] Nothing 1 (Special 0) NoId---- | Stereo reverb------  NHHall [AR] in1=0.0 in2=0.0 rt60=1.0 stereo=0.5 lowFreq=200.0 lowRatio=0.5 hiFreq=4000.0 hiRatio=0.5 earlyDiffusion=0.5 lateDiffusion=0.5 modRate=0.2 modDepth=0.3-nhHall :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-nhHall in1 in2 rt60 stereo lowFreq lowRatio hiFreq hiRatio earlyDiffusion lateDiffusion modRate modDepth = mkUGen Nothing [AR] (Right [0,1]) "NHHall" [in1,in2,rt60,stereo,lowFreq,lowRatio,hiFreq,hiRatio,earlyDiffusion,lateDiffusion,modRate,modDepth] Nothing 2 (Special 0) NoId---- | Non Linear Filter Equation------  NL [AR] input=0.0 bufnuma=0.0 bufnumb=1.0 guard1=1000.0 guard2=100.0-nl :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-nl rate input bufnuma bufnumb guard1 guard2 = mkUGen Nothing [AR] (Left rate) "NL" [input,bufnuma,bufnumb,guard1,guard2] Nothing 1 (Special 0) NoId---- | Arbitrary Non Linear Filter Equation------  NL2 [AR] input=0.0 bufnum=0.0 maxsizea=10.0 maxsizeb=10.0 guard1=1000.0 guard2=100.0-nL2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-nL2 rate input bufnum maxsizea maxsizeb guard1 guard2 = mkUGen Nothing [AR] (Left rate) "NL2" [input,bufnum,maxsizea,maxsizeb,guard1,guard2] Nothing 1 (Special 0) NoId---- | Non-linear Filter------  NLFiltC [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0-nLFiltC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-nLFiltC rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltC" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId---- | Non-linear Filter------  NLFiltL [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0-nLFiltL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-nLFiltL rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltL" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId---- | Non-linear Filter------  NLFiltN [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0-nLFiltN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-nLFiltN rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltN" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId---- | physical modeling simulation; N tubes------  NTube [AR] input=0.0 lossarray=1.0 karray=0.0 delaylengtharray=0.0-nTube :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-nTube rate input lossarray karray delaylengtharray = mkUGen Nothing [AR] (Left rate) "NTube" [input,lossarray,karray,delaylengtharray] Nothing 1 (Special 0) NoId---- | Find the nearest-neighbours in a set of points------  NearestN [KR] treebuf=0.0 in=0.0 gate=1.0 num=1.0-nearestN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-nearestN rate treebuf in_ gate_ num = mkUGen Nothing [KR] (Left rate) "NearestN" [treebuf,in_,gate_,num] Nothing 3 (Special 0) NoId---- | (Undocumented class)------  NeedleRect [AR] rate=1.0 imgWidth=100.0 imgHeight=100.0 rectX=0.0 rectY=0.0 rectW=100.0 rectH=100.0-needleRect :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-needleRect rate rate_ imgWidth imgHeight rectX rectY rectW rectH = mkUGen Nothing [AR] (Left rate) "NeedleRect" [rate_,imgWidth,imgHeight,rectX,rectY,rectW,rectH] Nothing 1 (Special 0) NoId---- | Nested Allpass filters as proposed by Vercoe and Pluckett------  NestedAllpassC [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE-nestedAllpassC :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-nestedAllpassC in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassC" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId---- | Nested Allpass filters as proposed by Vercoe and Pluckett------  NestedAllpassL [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE-nestedAllpassL :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-nestedAllpassL in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassL" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId---- | Nested Allpass filters as proposed by Vercoe and Pluckett------  NestedAllpassN [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE-nestedAllpassN :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-nestedAllpassN in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassN" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  OSFold4 [AR] in=0.0 lo=0.0 hi=0.0-oSFold4 :: Rate -> UGen -> UGen -> UGen -> UGen-oSFold4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSFold4" [in_,lo,hi] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  OSFold8 [AR] in=0.0 lo=0.0 hi=0.0-oSFold8 :: Rate -> UGen -> UGen -> UGen -> UGen-oSFold8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSFold8" [in_,lo,hi] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  OSTrunc4 [AR] in=0.0 quant=0.5-oSTrunc4 :: Rate -> UGen -> UGen -> UGen-oSTrunc4 rate in_ quant = mkUGen Nothing [AR] (Left rate) "OSTrunc4" [in_,quant] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  OSTrunc8 [AR] in=0.0 quant=0.5-oSTrunc8 :: Rate -> UGen -> UGen -> UGen-oSTrunc8 rate in_ quant = mkUGen Nothing [AR] (Left rate) "OSTrunc8" [in_,quant] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  OSWrap4 [AR] in=0.0 lo=0.0 hi=0.0-oSWrap4 :: Rate -> UGen -> UGen -> UGen -> UGen-oSWrap4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSWrap4" [in_,lo,hi] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  OSWrap8 [AR] in=0.0 lo=0.0 hi=0.0-oSWrap8 :: Rate -> UGen -> UGen -> UGen -> UGen-oSWrap8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSWrap8" [in_,lo,hi] Nothing 1 (Special 0) NoId---- | Extract basic statistics from a series of onset triggers------  OnsetStatistics [KR] input=0.0 windowsize=1.0 hopsize=0.1-onsetStatistics :: Rate -> UGen -> UGen -> UGen -> UGen-onsetStatistics rate input windowsize hopsize = mkUGen Nothing [KR] (Left rate) "OnsetStatistics" [input,windowsize,hopsize] Nothing 3 (Special 0) NoId---- | Chemical reaction modelling Oscillator------  Oregonator [AR] reset=0.0 rate=1.0e-2 epsilon=1.0 mu=1.0 q=1.0 initx=0.5 inity=0.5 initz=0.5-oregonator :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-oregonator rate reset rate_ epsilon mu q initx inity initz = mkUGen Nothing [AR] (Left rate) "Oregonator" [reset,rate_,epsilon,mu,q,initx,inity,initz] Nothing 3 (Special 0) NoId---- | Piano physical model.------  OteyPiano [AR] freq=440.0 vel=1.0 t_gate=0.0 rmin=0.35 rmax=2.0 rampl=4.0 rampr=8.0 rcore=1.0 lmin=7.0e-2 lmax=1.4 lampl=-4.0 lampr=4.0 rho=1.0 e=1.0 zb=1.0 zh=0.0 mh=1.0 k=0.2 alpha=1.0 p=1.0 hpos=0.142 loss=1.0 detune=3.0e-4 hammer_type=1.0-oteyPiano :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-oteyPiano rate freq vel t_gate rmin rmax rampl rampr rcore lmin lmax lampl lampr rho e zb zh mh k alpha p hpos loss detune hammer_type = mkUGen Nothing [AR] (Left rate) "OteyPiano" [freq,vel,t_gate,rmin,rmax,rampl,rampr,rcore,lmin,lmax,lampl,lampr,rho,e,zb,zh,mh,k,alpha,p,hpos,loss,detune,hammer_type] Nothing 1 (Special 0) NoId---- | Piano physical model.------  OteyPianoStrings [AR] freq=440.0 vel=1.0 t_gate=0.0 rmin=0.35 rmax=2.0 rampl=4.0 rampr=8.0 rcore=1.0 lmin=7.0e-2 lmax=1.4 lampl=-4.0 lampr=4.0 rho=1.0 e=1.0 zb=1.0 zh=0.0 mh=1.0 k=0.2 alpha=1.0 p=1.0 hpos=0.142 loss=1.0 detune=3.0e-4 hammer_type=1.0-oteyPianoStrings :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-oteyPianoStrings rate freq vel t_gate rmin rmax rampl rampr rcore lmin lmax lampl lampr rho e zb zh mh k alpha p hpos loss detune hammer_type = mkUGen Nothing [AR] (Left rate) "OteyPianoStrings" [freq,vel,t_gate,rmin,rmax,rampl,rampr,rcore,lmin,lmax,lampl,lampr,rho,e,zb,zh,mh,k,alpha,p,hpos,loss,detune,hammer_type] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  OteySoundBoard [AR] inp=0.0 c1=20.0 c3=20.0 mix=0.8-oteySoundBoard :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-oteySoundBoard rate inp c1 c3 mix = mkUGen Nothing [AR] (Left rate) "OteySoundBoard" [inp,c1,c3,mix] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PVInfo [KR,AR] pvbuffer=0.0 binNum=0.0 filePointer=0.0-pVInfo :: Rate -> UGen -> UGen -> UGen -> UGen-pVInfo rate pvbuffer binNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "PVInfo" [pvbuffer,binNum,filePointer] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  PVSynth [AR] pvbuffer=0.0 numBins=0.0 binStart=0.0 binSkip=1.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0-pVSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-pVSynth rate pvbuffer numBins binStart binSkip filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "PVSynth" [pvbuffer,numBins,binStart,binSkip,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_BinBufRd [KR] buffer=0.0 playbuf=0.0 point=1.0 binStart=0.0 binSkip=1.0 numBins=1.0 clear=0.0-pv_BinBufRd :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-pv_BinBufRd buffer playbuf_ point binStart binSkip numBins clear = mkUGen Nothing [KR] (Left KR) "PV_BinBufRd" [buffer,playbuf_,point,binStart,binSkip,numBins,clear] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_BinDelay [KR] buffer=0.0 maxdelay=0.0 delaybuf=0.0 fbbuf=0.0 hop=0.5-pv_BinDelay :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen-pv_BinDelay buffer maxdelay delaybuf fbbuf hop = mkUGen Nothing [KR] (Left KR) "PV_BinDelay" [buffer,maxdelay,delaybuf,fbbuf,hop] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_BinFilter [KR] buffer=0.0 start=0.0 end=0.0-pv_BinFilter :: UGen -> UGen -> UGen -> UGen-pv_BinFilter buffer start end = mkUGen Nothing [KR] (Left KR) "PV_BinFilter" [buffer,start,end] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_BinPlayBuf [KR] buffer=0.0 playbuf=0.0 rate=1.0 offset=0.0 binStart=0.0 binSkip=1.0 numBins=1.0 loop=0.0 clear=0.0-pv_BinPlayBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-pv_BinPlayBuf buffer playbuf_ rate_ offset binStart binSkip numBins loop clear = mkUGen Nothing [KR] (Left KR) "PV_BinPlayBuf" [buffer,playbuf_,rate_,offset,binStart,binSkip,numBins,loop,clear] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_BufRd [KR] buffer=0.0 playbuf=0.0 point=1.0-pv_BufRd :: UGen -> UGen -> UGen -> UGen-pv_BufRd buffer playbuf_ point = mkUGen Nothing [KR] (Left KR) "PV_BufRd" [buffer,playbuf_,point] Nothing 1 (Special 0) NoId---- | returns common magnitudes------  PV_CommonMag [KR] bufferA=0.0 bufferB=0.0 tolerance=0.0 remove=0.0-pv_CommonMag :: UGen -> UGen -> UGen -> UGen -> UGen-pv_CommonMag bufferA bufferB tolerance remove = mkUGen Nothing [KR] (Left KR) "PV_CommonMag" [bufferA,bufferB,tolerance,remove] Nothing 1 (Special 0) NoId---- | multiplies common magnitudes------  PV_CommonMul [KR] bufferA=0.0 bufferB=0.0 tolerance=0.0 remove=0.0-pv_CommonMul :: UGen -> UGen -> UGen -> UGen -> UGen-pv_CommonMul bufferA bufferB tolerance remove = mkUGen Nothing [KR] (Left KR) "PV_CommonMul" [bufferA,bufferB,tolerance,remove] Nothing 1 (Special 0) NoId---- | simple spectral compression/expansion------  PV_Compander [KR] buffer=0.0 thresh=50.0 slopeBelow=1.0 slopeAbove=1.0-pv_Compander :: UGen -> UGen -> UGen -> UGen -> UGen-pv_Compander buffer thresh slopeBelow slopeAbove = mkUGen Nothing [KR] (Left KR) "PV_Compander" [buffer,thresh,slopeBelow,slopeAbove] Nothing 1 (Special 0) NoId---- | zero bins with interpolation------  PV_Cutoff [KR] bufferA=0.0 bufferB=0.0 wipe=0.0-pv_Cutoff :: UGen -> UGen -> UGen -> UGen-pv_Cutoff bufferA bufferB wipe = mkUGen Nothing [KR] (Left KR) "PV_Cutoff" [bufferA,bufferB,wipe] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_EvenBin [KR] buffer=0.0-pv_EvenBin :: UGen -> UGen-pv_EvenBin buffer = mkUGen Nothing [KR] (Left KR) "PV_EvenBin" [buffer] Nothing 1 (Special 0) NoId---- | extract a repeating loop out from audio------  PV_ExtractRepeat [KR] buffer=0.0 loopbuf=0.0 loopdur=0.0 memorytime=30.0 which=0.0 ffthop=0.5 thresh=1.0-pv_ExtractRepeat :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-pv_ExtractRepeat buffer loopbuf loopdur memorytime which ffthop thresh = mkUGen Nothing [KR] (Left KR) "PV_ExtractRepeat" [buffer,loopbuf,loopdur,memorytime,which,ffthop,thresh] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_Freeze [KR] buffer=0.0 freeze=0.0-pv_Freeze :: UGen -> UGen -> UGen-pv_Freeze buffer freeze = mkUGen Nothing [KR] (Left KR) "PV_Freeze" [buffer,freeze] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_FreqBuffer [KR] buffer=0.0 databuffer=0.0-pv_FreqBuffer :: UGen -> UGen -> UGen-pv_FreqBuffer buffer databuffer = mkUGen Nothing [KR] (Left KR) "PV_FreqBuffer" [buffer,databuffer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_Invert [KR] buffer=0.0-pv_Invert :: UGen -> UGen-pv_Invert buffer = mkUGen Nothing [KR] (Left KR) "PV_Invert" [buffer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_MagBuffer [KR] buffer=0.0 databuffer=0.0-pv_MagBuffer :: UGen -> UGen -> UGen-pv_MagBuffer buffer databuffer = mkUGen Nothing [KR] (Left KR) "PV_MagBuffer" [buffer,databuffer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_MagExp [KR] buffer=0.0-pv_MagExp :: UGen -> UGen-pv_MagExp buffer = mkUGen Nothing [KR] (Left KR) "PV_MagExp" [buffer] Nothing 1 (Special 0) NoId---- | reduces magnitudes above or below thresh------  PV_MagGate [KR] buffer=0.0 thresh=1.0 remove=0.0-pv_MagGate :: UGen -> UGen -> UGen -> UGen-pv_MagGate buffer thresh remove = mkUGen Nothing [KR] (Left KR) "PV_MagGate" [buffer,thresh,remove] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_MagLog [KR] buffer=0.0-pv_MagLog :: UGen -> UGen-pv_MagLog buffer = mkUGen Nothing [KR] (Left KR) "PV_MagLog" [buffer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_MagMap [KR] buffer=0.0 mapbuf=0.0-pv_MagMap :: UGen -> UGen -> UGen-pv_MagMap buffer mapbuf = mkUGen Nothing [KR] (Left KR) "PV_MagMap" [buffer,mapbuf] Nothing 1 (Special 0) NoId---- | subtract spectral energy------  PV_MagMinus [KR] bufferA=0.0 bufferB=0.0 remove=1.0-pv_MagMinus :: UGen -> UGen -> UGen -> UGen-pv_MagMinus bufferA bufferB remove = mkUGen Nothing [KR] (Left KR) "PV_MagMinus" [bufferA,bufferB,remove] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_MagMulAdd [KR] buffer=0.0-pv_MagMulAdd :: UGen -> UGen-pv_MagMulAdd buffer = mkUGen Nothing [KR] (Left KR) "PV_MagMulAdd" [buffer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_MagScale [KR] bufferA=0.0 bufferB=0.0-pv_MagScale :: UGen -> UGen -> UGen-pv_MagScale bufferA bufferB = mkUGen Nothing [KR] (Left KR) "PV_MagScale" [bufferA,bufferB] Nothing 1 (Special 0) NoId---- | Smooth spectral magnitudes over time------  PV_MagSmooth [KR] buffer=0.0 factor=0.1-pv_MagSmooth :: UGen -> UGen -> UGen-pv_MagSmooth buffer factor = mkUGen Nothing [KR] (Left KR) "PV_MagSmooth" [buffer,factor] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_MagSubtract [KR] bufferA=0.0 bufferB=0.0 zerolimit=0.0-pv_MagSubtract :: UGen -> UGen -> UGen -> UGen-pv_MagSubtract bufferA bufferB zerolimit = mkUGen Nothing [KR] (Left KR) "PV_MagSubtract" [bufferA,bufferB,zerolimit] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_MaxMagN [KR] buffer=0.0 numbins=0.0-pv_MaxMagN :: UGen -> UGen -> UGen-pv_MaxMagN buffer numbins = mkUGen Nothing [KR] (Left KR) "PV_MaxMagN" [buffer,numbins] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_MinMagN [KR] buffer=0.0 numbins=0.0-pv_MinMagN :: UGen -> UGen -> UGen-pv_MinMagN buffer numbins = mkUGen Nothing [KR] (Left KR) "PV_MinMagN" [buffer,numbins] Nothing 1 (Special 0) NoId---- | one kind of spectral morphing------  PV_Morph [KR] bufferA=0.0 bufferB=0.0 morph=0.0-pv_Morph :: UGen -> UGen -> UGen -> UGen-pv_Morph bufferA bufferB morph = mkUGen Nothing [KR] (Left KR) "PV_Morph" [bufferA,bufferB,morph] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_NoiseSynthF [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0-pv_NoiseSynthF :: UGen -> UGen -> UGen -> UGen -> UGen-pv_NoiseSynthF buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_NoiseSynthF" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_NoiseSynthP [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0-pv_NoiseSynthP :: UGen -> UGen -> UGen -> UGen -> UGen-pv_NoiseSynthP buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_NoiseSynthP" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_OddBin [KR] buffer=0.0-pv_OddBin :: UGen -> UGen-pv_OddBin buffer = mkUGen Nothing [KR] (Left KR) "PV_OddBin" [buffer] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_PartialSynthF [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0-pv_PartialSynthF :: UGen -> UGen -> UGen -> UGen -> UGen-pv_PartialSynthF buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_PartialSynthF" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_PartialSynthP [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0-pv_PartialSynthP :: UGen -> UGen -> UGen -> UGen -> UGen-pv_PartialSynthP buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_PartialSynthP" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_PitchShift [KR] buffer=0.0 ratio=0.0-pv_PitchShift :: UGen -> UGen -> UGen-pv_PitchShift buffer ratio = mkUGen Nothing [KR] (Left KR) "PV_PitchShift" [buffer,ratio] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_PlayBuf [KR] buffer=0.0 playbuf=0.0 rate=1.0 offset=0.0 loop=0.0-pv_PlayBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen-pv_PlayBuf buffer playbuf_ rate_ offset loop = mkUGen Nothing [KR] (Left KR) "PV_PlayBuf" [buffer,playbuf_,rate_,offset,loop] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_RecordBuf [KR] buffer=0.0 recbuf=0.0 offset=0.0 run=0.0 loop=0.0 hop=0.5 wintype=0.0-pv_RecordBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-pv_RecordBuf buffer recbuf offset run loop hop wintype = mkUGen Nothing [KR] (Left KR) "PV_RecordBuf" [buffer,recbuf,offset,run,loop,hop,wintype] Nothing 1 (Special 0) NoId---- | combine low and high bins from two inputs with interpolation------  PV_SoftWipe [KR] bufferA=0.0 bufferB=0.0 wipe=0.0-pv_SoftWipe :: UGen -> UGen -> UGen -> UGen-pv_SoftWipe bufferA bufferB wipe = mkUGen Nothing [KR] (Left KR) "PV_SoftWipe" [bufferA,bufferB,wipe] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_SpectralEnhance [KR] buffer=0.0 numPartials=8.0 ratio=2.0 strength=0.1-pv_SpectralEnhance :: UGen -> UGen -> UGen -> UGen -> UGen-pv_SpectralEnhance buffer numPartials ratio strength = mkUGen Nothing [KR] (Left KR) "PV_SpectralEnhance" [buffer,numPartials,ratio,strength] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_SpectralMap [KR] buffer=0.0 specBuffer=0.0 floor=0.0 freeze=0.0 mode=0.0 norm=0.0 window=0.0-pv_SpectralMap :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-pv_SpectralMap buffer specBuffer floor_ freeze mode norm window = mkUGen Nothing [KR] (Left KR) "PV_SpectralMap" [buffer,specBuffer,floor_,freeze,mode,norm,window] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PV_Whiten [KR] chain=0.0 trackbufnum=0.0 relaxtime=2.0 floor=0.1 smear=0.0 bindownsample=0.0-pv_Whiten :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-pv_Whiten chain trackbufnum relaxtime floor_ smear bindownsample = mkUGen Nothing [KR] (Left KR) "PV_Whiten" [chain,trackbufnum,relaxtime,floor_,smear,bindownsample] Nothing 1 (Special 0) NoId---- | one kind of spectral morphing------  PV_XFade [KR] bufferA=0.0 bufferB=0.0 fade=0.0-pv_XFade :: UGen -> UGen -> UGen -> UGen-pv_XFade bufferA bufferB fade = mkUGen Nothing [KR] (Left KR) "PV_XFade" [bufferA,bufferB,fade] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PanX [KR,AR] numChans=0.0 in=0.0 pos=0.0 level=1.0 width=2.0-panX :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-panX rate numChans in_ pos level width = mkUGen Nothing [KR,AR] (Left rate) "PanX" [numChans,in_,pos,level,width] Nothing 0 (Special 0) NoId---- | (Undocumented class)------  PanX2D [KR,AR] numChansX=0.0 numChansY=0.0 in=0.0 posX=0.0 posY=0.0 level=1.0 widthX=2.0 widthY=2.0-panX2D :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-panX2D rate numChansX numChansY in_ posX posY level widthX widthY = mkUGen Nothing [KR,AR] (Left rate) "PanX2D" [numChansX,numChansY,in_,posX,posY,level,widthX,widthY] Nothing 0 (Special 0) NoId---- | (Undocumented class)------  PeakEQ2 [AR] in=0.0 freq=1200.0 rs=1.0 db=0.0-peakEQ2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-peakEQ2 rate in_ freq rs db = mkUGen Nothing [AR] (Left rate) "PeakEQ2" [in_,freq,rs,db] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PeakEQ4 [AR] in=0.0 freq=1200.0 rs=1.0 db=0.0-peakEQ4 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-peakEQ4 rate in_ freq rs db = mkUGen Nothing [AR] (Left rate) "PeakEQ4" [in_,freq,rs,db] Nothing 1 (Special 0) NoId---- | 3D Perlin Noise------  Perlin3 [KR,AR] x=0.0 y=0.0 z=0.0-perlin3 :: Rate -> UGen -> UGen -> UGen -> UGen-perlin3 rate x y z = mkUGen Nothing [KR,AR] (Left rate) "Perlin3" [x,y,z] Nothing 1 (Special 0) NoId---- | Tree classifier using (hyper)planes – UGen or language-side------  PlaneTree [KR] treebuf=0.0 in=0.0 gate=1.0-planeTree :: Rate -> UGen -> UGen -> UGen -> UGen-planeTree rate treebuf in_ gate_ = mkUGen Nothing [KR] (Left rate) "PlaneTree" [treebuf,in_,gate_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  PosRatio [AR] in=0.0 period=100.0 thresh=0.1-posRatio :: Rate -> UGen -> UGen -> UGen -> UGen-posRatio rate in_ period thresh = mkUGen Nothing [AR] (Left rate) "PosRatio" [in_,period,thresh] Nothing 1 (Special 0) NoId---- | debug assistance------  PrintVal [KR] in=0.0 numblocks=100.0 id=0.0-printVal :: Rate -> UGen -> UGen -> UGen -> UGen-printVal rate in_ numblocks id_ = mkUGen Nothing [KR] (Left rate) "PrintVal" [in_,numblocks,id_] Nothing 1 (Special 0) NoId---- | constant Q transform pitch follower------  Qitch [KR] in=0.0 databufnum=0.0 ampThreshold=1.0e-2 algoflag=1.0 ampbufnum=0.0 minfreq=0.0 maxfreq=2500.0-qitch :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-qitch rate in_ databufnum ampThreshold algoflag ampbufnum minfreq maxfreq = mkUGen Nothing [KR] (Left rate) "Qitch" [in_,databufnum,ampThreshold,algoflag,ampbufnum,minfreq,maxfreq] Nothing 2 (Special 0) NoId---- | TB303 Filter Emulation------  RLPFD [KR,AR] in=0.0 ffreq=440.0 res=0.0 dist=0.0-rlpfd :: UGen -> UGen -> UGen -> UGen -> UGen-rlpfd in_ ffreq res dist = mkUGen Nothing [KR,AR] (Right [0]) "RLPFD" [in_,ffreq,res,dist] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  RMAFoodChainL [AR] freq=22050.0 a1=5.0 b1=3.0 d1=0.4 a2=0.1 b2=2.0 d2=1.0e-2 k=1.0943 r=0.8904 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0-rMAFoodChainL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-rMAFoodChainL rate freq a1 b1 d1 a2 b2 d2 k r h xi yi zi = mkUGen Nothing [AR] (Left rate) "RMAFoodChainL" [freq,a1,b1,d1,a2,b2,d2,k,r,h,xi,yi,zi] Nothing 3 (Special 0) NoId---- | (Undocumented class)------  RMEQ [AR] in=0.0 freq=440.0 rq=0.1 k=0.0-rMEQ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-rMEQ rate in_ freq rq k = mkUGen Nothing [AR] (Left rate) "RMEQ" [in_,freq,rq,k] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  RMEQSuite [] maxSize=0.0-rMEQSuite :: Rate -> UGen -> UGen-rMEQSuite rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "RMEQSuite" [maxSize] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  RMShelf [AR] in=0.0 freq=440.0 k=0.0-rMShelf :: Rate -> UGen -> UGen -> UGen -> UGen-rMShelf rate in_ freq k = mkUGen Nothing [AR] (Left rate) "RMShelf" [in_,freq,k] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  RMShelf2 [AR] in=0.0 freq=440.0 k=0.0-rMShelf2 :: Rate -> UGen -> UGen -> UGen -> UGen-rMShelf2 rate in_ freq k = mkUGen Nothing [AR] (Left rate) "RMShelf2" [in_,freq,k] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  RegaliaMitraEQ [AR] in=0.0 freq=440.0 rq=0.1 k=0.0-regaliaMitraEQ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-regaliaMitraEQ rate in_ freq rq k = mkUGen Nothing [AR] (Left rate) "RegaliaMitraEQ" [in_,freq,rq,k] Nothing 1 (Special 0) NoId---- | Rossler chaotic generator------  RosslerL [AR] freq=22050.0 a=0.2 b=0.2 c=5.7 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0-rosslerL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-rosslerL rate freq a b c h xi yi zi = mkUGen Nothing [AR] (Left rate) "RosslerL" [freq,a,b,c,h,xi,yi,zi] Nothing 3 (Special 0) NoId---- | (Undocumented class)------  RosslerResL [AR] in=0.0 stiff=1.0 freq=22050.0 a=0.2 b=0.2 c=5.7 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0-rosslerResL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-rosslerResL rate in_ stiff freq a b c h xi yi zi = mkUGen Nothing [AR] (Left rate) "RosslerResL" [in_,stiff,freq,a,b,c,h,xi,yi,zi] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Rotate [AR] w=0.0 x=0.0 y=0.0 z=0.0 rotate=0.0-rotate :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-rotate rate w x y z rotate_ = mkUGen Nothing [AR] (Left rate) "Rotate" [w,x,y,z,rotate_] Nothing 1 (Special 0) NoId---- | experimental time domain onset detector------  SLOnset [KR] input=0.0 memorysize1=20.0 before=5.0 after=5.0 threshold=10.0 hysteresis=10.0-sLOnset :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-sLOnset rate input memorysize1 before after threshold hysteresis = mkUGen Nothing [KR] (Left rate) "SLOnset" [input,memorysize1,before,after,threshold,hysteresis] Nothing 1 (Special 0) NoId---- | Spectral Modeling Synthesis------  SMS [AR] input=0.0 maxpeaks=80.0 currentpeaks=80.0 tolerance=4.0 noisefloor=0.2 freqmult=1.0 freqadd=0.0 formantpreserve=0.0 useifft=0.0 ampmult=1.0 graphicsbufnum=0.0;    FILTER: TRUE-sms :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-sms input maxpeaks currentpeaks tolerance noisefloor freqmult freqadd formantpreserve useifft ampmult graphicsbufnum = mkUGen Nothing [AR] (Right [0]) "SMS" [input,maxpeaks,currentpeaks,tolerance,noisefloor,freqmult,freqadd,formantpreserve,useifft,ampmult,graphicsbufnum] Nothing 2 (Special 0) NoId---- | (Undocumented class)------  SOMAreaWr [KR] bufnum=0.0 inputdata=0.0 coords=0.0 netsize=10.0 numdims=2.0 nhood=0.5 gate=1.0-sOMAreaWr :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-sOMAreaWr rate bufnum inputdata coords netsize numdims nhood gate_ = mkUGen Nothing [KR] (Left rate) "SOMAreaWr" [bufnum,inputdata,coords,netsize,numdims,nhood,gate_] Nothing 1 (Special 0) NoId---- | Map an input using a Self-Organising Map------  SOMRd [KR,AR] bufnum=0.0 inputdata=0.0 netsize=10.0 numdims=2.0 gate=1.0-sOMRd :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-sOMRd rate bufnum inputdata netsize numdims gate_ = mkUGen Nothing [KR,AR] (Left rate) "SOMRd" [bufnum,inputdata,netsize,numdims,gate_] Nothing 2 (Special 0) NoId---- | Create (train) a Self-Organising Map------  SOMTrain [KR] bufnum=0.0 inputdata=0.0 netsize=10.0 numdims=2.0 traindur=5000.0 nhood=0.5 gate=1.0 initweight=1.0-sOMTrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-sOMTrain rate bufnum inputdata netsize numdims traindur nhood gate_ initweight = mkUGen Nothing [KR] (Left rate) "SOMTrain" [bufnum,inputdata,netsize,numdims,traindur,nhood,gate_,initweight] Nothing 3 (Special 0) NoId---- | 12db/Oct State Variable Filter------  SVF [KR,AR] signal=0.0 cutoff=2200.0 res=0.1 lowpass=1.0 bandpass=0.0 highpass=0.0 notch=0.0 peak=0.0-svf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-svf signal cutoff res lowpass bandpass highpass notch peak_ = mkUGen Nothing [KR,AR] (Right [0]) "SVF" [signal,cutoff,res,lowpass,bandpass,highpass,notch,peak_] Nothing 1 (Special 0) NoId---- | super-efficient sawtooth oscillator with low aliasing------  SawDPW [KR,AR] freq=440.0 iphase=0.0-sawDPW :: Rate -> UGen -> UGen -> UGen-sawDPW rate freq iphase = mkUGen Nothing [KR,AR] (Left rate) "SawDPW" [freq,iphase] Nothing 1 (Special 0) NoId---- | Perceptual feature modeling sensory dissonance------  SensoryDissonance [KR] fft=0.0 maxpeaks=100.0 peakthreshold=0.1 norm=0.0 clamp=1.0-sensoryDissonance :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-sensoryDissonance rate fft_ maxpeaks peakthreshold norm clamp = mkUGen Nothing [KR] (Left rate) "SensoryDissonance" [fft_,maxpeaks,peakthreshold,norm,clamp] Nothing 1 (Special 0) NoId---- | Fuzzy sieve based synthesis------  Sieve1 [KR,AR] bufnum=0.0 gap=2.0 alternate=1.0-sieve1 :: Rate -> UGen -> UGen -> UGen -> UGen-sieve1 rate bufnum gap alternate = mkUGen Nothing [KR,AR] (Left rate) "Sieve1" [bufnum,gap,alternate] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  SinGrain [AR] trigger=0.0 dur=1.0 freq=440.0-sinGrain :: Rate -> UGen -> UGen -> UGen -> UGen-sinGrain rate trigger dur freq = mkUGen Nothing [AR] (Left rate) "SinGrain" [trigger,dur,freq] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  SinGrainB [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf=0.0-sinGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-sinGrainB rate trigger dur freq envbuf = mkUGen Nothing [AR] (Left rate) "SinGrainB" [trigger,dur,freq,envbuf] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  SinGrainBBF [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0-sinGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-sinGrainBBF rate trigger dur freq envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainBBF" [trigger,dur,freq,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  SinGrainBF [AR] trigger=0.0 dur=1.0 freq=440.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0-sinGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-sinGrainBF rate trigger dur freq azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainBF" [trigger,dur,freq,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  SinGrainI [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5-sinGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-sinGrainI rate trigger dur freq envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "SinGrainI" [trigger,dur,freq,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  SinGrainIBF [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0-sinGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-sinGrainIBF rate trigger dur freq envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainIBF" [trigger,dur,freq,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId---- | (Undocumented class)------  SinTone [AR] freq=440.0 phase=0.0-sinTone :: Rate -> UGen -> UGen -> UGen-sinTone rate freq phase = mkUGen Nothing [AR] (Left rate) "SinTone" [freq,phase] Nothing 1 (Special 0) NoId---- | port of some ladspa plugins------  SineShaper [AR] in=0.0 limit=1.0-sineShaper :: UGen -> UGen -> UGen-sineShaper in_ limit = mkUGen Nothing [AR] (Right [0]) "SineShaper" [in_,limit] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  SkipNeedle [AR] range=44100.0 rate=10.0 offset=0.0-skipNeedle :: Rate -> UGen -> UGen -> UGen -> UGen-skipNeedle rate range rate_ offset = mkUGen Nothing [AR] (Left rate) "SkipNeedle" [range,rate_,offset] Nothing 1 (Special 0) NoId---- | port of some ladspa plugins------  SmoothDecimator [AR] in=0.0 rate=44100.0 smoothing=0.5-smoothDecimator :: Rate -> UGen -> UGen -> UGen -> UGen-smoothDecimator rate in_ rate_ smoothing = mkUGen Nothing [AR] (Left rate) "SmoothDecimator" [in_,rate_,smoothing] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  SoftClipAmp [AR] in=0.0 pregain=1.0-softClipAmp :: Rate -> UGen -> UGen -> UGen-softClipAmp rate in_ pregain = mkUGen Nothing [AR] (Left rate) "SoftClipAmp" [in_,pregain] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  SoftClipAmp4 [AR] in=0.0 pregain=1.0-softClipAmp4 :: Rate -> UGen -> UGen -> UGen-softClipAmp4 rate in_ pregain = mkUGen Nothing [AR] (Left rate) "SoftClipAmp4" [in_,pregain] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  SoftClipAmp8 [AR] in=0.0 pregain=1.0-softClipAmp8 :: Rate -> UGen -> UGen -> UGen-softClipAmp8 rate in_ pregain = mkUGen Nothing [AR] (Left rate) "SoftClipAmp8" [in_,pregain] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  SoftClipper4 [AR] in=0.0-softClipper4 :: Rate -> UGen -> UGen-softClipper4 rate in_ = mkUGen Nothing [AR] (Left rate) "SoftClipper4" [in_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  SoftClipper8 [AR] in=0.0-softClipper8 :: Rate -> UGen -> UGen-softClipper8 rate in_ = mkUGen Nothing [AR] (Left rate) "SoftClipper8" [in_] Nothing 1 (Special 0) NoId---- | Karplus-Strong via a sorting algorithm------  SortBuf [AR] bufnum=0.0 sortrate=10.0 reset=0.0-sortBuf :: Rate -> UGen -> UGen -> UGen -> UGen-sortBuf rate bufnum sortrate reset = mkUGen Nothing [AR] (Left rate) "SortBuf" [bufnum,sortrate,reset] Nothing 1 (Special 0) NoId---- | Spectral feature extraction------  SpectralEntropy [KR] fft=0.0 fftsize=2048.0 numbands=1.0-spectralEntropy :: Rate -> UGen -> UGen -> UGen -> UGen-spectralEntropy rate fft_ fftsize numbands = mkUGen Nothing [KR] (Left rate) "SpectralEntropy" [fft_,fftsize,numbands] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Spreader [AR] in=0.0 theta=1.5707963267949 filtsPerOctave=8.0-spreader :: Rate -> UGen -> UGen -> UGen -> UGen-spreader rate in_ theta filtsPerOctave = mkUGen Nothing [AR] (Left rate) "Spreader" [in_,theta,filtsPerOctave] Nothing 2 (Special 0) NoId---- | Spruce bud worm model equations------  SpruceBudworm [AR] reset=0.0 rate=0.1 k1=27.9 k2=1.5 alpha=0.1 beta=10.1 mu=0.3 rho=10.1 initx=0.9 inity=0.1-spruceBudworm :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-spruceBudworm rate reset rate_ k1 k2 alpha beta mu rho initx inity = mkUGen Nothing [AR] (Left rate) "SpruceBudworm" [reset,rate_,k1,k2,alpha,beta,mu,rho,initx,inity] Nothing 2 (Special 0) NoId---- | Wave squeezer. Maybe a kind of pitch shifter.------  Squiz [KR,AR] in=0.0 pitchratio=2.0 zcperchunk=1.0 memlen=0.1;    FILTER: TRUE-squiz :: UGen -> UGen -> UGen -> UGen -> UGen-squiz in_ pitchratio zcperchunk memlen = mkUGen Nothing [KR,AR] (Right [0]) "Squiz" [in_,pitchratio,zcperchunk,memlen] Nothing 1 (Special 0) NoId---- | standard map 2D chaotic generator------  Standard2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381-standard2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-standard2DC rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DC" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId---- | standard map 2D chaotic generator------  Standard2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381-standard2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-standard2DL rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DL" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId---- | standard map 2D chaotic generator------  Standard2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381-standard2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-standard2DN rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DN" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkBandedWG [KR,AR] freq=440.0 instr=0.0 bowpressure=0.0 bowmotion=0.0 integration=0.0 modalresonance=64.0 bowvelocity=0.0 setstriking=0.0 trig=1.0-stkBandedWG :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkBandedWG rate freq instr bowpressure bowmotion integration modalresonance bowvelocity setstriking trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkBandedWG" [freq,instr,bowpressure,bowmotion,integration,modalresonance,bowvelocity,setstriking,trig_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkBeeThree [KR,AR] freq=440.0 op4gain=10.0 op3gain=20.0 lfospeed=64.0 lfodepth=0.0 adsrtarget=64.0 trig=1.0-stkBeeThree :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkBeeThree rate freq op4gain op3gain lfospeed lfodepth adsrtarget trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkBeeThree" [freq,op4gain,op3gain,lfospeed,lfodepth,adsrtarget,trig_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkBlowHole [KR,AR] freq=440.0 reedstiffness=64.0 noisegain=20.0 tonehole=64.0 register=11.0 breathpressure=64.0-stkBlowHole :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkBlowHole rate freq reedstiffness noisegain tonehole register breathpressure = mkUGen Nothing [KR,AR] (Left rate) "StkBlowHole" [freq,reedstiffness,noisegain,tonehole,register,breathpressure] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkBowed [KR,AR] freq=220.0 bowpressure=64.0 bowposition=64.0 vibfreq=64.0 vibgain=64.0 loudness=64.0 gate=1.0 attackrate=1.0 decayrate=1.0-stkBowed :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkBowed rate freq bowpressure bowposition vibfreq vibgain loudness_ gate_ attackrate decayrate = mkUGen Nothing [KR,AR] (Left rate) "StkBowed" [freq,bowpressure,bowposition,vibfreq,vibgain,loudness_,gate_,attackrate,decayrate] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkClarinet [KR,AR] freq=440.0 reedstiffness=64.0 noisegain=4.0 vibfreq=64.0 vibgain=11.0 breathpressure=64.0 trig=1.0-stkClarinet :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkClarinet rate freq reedstiffness noisegain vibfreq vibgain breathpressure trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkClarinet" [freq,reedstiffness,noisegain,vibfreq,vibgain,breathpressure,trig_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkFlute [KR,AR] freq=440.0 jetDelay=49.0 noisegain=0.15 jetRatio=0.32-stkFlute :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-stkFlute rate freq jetDelay noisegain jetRatio = mkUGen Nothing [KR,AR] (Left rate) "StkFlute" [freq,jetDelay,noisegain,jetRatio] Nothing 1 (Special 0) NoId---- | Wrapping Synthesis toolkit.------  StkGlobals [AR] showWarnings=0.0 printErrors=0.0 rawfilepath=0.0-stkGlobals :: Rate -> UGen -> UGen -> UGen -> UGen-stkGlobals rate showWarnings printErrors rawfilepath = mkUGen Nothing [AR] (Left rate) "StkGlobals" [showWarnings,printErrors,rawfilepath] Nothing 1 (Special 0) NoId---- | Wrapping Synthesis toolkit.------  StkInst [AR] instNumber=6.0 freq=220.0 gate=1.0 onamp=1.0 offamp=0.5 args=0.0-stkInst :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkInst rate instNumber freq gate_ onamp offamp args = mkUGen Nothing [AR] (Left rate) "StkInst" [instNumber,freq,gate_,onamp,offamp,args] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkMandolin [KR,AR] freq=520.0 bodysize=64.0 pickposition=64.0 stringdamping=69.0 stringdetune=10.0 aftertouch=64.0 trig=1.0-stkMandolin :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkMandolin rate freq bodysize pickposition stringdamping stringdetune aftertouch trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkMandolin" [freq,bodysize,pickposition,stringdamping,stringdetune,aftertouch,trig_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkModalBar [KR,AR] freq=440.0 instrument=0.0 stickhardness=64.0 stickposition=64.0 vibratogain=20.0 vibratofreq=20.0 directstickmix=64.0 volume=64.0 trig=1.0-stkModalBar :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkModalBar rate freq instrument stickhardness stickposition vibratogain vibratofreq directstickmix volume trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkModalBar" [freq,instrument,stickhardness,stickposition,vibratogain,vibratofreq,directstickmix,volume,trig_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkMoog [KR,AR] freq=440.0 filterQ=10.0 sweeprate=20.0 vibfreq=64.0 vibgain=0.0 gain=64.0 trig=1.0-stkMoog :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkMoog rate freq filterQ sweeprate vibfreq vibgain gain trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkMoog" [freq,filterQ,sweeprate,vibfreq,vibgain,gain,trig_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkPluck [KR,AR] freq=440.0 decay=0.99-stkPluck :: Rate -> UGen -> UGen -> UGen-stkPluck rate freq decay_ = mkUGen Nothing [KR,AR] (Left rate) "StkPluck" [freq,decay_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkSaxofony [KR,AR] freq=220.0 reedstiffness=64.0 reedaperture=64.0 noisegain=20.0 blowposition=26.0 vibratofrequency=20.0 vibratogain=20.0 breathpressure=128.0 trig=1.0-stkSaxofony :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkSaxofony rate freq reedstiffness reedaperture noisegain blowposition vibratofrequency vibratogain breathpressure trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkSaxofony" [freq,reedstiffness,reedaperture,noisegain,blowposition,vibratofrequency,vibratogain,breathpressure,trig_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkShakers [KR,AR] instr=0.0 energy=64.0 decay=64.0 objects=64.0 resfreq=64.0-stkShakers :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkShakers rate instr energy decay_ objects resfreq = mkUGen Nothing [KR,AR] (Left rate) "StkShakers" [instr,energy,decay_,objects,resfreq] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  StkVoicForm [KR,AR] freq=440.0 vuvmix=64.0 vowelphon=64.0 vibfreq=64.0 vibgain=20.0 loudness=64.0 trig=1.0-stkVoicForm :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-stkVoicForm rate freq vuvmix vowelphon vibfreq vibgain loudness_ trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkVoicForm" [freq,vuvmix,vowelphon,vibfreq,vibgain,loudness_,trig_] Nothing 1 (Special 0) NoId---- | String resonance filter------  Streson [KR,AR] input=0.0 delayTime=3.0e-3 res=0.9-streson :: UGen -> UGen -> UGen -> UGen-streson input delayTime res = mkUGen Nothing [KR,AR] (Right [0]) "Streson" [input,delayTime,res] Nothing 1 (Special 0) NoId---- | Pulse counter with floating point steps------  Summer [KR,AR] trig=0.0 step=1.0 reset=0.0 resetval=0.0-summer :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-summer rate trig_ step reset resetval = mkUGen Nothing [KR,AR] (Left rate) "Summer" [trig_,step,reset,resetval] Nothing 1 (Special 0) NoId---- | feedback delay line implementing switch-and-ramp buffer jumping------  SwitchDelay [AR] in=0.0 drylevel=1.0 wetlevel=1.0 delaytime=1.0 delayfactor=0.7 maxdelaytime=20.0-switchDelay :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-switchDelay in_ drylevel wetlevel delaytime delayfactor maxdelaytime = mkUGen Nothing [AR] (Right [0]) "SwitchDelay" [in_,drylevel,wetlevel,delaytime,delayfactor,maxdelaytime] Nothing 1 (Special 0) NoId---- | triggered beta random distribution------  TBetaRand [KR,AR] lo=0.0 hi=1.0 prob1=0.0 prob2=0.0 trig=0.0;    FILTER: TRUE, NONDET-tBetaRand :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-tBetaRand z lo hi prob1 prob2 trig_ = mkUGen Nothing [KR,AR] (Right [4]) "TBetaRand" [lo,hi,prob1,prob2,trig_] Nothing 1 (Special 0) (toUId z)---- | triggered random walk generator------  TBrownRand [KR,AR] lo=0.0 hi=1.0 dev=1.0 dist=0.0 trig=0.0;    FILTER: TRUE, NONDET-tBrownRand :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-tBrownRand z lo hi dev dist trig_ = mkUGen Nothing [KR,AR] (Right [4]) "TBrownRand" [lo,hi,dev,dist,trig_] Nothing 1 (Special 0) (toUId z)---- | triggered gaussian random distribution------  TGaussRand [KR,AR] lo=0.0 hi=1.0 trig=0.0;    FILTER: TRUE, NONDET-tGaussRand :: ID a => a -> UGen -> UGen -> UGen -> UGen-tGaussRand z lo hi trig_ = mkUGen Nothing [KR,AR] (Right [2]) "TGaussRand" [lo,hi,trig_] Nothing 1 (Special 0) (toUId z)---- | buffer granulator with linear att/dec------  TGrains2 [AR] trigger=0.0 bufnum=0.0 rate=1.0 centerPos=0.0 dur=0.1 pan=0.0 amp=0.1 att=0.5 dec=0.5 interp=4.0;    NC INPUT: True-tGrains2 :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-tGrains2 numChannels rate trigger bufnum rate_ centerPos dur pan amp att dec interp = mkUGen Nothing [AR] (Left rate) "TGrains2" [trigger,bufnum,rate_,centerPos,dur,pan,amp,att,dec,interp] Nothing numChannels (Special 0) NoId---- | buffer granulator with user envelope------  TGrains3 [AR] trigger=0.0 bufnum=0.0 rate=1.0 centerPos=0.0 dur=0.1 pan=0.0 amp=0.1 att=0.5 dec=0.5 window=1.0 interp=4.0;    NC INPUT: True-tGrains3 :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-tGrains3 numChannels rate trigger bufnum rate_ centerPos dur pan amp att dec window interp = mkUGen Nothing [AR] (Left rate) "TGrains3" [trigger,bufnum,rate_,centerPos,dur,pan,amp,att,dec,window,interp] Nothing numChannels (Special 0) NoId---- | Tracking Phase Vocoder------  TPV [AR] chain=0.0 windowsize=1024.0 hopsize=512.0 maxpeaks=80.0 currentpeaks=0.0 freqmult=1.0 tolerance=4.0 noisefloor=0.2-tpv :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-tpv chain windowsize hopsize maxpeaks currentpeaks freqmult tolerance noisefloor = mkUGen Nothing [AR] (Left AR) "TPV" [chain,windowsize,hopsize,maxpeaks,currentpeaks,freqmult,tolerance,noisefloor] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  TTendency [KR,AR] trigger=0.0 dist=0.0 parX=0.0 parY=1.0 parA=0.0 parB=0.0-tTendency :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-tTendency rate trigger dist parX parY parA parB = mkUGen Nothing [KR,AR] (Left rate) "TTendency" [trigger,dist,parX,parY,parA,parB] Nothing 1 (Special 0) NoId---- | pitch tracker------  Tartini [KR] in=0.0 threshold=0.93 n=2048.0 k=0.0 overlap=1024.0 smallCutoff=0.5-tartini :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-tartini rate in_ threshold n k overlap smallCutoff = mkUGen Nothing [KR] (Left rate) "Tartini" [in_,threshold,n,k,overlap,smallCutoff] Nothing 2 (Special 0) NoId---- | Neural Oscillator------  TermanWang [AR] input=0.0 reset=0.0 ratex=1.0e-2 ratey=1.0e-2 alpha=1.0 beta=1.0 eta=1.0 initx=0.0 inity=0.0-termanWang :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-termanWang rate input reset ratex ratey alpha beta eta initx inity = mkUGen Nothing [AR] (Left rate) "TermanWang" [input,reset,ratex,ratey,alpha,beta,eta,initx,inity] Nothing 1 (Special 0) NoId---- | display level of a UGen as a textual meter------  TextVU [KR,AR] trig=2.0 in=0.0 label=0.0 width=21.0 reset=0.0 ana=0.0-textVU :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-textVU rate trig_ in_ label_ width reset ana = mkUGen Nothing [KR,AR] (Left rate) "TextVU" [trig_,in_,label_,width,reset,ana] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Tilt [AR] w=0.0 x=0.0 y=0.0 z=0.0 tilt=0.0-tilt :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-tilt rate w x y z tilt_ = mkUGen Nothing [AR] (Left rate) "Tilt" [w,x,y,z,tilt_] Nothing 1 (Special 0) NoId---- | triggered signal averager------  TrigAvg [KR] in=0.0 trig=0.0-trigAvg :: Rate -> UGen -> UGen -> UGen-trigAvg rate in_ trig_ = mkUGen Nothing [KR] (Left rate) "TrigAvg" [in_,trig_] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  Tumble [AR] w=0.0 x=0.0 y=0.0 z=0.0 tilt=0.0-tumble :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-tumble rate w x y z tilt_ = mkUGen Nothing [AR] (Left rate) "Tumble" [w,x,y,z,tilt_] Nothing 1 (Special 0) NoId---- | physical modeling simulation; two tubes------  TwoTube [AR] input=0.0 k=1.0e-2 loss=1.0 d1length=100.0 d2length=100.0-twoTube :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-twoTube rate input k loss d1length d2length = mkUGen Nothing [AR] (Left rate) "TwoTube" [input,k,loss,d1length,d2length] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  UHJ2B [AR] ls=0.0 rs=0.0-uHJ2B :: Rate -> UGen -> UGen -> UGen-uHJ2B rate ls rs = mkUGen Nothing [AR] (Left rate) "UHJ2B" [ls,rs] Nothing 3 (Special 0) NoId---- | Vector Base Amplitude Panner------  VBAP [KR,AR] in=0.0 bufnum=0.0 azimuth=0.0 elevation=1.0 spread=0.0;    NC INPUT: True-vBAP :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-vBAP numChannels rate in_ bufnum azimuth elevation spread = mkUGen Nothing [KR,AR] (Left rate) "VBAP" [in_,bufnum,azimuth,elevation,spread] Nothing numChannels (Special 0) NoId---- | 2D scanning pattern virtual machine------  VMScan2D [AR] bufnum=0.0-vMScan2D :: Rate -> UGen -> UGen-vMScan2D rate bufnum = mkUGen Nothing [AR] (Left rate) "VMScan2D" [bufnum] Nothing 2 (Special 0) NoId---- | vosim pulse generator------  VOSIM [AR] trig=0.1 freq=400.0 nCycles=1.0 decay=0.9-vosim :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-vosim rate trig_ freq nCycles decay_ = mkUGen Nothing [AR] (Left rate) "VOSIM" [trig_,freq,nCycles,decay_] Nothing 1 (Special 0) NoId---- | windowed amplitude follower------  WAmp [KR] in=0.0 winSize=0.1-wAmp :: Rate -> UGen -> UGen -> UGen-wAmp rate in_ winSize = mkUGen Nothing [KR] (Left rate) "WAmp" [in_,winSize] Nothing 1 (Special 0) NoId---- | decomposition into square waves, and reconstruction------  WalshHadamard [AR] input=0.0 which=0.0-walshHadamard :: Rate -> UGen -> UGen -> UGen-walshHadamard rate input which = mkUGen Nothing [AR] (Left rate) "WalshHadamard" [input,which] Nothing 1 (Special 0) NoId---- | (Undocumented class)------  WarpZ [AR] bufnum=0.0 pointer=0.0 freqScale=1.0 windowSize=0.2 envbufnum=-1.0 overlaps=8.0 windowRandRatio=0.0 interp=1.0 zeroSearch=0.0 zeroStart=0.0;    NC INPUT: True-warpZ :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-warpZ numChannels rate bufnum pointer freqScale windowSize envbufnum overlaps windowRandRatio interp zeroSearch zeroStart = mkUGen Nothing [AR] (Left rate) "WarpZ" [bufnum,pointer,freqScale,windowSize,envbufnum,overlaps,windowRandRatio,interp,zeroSearch,zeroStart] Nothing numChannels (Special 0) NoId---- | Lose bits of your waves------  WaveLoss [KR,AR] in=0.0 drop=20.0 outof=40.0 mode=1.0-waveLoss :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen-waveLoss rate in_ drop_ outof mode = mkUGen Nothing [KR,AR] (Left rate) "WaveLoss" [in_,drop_,outof,mode] Nothing 1 (Special 0) NoId---- | wave terrain synthesis------  WaveTerrain [AR] bufnum=0.0 x=0.0 y=0.0 xsize=100.0 ysize=100.0-waveTerrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-waveTerrain rate bufnum x y xsize ysize = mkUGen Nothing [AR] (Left rate) "WaveTerrain" [bufnum,x,y,xsize,ysize] Nothing 1 (Special 0) NoId---- | decomposition into Daub4 wavelets, and reconstruction------  WaveletDaub [AR] input=0.0 n=64.0 which=0.0-waveletDaub :: Rate -> UGen -> UGen -> UGen -> UGen-waveletDaub rate input n which = mkUGen Nothing [AR] (Left rate) "WaveletDaub" [input,n,which] Nothing 1 (Special 0) NoId---- | Weakly Nonlinear Oscillator------  WeaklyNonlinear [AR] input=0.0 reset=0.0 ratex=1.0 ratey=1.0 freq=440.0 initx=0.0 inity=0.0 alpha=0.0 xexponent=0.0 beta=0.0 yexponent=0.0-weaklyNonlinear :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-weaklyNonlinear rate input reset ratex ratey freq initx inity alpha xexponent beta yexponent = mkUGen Nothing [AR] (Left rate) "WeaklyNonlinear" [input,reset,ratex,ratey,freq,initx,inity,alpha,xexponent,beta,yexponent] Nothing 1 (Special 0) NoId---- | Weakly Nonlinear Oscillator------  WeaklyNonlinear2 [AR] input=0.0 reset=0.0 ratex=1.0 ratey=1.0 freq=440.0 initx=0.0 inity=0.0 alpha=0.0 xexponent=0.0 beta=0.0 yexponent=0.0-weaklyNonlinear2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-weaklyNonlinear2 rate input reset ratex ratey freq initx inity alpha xexponent beta yexponent = mkUGen Nothing [AR] (Left rate) "WeaklyNonlinear2" [input,reset,ratex,ratey,freq,initx,inity,alpha,xexponent,beta,yexponent] Nothing 1 (Special 0) NoId---- | Pulse counter with floating point steps------  WrapSummer [KR,AR] trig=0.0 step=1.0 min=0.0 max=1.0 reset=0.0 resetval=0.0-wrapSummer :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen-wrapSummer rate trig_ step min_ max_ reset resetval = mkUGen Nothing [KR,AR] (Left rate) "WrapSummer" [trig_,step,min_,max_,reset,resetval] Nothing 1 (Special 0) NoId+-- | SC3 External UGen bindings (auto-generated).+module Sound.SC3.UGen.Bindings.DB.External where++--import Sound.SC3.Common.Enum+--import Sound.SC3.Common.Envelope+import Sound.SC3.Common.Rate+import Sound.SC3.Common.UId+import Sound.SC3.UGen.Type+import Sound.SC3.UGen.UGen++-- | (Undocumented class)+--+--  A2B [AR] a=0.0 b=0.0 c=0.0 d=0.0+a2b :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+a2b rate a b c d = mkUGen Nothing [AR] (Left rate) "A2B" [a,b,c,d] Nothing 4 (Special 0) NoId++-- | Emulator of the AY (aka YM) soundchip, used in Spectrum/Atari+--+--  AY [AR] tonea=1777.0 toneb=1666.0 tonec=1555.0 noise=1.0 control=7.0 vola=15.0 volb=15.0 volc=15.0 envfreq=4.0 envstyle=1.0 chiptype=0.0+ay :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+ay rate tonea toneb tonec noise control_ vola volb volc envfreq envstyle chiptype = mkUGen Nothing [AR] (Left rate) "AY" [tonea,toneb,tonec,noise,control_,vola,volb,volc,envfreq,envstyle,chiptype] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  Allpass1 [AR] in=0.0 freq=1200.0+allpass1 :: Rate -> UGen -> UGen -> UGen+allpass1 rate in_ freq = mkUGen Nothing [AR] (Left rate) "Allpass1" [in_,freq] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  Allpass2 [AR] in=0.0 freq=1200.0 rq=1.0+allpass2 :: Rate -> UGen -> UGen -> UGen -> UGen+allpass2 rate in_ freq rq = mkUGen Nothing [AR] (Left rate) "Allpass2" [in_,freq,rq] Nothing 1 (Special 0) NoId++-- | amplitude follower (deprecated)+--+--  AmplitudeMod [KR,AR] in=0.0 attackTime=1.0e-2 releaseTime=1.0e-2+amplitudeMod :: Rate -> UGen -> UGen -> UGen -> UGen+amplitudeMod rate in_ attackTime releaseTime = mkUGen Nothing [KR,AR] (Left rate) "AmplitudeMod" [in_,attackTime,releaseTime] Nothing 1 (Special 0) NoId++-- | Virtual analog 808 bass drum model+--+--  AnalogBassDrum [AR] trig=0.0 infsustain=0.0 accent=0.5 freq=50.0 tone=0.5 decay=0.5 attackfm=0.5 selffm=0.25+analogBassDrum :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+analogBassDrum rate trig_ infsustain accent freq tone decay_ attackfm selffm = mkUGen Nothing [AR] (Left rate) "AnalogBassDrum" [trig_,infsustain,accent,freq,tone,decay_,attackfm,selffm] Nothing 1 (Special 0) NoId++-- | A virtual-analog feedback phaser+--+--  AnalogPhaser [AR] input=0.0 lfoinput=0.0 skew=0.0 feedback=0.25 modulation=0.5 stages=8.0+analogPhaser :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+analogPhaser input lfoinput skew feedback modulation stages = mkUGen Nothing [AR] (Right [0]) "AnalogPhaser" [input,lfoinput,skew,feedback,modulation,stages] Nothing 1 (Special 0) NoId++-- | Virtual Analog allpass phaser modulation section+--+--  AnalogPhaserMod [KR,AR] input=0.0 skew=0.0 modulation=0.5 stages=8.0;    FILTER: TRUE+analogPhaserMod :: UGen -> UGen -> UGen -> UGen -> UGen+analogPhaserMod input skew modulation stages = mkUGen Nothing [KR,AR] (Right [0]) "AnalogPhaserMod" [input,skew,modulation,stages] Nothing 1 (Special 0) NoId++-- | Virtual analog 808 snare drum model.+--+--  AnalogSnareDrum [AR] trig=0.0 infsustain=0.0 accent=0.1 freq=200.0 tone=0.5 decay=0.5 snappy=0.5+analogSnareDrum :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+analogSnareDrum rate trig_ infsustain accent freq tone decay_ snappy = mkUGen Nothing [AR] (Left rate) "AnalogSnareDrum" [trig_,infsustain,accent,freq,tone,decay_,snappy] Nothing 1 (Special 0) NoId++-- | Analog tape emulation+--+--  AnalogTape [AR] input=0.0 bias=0.5 saturation=0.5 drive=0.5 oversample=1.0 mode=0.0;    FILTER: TRUE+analogTape :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+analogTape input bias saturation drive oversample mode = mkUGen Nothing [AR] (Right [0]) "AnalogTape" [input,bias,saturation,drive,oversample,mode] Nothing 1 (Special 0) NoId++-- | A virtual analog vintage EQ and distortion+--+--  AnalogVintageDistortion [AR] input=0.0 drivegain=0.5 bias=0.0 lowgain=0.1 highgain=0.1 shelvingfreq=600.0 oversample=0.0;    FILTER: TRUE+analogVintageDistortion :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+analogVintageDistortion input drivegain bias lowgain highgain shelvingfreq oversample = mkUGen Nothing [AR] (Right [0]) "AnalogVintageDistortion" [input,drivegain,bias,lowgain,highgain,shelvingfreq,oversample] Nothing 1 (Special 0) NoId++-- | event analyser (BBCut)+--+--  AnalyseEvents2 [AR] in=0.0 bufnum=0.0 threshold=0.34 triggerid=101.0 circular=0.0 pitch=0.0+analyseEvents2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+analyseEvents2 rate in_ bufnum threshold triggerid circular pitch_ = mkUGen Nothing [AR] (Left rate) "AnalyseEvents2" [in_,bufnum,threshold,triggerid,circular,pitch_] Nothing 1 (Special 0) NoId++-- | 2-species Predator-Prey model+--+--  ArneodoCoulletTresser [AR] freq=22050.0 alpha=1.5 h=5.0e-2 xi=0.5 yi=0.5 zi=0.5+arneodoCoulletTresser :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+arneodoCoulletTresser rate freq alpha h xi yi zi = mkUGen Nothing [AR] (Left rate) "ArneodoCoulletTresser" [freq,alpha,h,xi,yi,zi] Nothing 3 (Special 0) NoId++-- | detect the largest value (and its position) in an array of UGens+--+--  ArrayMax [KR,AR] *array=0.0;    MCE=1, FILTER: TRUE+arrayMax :: UGen -> UGen+arrayMax array = mkUGen Nothing [KR,AR] (Right [0]) "ArrayMax" [] (Just [array]) 2 (Special 0) NoId++-- | detect the smallest value (and its position) in an array of UGens+--+--  ArrayMin [KR,AR] *array=0.0;    MCE=1, FILTER: TRUE+arrayMin :: UGen -> UGen+arrayMin array = mkUGen Nothing [KR,AR] (Right [0]) "ArrayMin" [] (Just [array]) 2 (Special 0) NoId++-- | Use Amp data from a given partial+--+--  AtsAmp [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0+atsAmp :: Rate -> UGen -> UGen -> UGen -> UGen+atsAmp rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsAmp" [atsbuffer,partialNum,filePointer] Nothing 1 (Special 0) NoId++-- | (put short description here)+--+--  AtsBand [AR] atsbuffer=0.0 band=0.0 filePointer=0.0+atsBand :: Rate -> UGen -> UGen -> UGen -> UGen+atsBand rate atsbuffer band filePointer = mkUGen Nothing [AR] (Left rate) "AtsBand" [atsbuffer,band,filePointer] Nothing 1 (Special 0) NoId++-- | Use Freq data from a given partial+--+--  AtsFreq [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0+atsFreq :: Rate -> UGen -> UGen -> UGen -> UGen+atsFreq rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsFreq" [atsbuffer,partialNum,filePointer] Nothing 1 (Special 0) NoId++-- | Resynthesize sine and noise data from an ATS analysis file+--+--  AtsNoiSynth [AR] atsbuffer=0.0 numPartials=0.0 partialStart=0.0 partialSkip=1.0 filePointer=0.0 sinePct=1.0 noisePct=1.0 freqMul=1.0 freqAdd=0.0 numBands=25.0 bandStart=0.0 bandSkip=1.0+atsNoiSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+atsNoiSynth rate atsbuffer numPartials partialStart partialSkip filePointer sinePct noisePct freqMul freqAdd numBands bandStart bandSkip = mkUGen Nothing [AR] (Left rate) "AtsNoiSynth" [atsbuffer,numPartials,partialStart,partialSkip,filePointer,sinePct,noisePct,freqMul,freqAdd,numBands,bandStart,bandSkip] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  AtsNoise [KR,AR] atsbuffer=0.0 bandNum=0.0 filePointer=0.0+atsNoise :: Rate -> UGen -> UGen -> UGen -> UGen+atsNoise rate atsbuffer bandNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsNoise" [atsbuffer,bandNum,filePointer] Nothing 1 (Special 0) NoId++-- | One UGen to return both Amp and Freq info+--+--  AtsParInfo [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0+atsParInfo :: Rate -> UGen -> UGen -> UGen -> UGen+atsParInfo rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsParInfo" [atsbuffer,partialNum,filePointer] Nothing 2 (Special 0) NoId++-- | (Undocumented class)+--+--  AtsPartial [AR] atsbuffer=0.0 partial=0.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0+atsPartial :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+atsPartial rate atsbuffer partial filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "AtsPartial" [atsbuffer,partial,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId++-- | Resynthesize sine data from an ATS analysis file+--+--  AtsSynth [AR] atsbuffer=0.0 numPartials=0.0 partialStart=0.0 partialSkip=1.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0+atsSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+atsSynth rate atsbuffer numPartials partialStart partialSkip filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "AtsSynth" [atsbuffer,numPartials,partialStart,partialSkip,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  AtsUGen [] maxSize=0.0+atsUGen :: Rate -> UGen -> UGen+atsUGen rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "AtsUGen" [maxSize] Nothing 1 (Special 0) NoId++-- | Detect onsets and assess the nature of the attack slope+--+--  AttackSlope [KR] input=0.0 windowsize=1024.0 peakpicksize=20.0 leak=0.999 energythreshold=1.0e-2 sumthreshold=20.0 mingap=30.0 numslopesaveraged=10.0+attackSlope :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+attackSlope rate input windowsize peakpicksize leak energythreshold sumthreshold mingap numslopesaveraged = mkUGen Nothing [KR] (Left rate) "AttackSlope" [input,windowsize,peakpicksize,leak,energythreshold,sumthreshold,mingap,numslopesaveraged] Nothing 6 (Special 0) NoId++-- | (Undocumented class)+--+--  AudioMSG [AR] in=0.0 index=0.0;    FILTER: TRUE+audioMSG :: UGen -> UGen -> UGen+audioMSG in_ index_ = mkUGen Nothing [AR] (Right [0]) "AudioMSG" [in_,index_] Nothing 1 (Special 0) NoId++-- | calculates mean average of audio or control rate signal+--+--  AverageOutput [KR,AR] in=0.0 trig=0.0;    FILTER: TRUE+averageOutput :: UGen -> UGen -> UGen+averageOutput in_ trig_ = mkUGen Nothing [KR,AR] (Right [0]) "AverageOutput" [in_,trig_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  B2A [AR] w=0.0 x=0.0 y=0.0 z=0.0+b2a :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+b2a rate w x y z = mkUGen Nothing [AR] (Left rate) "B2A" [w,x,y,z] Nothing 4 (Special 0) NoId++-- | (Undocumented class)+--+--  B2Ster [AR] w=0.0 x=0.0 y=0.0+b2Ster :: Rate -> UGen -> UGen -> UGen -> UGen+b2Ster rate w x y = mkUGen Nothing [AR] (Left rate) "B2Ster" [w,x,y] Nothing 2 (Special 0) NoId++-- | (Undocumented class)+--+--  B2UHJ [AR] w=0.0 x=0.0 y=0.0+b2uhj :: Rate -> UGen -> UGen -> UGen -> UGen+b2uhj rate w x y = mkUGen Nothing [AR] (Left rate) "B2UHJ" [w,x,y] Nothing 2 (Special 0) NoId++-- | MultiOut BetaBlocker VChip+--+--  BBlockerBuf [AR] freq=0.0 bufnum=0.0 startpoint=0.0+bBlockerBuf :: Rate -> UGen -> UGen -> UGen -> UGen+bBlockerBuf rate freq bufnum startpoint = mkUGen Nothing [AR] (Left rate) "BBlockerBuf" [freq,bufnum,startpoint] Nothing 9 (Special 0) NoId++-- | 3D Ambisonic decoder+--+--  BFDecode1 [AR] w=0.0 x=0.0 y=0.0 z=0.0 azimuth=0.0 elevation=0.0 wComp=0.0+bfDecode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bfDecode1 rate w x y z azimuth elevation wComp = mkUGen Nothing [AR] (Left rate) "BFDecode1" [w,x,y,z,azimuth,elevation,wComp] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  BFDecoder [] maxSize=0.0+bfDecoder :: Rate -> UGen -> UGen+bfDecoder rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFDecoder" [maxSize] Nothing 1 (Special 0) NoId++-- | Ambisonic B format encoder+--+--  BFEncode1 [AR] in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0+bfEncode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bfEncode1 rate in_ azimuth elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncode1" [in_,azimuth,elevation,rho,gain,wComp] Nothing 4 (Special 0) NoId++-- | Ambisonic B format encoder+--+--  BFEncode2 [AR] in=0.0 point_x=1.0 point_y=1.0 elevation=0.0 gain=1.0 wComp=0.0+bfEncode2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bfEncode2 rate in_ point_x point_y elevation gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncode2" [in_,point_x,point_y,elevation,gain,wComp] Nothing 4 (Special 0) NoId++-- | Ambisonic B format encoder for stereo signals+--+--  BFEncodeSter [AR] l=0.0 r=0.0 azimuth=0.0 width=1.5707963267949 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0+bfEncodeSter :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bfEncodeSter rate l r azimuth width elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncodeSter" [l,r,azimuth,width,elevation,rho,gain,wComp] Nothing 4 (Special 0) NoId++-- | (Undocumented class)+--+--  BFGrainPanner [] maxSize=0.0+bfGrainPanner :: Rate -> UGen -> UGen+bfGrainPanner rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFGrainPanner" [maxSize] Nothing 1 (Special 0) NoId++-- | BFormat sound manipulation+--+--  BFManipulate [AR] w=0.0 x=0.0 y=0.0 z=0.0 rotate=0.0 tilt=0.0 tumble=0.0+bfManipulate :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bfManipulate rate w x y z rotate_ tilt_ tumble_ = mkUGen Nothing [AR] (Left rate) "BFManipulate" [w,x,y,z,rotate_,tilt_,tumble_] Nothing 4 (Special 0) NoId++-- | (Undocumented class)+--+--  BFPanner [] maxSize=0.0+bfPanner :: Rate -> UGen -> UGen+bfPanner rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFPanner" [maxSize] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  BLBufRd [KR,AR] bufnum=0.0 phase=0.0 ratio=1.0+blBufRd :: Rate -> UGen -> UGen -> UGen -> UGen+blBufRd rate bufnum phase ratio = mkUGen Nothing [KR,AR] (Left rate) "BLBufRd" [bufnum,phase,ratio] Nothing 1 (Special 0) NoId++-- | Band limited oscillator+--+--  BLOsc [KR,AR] freq=100.0 pulsewidth=0.5 waveform=0.0+blOsc :: Rate -> UGen -> UGen -> UGen -> UGen+blOsc rate freq pulsewidth waveform = mkUGen Nothing [KR,AR] (Left rate) "BLOsc" [freq,pulsewidth,waveform] Nothing 1 (Special 0) NoId++-- | 24db/oct rolloff - 4nd order resonant Low/High/Band Pass Filter+--+--  BMoog [AR] in=0.0 freq=440.0 q=0.2 mode=0.0 saturation=0.95;    FILTER: TRUE+bMoog :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bMoog in_ freq q mode saturation = mkUGen Nothing [AR] (Right [0]) "BMoog" [in_,freq,q,mode,saturation] Nothing 1 (Special 0) NoId++-- | Balances two signals with each other+--+--  Balance [AR] in=0.0 test=0.0 hp=10.0 stor=0.0+balance :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+balance rate in_ test hp stor = mkUGen Nothing [AR] (Left rate) "Balance" [in_,test,hp,stor] Nothing 1 (Special 0) NoId++-- | Extracts statistics on a beat histogram+--+--  BeatStatistics [KR] fft=0.0 leak=0.995 numpreviousbeats=4.0+beatStatistics :: Rate -> UGen -> UGen -> UGen -> UGen+beatStatistics rate fft_ leak numpreviousbeats = mkUGen Nothing [KR] (Left rate) "BeatStatistics" [fft_,leak,numpreviousbeats] Nothing 4 (Special 0) NoId++-- | (Undocumented class)+--+--  BinData [KR,AR] buffer=0.0 bin=0.0 overlaps=0.5+binData :: Rate -> UGen -> UGen -> UGen -> UGen+binData rate buffer bin overlaps = mkUGen Nothing [KR,AR] (Left rate) "BinData" [buffer,bin,overlaps] Nothing 2 (Special 0) NoId++-- | Band limited impulse generation+--+--  BlitB3 [AR] freq=440.0+blitB3 :: Rate -> UGen -> UGen+blitB3 rate freq = mkUGen Nothing [AR] (Left rate) "BlitB3" [freq] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  BlitB3D [AR] freq=440.0+blitB3D :: Rate -> UGen -> UGen+blitB3D rate freq = mkUGen Nothing [AR] (Left rate) "BlitB3D" [freq] Nothing 1 (Special 0) NoId++-- | BLIT derived sawtooth+--+--  BlitB3Saw [AR] freq=440.0 leak=0.99+blitB3Saw :: Rate -> UGen -> UGen -> UGen+blitB3Saw rate freq leak = mkUGen Nothing [AR] (Left rate) "BlitB3Saw" [freq,leak] Nothing 1 (Special 0) NoId++-- | Bipolar BLIT derived square waveform+--+--  BlitB3Square [AR] freq=440.0 leak=0.99+blitB3Square :: Rate -> UGen -> UGen -> UGen+blitB3Square rate freq leak = mkUGen Nothing [AR] (Left rate) "BlitB3Square" [freq,leak] Nothing 1 (Special 0) NoId++-- | Bipolar BLIT derived triangle+--+--  BlitB3Tri [AR] freq=440.0 leak=0.99 leak2=0.99+blitB3Tri :: Rate -> UGen -> UGen -> UGen -> UGen+blitB3Tri rate freq leak leak2 = mkUGen Nothing [AR] (Left rate) "BlitB3Tri" [freq,leak,leak2] Nothing 1 (Special 0) NoId++-- | breakcore simulator+--+--  Breakcore [AR] bufnum=0.0 capturein=0.0 capturetrigger=0.0 duration=0.1 ampdropout=0.0+breakcore :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+breakcore rate bufnum capturein capturetrigger duration ampdropout = mkUGen Nothing [AR] (Left rate) "Breakcore" [bufnum,capturein,capturetrigger,duration,ampdropout] Nothing 1 (Special 0) NoId++-- | Prigogine oscillator+--+--  Brusselator [AR] reset=0.0 rate=1.0e-2 mu=1.0 gamma=1.0 initx=0.5 inity=0.5+brusselator :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+brusselator rate reset rate_ mu gamma initx inity = mkUGen Nothing [AR] (Left rate) "Brusselator" [reset,rate_,mu,gamma,initx,inity] Nothing 2 (Special 0) NoId++-- | Granular synthesis with sound sampled in a buffer+--+--  BufGrain [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 interp=2.0+bufGrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bufGrain rate trigger dur sndbuf rate_ pos interp = mkUGen Nothing [AR] (Left rate) "BufGrain" [trigger,dur,sndbuf,rate_,pos,interp] Nothing 1 (Special 0) NoId++-- | Granular synthesis with sound sampled in a buffer and user supplied envelope+--+--  BufGrainB [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf=0.0 interp=2.0+bufGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bufGrainB rate trigger dur sndbuf rate_ pos envbuf interp = mkUGen Nothing [AR] (Left rate) "BufGrainB" [trigger,dur,sndbuf,rate_,pos,envbuf,interp] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  BufGrainBBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0+bufGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bufGrainBBF rate trigger dur sndbuf rate_ pos envbuf azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainBBF" [trigger,dur,sndbuf,rate_,pos,envbuf,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId++-- | (Undocumented class)+--+--  BufGrainBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0+bufGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bufGrainBF rate trigger dur sndbuf rate_ pos azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainBF" [trigger,dur,sndbuf,rate_,pos,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId++-- | Granular synthesis with sound sampled in a buffer and user supplied envelopes+--+--  BufGrainI [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 interp=2.0+bufGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bufGrainI rate trigger dur sndbuf rate_ pos envbuf1 envbuf2 ifac interp = mkUGen Nothing [AR] (Left rate) "BufGrainI" [trigger,dur,sndbuf,rate_,pos,envbuf1,envbuf2,ifac,interp] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  BufGrainIBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0+bufGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+bufGrainIBF rate trigger dur sndbuf rate_ pos envbuf1 envbuf2 ifac azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainIBF" [trigger,dur,sndbuf,rate_,pos,envbuf1,envbuf2,ifac,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId++-- | detect the largest value (and its position) in an array of UGens+--+--  BufMax [KR] bufnum=0.0 gate=1.0+bufMax :: Rate -> UGen -> UGen -> UGen+bufMax rate bufnum gate_ = mkUGen Nothing [KR] (Left rate) "BufMax" [bufnum,gate_] Nothing 2 (Special 0) NoId++-- | detect the largest value (and its position) in an array of UGens+--+--  BufMin [KR] bufnum=0.0 gate=1.0+bufMin :: Rate -> UGen -> UGen -> UGen+bufMin rate bufnum gate_ = mkUGen Nothing [KR] (Left rate) "BufMin" [bufnum,gate_] Nothing 2 (Special 0) NoId++-- | (Undocumented class)+--+--  CQ_Diff [KR] in1=0.0 in2=0.0 databufnum=0.0+cq_Diff :: Rate -> UGen -> UGen -> UGen -> UGen+cq_Diff rate in1 in2 databufnum = mkUGen Nothing [KR] (Left rate) "CQ_Diff" [in1,in2,databufnum] Nothing 1 (Special 0) NoId++-- | Quefrency analysis and liftering+--+--  Cepstrum [] cepbuf=0.0 fftchain=0.0+cepstrum :: Rate -> UGen -> UGen -> UGen+cepstrum rate cepbuf fftchain = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Cepstrum" [cepbuf,fftchain] Nothing 1 (Special 0) NoId++-- | Chen's chaotic double scroll attractor+--+--  Chen [KR,AR] speed=0.5 a=0.5 b=0.3 c=0.28+chen :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+chen rate speed a b c = mkUGen Nothing [KR,AR] (Left rate) "Chen" [speed,a,b,c] Nothing 3 (Special 0) NoId++-- | Octave chroma band based representation of energy in a signal; Chromagram for nTET tuning systems with any base reference+--+--  Chromagram [KR] fft=0.0 fftsize=2048.0 n=12.0 tuningbase=32.703195662575 octaves=8.0 integrationflag=0.0 coeff=0.9 octaveratio=2.0 perframenormalize=0.0+chromagram :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+chromagram rate fft_ fftsize n tuningbase octaves integrationflag coeff octaveratio perframenormalize = mkUGen Nothing [KR] (Left rate) "Chromagram" [fft_,fftsize,n,tuningbase,octaves,integrationflag,coeff,octaveratio,perframenormalize] Nothing 12 (Special 0) NoId++-- | circular linear lag+--+--  CircleRamp [KR,AR] in=0.0 lagTime=0.1 circmin=-180.0 circmax=180.0+circleRamp :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+circleRamp rate in_ lagTime circmin circmax = mkUGen Nothing [KR,AR] (Left rate) "CircleRamp" [in_,lagTime,circmin,circmax] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  Clipper32 [AR] in=0.0 lo=-0.8 hi=0.8+clipper32 :: Rate -> UGen -> UGen -> UGen -> UGen+clipper32 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper32" [in_,lo,hi] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  Clipper4 [AR] in=0.0 lo=-0.8 hi=0.8+clipper4 :: Rate -> UGen -> UGen -> UGen -> UGen+clipper4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper4" [in_,lo,hi] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  Clipper8 [AR] in=0.0 lo=-0.8 hi=0.8+clipper8 :: Rate -> UGen -> UGen -> UGen -> UGen+clipper8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper8" [in_,lo,hi] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  Clockmus [KR]+clockmus :: Rate -> UGen+clockmus rate = mkUGen Nothing [KR] (Left rate) "Clockmus" [] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  CombLP [AR] in=0.0 gate=1.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0 coef=0.5+combLP :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+combLP rate in_ gate_ maxdelaytime delaytime decaytime coef = mkUGen Nothing [AR] (Left rate) "CombLP" [in_,gate_,maxdelaytime,delaytime,decaytime,coef] Nothing 1 (Special 0) NoId++-- | FM-modulable resonating filter+--+--  ComplexRes [AR] in=0.0 freq=100.0 decay=0.2;    FILTER: TRUE+complexRes :: UGen -> UGen -> UGen -> UGen+complexRes in_ freq decay_ = mkUGen Nothing [AR] (Right [0]) "ComplexRes" [in_,freq,decay_] Nothing 1 (Special 0) NoId++-- | Concatenative Cross-Synthesis on Live Streams+--+--  Concat [AR] control=0.0 source=0.0 storesize=1.0 seektime=1.0 seekdur=1.0 matchlength=5.0e-2 freezestore=0.0 zcr=1.0 lms=1.0 sc=1.0 st=0.0 randscore=0.0+concat :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+concat rate control_ source storesize seektime seekdur matchlength freezestore zcr lms sc st randscore = mkUGen Nothing [AR] (Left rate) "Concat" [control_,source,storesize,seektime,seekdur,matchlength,freezestore,zcr,lms,sc,st,randscore] Nothing 1 (Special 0) NoId++-- | Concatenative Cross-Synthesis on Live Streams+--+--  Concat2 [AR] control=0.0 source=0.0 storesize=1.0 seektime=1.0 seekdur=1.0 matchlength=5.0e-2 freezestore=0.0 zcr=1.0 lms=1.0 sc=1.0 st=0.0 randscore=0.0 threshold=1.0e-2+concat2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+concat2 rate control_ source storesize seektime seekdur matchlength freezestore zcr lms sc st randscore threshold = mkUGen Nothing [AR] (Left rate) "Concat2" [control_,source,storesize,seektime,seekdur,matchlength,freezestore,zcr,lms,sc,st,randscore,threshold] Nothing 1 (Special 0) NoId++-- | an amplitude tracking based onset detector+--+--  Coyote [KR] in=0.0 trackFall=0.2 slowLag=0.2 fastLag=1.0e-2 fastMul=0.5 thresh=5.0e-2 minDur=0.1+coyote :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+coyote rate in_ trackFall slowLag fastLag fastMul thresh minDur = mkUGen Nothing [KR] (Left rate) "Coyote" [in_,trackFall,slowLag,fastLag,fastMul,thresh,minDur] Nothing 1 (Special 0) NoId++-- | Measure the temporal crest factor of a signal+--+--  Crest [KR] in=0.0 numsamps=400.0 gate=1.0+crest :: Rate -> UGen -> UGen -> UGen -> UGen+crest rate in_ numsamps gate_ = mkUGen Nothing [KR] (Left rate) "Crest" [in_,numsamps,gate_] Nothing 1 (Special 0) NoId++-- | class B/AB power amp distortion simulation+--+--  CrossoverDistortion [AR] in=0.0 amp=0.5 smooth=0.5;    FILTER: TRUE+crossoverDistortion :: UGen -> UGen -> UGen -> UGen+crossoverDistortion in_ amp smooth = mkUGen Nothing [AR] (Right [0]) "CrossoverDistortion" [in_,amp,smooth] Nothing 1 (Special 0) NoId++-- | Simple compressor+--+--  DCompressor [AR] input=0.0 sidechainIn=0.0 sidechain=0.0 ratio=4.0 threshold=-40.0 attack=0.1 release=100.1 makeup=0.5 automakeup=1.0;    FILTER: TRUE+dCompressor :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dCompressor input sidechainIn sidechain ratio threshold attack release makeup automakeup = mkUGen Nothing [AR] (Right [0]) "DCompressor" [input,sidechainIn,sidechain,ratio,threshold,attack,release,makeup,automakeup] Nothing 1 (Special 0) NoId++-- | Digitally modelled analog filter+--+--  DFM1 [AR] in=0.0 freq=1000.0 res=0.1 inputgain=1.0 type=0.0 noiselevel=3.0e-4;    FILTER: TRUE+dfm1 :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dfm1 in_ freq res inputgain type_ noiselevel = mkUGen Nothing [AR] (Right [0]) "DFM1" [in_,freq,res,inputgain,type_,noiselevel] Nothing 1 (Special 0) NoId++-- | Demand rate implementation of a Wiard noise ring+--+--  DNoiseRing [DR] change=0.5 chance=0.5 shift=1.0 numBits=8.0 resetval=0.0;    DEMAND/NONDET+dNoiseRing :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dNoiseRing z change chance shift numBits resetval = mkUGen Nothing [DR] (Left DR) "DNoiseRing" [change,chance,shift,numBits,resetval] Nothing 1 (Special 0) (toUId z)++-- | Triangle via 3rd order differerentiated polynomial waveform+--+--  DPW3Tri [AR] freq=440.0+dpw3Tri :: Rate -> UGen -> UGen+dpw3Tri rate freq = mkUGen Nothing [AR] (Left rate) "DPW3Tri" [freq] Nothing 1 (Special 0) NoId++-- | Sawtooth via 4th order differerentiated polynomial waveform+--+--  DPW4Saw [AR] freq=440.0+dpw4Saw :: Rate -> UGen -> UGen+dpw4Saw rate freq = mkUGen Nothing [AR] (Left rate) "DPW4Saw" [freq] Nothing 1 (Special 0) NoId++-- | Plucked physical model.+--+--  DWGBowed [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=3.0 impZ=0.55 fB=2.0+dwgBowed :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dwgBowed rate freq velb force gate_ pos release c1 c3 impZ fB = mkUGen Nothing [AR] (Left rate) "DWGBowed" [freq,velb,force,gate_,pos,release,c1,c3,impZ,fB] Nothing 1 (Special 0) NoId++-- | Plucked physical model.+--+--  DWGBowedSimple [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=30.0+dwgBowedSimple :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dwgBowedSimple rate freq velb force gate_ pos release c1 c3 = mkUGen Nothing [AR] (Left rate) "DWGBowedSimple" [freq,velb,force,gate_,pos,release,c1,c3] Nothing 1 (Special 0) NoId++-- | Plucked physical model.+--+--  DWGBowedTor [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=3.0 impZ=0.55 fB=2.0 mistune=5.2 c1tor=1.0 c3tor=3000.0 iZtor=1.8+dwgBowedTor :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dwgBowedTor rate freq velb force gate_ pos release c1 c3 impZ fB mistune c1tor c3tor iZtor = mkUGen Nothing [AR] (Left rate) "DWGBowedTor" [freq,velb,force,gate_,pos,release,c1,c3,impZ,fB,mistune,c1tor,c3tor,iZtor] Nothing 1 (Special 0) NoId++-- | Clarinet physical model.+--+--  DWGClarinet3 [AR] freq=440.0 pm=1.0 pc=1.0 m=0.8 gate=1.0 release=1.0e-2 c1=0.25 c3=7.0+dwgClarinet3 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dwgClarinet3 rate freq pm pc m gate_ release c1 c3 = mkUGen Nothing [AR] (Left rate) "DWGClarinet3" [freq,pm,pc,m,gate_,release,c1,c3] Nothing 1 (Special 0) NoId++-- | Reimplementation of STK flute model.+--+--  DWGFlute [AR] freq=400.0 pm=1.0 endr=0.5 jetr=0.25 jetRa=0.33 gate=1.0 release=0.1+dwgFlute :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dwgFlute rate freq pm endr jetr jetRa gate_ release = mkUGen Nothing [AR] (Left rate) "DWGFlute" [freq,pm,endr,jetr,jetRa,gate_,release] Nothing 1 (Special 0) NoId++-- | Plucked physical model.+--+--  DWGPlucked [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1+dwgPlucked :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dwgPlucked rate freq amp gate_ pos c1 c3 inp release = mkUGen Nothing [AR] (Left rate) "DWGPlucked" [freq,amp,gate_,pos,c1,c3,inp,release] Nothing 1 (Special 0) NoId++-- | Plucked physical model.+--+--  DWGPlucked2 [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1 mistune=1.008 mp=0.55 gc=1.0e-2+dwgPlucked2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dwgPlucked2 rate freq amp gate_ pos c1 c3 inp release mistune mp gc = mkUGen Nothing [AR] (Left rate) "DWGPlucked2" [freq,amp,gate_,pos,c1,c3,inp,release,mistune,mp,gc] Nothing 1 (Special 0) NoId++-- | Plucked physical model.+--+--  DWGPluckedStiff [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1 fB=2.0+dwgPluckedStiff :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dwgPluckedStiff rate freq amp gate_ pos c1 c3 inp release fB = mkUGen Nothing [AR] (Left rate) "DWGPluckedStiff" [freq,amp,gate_,pos,c1,c3,inp,release,fB] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  DWGSoundBoard [AR] inp=0.0 c1=20.0 c3=20.0 mix=0.8 d1=199.0 d2=211.0 d3=223.0 d4=227.0 d5=229.0 d6=233.0 d7=239.0 d8=241.0+dwgSoundBoard :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dwgSoundBoard inp c1 c3 mix d1 d2 d3 d4 d5 d6 d7 d8 = mkUGen Nothing [AR] (Right [0]) "DWGSoundBoard" [inp,c1,c3,mix,d1,d2,d3,d4,d5,d6,d7,d8] Nothing 1 (Special 0) NoId++-- | demand rate brownian movement with Gendyn distributions+--+--  Dbrown2 [] lo=0.0 hi=0.0 step=0.0 dist=0.0 length=1.0e8+dbrown2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dbrown2 rate lo hi step dist length_ = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dbrown2" [lo,hi,step,dist,length_] Nothing 1 (Special 0) NoId++-- | demand rate tag system on a buffer+--+--  DbufTag [DR] bufnum=0.0 v=0.0 axiom=0.0 rules=0.0 recycle=0.0 mode=0.0;    DEMAND/NONDET+dbufTag :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dbufTag z bufnum v axiom rules recycle mode = mkUGen Nothing [DR] (Left DR) "DbufTag" [bufnum,v,axiom,rules,recycle,mode] Nothing 1 (Special 0) (toUId z)++-- | Samplerate and bitrate reduction+--+--  Decimator [AR] in=0.0 rate=44100.0 bits=24.0+decimator :: Rate -> UGen -> UGen -> UGen -> UGen+decimator rate in_ rate_ bits = mkUGen Nothing [AR] (Left rate) "Decimator" [in_,rate_,bits] Nothing 1 (Special 0) NoId++-- | Demand version of the BetaBlocker VChip+--+--  DetaBlockerBuf [DR] bufnum=0.0 startpoint=0.0;    DEMAND/NONDET+detaBlockerBuf :: ID a => a -> UGen -> UGen -> UGen+detaBlockerBuf z bufnum startpoint = mkUGen Nothing [DR] (Left DR) "DetaBlockerBuf" [bufnum,startpoint] Nothing 1 (Special 0) (toUId z)++-- | demand rate finite state machine+--+--  Dfsm [DR] rules=0.0 n=1.0 rgen=0.0;    DEMAND/NONDET+dfsm :: ID a => a -> UGen -> UGen -> UGen -> UGen+dfsm z rules n rgen = mkUGen Nothing [DR] (Left DR) "Dfsm" [rules,n,rgen] Nothing 1 (Special 0) (toUId z)++-- | (Undocumented class)+--+--  Dgauss [] lo=0.0 hi=0.0 length=1.0e8+dgauss :: Rate -> UGen -> UGen -> UGen -> UGen+dgauss rate lo hi length_ = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dgauss" [lo,hi,length_] Nothing 1 (Special 0) NoId++-- | Ring modulation based on the physical model of a diode.+--+--  DiodeRingMod [AR] car=0.0 mod=0.0;    FILTER: TRUE+diodeRingMod :: UGen -> UGen -> UGen+diodeRingMod car mod_ = mkUGen Nothing [AR] (Right [0]) "DiodeRingMod" [car,mod_] Nothing 1 (Special 0) NoId++-- | port of some ladspa plugins+--+--  Disintegrator [AR] in=0.0 probability=0.5 multiplier=0.0;    FILTER: TRUE, NONDET+disintegrator :: ID a => a -> UGen -> UGen -> UGen -> UGen+disintegrator z in_ probability multiplier = mkUGen Nothing [AR] (Right [0]) "Disintegrator" [in_,probability,multiplier] Nothing 1 (Special 0) (toUId z)++-- | discrete time neurodynamics+--+--  Dneuromodule [KR,AR,DR] dt=0.0 *theta=0.0 *x=0.0 *weights=0.0;    MCE=3, NC INPUT: True, NONDET+dneuromodule :: ID a => Int -> a -> UGen -> UGen -> UGen -> UGen -> UGen+dneuromodule numChannels z dt theta x weights = mkUGen Nothing [KR,AR,DR] (Left DR) "Dneuromodule" [dt] (Just [theta,x,weights]) numChannels (Special 0) (toUId z)++-- | Nested Allpass filters as proposed by Vercoe and Pluckett+--+--  DoubleNestedAllpassC [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE+doubleNestedAllpassC :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+doubleNestedAllpassC in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassC" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId++-- | Nested Allpass filters as proposed by Vercoe and Pluckett+--+--  DoubleNestedAllpassL [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE+doubleNestedAllpassL :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+doubleNestedAllpassL in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassL" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId++-- | Nested Allpass filters as proposed by Vercoe and Pluckett+--+--  DoubleNestedAllpassN [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE+doubleNestedAllpassN :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+doubleNestedAllpassN in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassN" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId++-- | Forced DoubleWell Oscillator+--+--  DoubleWell [AR] reset=0.0 ratex=1.0e-2 ratey=1.0e-2 f=1.0 w=1.0e-3 delta=1.0 initx=0.0 inity=0.0+doubleWell :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+doubleWell rate reset ratex ratey f w delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell" [reset,ratex,ratey,f,w,delta,initx,inity] Nothing 1 (Special 0) NoId++-- | Forced DoubleWell Oscillator+--+--  DoubleWell2 [AR] reset=0.0 ratex=1.0e-2 ratey=1.0e-2 f=1.0 w=1.0e-3 delta=1.0 initx=0.0 inity=0.0+doubleWell2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+doubleWell2 rate reset ratex ratey f w delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell2" [reset,ratex,ratey,f,w,delta,initx,inity] Nothing 1 (Special 0) NoId++-- | Forced DoubleWell Oscillator+--+--  DoubleWell3 [AR] reset=0.0 rate=1.0e-2 f=0.0 delta=0.25 initx=0.0 inity=0.0+doubleWell3 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+doubleWell3 rate reset rate_ f delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell3" [reset,rate_,f,delta,initx,inity] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  DriveNoise [AR] in=0.0 amount=1.0 multi=5.0+driveNoise :: Rate -> UGen -> UGen -> UGen -> UGen+driveNoise rate in_ amount multi = mkUGen Nothing [AR] (Left rate) "DriveNoise" [in_,amount,multi] Nothing 1 (Special 0) NoId++-- | Crosscorrelation search and drum pattern matching beat tracker+--+--  DrumTrack [KR] in=0.0 lock=0.0 dynleak=0.0 tempowt=0.0 phasewt=0.0 basswt=0.0 patternwt=1.0 prior=0.0 kicksensitivity=1.0 snaresensitivity=1.0 debugmode=0.0+drumTrack :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+drumTrack rate in_ lock dynleak tempowt phasewt basswt patternwt prior kicksensitivity snaresensitivity debugmode = mkUGen Nothing [KR] (Left rate) "DrumTrack" [in_,lock,dynleak,tempowt,phasewt,basswt,patternwt,prior,kicksensitivity,snaresensitivity,debugmode] Nothing 4 (Special 0) NoId++-- | demand rate tag system+--+--  Dtag [] bufsize=0.0 v=0.0 axiom=0.0 rules=0.0 recycle=0.0 mode=0.0+dtag :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+dtag rate bufsize v axiom rules recycle mode = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dtag" [bufsize,v,axiom,rules,recycle,mode] Nothing 1 (Special 0) NoId++-- | Envelope Follower Filter+--+--  EnvDetect [AR] in=0.0 attack=100.0 release=0.0+envDetect :: Rate -> UGen -> UGen -> UGen -> UGen+envDetect rate in_ attack release = mkUGen Nothing [AR] (Left rate) "EnvDetect" [in_,attack,release] Nothing 1 (Special 0) NoId++-- | Envelope Follower+--+--  EnvFollow [KR,AR] input=0.0 decaycoeff=0.99+envFollow :: Rate -> UGen -> UGen -> UGen+envFollow rate input decaycoeff = mkUGen Nothing [KR,AR] (Left rate) "EnvFollow" [input,decaycoeff] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FFTComplexDev [KR] buffer=0.0 rectify=0.0 powthresh=0.1+fftComplexDev :: Rate -> UGen -> UGen -> UGen -> UGen+fftComplexDev rate buffer rectify powthresh = mkUGen Nothing [KR] (Left rate) "FFTComplexDev" [buffer,rectify,powthresh] Nothing 1 (Special 0) NoId++-- | Spectral crest measure+--+--  FFTCrest [KR] buffer=0.0 freqlo=0.0 freqhi=50000.0+fftCrest :: Rate -> UGen -> UGen -> UGen -> UGen+fftCrest rate buffer freqlo freqhi = mkUGen Nothing [KR] (Left rate) "FFTCrest" [buffer,freqlo,freqhi] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FFTDiffMags [KR] bufferA=0.0 bufferB=0.0+fftDiffMags :: Rate -> UGen -> UGen -> UGen+fftDiffMags rate bufferA bufferB = mkUGen Nothing [KR] (Left rate) "FFTDiffMags" [bufferA,bufferB] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FFTFlux [KR] buffer=0.0 normalise=1.0+fftFlux :: Rate -> UGen -> UGen -> UGen+fftFlux rate buffer normalise = mkUGen Nothing [KR] (Left rate) "FFTFlux" [buffer,normalise] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FFTFluxPos [KR] buffer=0.0 normalise=1.0+fftFluxPos :: Rate -> UGen -> UGen -> UGen+fftFluxPos rate buffer normalise = mkUGen Nothing [KR] (Left rate) "FFTFluxPos" [buffer,normalise] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FFTMKL [KR] buffer=0.0 epsilon=1.0e-6+fftmkl :: Rate -> UGen -> UGen -> UGen+fftmkl rate buffer epsilon = mkUGen Nothing [KR] (Left rate) "FFTMKL" [buffer,epsilon] Nothing 1 (Special 0) NoId++-- | Find peak value in an FFT frame+--+--  FFTPeak [KR] buffer=0.0 freqlo=0.0 freqhi=50000.0+fftPeak :: Rate -> UGen -> UGen -> UGen -> UGen+fftPeak rate buffer freqlo freqhi = mkUGen Nothing [KR] (Left rate) "FFTPeak" [buffer,freqlo,freqhi] Nothing 2 (Special 0) NoId++-- | (Undocumented class)+--+--  FFTPhaseDev [KR] buffer=0.0 weight=0.0 powthresh=0.1+fftPhaseDev :: Rate -> UGen -> UGen -> UGen -> UGen+fftPhaseDev rate buffer weight powthresh = mkUGen Nothing [KR] (Left rate) "FFTPhaseDev" [buffer,weight,powthresh] Nothing 1 (Special 0) NoId++-- | Instantaneous spectral power+--+--  FFTPower [KR] buffer=0.0 square=1.0+fftPower :: Rate -> UGen -> UGen -> UGen+fftPower rate buffer square = mkUGen Nothing [KR] (Left rate) "FFTPower" [buffer,square] Nothing 1 (Special 0) NoId++-- | Spectral slope+--+--  FFTSlope [KR] buffer=0.0+fftSlope :: Rate -> UGen -> UGen+fftSlope rate buffer = mkUGen Nothing [KR] (Left rate) "FFTSlope" [buffer] Nothing 1 (Special 0) NoId++-- | Spectral spread+--+--  FFTSpread [KR] buffer=0.0 centroid=0.0+fftSpread :: Rate -> UGen -> UGen -> UGen+fftSpread rate buffer centroid = mkUGen Nothing [KR] (Left rate) "FFTSpread" [buffer,centroid] Nothing 1 (Special 0) NoId++-- | Spectral flatness, divided into subbands+--+--  FFTSubbandFlatness [KR] chain=0.0 cutfreqs=0.0+fftSubbandFlatness :: Rate -> UGen -> UGen -> UGen+fftSubbandFlatness rate chain cutfreqs = mkUGen Nothing [KR] (Left rate) "FFTSubbandFlatness" [chain,cutfreqs] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FFTSubbandFlux [KR] chain=0.0 cutfreqs=0.0 posonly=0.0+fftSubbandFlux :: Rate -> UGen -> UGen -> UGen -> UGen+fftSubbandFlux rate chain cutfreqs posonly = mkUGen Nothing [KR] (Left rate) "FFTSubbandFlux" [chain,cutfreqs,posonly] Nothing 1 (Special 0) NoId++-- | Spectral power, divided into subbands+--+--  FFTSubbandPower [KR] chain=0.0 cutfreqs=0.0 square=1.0 scalemode=1.0+fftSubbandPower :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+fftSubbandPower rate chain cutfreqs square scalemode = mkUGen Nothing [KR] (Left rate) "FFTSubbandPower" [chain,cutfreqs,square,scalemode] Nothing 1 (Special 0) NoId++-- | Phase modulation oscillator matrix.+--+--  FM7 [AR] *ctlMatrix=0.0 *modMatrix=0.0;    MCE=2+fm7 :: Rate -> UGen -> UGen -> UGen+fm7 rate ctlMatrix modMatrix = mkUGen Nothing [AR] (Left rate) "FM7" [] (Just [ctlMatrix,modMatrix]) 6 (Special 0) NoId++-- | Granular synthesis with FM grains+--+--  FMGrain [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0;    FILTER: TRUE+fmGrain :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fmGrain trigger dur carfreq modfreq index_ = mkUGen Nothing [AR] (Right [0]) "FMGrain" [trigger,dur,carfreq,modfreq,index_] Nothing 1 (Special 0) NoId++-- | Granular synthesis with FM grains and user supplied envelope+--+--  FMGrainB [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf=0.0;    FILTER: TRUE+fmGrainB :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fmGrainB trigger dur carfreq modfreq index_ envbuf = mkUGen Nothing [AR] (Right [0]) "FMGrainB" [trigger,dur,carfreq,modfreq,index_,envbuf] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FMGrainBBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0+fmGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fmGrainBBF rate trigger dur carfreq modfreq index_ envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainBBF" [trigger,dur,carfreq,modfreq,index_,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId++-- | (Undocumented class)+--+--  FMGrainBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0+fmGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fmGrainBF rate trigger dur carfreq modfreq index_ azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainBF" [trigger,dur,carfreq,modfreq,index_,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId++-- | Granular synthesis with FM grains and user supplied envelopes+--+--  FMGrainI [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5+fmGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fmGrainI rate trigger dur carfreq modfreq index_ envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "FMGrainI" [trigger,dur,carfreq,modfreq,index_,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FMGrainIBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0+fmGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fmGrainIBF rate trigger dur carfreq modfreq index_ envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainIBF" [trigger,dur,carfreq,modfreq,index_,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId++-- | Decode an FMH signal for a specific speaker+--+--  FMHDecode1 [AR] w=0.0 x=0.0 y=0.0 z=0.0 r=0.0 s=0.0 t=0.0 u=0.0 v=0.0 azimuth=0.0 elevation=0.0+fmhDecode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fmhDecode1 rate w x y z r s t u v azimuth elevation = mkUGen Nothing [AR] (Left rate) "FMHDecode1" [w,x,y,z,r,s,t,u,v,azimuth,elevation] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FMHEncode0 [AR] in=0.0 azimuth=0.0 elevation=0.0 gain=1.0+fmhEncode0 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+fmhEncode0 rate in_ azimuth elevation gain = mkUGen Nothing [AR] (Left rate) "FMHEncode0" [in_,azimuth,elevation,gain] Nothing 9 (Special 0) NoId++-- | Second Order Ambisonic encoder+--+--  FMHEncode1 [AR] in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0+fmhEncode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fmhEncode1 rate in_ azimuth elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "FMHEncode1" [in_,azimuth,elevation,rho,gain,wComp] Nothing 9 (Special 0) NoId++-- | Second Order Ambisonic encoder+--+--  FMHEncode2 [AR] in=0.0 point_x=0.0 point_y=0.0 elevation=0.0 gain=1.0 wComp=0.0+fmhEncode2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fmhEncode2 rate in_ point_x point_y elevation gain wComp = mkUGen Nothing [AR] (Left rate) "FMHEncode2" [in_,point_x,point_y,elevation,gain,wComp] Nothing 9 (Special 0) NoId++-- | Storing feature data from UGens in NRT mode+--+--  FeatureSave [KR] features=0.0 trig=0.0+featureSave :: Rate -> UGen -> UGen -> UGen+featureSave rate features trig_ = mkUGen Nothing [KR] (Left rate) "FeatureSave" [features,trig_] Nothing 1 (Special 0) NoId++-- | FitzHughNagumo Neuron Firing Oscillator+--+--  Fhn2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0+fhn2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fhn2DC rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DC" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId++-- | FitzHughNagumo Neuron Firing Oscillator+--+--  Fhn2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0+fhn2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fhn2DL rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DL" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId++-- | FitzHughNagumo Neuron Firing Oscillator+--+--  Fhn2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0+fhn2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fhn2DN rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DN" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FhnTrig [KR,AR] minfreq=4.0 maxfreq=10.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0+fhnTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fhnTrig rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "FhnTrig" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  FincoSprottL [AR] freq=22050.0 a=2.45 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0+fincoSprottL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fincoSprottL rate freq a h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottL" [freq,a,h,xi,yi,zi] Nothing 3 (Special 0) NoId++-- | (Undocumented class)+--+--  FincoSprottM [AR] freq=22050.0 a=-7.0 b=4.0 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0+fincoSprottM :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fincoSprottM rate freq a b h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottM" [freq,a,b,h,xi,yi,zi] Nothing 3 (Special 0) NoId++-- | (Undocumented class)+--+--  FincoSprottS [AR] freq=22050.0 a=8.0 b=2.0 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0+fincoSprottS :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fincoSprottS rate freq a b h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottS" [freq,a,b,h,xi,yi,zi] Nothing 3 (Special 0) NoId++-- | Neuron Firing Model Oscillator+--+--  FitzHughNagumo [AR] reset=0.0 rateu=1.0e-2 ratew=1.0e-2 b0=1.0 b1=1.0 initu=0.0 initw=0.0+fitzHughNagumo :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+fitzHughNagumo rate reset rateu ratew b0 b1 initu initw = mkUGen Nothing [AR] (Left rate) "FitzHughNagumo" [reset,rateu,ratew,b0,b1,initu,initw] Nothing 1 (Special 0) NoId++-- | calculates spectral MSE distance of two fft chains+--+--  FrameCompare [KR] buffer1=0.0 buffer2=0.0 wAmount=0.5+frameCompare :: Rate -> UGen -> UGen -> UGen -> UGen+frameCompare rate buffer1 buffer2 wAmount = mkUGen Nothing [KR] (Left rate) "FrameCompare" [buffer1,buffer2,wAmount] Nothing 1 (Special 0) NoId++-- | A physical model of a system with dry-friction. A chaotic filter.+--+--  Friction [KR,AR] in=0.0 friction=0.5 spring=0.414 damp=0.313 mass=0.1 beltmass=1.0+friction :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+friction rate in_ friction_ spring_ damp mass beltmass = mkUGen Nothing [KR,AR] (Left rate) "Friction" [in_,friction_,spring_,damp,mass,beltmass] Nothing 1 (Special 0) NoId++-- | Single gammatone filter+--+--  Gammatone [AR] input=0.0 centrefrequency=440.0 bandwidth=200.0;    FILTER: TRUE+gammatone :: UGen -> UGen -> UGen -> UGen+gammatone input centrefrequency bandwidth = mkUGen Nothing [AR] (Right [0]) "Gammatone" [input,centrefrequency,bandwidth] Nothing 1 (Special 0) NoId++-- | Gaussian classifier+--+--  GaussClass [KR] in=0.0 bufnum=0.0 gate=0.0+gaussClass :: Rate -> UGen -> UGen -> UGen -> UGen+gaussClass rate in_ bufnum gate_ = mkUGen Nothing [KR] (Left rate) "GaussClass" [in_,bufnum,gate_] Nothing 1 (Special 0) NoId++-- | impulses around a certain frequency+--+--  GaussTrig [KR,AR] freq=440.0 dev=0.3+gaussTrig :: Rate -> UGen -> UGen -> UGen+gaussTrig rate freq dev = mkUGen Nothing [KR,AR] (Left rate) "GaussTrig" [freq,dev] Nothing 1 (Special 0) NoId++-- | gingerbreadman map 2D chaotic generator+--+--  Gbman2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1+gbman2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+gbman2DC rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DC" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId++-- | gingerbreadman map 2D chaotic generator+--+--  Gbman2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1+gbman2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+gbman2DL rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DL" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId++-- | gingerbreadman map 2D chaotic generator+--+--  Gbman2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1+gbman2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+gbman2DN rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DN" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  GbmanTrig [KR,AR] minfreq=5.0 maxfreq=10.0 x0=1.2 y0=2.1+gbmanTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+gbmanTrig rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "GbmanTrig" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId++-- | Dynamic stochastic synthesis generator+--+--  Gendy4 [KR,AR] ampdist=1.0 durdist=1.0 adparam=1.0 ddparam=1.0 minfreq=440.0 maxfreq=660.0 ampscale=0.5 durscale=0.5 initCPs=12.0 knum=0.0+gendy4 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+gendy4 rate ampdist durdist adparam ddparam minfreq maxfreq ampscale durscale initCPs knum = mkUGen Nothing [KR,AR] (Left rate) "Gendy4" [ampdist,durdist,adparam,ddparam,minfreq,maxfreq,ampscale,durscale,initCPs,knum] Nothing 1 (Special 0) NoId++-- | Dynamic stochastic synthesis generator+--+--  Gendy5 [KR,AR] ampdist=1.0 durdist=1.0 adparam=1.0 ddparam=1.0 minfreq=440.0 maxfreq=660.0 ampscale=0.5 durscale=0.5 initCPs=12.0 knum=0.0+gendy5 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+gendy5 rate ampdist durdist adparam ddparam minfreq maxfreq ampscale durscale initCPs knum = mkUGen Nothing [KR,AR] (Left rate) "Gendy5" [ampdist,durdist,adparam,ddparam,minfreq,maxfreq,ampscale,durscale,initCPs,knum] Nothing 1 (Special 0) NoId++-- | Read (numeric) shell environment variables into a synth+--+--  Getenv [] key=0.0 defaultval=0.0+getenv :: Rate -> UGen -> UGen -> UGen+getenv rate key defaultval = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Getenv" [key,defaultval] Nothing 1 (Special 0) NoId++-- | backward compatibility+--+--  GlitchBPF [KR,AR] in=0.0 freq=440.0 rq=1.0+glitchBPF :: Rate -> UGen -> UGen -> UGen -> UGen+glitchBPF rate in_ freq rq = mkUGen Nothing [KR,AR] (Left rate) "GlitchBPF" [in_,freq,rq] Nothing 1 (Special 0) NoId++-- | backward compatibility+--+--  GlitchBRF [KR,AR] in=0.0 freq=440.0 rq=1.0+glitchBRF :: Rate -> UGen -> UGen -> UGen -> UGen+glitchBRF rate in_ freq rq = mkUGen Nothing [KR,AR] (Left rate) "GlitchBRF" [in_,freq,rq] Nothing 1 (Special 0) NoId++-- | backward compatibility+--+--  GlitchHPF [KR,AR] in=0.0 freq=440.0+glitchHPF :: Rate -> UGen -> UGen -> UGen+glitchHPF rate in_ freq = mkUGen Nothing [KR,AR] (Left rate) "GlitchHPF" [in_,freq] Nothing 1 (Special 0) NoId++-- | backward compatibility+--+--  GlitchRHPF [KR,AR] in=0.0 freq=440.0 rq=1.0+glitchRHPF :: UGen -> UGen -> UGen -> UGen+glitchRHPF in_ freq rq = mkUGen Nothing [KR,AR] (Right [0]) "GlitchRHPF" [in_,freq,rq] Nothing 1 (Special 0) NoId++-- | Calculate a single DFT bin, to detect presence of a frequency+--+--  Goertzel [KR] in=0.0 bufsize=1024.0 freq=0.0 hop=1.0+goertzel :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+goertzel rate in_ bufsize freq hop = mkUGen Nothing [KR] (Left rate) "Goertzel" [in_,bufsize,freq,hop] Nothing 2 (Special 0) NoId++-- | (Undocumented class)+--+--  GrainBufJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 loop=0.0 interp=2.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0+grainBufJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+grainBufJ rate numChannels trigger dur sndbuf rate_ pos loop interp grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainBufJ" [numChannels,trigger,dur,sndbuf,rate_,pos,loop,interp,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  GrainFMJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0+grainFMJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+grainFMJ rate numChannels trigger dur carfreq modfreq index_ grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainFMJ" [numChannels,trigger,dur,carfreq,modfreq,index_,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  GrainInJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 in=0.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0+grainInJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+grainInJ rate numChannels trigger dur in_ grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainInJ" [numChannels,trigger,dur,in_,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  GrainSinJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 freq=440.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0+grainSinJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+grainSinJ rate numChannels trigger dur freq grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainSinJ" [numChannels,trigger,dur,freq,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId++-- | dynamical system simulation (Newtonian gravitational force)+--+--  GravityGrid [AR] reset=0.0 rate=0.1 newx=0.0 newy=0.0 bufnum=0.0+gravityGrid :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+gravityGrid rate reset rate_ newx newy bufnum = mkUGen Nothing [AR] (Left rate) "GravityGrid" [reset,rate_,newx,newy,bufnum] Nothing 1 (Special 0) NoId++-- | dynamical system simulation (Newtonian gravitational force)+--+--  GravityGrid2 [AR] reset=0.0 rate=0.1 newx=0.0 newy=0.0 bufnum=0.0+gravityGrid2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+gravityGrid2 rate reset rate_ newx newy bufnum = mkUGen Nothing [AR] (Left rate) "GravityGrid2" [reset,rate_,newx,newy,bufnum] Nothing 1 (Special 0) NoId++-- | algorithmic delay+--+--  GreyholeRaw [AR] in1=0.0 in2=0.0 damping=0.0 delaytime=2.0 diffusion=0.5 feedback=0.9 moddepth=0.1 modfreq=2.0 size=1.0;    FILTER: TRUE+greyholeRaw :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+greyholeRaw in1 in2 damping delaytime diffusion feedback moddepth modfreq size = mkUGen Nothing [AR] (Right [0,1]) "GreyholeRaw" [in1,in2,damping,delaytime,diffusion,feedback,moddepth,modfreq,size] Nothing 2 (Special 0) NoId++-- | Simple cochlear hair cell model+--+--  HairCell [KR,AR] input=0.0 spontaneousrate=0.0 boostrate=200.0 restorerate=1000.0 loss=0.99;    FILTER: TRUE+hairCell :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+hairCell input spontaneousrate boostrate restorerate loss = mkUGen Nothing [KR,AR] (Right [0]) "HairCell" [input,spontaneousrate,boostrate,restorerate,loss] Nothing 1 (Special 0) NoId+++-- | 16 voice harmonic oscillator+--+--  HarmonicOsc [KR,AR] freq=100.0 firstharmonic=1.0 *amplitudes=0.0+harmonicOsc :: Rate -> UGen -> UGen -> UGen -> UGen+harmonicOsc rate freq firstharmonic amplitudes = mkUGen Nothing [KR,AR] (Left rate) "HarmonicOsc" [freq,firstharmonic] (Just [amplitudes]) 1 (Special 0) NoId++-- | henon map 2D chaotic generator+--+--  Henon2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933+henon2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+henon2DC rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DC" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId++-- | henon map 2D chaotic generator+--+--  Henon2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933+henon2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+henon2DL rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DL" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId++-- | henon map 2D chaotic generator+--+--  Henon2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933+henon2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+henon2DN rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DN" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  HenonTrig [KR,AR] minfreq=5.0 maxfreq=10.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933+henonTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+henonTrig rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "HenonTrig" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId++-- | Transform a cepstrum back to a spectrum+--+--  ICepstrum [] cepchain=0.0 fftbuf=0.0+iCepstrum :: Rate -> UGen -> UGen -> UGen+iCepstrum rate cepchain fftbuf = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "ICepstrum" [cepchain,fftbuf] Nothing 1 (Special 0) NoId++-- | 24db/oct rolloff, 4nd order resonant Low Pass Filter+--+--  IIRFilter [AR] in=0.0 freq=440.0 rq=1.0;    FILTER: TRUE+iirFilter :: UGen -> UGen -> UGen -> UGen+iirFilter in_ freq rq = mkUGen Nothing [AR] (Right [0]) "IIRFilter" [in_,freq,rq] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  InGrain [AR] trigger=0.0 dur=1.0 in=0.0+inGrain :: Rate -> UGen -> UGen -> UGen -> UGen+inGrain rate trigger dur in_ = mkUGen Nothing [AR] (Left rate) "InGrain" [trigger,dur,in_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  InGrainB [AR] trigger=0.0 dur=1.0 in=0.0 envbuf=0.0+inGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+inGrainB rate trigger dur in_ envbuf = mkUGen Nothing [AR] (Left rate) "InGrainB" [trigger,dur,in_,envbuf] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  InGrainBBF [AR] trigger=0.0 dur=1.0 in=0.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0+inGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+inGrainBBF rate trigger dur in_ envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainBBF" [trigger,dur,in_,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId++-- | (Undocumented class)+--+--  InGrainBF [AR] trigger=0.0 dur=1.0 in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0+inGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+inGrainBF rate trigger dur in_ azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainBF" [trigger,dur,in_,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId++-- | (Undocumented class)+--+--  InGrainI [AR] trigger=0.0 dur=1.0 in=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5+inGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+inGrainI rate trigger dur in_ envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "InGrainI" [trigger,dur,in_,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  InGrainIBF [AR] trigger=0.0 dur=1.0 in=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0+inGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+inGrainIBF rate trigger dur in_ envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainIBF" [trigger,dur,in_,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId++-- | Distortion by subtracting magnitude from 1+--+--  InsideOut [KR,AR] in=0.0+insideOut :: Rate -> UGen -> UGen+insideOut rate in_ = mkUGen Nothing [KR,AR] (Left rate) "InsideOut" [in_] Nothing 1 (Special 0) NoId++-- | instruction synthesis (breakpoint set interpreter)+--+--  Instruction [AR] bufnum=0.0+instruction :: Rate -> UGen -> UGen+instruction rate bufnum = mkUGen Nothing [AR] (Left rate) "Instruction" [bufnum] Nothing 1 (Special 0) NoId++-- | Raw version of the JPverb algorithmic reverberator, designed to produce long tails with chorusing+--+--  JPverbRaw [KR,AR] in1=0.0 in2=0.0 damp=0.0 earlydiff=0.707 highband=2000.0 highx=1.0 lowband=500.0 lowx=1.0 mdepth=0.1 mfreq=2.0 midx=1.0 size=1.0 t60=1.0;    FILTER: TRUE+jPverbRaw :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+jPverbRaw in1 in2 damp earlydiff highband highx lowband lowx mdepth mfreq midx size t60 = mkUGen Nothing [KR,AR] (Right [0]) "JPverbRaw" [in1,in2,damp,earlydiff,highband,highx,lowband,lowx,mdepth,mfreq,midx,size,t60] Nothing 2 (Special 0) NoId++-- | k-means classification in real time+--+--  KMeansRT [KR] bufnum=0.0 inputdata=0.0 k=5.0 gate=1.0 reset=0.0 learn=1.0+kMeansRT :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+kMeansRT rate bufnum inputdata k gate_ reset learn = mkUGen Nothing [KR] (Left rate) "KMeansRT" [bufnum,inputdata,k,gate_,reset,learn] Nothing 1 (Special 0) NoId++-- | Running score of maximum correlation of chromagram with key profiles+--+--  KeyClarity [KR] chain=0.0 keydecay=2.0 chromaleak=0.5+keyClarity :: Rate -> UGen -> UGen -> UGen -> UGen+keyClarity rate chain keydecay chromaleak = mkUGen Nothing [KR] (Left rate) "KeyClarity" [chain,keydecay,chromaleak] Nothing 1 (Special 0) NoId++-- | Find best correlated key mode with chromagram between major, minor and chromatic cluster+--+--  KeyMode [KR] chain=0.0 keydecay=2.0 chromaleak=0.5+keyMode :: Rate -> UGen -> UGen -> UGen -> UGen+keyMode rate chain keydecay chromaleak = mkUGen Nothing [KR] (Left rate) "KeyMode" [chain,keydecay,chromaleak] Nothing 1 (Special 0) NoId++-- | K-means Oscillator+--+--  KmeansToBPSet1 [AR] freq=440.0 numdatapoints=20.0 maxnummeans=4.0 nummeans=4.0 tnewdata=1.0 tnewmeans=1.0 soft=1.0 bufnum=0.0+kmeansToBPSet1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+kmeansToBPSet1 rate freq numdatapoints maxnummeans nummeans tnewdata tnewmeans soft bufnum = mkUGen Nothing [AR] (Left rate) "KmeansToBPSet1" [freq,numdatapoints,maxnummeans,nummeans,tnewdata,tnewmeans,soft,bufnum] Nothing 1 (Special 0) NoId++-- | random walk step+--+--  LFBrownNoise0 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET+lfBrownNoise0 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen+lfBrownNoise0 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise0" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)++-- | random walk linear interp+--+--  LFBrownNoise1 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET+lfBrownNoise1 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen+lfBrownNoise1 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise1" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)++-- | random walk cubic interp+--+--  LFBrownNoise2 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET+lfBrownNoise2 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen+lfBrownNoise2 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise2" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)++-- | Live Linear Predictive Coding Analysis and Resynthesis+--+--  LPCAnalyzer [AR] input=0.0 source=1.0e-2 n=256.0 p=10.0 testE=0.0 delta=0.999 windowtype=0.0;    FILTER: TRUE+lpcAnalyzer :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+lpcAnalyzer input source n p testE delta windowtype = mkUGen Nothing [AR] (Right [0,1]) "LPCAnalyzer" [input,source,n,p,testE,delta,windowtype] Nothing 1 (Special 0) NoId++-- | Linear Predictive Coding Gone Wrong+--+--  LPCError [AR] input=0.0 p=10.0+lpcError :: Rate -> UGen -> UGen -> UGen+lpcError rate input p = mkUGen Nothing [AR] (Left rate) "LPCError" [input,p] Nothing 1 (Special 0) NoId++-- | Utilize LPC data+--+--  LPCSynth [AR] buffer=0.0 signal=0.0 pointer=0.0+lpcSynth :: UGen -> UGen -> UGen -> UGen+lpcSynth buffer signal pointer = mkUGen Nothing [AR] (Left AR) "LPCSynth" [buffer,signal,pointer] Nothing 1 (Special 0) NoId++-- | Utilize LPC data+--+--  LPCVals [KR,AR] buffer=0.0 pointer=0.0+lpcVals :: UGen -> UGen -> UGen+lpcVals buffer pointer = mkUGen Nothing [KR,AR] (Left AR) "LPCVals" [buffer,pointer] Nothing 3 (Special 0) NoId++-- | (Undocumented class)+--+--  LPF1 [KR,AR] in=0.0 freq=1000.0+lpf1 :: Rate -> UGen -> UGen -> UGen+lpf1 rate in_ freq = mkUGen Nothing [KR,AR] (Left rate) "LPF1" [in_,freq] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  LPF18 [AR] in=0.0 freq=100.0 res=1.0 dist=0.4+lpf18 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+lpf18 rate in_ freq res dist = mkUGen Nothing [AR] (Left rate) "LPF18" [in_,freq,res,dist] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  LPFVS6 [KR,AR] in=0.0 freq=1000.0 slope=0.5+lpfvs6 :: Rate -> UGen -> UGen -> UGen -> UGen+lpfvs6 rate in_ freq slope_ = mkUGen Nothing [KR,AR] (Left rate) "LPFVS6" [in_,freq,slope_] Nothing 1 (Special 0) NoId++-- | A digital model of the Buchla Lowpass-Gate+--+--  LPG [AR] input=0.0 controlinput=0.0 controloffset=0.0 controlscale=1.0 vca=1.0 resonance=1.5 lowpassmode=1.0 linearity=1.0+lpg :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+lpg input controlinput controloffset controlscale vca resonance lowpassmode linearity = mkUGen Nothing [AR] (Right [0]) "LPG" [input,controlinput,controloffset,controlscale,vca,resonance,lowpassmode,linearity] Nothing 1 (Special 0) NoId++-- | Linear Time Invariant General Filter Equation+--+--  LTI [AR] input=0.0 bufnuma=0.0 bufnumb=1.0+lti :: Rate -> UGen -> UGen -> UGen -> UGen+lti rate input bufnuma bufnumb = mkUGen Nothing [AR] (Left rate) "LTI" [input,bufnuma,bufnumb] Nothing 1 (Special 0) NoId++-- | latoocarfian 2D chaotic generator+--+--  Latoocarfian2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332+latoocarfian2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+latoocarfian2DC rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DC" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId++-- | latoocarfian 2D chaotic generator+--+--  Latoocarfian2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332+latoocarfian2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+latoocarfian2DL rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DL" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId++-- | latoocarfian 2D chaotic generator+--+--  Latoocarfian2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332+latoocarfian2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+latoocarfian2DN rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DN" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  LatoocarfianTrig [KR,AR] minfreq=5.0 maxfreq=10.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332+latoocarfianTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+latoocarfianTrig rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "LatoocarfianTrig" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId++-- | Emit a sequence of triggers at specified time offsets+--+--  ListTrig [KR] bufnum=0.0 reset=0.0 offset=0.0 numframes=0.0+listTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+listTrig rate bufnum reset offset numframes = mkUGen Nothing [KR] (Left rate) "ListTrig" [bufnum,reset,offset,numframes] Nothing 1 (Special 0) NoId++-- | Emit a sequence of triggers at specified time offsets+--+--  ListTrig2 [KR] bufnum=0.0 reset=0.0 numframes=0.0+listTrig2 :: Rate -> UGen -> UGen -> UGen -> UGen+listTrig2 rate bufnum reset numframes = mkUGen Nothing [KR] (Left rate) "ListTrig2" [bufnum,reset,numframes] Nothing 1 (Special 0) NoId++-- | Store values to a buffer, whenever triggered+--+--  Logger [KR] inputArray=0.0 trig=0.0 bufnum=0.0 reset=0.0+logger :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+logger rate inputArray trig_ bufnum reset = mkUGen Nothing [KR] (Left rate) "Logger" [inputArray,trig_,bufnum,reset] Nothing 1 (Special 0) NoId++-- | sample looping oscillator+--+--  LoopBuf [AR] bufnum=0.0 rate=1.0 gate=1.0 startPos=0.0 startLoop=0.0 endLoop=0.0 interpolation=2.0;    NC INPUT: True+loopBuf :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+loopBuf numChannels rate bufnum rate_ gate_ startPos startLoop endLoop interpolation = mkUGen Nothing [AR] (Left rate) "LoopBuf" [bufnum,rate_,gate_,startPos,startLoop,endLoop,interpolation] Nothing numChannels (Special 0) NoId++-- | lorenz 2D chaotic generator+--+--  Lorenz2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363+lorenz2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+lorenz2DC rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DC" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId++-- | lorenz 2D chaotic generator+--+--  Lorenz2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363+lorenz2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+lorenz2DL rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DL" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId++-- | lorenz 2D chaotic generator+--+--  Lorenz2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363+lorenz2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+lorenz2DN rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DN" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId++-- | lorenz chaotic trigger generator+--+--  LorenzTrig [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363+lorenzTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+lorenzTrig rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "LorenzTrig" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId++-- | simple resonating lowpass filter+--+--  Lores [AR] in=0.0 freq=880.0 res=0.5+lores :: UGen -> UGen -> UGen -> UGen+lores in_ freq res = mkUGen Nothing [AR] (Right [0]) "Lores" [in_,freq,res] Nothing 1 (Special 0) NoId++-- | 2-species Predator-Prey model+--+--  LotkaVolterra [AR] freq=22050.0 a=1.5 b=1.5 c=0.5 d=1.5 h=5.0e-2 xi=1.0 yi=0.2+lotkaVolterra :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+lotkaVolterra rate freq a b c d h xi yi = mkUGen Nothing [AR] (Left rate) "LotkaVolterra" [freq,a,b,c,d,h,xi,yi] Nothing 2 (Special 0) NoId++-- | (Undocumented class)+--+--  MCLDChaosGen [] maxSize=0.0+mcldChaosGen :: Rate -> UGen -> UGen+mcldChaosGen rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "MCLDChaosGen" [maxSize] Nothing 1 (Special 0) NoId++-- | First order Markov Chain implementation for audio signals+--+--  MarkovSynth [AR] in=0.0 isRecording=1.0 waitTime=2.0 tableSize=10.0+markovSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+markovSynth rate in_ isRecording waitTime tableSize = mkUGen Nothing [AR] (Left rate) "MarkovSynth" [in_,isRecording,waitTime,tableSize] Nothing 1 (Special 0) NoId++-- | Real time sparse representation+--+--  MatchingP [KR,AR] dict=0.0 in=0.0 dictsize=1.0 ntofind=1.0 hop=1.0 method=0.0+matchingP :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+matchingP rate dict in_ dictsize ntofind hop method = mkUGen Nothing [KR,AR] (Left rate) "MatchingP" [dict,in_,dictsize,ntofind,hop,method] Nothing 4 (Special 0) NoId++-- | (Undocumented class)+--+--  MatchingPResynth [KR,AR] dict=0.0 method=0.0 trigger=0.0 residual=0.0 activs=0.0+matchingPResynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+matchingPResynth rate dict method trigger residual activs = mkUGen Nothing [KR,AR] (Left rate) "MatchingPResynth" [dict,method,trigger,residual,activs] Nothing 1 (Special 0) NoId++-- | maximum within last x samples+--+--  Max [KR] in=0.0 numsamp=64.0+max :: Rate -> UGen -> UGen -> UGen+max rate in_ numsamp = mkUGen Nothing [KR] (Left rate) "Max" [in_,numsamp] Nothing 1 (Special 0) NoId++-- | Tracks and prints amplitudes+--+--  Maxamp [AR] in=0.0 numSamps=1000.0+maxamp :: Rate -> UGen -> UGen -> UGen+maxamp rate in_ numSamps = mkUGen Nothing [AR] (Left rate) "Maxamp" [in_,numSamps] Nothing 1 (Special 0) NoId++-- | Piano synthesiser+--+--  MdaPiano [AR] freq=440.0 gate=1.0 vel=100.0 decay=0.8 release=0.8 hard=0.8 velhard=0.8 muffle=0.8 velmuff=0.8 velcurve=0.8 stereo=0.2 tune=0.5 random=0.1 stretch=0.1 sustain=0.0+mdaPiano :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+mdaPiano rate freq gate_ vel decay_ release hard velhard muffle velmuff velcurve stereo tune random stretch sustain = mkUGen Nothing [AR] (Left rate) "MdaPiano" [freq,gate_,vel,decay_,release,hard,velhard,muffle,velmuff,velcurve,stereo,tune,random,stretch,sustain] Nothing 2 (Special 0) NoId++-- | Mean of recent values, triggered+--+--  MeanTriggered [KR,AR] in=0.0 trig=0.0 length=10.0+meanTriggered :: Rate -> UGen -> UGen -> UGen -> UGen+meanTriggered rate in_ trig_ length_ = mkUGen Nothing [KR,AR] (Left rate) "MeanTriggered" [in_,trig_,length_] Nothing 1 (Special 0) NoId++-- | Meddis cochlear hair cell model+--+--  Meddis [KR,AR] input=0.0;    FILTER: TRUE+meddis :: UGen -> UGen+meddis input = mkUGen Nothing [KR,AR] (Right [0]) "Meddis" [input] Nothing 1 (Special 0) NoId++-- | Separate harmonic and percussive parts of a signal+--+--  MedianSeparation [] fft=0.0 fftharmonic=0.0 fftpercussive=0.0 fftsize=1024.0 mediansize=17.0 hardorsoft=0.0 p=2.0 medianormax=0.0+medianSeparation :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+medianSeparation rate fft_ fftharmonic fftpercussive fftsize mediansize hardorsoft p medianormax = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "MedianSeparation" [fft_,fftharmonic,fftpercussive,fftsize,mediansize,hardorsoft,p,medianormax] Nothing 2 (Special 0) NoId++-- | Median of recent values, triggered+--+--  MedianTriggered [KR,AR] in=0.0 trig=0.0 length=10.0+medianTriggered :: Rate -> UGen -> UGen -> UGen -> UGen+medianTriggered rate in_ trig_ length_ = mkUGen Nothing [KR,AR] (Left rate) "MedianTriggered" [in_,trig_,length_] Nothing 1 (Special 0) NoId++-- | Waveguide mesh physical models of drum membranes+--+--  MembraneCircle [AR] excitation=0.0 tension=5.0e-2 loss=0.99999+membraneCircle :: Rate -> UGen -> UGen -> UGen -> UGen+membraneCircle rate excitation tension loss = mkUGen Nothing [AR] (Left rate) "MembraneCircle" [excitation,tension,loss] Nothing 1 (Special 0) NoId++-- | Waveguide mesh physical models of drum membranes+--+--  MembraneHexagon [AR] excitation=0.0 tension=5.0e-2 loss=0.99999+membraneHexagon :: Rate -> UGen -> UGen -> UGen -> UGen+membraneHexagon rate excitation tension loss = mkUGen Nothing [AR] (Left rate) "MembraneHexagon" [excitation,tension,loss] Nothing 1 (Special 0) NoId++-- | Metronome+--+--  Metro [KR,AR] bpm=0.0 numBeats=0.0+metro :: Rate -> UGen -> UGen -> UGen+metro rate bpm numBeats = mkUGen Nothing [KR,AR] (Left rate) "Metro" [bpm,numBeats] Nothing 1 (Special 0) NoId++-- | a macro oscillator+--+--  MiBraids [AR] pitch=60.0 timbre=0.5 color=0.5 model=0.0 trig=0.0 resamp=0.0 decim=0.0 bits=0.0 ws=0.0+miBraids :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+miBraids rate pitch_ timbre color model trig_ resamp decim bits ws = mkUGen Nothing [AR] (Left rate) "MiBraids" [pitch_,timbre,color,model,trig_,resamp,decim,bits,ws] Nothing 1 (Special 0) NoId++-- | granular audio processor and texture synthesizer+--+--  MiClouds [AR] pit=0.0 pos=0.5 size=0.25 dens=0.4 tex=0.5 drywet=0.5 in_gain=1.0 spread=0.5 rvb=0.0 fb=0.0 freeze=0.0 mode=0.0 lofi=0.0 trig=0.0 *inputArray=0.0;    MCE=1, REORDERS INPUTS: [14,0,1,2,3,4,5,6,7,8,9,10,11,12,13]+miClouds :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+miClouds rate pit pos size dens tex drywet in_gain spread rvb fb freeze mode lofi trig_ inputArray = mkUGen Nothing [AR] (Left rate) "MiClouds" [pit,pos,size,dens,tex,drywet,in_gain,spread,rvb,fb,freeze,mode,lofi,trig_] (Just [inputArray]) 2 (Special 0) NoId++-- | Physical modelling based on Modal Synthesis.+--+--  MiElements [AR] blow_in=0.0 strike_in=0.0 gate=0.0 pit=48.0 strength=0.5 contour=0.2 bow_level=0.0 blow_level=0.0 strike_level=0.0 flow=0.5 mallet=0.5 bow_timb=0.5 blow_timb=0.5 strike_timb=0.5 geom=0.25 bright=0.5 damp=0.7 pos=0.2 space=0.3 model=0.0 easteregg=0.0+miElements :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+miElements rate blow_in strike_in gate_ pit strength contour bow_level blow_level strike_level flow mallet bow_timb blow_timb strike_timb geom bright damp pos space model easteregg = mkUGen Nothing [AR] (Left rate) "MiElements" [blow_in,strike_in,gate_,pit,strength,contour,bow_level,blow_level,strike_level,flow,mallet,bow_timb,blow_timb,strike_timb,geom,bright,damp,pos,space,model,easteregg] Nothing 2 (Special 0) NoId++-- | µ-law audio companding+--+--  MiMu [AR] in=0.0 gain=1.0 bypass=0.0+miMu :: Rate -> UGen -> UGen -> UGen -> UGen+miMu rate in_ gain bypass = mkUGen Nothing [AR] (Left rate) "MiMu" [in_,gain,bypass] Nothing 1 (Special 0) NoId++-- | FM Synth-Voice based on 'ominous'+--+--  MiOmi [AR] audio_in=0.0 gate=0.0 pit=48.0 contour=0.2 detune=0.25 level1=0.5 level2=0.5 ratio1=0.5 ratio2=0.5 fm1=0.0 fm2=0.0 fb=0.0 xfb=0.0 filter_mode=0.0 cutoff=0.5 reson=0.0 strength=0.5 env=0.5 rotate=0.2 space=0.5+miOmi :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+miOmi rate audio_in gate_ pit contour detune level1 level2 ratio1 ratio2 fm1 fm2 fb xfb filter_mode cutoff reson strength env rotate_ space = mkUGen Nothing [AR] (Left rate) "MiOmi" [audio_in,gate_,pit,contour,detune,level1,level2,ratio1,ratio2,fm1,fm2,fb,xfb,filter_mode,cutoff,reson,strength,env,rotate_,space] Nothing 2 (Special 0) NoId++-- | a macro oscillator+--+--  MiPlaits [AR] pitch=60.0 engine=0.0 harm=0.1 timbre=0.5 morph=0.5 trigger=0.0 level=0.0 fm_mod=0.0 timb_mod=0.0 morph_mod=0.0 decay=0.5 lpg_colour=0.5+miPlaits :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+miPlaits rate pitch_ engine harm timbre morph trigger level fm_mod timb_mod morph_mod decay_ lpg_colour = mkUGen Nothing [AR] (Left rate) "MiPlaits" [pitch_,engine,harm,timbre,morph,trigger,level,fm_mod,timb_mod,morph_mod,decay_,lpg_colour] Nothing 2 (Special 0) NoId++-- | a resonator+--+--  MiRings [AR] in=0.0 trig=0.0 pit=60.0 struct=0.25 bright=0.5 damp=0.7 pos=0.25 model=0.0 poly=1.0 intern_exciter=0.0 easteregg=0.0 bypass=0.0+miRings :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+miRings rate in_ trig_ pit struct bright damp pos model poly intern_exciter easteregg bypass = mkUGen Nothing [AR] (Left rate) "MiRings" [in_,trig_,pit,struct,bright,damp,pos,model,poly,intern_exciter,easteregg,bypass] Nothing 2 (Special 0) NoId++-- | Classic resonant LP filter+--+--  MiRipples [AR] in=0.0 cf=0.3 reson=0.2 drive=1.0;    FILTER: TRUE+miRipples :: UGen -> UGen -> UGen -> UGen -> UGen+miRipples in_ cf reson drive = mkUGen Nothing [AR] (Right [0]) "MiRipples" [in_,cf,reson,drive] Nothing 1 (Special 0) NoId++-- | a quad LFO+--+--  MiTides [AR] freq=1.0 shape=0.5 slope=0.5 smooth=0.5 shift=0.2 trig=0.0 clock=0.0 output_mode=3.0 ramp_mode=1.0 ratio=9.0 rate=1.0+miTides :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+miTides rate freq shape slope_ smooth shift trig_ clock output_mode ramp_mode ratio rate_ = mkUGen Nothing [AR] (Left rate) "MiTides" [freq,shape,slope_,smooth,shift,trig_,clock,output_mode,ramp_mode,ratio,rate_] Nothing 4 (Special 0) NoId++-- | stereo reverb+--+--  MiVerb [AR] time=0.7 drywet=0.5 damp=0.5 hp=5.0e-2 freeze=0.0 diff=0.625 *inputArray=0.0;    MCE=1, FILTER: TRUE, REORDERS INPUTS: [6,0,1,2,3,4,5]+miVerb :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+miVerb time drywet damp hp freeze diff inputArray = mkUGen Nothing [AR] (Right [6]) "MiVerb" [time,drywet,damp,hp,freeze,diff] (Just [inputArray]) 2 (Special 0) NoId++-- | (Undocumented class)+--+--  MiWarps [AR] carrier=0.0 modulator=0.0 lev1=0.5 lev2=0.5 algo=0.0 timb=0.0 osc=1.0 pit=60.0 easteregg=0.0+miWarps :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+miWarps rate carrier modulator lev1 lev2 algo timb osc_ pit easteregg = mkUGen Nothing [AR] (Left rate) "MiWarps" [carrier,modulator,lev1,lev2,algo,timb,osc_,pit,easteregg] Nothing 2 (Special 0) NoId++-- | Granulates real-time input+--+--  MonoGrain [AR] in=0.0 winsize=0.1 grainrate=10.0 winrandpct=0.0+monoGrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+monoGrain rate in_ winsize grainrate winrandpct = mkUGen Nothing [AR] (Left rate) "MonoGrain" [in_,winsize,grainrate,winrandpct] Nothing 1 (Special 0) NoId++-- | Granulates real-time input with Ambisonic panning+--+--  MonoGrainBF [AR] in=0.0 winsize=0.1 grainrate=10.0 winrandpct=0.0 azimuth=0.0 azrand=0.0 elevation=0.0 elrand=0.0 rho=1.0+monoGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+monoGrainBF rate in_ winsize grainrate winrandpct azimuth azrand elevation elrand rho = mkUGen Nothing [AR] (Left rate) "MonoGrainBF" [in_,winsize,grainrate,winrandpct,azimuth,azrand,elevation,elrand,rho] Nothing 4 (Special 0) NoId++-- | Moog Filter Emulation+--+--  MoogLadder [KR,AR] in=0.0 ffreq=440.0 res=0.0;    FILTER: TRUE+moogLadder :: UGen -> UGen -> UGen -> UGen+moogLadder in_ ffreq res = mkUGen Nothing [KR,AR] (Right [0]) "MoogLadder" [in_,ffreq,res] Nothing 1 (Special 0) NoId++-- | Moog  filter emulation+--+--  MoogVCF [AR] in=0.0 fco=0.0 res=0.0+moogVCF :: UGen -> UGen -> UGen -> UGen+moogVCF in_ fco res = mkUGen Nothing [AR] (Right [0]) "MoogVCF" [in_,fco,res] Nothing 1 (Special 0) NoId++-- | Stereo reverb+--+--  NHHall [AR] in1=0.0 in2=0.0 rt60=1.0 stereo=0.5 lowFreq=200.0 lowRatio=0.5 hiFreq=4000.0 hiRatio=0.5 earlyDiffusion=0.5 lateDiffusion=0.5 modRate=0.2 modDepth=0.3+nhHall :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+nhHall in1 in2 rt60 stereo lowFreq lowRatio hiFreq hiRatio earlyDiffusion lateDiffusion modRate modDepth = mkUGen Nothing [AR] (Right [0,1]) "NHHall" [in1,in2,rt60,stereo,lowFreq,lowRatio,hiFreq,hiRatio,earlyDiffusion,lateDiffusion,modRate,modDepth] Nothing 2 (Special 0) NoId++-- | Non Linear Filter Equation+--+--  NL [AR] input=0.0 bufnuma=0.0 bufnumb=1.0 guard1=1000.0 guard2=100.0+nl :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+nl rate input bufnuma bufnumb guard1 guard2 = mkUGen Nothing [AR] (Left rate) "NL" [input,bufnuma,bufnumb,guard1,guard2] Nothing 1 (Special 0) NoId++-- | Arbitrary Non Linear Filter Equation+--+--  NL2 [AR] input=0.0 bufnum=0.0 maxsizea=10.0 maxsizeb=10.0 guard1=1000.0 guard2=100.0+nl2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+nl2 rate input bufnum maxsizea maxsizeb guard1 guard2 = mkUGen Nothing [AR] (Left rate) "NL2" [input,bufnum,maxsizea,maxsizeb,guard1,guard2] Nothing 1 (Special 0) NoId++-- | Non-linear Filter+--+--  NLFiltC [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0+nlFiltC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+nlFiltC rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltC" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId++-- | Non-linear Filter+--+--  NLFiltL [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0+nlFiltL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+nlFiltL rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltL" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId++-- | Non-linear Filter+--+--  NLFiltN [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0+nlFiltN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+nlFiltN rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltN" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId++-- | physical modeling simulation; N tubes+--+--  NTube [AR] input=0.0 lossarray=1.0 karray=0.0 delaylengtharray=0.0+nTube :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+nTube rate input lossarray karray delaylengtharray = mkUGen Nothing [AR] (Left rate) "NTube" [input,lossarray,karray,delaylengtharray] Nothing 1 (Special 0) NoId++-- | Find the nearest-neighbours in a set of points+--+--  NearestN [KR] treebuf=0.0 in=0.0 gate=1.0 num=1.0+nearestN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+nearestN rate treebuf in_ gate_ num = mkUGen Nothing [KR] (Left rate) "NearestN" [treebuf,in_,gate_,num] Nothing 3 (Special 0) NoId++-- | (Undocumented class)+--+--  NeedleRect [AR] rate=1.0 imgWidth=100.0 imgHeight=100.0 rectX=0.0 rectY=0.0 rectW=100.0 rectH=100.0+needleRect :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+needleRect rate rate_ imgWidth imgHeight rectX rectY rectW rectH = mkUGen Nothing [AR] (Left rate) "NeedleRect" [rate_,imgWidth,imgHeight,rectX,rectY,rectW,rectH] Nothing 1 (Special 0) NoId+++-- | Formant oscillator with aliasing-free phase reset+--+--  NeoFormant [KR,AR] formantfreq=100.0 carrierfreq=200.0 phaseshift=0.5+neoFormant :: Rate -> UGen -> UGen -> UGen -> UGen+neoFormant rate formantfreq carrierfreq phaseshift = mkUGen Nothing [KR,AR] (Left rate) "NeoFormant" [formantfreq,carrierfreq,phaseshift] Nothing 1 (Special 0) NoId++-- | Variable saw oscillator+--+--  NeoVarSawOsc [KR,AR] freq=100.0 pw=0.5 waveshape=0.5+neoVarSawOsc :: Rate -> UGen -> UGen -> UGen -> UGen+neoVarSawOsc rate freq pw waveshape = mkUGen Nothing [KR,AR] (Left rate) "NeoVarSawOsc" [freq,pw,waveshape] Nothing 1 (Special 0) NoId++-- | Nested Allpass filters as proposed by Vercoe and Pluckett+--+--  NestedAllpassC [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE+nestedAllpassC :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+nestedAllpassC in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassC" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId++-- | Nested Allpass filters as proposed by Vercoe and Pluckett+--+--  NestedAllpassL [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE+nestedAllpassL :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+nestedAllpassL in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassL" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId++-- | Nested Allpass filters as proposed by Vercoe and Pluckett+--+--  NestedAllpassN [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE+nestedAllpassN :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+nestedAllpassN in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassN" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  OSFold4 [AR] in=0.0 lo=0.0 hi=0.0+osFold4 :: Rate -> UGen -> UGen -> UGen -> UGen+osFold4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSFold4" [in_,lo,hi] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  OSFold8 [AR] in=0.0 lo=0.0 hi=0.0+osFold8 :: Rate -> UGen -> UGen -> UGen -> UGen+osFold8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSFold8" [in_,lo,hi] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  OSTrunc4 [AR] in=0.0 quant=0.5+osTrunc4 :: Rate -> UGen -> UGen -> UGen+osTrunc4 rate in_ quant = mkUGen Nothing [AR] (Left rate) "OSTrunc4" [in_,quant] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  OSTrunc8 [AR] in=0.0 quant=0.5+osTrunc8 :: Rate -> UGen -> UGen -> UGen+osTrunc8 rate in_ quant = mkUGen Nothing [AR] (Left rate) "OSTrunc8" [in_,quant] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  OSWrap4 [AR] in=0.0 lo=0.0 hi=0.0+osWrap4 :: Rate -> UGen -> UGen -> UGen -> UGen+osWrap4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSWrap4" [in_,lo,hi] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  OSWrap8 [AR] in=0.0 lo=0.0 hi=0.0+osWrap8 :: Rate -> UGen -> UGen -> UGen -> UGen+osWrap8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSWrap8" [in_,lo,hi] Nothing 1 (Special 0) NoId++-- | Extract basic statistics from a series of onset triggers+--+--  OnsetStatistics [KR] input=0.0 windowsize=1.0 hopsize=0.1+onsetStatistics :: Rate -> UGen -> UGen -> UGen -> UGen+onsetStatistics rate input windowsize hopsize = mkUGen Nothing [KR] (Left rate) "OnsetStatistics" [input,windowsize,hopsize] Nothing 3 (Special 0) NoId++-- | Chemical reaction modelling Oscillator+--+--  Oregonator [AR] reset=0.0 rate=1.0e-2 epsilon=1.0 mu=1.0 q=1.0 initx=0.5 inity=0.5 initz=0.5+oregonator :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+oregonator rate reset rate_ epsilon mu q initx inity initz = mkUGen Nothing [AR] (Left rate) "Oregonator" [reset,rate_,epsilon,mu,q,initx,inity,initz] Nothing 3 (Special 0) NoId++-- | An oscillator bank in the style of divide-down organs+--+--  OscBank [KR,AR] freq=100.0 gain=1.0 saw8=0.5 square8=0.5 saw4=0.5 square4=0.5 saw2=0.5 square2=0.5 saw1=0.5+oscBank :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+oscBank rate freq gain saw8 square8 saw4 square4 saw2 square2 saw1 = mkUGen Nothing [KR,AR] (Left rate) "OscBank" [freq,gain,saw8,square8,saw4,square4,saw2,square2,saw1] Nothing 1 (Special 0) NoId++-- | Piano physical model.+--+--  OteyPiano [AR] freq=440.0 vel=1.0 t_gate=0.0 rmin=0.35 rmax=2.0 rampl=4.0 rampr=8.0 rcore=1.0 lmin=7.0e-2 lmax=1.4 lampl=-4.0 lampr=4.0 rho=1.0 e=1.0 zb=1.0 zh=0.0 mh=1.0 k=0.2 alpha=1.0 p=1.0 hpos=0.142 loss=1.0 detune=3.0e-4 hammer_type=1.0+oteyPiano :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+oteyPiano rate freq vel t_gate rmin rmax rampl rampr rcore lmin lmax lampl lampr rho e zb zh mh k alpha p hpos loss detune hammer_type = mkUGen Nothing [AR] (Left rate) "OteyPiano" [freq,vel,t_gate,rmin,rmax,rampl,rampr,rcore,lmin,lmax,lampl,lampr,rho,e,zb,zh,mh,k,alpha,p,hpos,loss,detune,hammer_type] Nothing 1 (Special 0) NoId++-- | Piano physical model.+--+--  OteyPianoStrings [AR] freq=440.0 vel=1.0 t_gate=0.0 rmin=0.35 rmax=2.0 rampl=4.0 rampr=8.0 rcore=1.0 lmin=7.0e-2 lmax=1.4 lampl=-4.0 lampr=4.0 rho=1.0 e=1.0 zb=1.0 zh=0.0 mh=1.0 k=0.2 alpha=1.0 p=1.0 hpos=0.142 loss=1.0 detune=3.0e-4 hammer_type=1.0+oteyPianoStrings :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+oteyPianoStrings rate freq vel t_gate rmin rmax rampl rampr rcore lmin lmax lampl lampr rho e zb zh mh k alpha p hpos loss detune hammer_type = mkUGen Nothing [AR] (Left rate) "OteyPianoStrings" [freq,vel,t_gate,rmin,rmax,rampl,rampr,rcore,lmin,lmax,lampl,lampr,rho,e,zb,zh,mh,k,alpha,p,hpos,loss,detune,hammer_type] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  OteySoundBoard [AR] inp=0.0 c1=20.0 c3=20.0 mix=0.8+oteySoundBoard :: UGen -> UGen -> UGen -> UGen -> UGen+oteySoundBoard inp c1 c3 mix = mkUGen Nothing [AR] (Right [0]) "OteySoundBoard" [inp,c1,c3,mix] Nothing 1 (Special 0) NoId++-- | Return mag and freq data from a CSound pv+--+--  PVInfo [KR,AR] pvbuffer=0.0 binNum=0.0 filePointer=0.0+pvInfo :: Rate -> UGen -> UGen -> UGen -> UGen+pvInfo rate pvbuffer binNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "PVInfo" [pvbuffer,binNum,filePointer] Nothing 2 (Special 0) NoId++-- | Resynthesize Csound PV data+--+--  PVSynth [AR] pvbuffer=0.0 numBins=0.0 binStart=0.0 binSkip=1.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0+pvSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pvSynth rate pvbuffer numBins binStart binSkip filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "PVSynth" [pvbuffer,numBins,binStart,binSkip,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId++-- | Plays FFT data to a memory buffer+--+--  PV_BinBufRd [KR] buffer=0.0 playbuf=0.0 point=1.0 binStart=0.0 binSkip=1.0 numBins=1.0 clear=0.0+pv_BinBufRd :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pv_BinBufRd buffer playbuf_ point binStart binSkip numBins clear = mkUGen Nothing [KR] (Left KR) "PV_BinBufRd" [buffer,playbuf_,point,binStart,binSkip,numBins,clear] Nothing 1 (Special 0) NoId++-- | Delay and Feedback on a bin by bin basis.+--+--  PV_BinDelay [KR] buffer=0.0 maxdelay=0.0 delaybuf=0.0 fbbuf=0.0 hop=0.5+pv_BinDelay :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pv_BinDelay buffer maxdelay delaybuf fbbuf hop = mkUGen Nothing [KR] (Left KR) "PV_BinDelay" [buffer,maxdelay,delaybuf,fbbuf,hop] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  PV_BinFilter [KR] buffer=0.0 start=0.0 end=0.0+pv_BinFilter :: UGen -> UGen -> UGen -> UGen+pv_BinFilter buffer start end = mkUGen Nothing [KR] (Left KR) "PV_BinFilter" [buffer,start,end] Nothing 1 (Special 0) NoId++-- | Plays FFT data to a memory buffer+--+--  PV_BinPlayBuf [KR] buffer=0.0 playbuf=0.0 rate=1.0 offset=0.0 binStart=0.0 binSkip=1.0 numBins=1.0 loop=0.0 clear=0.0+pv_BinPlayBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pv_BinPlayBuf buffer playbuf_ rate_ offset binStart binSkip numBins loop clear = mkUGen Nothing [KR] (Left KR) "PV_BinPlayBuf" [buffer,playbuf_,rate_,offset,binStart,binSkip,numBins,loop,clear] Nothing 1 (Special 0) NoId++-- | Plays FFT data from a memory buffer+--+--  PV_BufRd [KR] buffer=0.0 playbuf=0.0 point=1.0+pv_BufRd :: UGen -> UGen -> UGen -> UGen+pv_BufRd buffer playbuf_ point = mkUGen Nothing [KR] (Left KR) "PV_BufRd" [buffer,playbuf_,point] Nothing 1 (Special 0) NoId++-- | returns common magnitudes+--+--  PV_CommonMag [KR] bufferA=0.0 bufferB=0.0 tolerance=0.0 remove=0.0+pv_CommonMag :: UGen -> UGen -> UGen -> UGen -> UGen+pv_CommonMag bufferA bufferB tolerance remove = mkUGen Nothing [KR] (Left KR) "PV_CommonMag" [bufferA,bufferB,tolerance,remove] Nothing 1 (Special 0) NoId++-- | multiplies common magnitudes+--+--  PV_CommonMul [KR] bufferA=0.0 bufferB=0.0 tolerance=0.0 remove=0.0+pv_CommonMul :: UGen -> UGen -> UGen -> UGen -> UGen+pv_CommonMul bufferA bufferB tolerance remove = mkUGen Nothing [KR] (Left KR) "PV_CommonMul" [bufferA,bufferB,tolerance,remove] Nothing 1 (Special 0) NoId++-- | simple spectral compression/expansion+--+--  PV_Compander [KR] buffer=0.0 thresh=50.0 slopeBelow=1.0 slopeAbove=1.0+pv_Compander :: UGen -> UGen -> UGen -> UGen -> UGen+pv_Compander buffer thresh slopeBelow slopeAbove = mkUGen Nothing [KR] (Left KR) "PV_Compander" [buffer,thresh,slopeBelow,slopeAbove] Nothing 1 (Special 0) NoId++-- | zero bins with interpolation+--+--  PV_Cutoff [KR] bufferA=0.0 bufferB=0.0 wipe=0.0+pv_Cutoff :: UGen -> UGen -> UGen -> UGen+pv_Cutoff bufferA bufferB wipe = mkUGen Nothing [KR] (Left KR) "PV_Cutoff" [bufferA,bufferB,wipe] Nothing 1 (Special 0) NoId++-- | Return the even numbered bins in an FFT buffer+--+--  PV_EvenBin [KR] buffer=0.0+pv_EvenBin :: UGen -> UGen+pv_EvenBin buffer = mkUGen Nothing [KR] (Left KR) "PV_EvenBin" [buffer] Nothing 1 (Special 0) NoId++-- | extract a repeating loop out from audio+--+--  PV_ExtractRepeat [KR] buffer=0.0 loopbuf=0.0 loopdur=0.0 memorytime=30.0 which=0.0 ffthop=0.5 thresh=1.0+pv_ExtractRepeat :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pv_ExtractRepeat buffer loopbuf_ loopdur memorytime which ffthop thresh = mkUGen Nothing [KR] (Left KR) "PV_ExtractRepeat" [buffer,loopbuf_,loopdur,memorytime,which,ffthop,thresh] Nothing 1 (Special 0) NoId++-- | Freeze FFT frames+--+--  PV_Freeze [KR] buffer=0.0 freeze=0.0+pv_Freeze :: UGen -> UGen -> UGen+pv_Freeze buffer freeze = mkUGen Nothing [KR] (Left KR) "PV_Freeze" [buffer,freeze] Nothing 1 (Special 0) NoId++-- | Store FFT data in another buffer for other use+--+--  PV_FreqBuffer [KR] buffer=0.0 databuffer=0.0+pv_FreqBuffer :: UGen -> UGen -> UGen+pv_FreqBuffer buffer databuffer = mkUGen Nothing [KR] (Left KR) "PV_FreqBuffer" [buffer,databuffer] Nothing 1 (Special 0) NoId++-- | Invert FFT frames+--+--  PV_Invert [KR] buffer=0.0+pv_Invert :: UGen -> UGen+pv_Invert buffer = mkUGen Nothing [KR] (Left KR) "PV_Invert" [buffer] Nothing 1 (Special 0) NoId++-- | Store FFT data in another buffer for other use+--+--  PV_MagBuffer [KR] buffer=0.0 databuffer=0.0+pv_MagBuffer :: UGen -> UGen -> UGen+pv_MagBuffer buffer databuffer = mkUGen Nothing [KR] (Left KR) "PV_MagBuffer" [buffer,databuffer] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  PV_MagExp [KR] buffer=0.0+pv_MagExp :: UGen -> UGen+pv_MagExp buffer = mkUGen Nothing [KR] (Left KR) "PV_MagExp" [buffer] Nothing 1 (Special 0) NoId++-- | reduces magnitudes above or below thresh+--+--  PV_MagGate [KR] buffer=0.0 thresh=1.0 remove=0.0+pv_MagGate :: UGen -> UGen -> UGen -> UGen+pv_MagGate buffer thresh remove = mkUGen Nothing [KR] (Left KR) "PV_MagGate" [buffer,thresh,remove] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  PV_MagLog [KR] buffer=0.0+pv_MagLog :: UGen -> UGen+pv_MagLog buffer = mkUGen Nothing [KR] (Left KR) "PV_MagLog" [buffer] Nothing 1 (Special 0) NoId++-- | Remap magnitudes to a new mag curve+--+--  PV_MagMap [KR] buffer=0.0 mapbuf=0.0+pv_MagMap :: UGen -> UGen -> UGen+pv_MagMap buffer mapbuf = mkUGen Nothing [KR] (Left KR) "PV_MagMap" [buffer,mapbuf] Nothing 1 (Special 0) NoId++-- | subtract spectral energy+--+--  PV_MagMinus [KR] bufferA=0.0 bufferB=0.0 remove=1.0+pv_MagMinus :: UGen -> UGen -> UGen -> UGen+pv_MagMinus bufferA bufferB remove = mkUGen Nothing [KR] (Left KR) "PV_MagMinus" [bufferA,bufferB,remove] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  PV_MagMulAdd [KR] buffer=0.0+pv_MagMulAdd :: UGen -> UGen+pv_MagMulAdd buffer = mkUGen Nothing [KR] (Left KR) "PV_MagMulAdd" [buffer] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  PV_MagScale [KR] bufferA=0.0 bufferB=0.0+pv_MagScale :: UGen -> UGen -> UGen+pv_MagScale bufferA bufferB = mkUGen Nothing [KR] (Left KR) "PV_MagScale" [bufferA,bufferB] Nothing 1 (Special 0) NoId++-- | Smooth spectral magnitudes over time+--+--  PV_MagSmooth [KR] buffer=0.0 factor=0.1+pv_MagSmooth :: UGen -> UGen -> UGen+pv_MagSmooth buffer factor = mkUGen Nothing [KR] (Left KR) "PV_MagSmooth" [buffer,factor] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  PV_MagSubtract [KR] bufferA=0.0 bufferB=0.0 zerolimit=0.0+pv_MagSubtract :: UGen -> UGen -> UGen -> UGen+pv_MagSubtract bufferA bufferB zerolimit = mkUGen Nothing [KR] (Left KR) "PV_MagSubtract" [bufferA,bufferB,zerolimit] Nothing 1 (Special 0) NoId++-- | Return the N strongest bins+--+--  PV_MaxMagN [KR] buffer=0.0 numbins=0.0+pv_MaxMagN :: UGen -> UGen -> UGen+pv_MaxMagN buffer numbins = mkUGen Nothing [KR] (Left KR) "PV_MaxMagN" [buffer,numbins] Nothing 1 (Special 0) NoId++-- | Return the N weakest bins+--+--  PV_MinMagN [KR] buffer=0.0 numbins=0.0+pv_MinMagN :: UGen -> UGen -> UGen+pv_MinMagN buffer numbins = mkUGen Nothing [KR] (Left KR) "PV_MinMagN" [buffer,numbins] Nothing 1 (Special 0) NoId++-- | one kind of spectral morphing+--+--  PV_Morph [KR] bufferA=0.0 bufferB=0.0 morph=0.0+pv_Morph :: UGen -> UGen -> UGen -> UGen+pv_Morph bufferA bufferB morph = mkUGen Nothing [KR] (Left KR) "PV_Morph" [bufferA,bufferB,morph] Nothing 1 (Special 0) NoId++-- | Return only bins that are unstable+--+--  PV_NoiseSynthF [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0+pv_NoiseSynthF :: UGen -> UGen -> UGen -> UGen -> UGen+pv_NoiseSynthF buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_NoiseSynthF" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId++-- | Return only bins that are unstable+--+--  PV_NoiseSynthP [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0+pv_NoiseSynthP :: UGen -> UGen -> UGen -> UGen -> UGen+pv_NoiseSynthP buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_NoiseSynthP" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId++-- | Return the odd numbered bins in an FFT buffer+--+--  PV_OddBin [KR] buffer=0.0+pv_OddBin :: UGen -> UGen+pv_OddBin buffer = mkUGen Nothing [KR] (Left KR) "PV_OddBin" [buffer] Nothing 1 (Special 0) NoId++-- | Return only bins that are stable+--+--  PV_PartialSynthF [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0+pv_PartialSynthF :: UGen -> UGen -> UGen -> UGen -> UGen+pv_PartialSynthF buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_PartialSynthF" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId++-- | Return only bins that are stable+--+--  PV_PartialSynthP [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0+pv_PartialSynthP :: UGen -> UGen -> UGen -> UGen -> UGen+pv_PartialSynthP buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_PartialSynthP" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  PV_PitchShift [KR] buffer=0.0 ratio=0.0+pv_PitchShift :: UGen -> UGen -> UGen+pv_PitchShift buffer ratio = mkUGen Nothing [KR] (Left KR) "PV_PitchShift" [buffer,ratio] Nothing 1 (Special 0) NoId++-- | Plays FFT data to a memory buffer+--+--  PV_PlayBuf [KR] buffer=0.0 playbuf=0.0 rate=1.0 offset=0.0 loop=0.0+pv_PlayBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pv_PlayBuf buffer playbuf_ rate_ offset loop = mkUGen Nothing [KR] (Left KR) "PV_PlayBuf" [buffer,playbuf_,rate_,offset,loop] Nothing 1 (Special 0) NoId++-- | Records FFT data to a memory buffer+--+--  PV_RecordBuf [KR] buffer=0.0 recbuf=0.0 offset=0.0 run=0.0 loop=0.0 hop=0.5 wintype=0.0+pv_RecordBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pv_RecordBuf buffer recbuf offset run loop hop wintype = mkUGen Nothing [KR] (Left KR) "PV_RecordBuf" [buffer,recbuf,offset,run,loop,hop,wintype] Nothing 1 (Special 0) NoId++-- | combine low and high bins from two inputs with interpolation+--+--  PV_SoftWipe [KR] bufferA=0.0 bufferB=0.0 wipe=0.0+pv_SoftWipe :: UGen -> UGen -> UGen -> UGen+pv_SoftWipe bufferA bufferB wipe = mkUGen Nothing [KR] (Left KR) "PV_SoftWipe" [bufferA,bufferB,wipe] Nothing 1 (Special 0) NoId++-- | A harmonic enhancer+--+--  PV_SpectralEnhance [KR] buffer=0.0 numPartials=8.0 ratio=2.0 strength=0.1+pv_SpectralEnhance :: UGen -> UGen -> UGen -> UGen -> UGen+pv_SpectralEnhance buffer numPartials ratio strength = mkUGen Nothing [KR] (Left KR) "PV_SpectralEnhance" [buffer,numPartials,ratio,strength] Nothing 1 (Special 0) NoId++-- | Maps the spectral envelope of one FFT process onto another+--+--  PV_SpectralMap [KR] buffer=0.0 specBuffer=0.0 floor=0.0 freeze=0.0 mode=0.0 norm=0.0 window=0.0+pv_SpectralMap :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pv_SpectralMap buffer specBuffer floor_ freeze mode norm window = mkUGen Nothing [KR] (Left KR) "PV_SpectralMap" [buffer,specBuffer,floor_,freeze,mode,norm,window] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  PV_Whiten [KR] chain=0.0 trackbufnum=0.0 relaxtime=2.0 floor=0.1 smear=0.0 bindownsample=0.0+pv_Whiten :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pv_Whiten chain trackbufnum relaxtime floor_ smear bindownsample = mkUGen Nothing [KR] (Left KR) "PV_Whiten" [chain,trackbufnum,relaxtime,floor_,smear,bindownsample] Nothing 1 (Special 0) NoId++-- | one kind of spectral morphing+--+--  PV_XFade [KR] bufferA=0.0 bufferB=0.0 fade=0.0+pv_xFade :: UGen -> UGen -> UGen -> UGen+pv_xFade bufferA bufferB fade = mkUGen Nothing [KR] (Left KR) "PV_XFade" [bufferA,bufferB,fade] Nothing 1 (Special 0) NoId++-- | Equal power pan across an array of speakers+--+--  PanX [KR,AR] numChans=0.0 in=0.0 pos=0.0 level=1.0 width=2.0+panX :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+panX rate numChans in_ pos level width = mkUGen Nothing [KR,AR] (Left rate) "PanX" [numChans,in_,pos,level,width] Nothing 0 (Special 0) NoId++-- | (Undocumented class)+--+--  PanX2D [KR,AR] numChansX=0.0 numChansY=0.0 in=0.0 posX=0.0 posY=0.0 level=1.0 widthX=2.0 widthY=2.0+panX2D :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+panX2D rate numChansX numChansY in_ posX posY level widthX widthY = mkUGen Nothing [KR,AR] (Left rate) "PanX2D" [numChansX,numChansY,in_,posX,posY,level,widthX,widthY] Nothing 0 (Special 0) NoId++-- | (Undocumented class)+--+--  PeakEQ2 [AR] in=0.0 freq=1200.0 rs=1.0 db=0.0+peakEQ2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+peakEQ2 rate in_ freq rs db = mkUGen Nothing [AR] (Left rate) "PeakEQ2" [in_,freq,rs,db] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  PeakEQ4 [AR] in=0.0 freq=1200.0 rs=1.0 db=0.0+peakEQ4 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+peakEQ4 rate in_ freq rs db = mkUGen Nothing [AR] (Left rate) "PeakEQ4" [in_,freq,rs,db] Nothing 1 (Special 0) NoId++-- | 3D Perlin Noise+--+--  Perlin3 [KR,AR] x=0.0 y=0.0 z=0.0+perlin3 :: Rate -> UGen -> UGen -> UGen -> UGen+perlin3 rate x y z = mkUGen Nothing [KR,AR] (Left rate) "Perlin3" [x,y,z] Nothing 1 (Special 0) NoId++-- | Sample permutation UGen.+--+--  PermMod [AR] in=0.0 freq=100.0+permMod :: Rate -> UGen -> UGen -> UGen+permMod rate in_ freq = mkUGen Nothing [AR] (Left rate) "PermMod" [in_,freq] Nothing 1 (Special 0) NoId++-- | Sample permutation UGen with programmable pattern.+--+--  PermModArray [AR] in=0.0 freq=50.0 pattern=0.0+permModArray :: Rate -> UGen -> UGen -> UGen -> UGen+permModArray rate in_ freq pattern = mkUGen Nothing [AR] (Left rate) "PermModArray" [in_,freq,pattern] Nothing 1 (Special 0) NoId++-- | Sample permutation UGen with tail.+--+--  PermModT [AR] in=0.0 outfreq=440.0 infreq=5000.0+permModT :: Rate -> UGen -> UGen -> UGen -> UGen+permModT rate in_ outfreq infreq = mkUGen Nothing [AR] (Left rate) "PermModT" [in_,outfreq,infreq] Nothing 1 (Special 0) NoId++-- | A plugin...+--+--  PhasorModal [AR] input=0.0 freq=100.0 decay=0.25 damp=1.0 amp=0.5 phase=0.0;    FILTER: TRUE+phasorModal :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+phasorModal input freq decay_ damp amp phase = mkUGen Nothing [AR] (Right [0]) "PhasorModal" [input,freq,decay_,damp,amp,phase] Nothing 1 (Special 0) NoId++-- | Tree classifier using (hyper)planes – UGen or language-side+--+--  PlaneTree [KR] treebuf=0.0 in=0.0 gate=1.0+planeTree :: Rate -> UGen -> UGen -> UGen -> UGen+planeTree rate treebuf in_ gate_ = mkUGen Nothing [KR] (Left rate) "PlaneTree" [treebuf,in_,gate_] Nothing 1 (Special 0) NoId++-- | Plucked physical model by Fredrik Eckerholm.+--+--  PluckSynth [AR] freq=440.0 amp=1.0 gate=1.0 pos=0.0 c1=0.25 c3=5.0 release=0.1 f=0.0 m=0.0 k=0.0 r=0.0 l=0.65 ra=1.0e-3 rho=7850.0+pluckSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pluckSynth rate freq amp gate_ pos c1 c3 release f m k r l ra rho = mkUGen Nothing [AR] (Left rate) "PluckSynth" [freq,amp,gate_,pos,c1,c3,release,f,m,k,r,l,ra,rho] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  PosRatio [AR] in=0.0 period=100.0 thresh=0.1+posRatio :: Rate -> UGen -> UGen -> UGen -> UGen+posRatio rate in_ period thresh = mkUGen Nothing [AR] (Left rate) "PosRatio" [in_,period,thresh] Nothing 1 (Special 0) NoId++-- | debug assistance+--+--  PrintVal [KR] in=0.0 numblocks=100.0 id=0.0+printVal :: Rate -> UGen -> UGen -> UGen -> UGen+printVal rate in_ numblocks id_ = mkUGen Nothing [KR] (Left rate) "PrintVal" [in_,numblocks,id_] Nothing 1 (Special 0) NoId++-- | constant Q transform pitch follower+--+--  Qitch [KR] in=0.0 databufnum=0.0 ampThreshold=1.0e-2 algoflag=1.0 ampbufnum=0.0 minfreq=0.0 maxfreq=2500.0+qitch :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+qitch rate in_ databufnum ampThreshold algoflag ampbufnum minfreq maxfreq = mkUGen Nothing [KR] (Left rate) "Qitch" [in_,databufnum,ampThreshold,algoflag,ampbufnum,minfreq,maxfreq] Nothing 2 (Special 0) NoId++-- | TB303 Filter Emulation+--+--  RLPFD [KR,AR] in=0.0 ffreq=440.0 res=0.0 dist=0.0;    FILTER: TRUE+rlpfd :: UGen -> UGen -> UGen -> UGen -> UGen+rlpfd in_ ffreq res dist = mkUGen Nothing [KR,AR] (Right [0]) "RLPFD" [in_,ffreq,res,dist] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  RMAFoodChainL [AR] freq=22050.0 a1=5.0 b1=3.0 d1=0.4 a2=0.1 b2=2.0 d2=1.0e-2 k=1.0943 r=0.8904 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0+rmaFoodChainL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+rmaFoodChainL rate freq a1 b1 d1 a2 b2 d2 k r h xi yi zi = mkUGen Nothing [AR] (Left rate) "RMAFoodChainL" [freq,a1,b1,d1,a2,b2,d2,k,r,h,xi,yi,zi] Nothing 3 (Special 0) NoId++-- | (Undocumented class)+--+--  RMEQ [AR] in=0.0 freq=440.0 rq=0.1 k=0.0+rmeq :: UGen -> UGen -> UGen -> UGen -> UGen+rmeq in_ freq rq k = mkUGen Nothing [AR] (Right [0]) "RMEQ" [in_,freq,rq,k] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  RMEQSuite [] maxSize=0.0+rmeqSuite :: Rate -> UGen -> UGen+rmeqSuite rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "RMEQSuite" [maxSize] Nothing 1 (Special 0) NoId++-- | root mean square+--+--  RMS [KR,AR] in=0.0 lpFreq=10.0+rms :: Rate -> UGen -> UGen -> UGen+rms rate in_ lpFreq = mkUGen Nothing [KR,AR] (Left rate) "RMS" [in_,lpFreq] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  RMShelf [AR] in=0.0 freq=440.0 k=0.0+rmShelf :: Rate -> UGen -> UGen -> UGen -> UGen+rmShelf rate in_ freq k = mkUGen Nothing [AR] (Left rate) "RMShelf" [in_,freq,k] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  RMShelf2 [AR] in=0.0 freq=440.0 k=0.0+rmShelf2 :: Rate -> UGen -> UGen -> UGen -> UGen+rmShelf2 rate in_ freq k = mkUGen Nothing [AR] (Left rate) "RMShelf2" [in_,freq,k] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  RegaliaMitraEQ [AR] in=0.0 freq=440.0 rq=0.1 k=0.0+regaliaMitraEQ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+regaliaMitraEQ rate in_ freq rq k = mkUGen Nothing [AR] (Left rate) "RegaliaMitraEQ" [in_,freq,rq,k] Nothing 1 (Special 0) NoId++-- | A resonant body simulation.+--+--  Resonator [AR] input=0.0 freq=100.0 position=1.0e-3 resolution=24.0 structure=0.5 brightness=0.5 damping=0.5;    FILTER: TRUE+resonator :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+resonator input freq position resolution structure brightness damping = mkUGen Nothing [AR] (Right [0]) "Resonator" [input,freq,position,resolution,structure,brightness,damping] Nothing 1 (Special 0) NoId++-- | A modal synthesis voice+--+--  Rongs [AR] trigger=0.0 sustain=1.0 f0=1.0e-2 structure=0.5 brightness=0.5 damping=0.75 accent=0.9 stretch=0.5 position=0.15 loss=0.15+rongs :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+rongs rate trigger sustain f0 structure brightness damping accent stretch position loss = mkUGen Nothing [AR] (Left rate) "Rongs" [trigger,sustain,f0,structure,brightness,damping,accent,stretch,position,loss] Nothing 1 (Special 0) NoId++-- | Rossler chaotic generator+--+--  RosslerL [AR] freq=22050.0 a=0.2 b=0.2 c=5.7 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0+rosslerL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+rosslerL rate freq a b c h xi yi zi = mkUGen Nothing [AR] (Left rate) "RosslerL" [freq,a,b,c,h,xi,yi,zi] Nothing 3 (Special 0) NoId++-- | (Undocumented class)+--+--  RosslerResL [AR] in=0.0 stiff=1.0 freq=22050.0 a=0.2 b=0.2 c=5.7 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0+rosslerResL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+rosslerResL rate in_ stiff freq a b c h xi yi zi = mkUGen Nothing [AR] (Left rate) "RosslerResL" [in_,stiff,freq,a,b,c,h,xi,yi,zi] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  Rotate [AR] w=0.0 x=0.0 y=0.0 z=0.0 rotate=0.0+rotate :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+rotate rate w x y z rotate_ = mkUGen Nothing [AR] (Left rate) "Rotate" [w,x,y,z,rotate_] Nothing 1 (Special 0) NoId++-- | experimental time domain onset detector+--+--  SLOnset [KR] input=0.0 memorysize1=20.0 before=5.0 after=5.0 threshold=10.0 hysteresis=10.0+slOnset :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+slOnset rate input memorysize1 before after threshold hysteresis = mkUGen Nothing [KR] (Left rate) "SLOnset" [input,memorysize1,before,after,threshold,hysteresis] Nothing 1 (Special 0) NoId++-- | Spectral Modeling Synthesis+--+--  SMS [AR] input=0.0 maxpeaks=80.0 currentpeaks=80.0 tolerance=4.0 noisefloor=0.2 freqmult=1.0 freqadd=0.0 formantpreserve=0.0 useifft=0.0 ampmult=1.0 graphicsbufnum=0.0;    FILTER: TRUE+sms :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+sms input maxpeaks currentpeaks tolerance noisefloor freqmult freqadd formantpreserve useifft ampmult graphicsbufnum = mkUGen Nothing [AR] (Right [0]) "SMS" [input,maxpeaks,currentpeaks,tolerance,noisefloor,freqmult,freqadd,formantpreserve,useifft,ampmult,graphicsbufnum] Nothing 2 (Special 0) NoId++-- | (Undocumented class)+--+--  SOMAreaWr [KR] bufnum=0.0 inputdata=0.0 coords=0.0 netsize=10.0 numdims=2.0 nhood=0.5 gate=1.0+somAreaWr :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+somAreaWr rate bufnum inputdata coords netsize numdims nhood gate_ = mkUGen Nothing [KR] (Left rate) "SOMAreaWr" [bufnum,inputdata,coords,netsize,numdims,nhood,gate_] Nothing 1 (Special 0) NoId++-- | Map an input using a Self-Organising Map+--+--  SOMRd [KR,AR] bufnum=0.0 inputdata=0.0 netsize=10.0 numdims=2.0 gate=1.0+somRd :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+somRd rate bufnum inputdata netsize numdims gate_ = mkUGen Nothing [KR,AR] (Left rate) "SOMRd" [bufnum,inputdata,netsize,numdims,gate_] Nothing 2 (Special 0) NoId++-- | Create (train) a Self-Organising Map+--+--  SOMTrain [KR] bufnum=0.0 inputdata=0.0 netsize=10.0 numdims=2.0 traindur=5000.0 nhood=0.5 gate=1.0 initweight=1.0+somTrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+somTrain rate bufnum inputdata netsize numdims traindur nhood gate_ initweight = mkUGen Nothing [KR] (Left rate) "SOMTrain" [bufnum,inputdata,netsize,numdims,traindur,nhood,gate_,initweight] Nothing 3 (Special 0) NoId++-- | 12db/Oct State Variable Filter+--+--  SVF [KR,AR] signal=0.0 cutoff=2200.0 res=0.1 lowpass=1.0 bandpass=0.0 highpass=0.0 notch=0.0 peak=0.0;    FILTER: TRUE+svf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+svf signal cutoff res lowpass bandpass highpass notch peak_ = mkUGen Nothing [KR,AR] (Right [0]) "SVF" [signal,cutoff,res,lowpass,bandpass,highpass,notch,peak_] Nothing 1 (Special 0) NoId++-- | super-efficient sawtooth oscillator with low aliasing+--+--  SawDPW [KR,AR] freq=440.0 iphase=0.0+sawDPW :: Rate -> UGen -> UGen -> UGen+sawDPW rate freq iphase = mkUGen Nothing [KR,AR] (Left rate) "SawDPW" [freq,iphase] Nothing 1 (Special 0) NoId++-- | Perceptual feature modeling sensory dissonance+--+--  SensoryDissonance [KR] fft=0.0 maxpeaks=100.0 peakthreshold=0.1 norm=0.0 clamp=1.0+sensoryDissonance :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+sensoryDissonance rate fft_ maxpeaks peakthreshold norm clamp = mkUGen Nothing [KR] (Left rate) "SensoryDissonance" [fft_,maxpeaks,peakthreshold,norm,clamp] Nothing 1 (Special 0) NoId++-- | Fuzzy sieve based synthesis+--+--  Sieve1 [KR,AR] bufnum=0.0 gap=2.0 alternate=1.0+sieve1 :: Rate -> UGen -> UGen -> UGen -> UGen+sieve1 rate bufnum gap alternate = mkUGen Nothing [KR,AR] (Left rate) "Sieve1" [bufnum,gap,alternate] Nothing 1 (Special 0) NoId++-- | Granular synthesis with sinusoidal grains+--+--  SinGrain [AR] trigger=0.0 dur=1.0 freq=440.0+sinGrain :: Rate -> UGen -> UGen -> UGen -> UGen+sinGrain rate trigger dur freq = mkUGen Nothing [AR] (Left rate) "SinGrain" [trigger,dur,freq] Nothing 1 (Special 0) NoId++-- | Granular synthesis with sinusoidal grains and user supplied envelope+--+--  SinGrainB [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf=0.0+sinGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+sinGrainB rate trigger dur freq envbuf = mkUGen Nothing [AR] (Left rate) "SinGrainB" [trigger,dur,freq,envbuf] Nothing 1 (Special 0) NoId++-- | Granular synthesis with sinusoidal grains with Ambisonic panning and user supplied envelope+--+--  SinGrainBBF [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0+sinGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+sinGrainBBF rate trigger dur freq envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainBBF" [trigger,dur,freq,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId++-- | Granular synthesis with sinusoidal grains with Ambisonic panning+--+--  SinGrainBF [AR] trigger=0.0 dur=1.0 freq=440.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0+sinGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+sinGrainBF rate trigger dur freq azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainBF" [trigger,dur,freq,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId++-- | Granular synthesis with sinusoidal grains and user supplied envelopes+--+--  SinGrainI [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5+sinGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+sinGrainI rate trigger dur freq envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "SinGrainI" [trigger,dur,freq,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId++-- | Granular synthesis with sinusoidal grains with Ambisonic panning and user supplied envelopes+--+--  SinGrainIBF [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0+sinGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+sinGrainIBF rate trigger dur freq envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainIBF" [trigger,dur,freq,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId++-- | (Undocumented class)+--+--  SinTone [AR] freq=440.0 phase=0.0+sinTone :: Rate -> UGen -> UGen -> UGen+sinTone rate freq phase = mkUGen Nothing [AR] (Left rate) "SinTone" [freq,phase] Nothing 1 (Special 0) NoId++-- | port of some ladspa plugins+--+--  SineShaper [AR] in=0.0 limit=1.0;    FILTER: TRUE+sineShaper :: UGen -> UGen -> UGen+sineShaper in_ limit = mkUGen Nothing [AR] (Right [0]) "SineShaper" [in_,limit] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  SkipNeedle [AR] range=44100.0 rate=10.0 offset=0.0+skipNeedle :: Rate -> UGen -> UGen -> UGen -> UGen+skipNeedle rate range rate_ offset = mkUGen Nothing [AR] (Left rate) "SkipNeedle" [range,rate_,offset] Nothing 1 (Special 0) NoId++-- | Smooth samplerate and bitrate reduction+--+--  SmoothDecimator [AR] in=0.0 rate=44100.0 smoothing=0.5+smoothDecimator :: Rate -> UGen -> UGen -> UGen -> UGen+smoothDecimator rate in_ rate_ smoothing = mkUGen Nothing [AR] (Left rate) "SmoothDecimator" [in_,rate_,smoothing] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  SoftClipAmp [AR] in=0.0 pregain=1.0;    FILTER: TRUE+softClipAmp :: UGen -> UGen -> UGen+softClipAmp in_ pregain = mkUGen Nothing [AR] (Right [0]) "SoftClipAmp" [in_,pregain] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  SoftClipAmp4 [AR] in=0.0 pregain=1.0;    FILTER: TRUE+softClipAmp4 :: UGen -> UGen -> UGen+softClipAmp4 in_ pregain = mkUGen Nothing [AR] (Right [0]) "SoftClipAmp4" [in_,pregain] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  SoftClipAmp8 [AR] in=0.0 pregain=1.0;    FILTER: TRUE+softClipAmp8 :: UGen -> UGen -> UGen+softClipAmp8 in_ pregain = mkUGen Nothing [AR] (Right [0]) "SoftClipAmp8" [in_,pregain] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  SoftClipper4 [AR] in=0.0+softClipper4 :: Rate -> UGen -> UGen+softClipper4 rate in_ = mkUGen Nothing [AR] (Left rate) "SoftClipper4" [in_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  SoftClipper8 [AR] in=0.0+softClipper8 :: Rate -> UGen -> UGen+softClipper8 rate in_ = mkUGen Nothing [AR] (Left rate) "SoftClipper8" [in_] Nothing 1 (Special 0) NoId++-- | LPC analizer.+--+--  SonLPC [AR] buff=-1.0 in=0.0 hop=0.5 poles=10.0+sonLPC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+sonLPC rate buff in_ hop poles = mkUGen Nothing [AR] (Left rate) "SonLPC" [buff,in_,hop,poles] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  SonLPCSynth [AR] chain=-1.0+sonLPCSynth :: Rate -> UGen -> UGen+sonLPCSynth rate chain = mkUGen Nothing [AR] (Left rate) "SonLPCSynth" [chain] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  SonLPCSynthIn [AR] chain=-1.0 in=0.0+sonLPCSynthIn :: Rate -> UGen -> UGen -> UGen+sonLPCSynthIn rate chain in_ = mkUGen Nothing [AR] (Left rate) "SonLPCSynthIn" [chain,in_] Nothing 1 (Special 0) NoId++-- | Karplus-Strong via a sorting algorithm+--+--  SortBuf [AR] bufnum=0.0 sortrate=10.0 reset=0.0+sortBuf :: Rate -> UGen -> UGen -> UGen -> UGen+sortBuf rate bufnum sortrate reset = mkUGen Nothing [AR] (Left rate) "SortBuf" [bufnum,sortrate,reset] Nothing 1 (Special 0) NoId++-- | Spectral feature extraction+--+--  SpectralEntropy [KR] fft=0.0 fftsize=2048.0 numbands=1.0;    NC INPUT: True+spectralEntropy :: Int -> Rate -> UGen -> UGen -> UGen -> UGen+spectralEntropy numChannels rate fft_ fftsize numbands = mkUGen Nothing [KR] (Left rate) "SpectralEntropy" [fft_,fftsize,numbands] Nothing numChannels (Special 0) NoId++-- | (Undocumented class)+--+--  Spreader [AR] in=0.0 theta=1.5707963267949 filtsPerOctave=8.0+spreader :: Rate -> UGen -> UGen -> UGen -> UGen+spreader rate in_ theta filtsPerOctave = mkUGen Nothing [AR] (Left rate) "Spreader" [in_,theta,filtsPerOctave] Nothing 2 (Special 0) NoId++-- | Spruce bud worm model equations+--+--  SpruceBudworm [AR] reset=0.0 rate=0.1 k1=27.9 k2=1.5 alpha=0.1 beta=10.1 mu=0.3 rho=10.1 initx=0.9 inity=0.1+spruceBudworm :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+spruceBudworm rate reset rate_ k1 k2 alpha beta mu rho initx inity = mkUGen Nothing [AR] (Left rate) "SpruceBudworm" [reset,rate_,k1,k2,alpha,beta,mu,rho,initx,inity] Nothing 2 (Special 0) NoId++-- | Wave squeezer. Maybe a kind of pitch shifter.+--+--  Squiz [KR,AR] in=0.0 pitchratio=2.0 zcperchunk=1.0 memlen=0.1;    FILTER: TRUE+squiz :: UGen -> UGen -> UGen -> UGen -> UGen+squiz in_ pitchratio zcperchunk memlen = mkUGen Nothing [KR,AR] (Right [0]) "Squiz" [in_,pitchratio,zcperchunk,memlen] Nothing 1 (Special 0) NoId++-- | standard map 2D chaotic generator+--+--  Standard2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381+standard2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+standard2DC rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DC" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId++-- | standard map 2D chaotic generator+--+--  Standard2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381+standard2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+standard2DL rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DL" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId++-- | standard map 2D chaotic generator+--+--  Standard2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381+standard2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+standard2DN rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DN" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StandardTrig [KR,AR] minfreq=5.0 maxfreq=10.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381+standardTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+standardTrig rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "StandardTrig" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkBandedWG [KR,AR] freq=440.0 instr=0.0 bowpressure=0.0 bowmotion=0.0 integration=0.0 modalresonance=64.0 bowvelocity=0.0 setstriking=0.0 trig=1.0+stkBandedWG :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkBandedWG rate freq instr bowpressure bowmotion integration modalresonance bowvelocity setstriking trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkBandedWG" [freq,instr,bowpressure,bowmotion,integration,modalresonance,bowvelocity,setstriking,trig_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkBeeThree [KR,AR] freq=440.0 op4gain=10.0 op3gain=20.0 lfospeed=64.0 lfodepth=0.0 adsrtarget=64.0 trig=1.0+stkBeeThree :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkBeeThree rate freq op4gain op3gain lfospeed lfodepth adsrtarget trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkBeeThree" [freq,op4gain,op3gain,lfospeed,lfodepth,adsrtarget,trig_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkBlowHole [KR,AR] freq=440.0 reedstiffness=64.0 noisegain=20.0 tonehole=64.0 register=11.0 breathpressure=64.0+stkBlowHole :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkBlowHole rate freq reedstiffness noisegain tonehole register breathpressure = mkUGen Nothing [KR,AR] (Left rate) "StkBlowHole" [freq,reedstiffness,noisegain,tonehole,register,breathpressure] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkBowed [KR,AR] freq=220.0 bowpressure=64.0 bowposition=64.0 vibfreq=64.0 vibgain=64.0 loudness=64.0 gate=1.0 attackrate=1.0 decayrate=1.0+stkBowed :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkBowed rate freq bowpressure bowposition vibfreq vibgain loudness_ gate_ attackrate decayrate = mkUGen Nothing [KR,AR] (Left rate) "StkBowed" [freq,bowpressure,bowposition,vibfreq,vibgain,loudness_,gate_,attackrate,decayrate] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkClarinet [KR,AR] freq=440.0 reedstiffness=64.0 noisegain=4.0 vibfreq=64.0 vibgain=11.0 breathpressure=64.0 trig=1.0+stkClarinet :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkClarinet rate freq reedstiffness noisegain vibfreq vibgain breathpressure trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkClarinet" [freq,reedstiffness,noisegain,vibfreq,vibgain,breathpressure,trig_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkFlute [KR,AR] freq=440.0 jetDelay=49.0 noisegain=0.15 jetRatio=0.32+stkFlute :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+stkFlute rate freq jetDelay noisegain jetRatio = mkUGen Nothing [KR,AR] (Left rate) "StkFlute" [freq,jetDelay,noisegain,jetRatio] Nothing 1 (Special 0) NoId++-- | Wrapping Synthesis toolkit.+--+--  StkGlobals [AR] showWarnings=0.0 printErrors=0.0 rawfilepath=0.0+stkGlobals :: Rate -> UGen -> UGen -> UGen -> UGen+stkGlobals rate showWarnings printErrors rawfilepath = mkUGen Nothing [AR] (Left rate) "StkGlobals" [showWarnings,printErrors,rawfilepath] Nothing 1 (Special 0) NoId++-- | Wrapping Synthesis toolkit.+--+--  StkInst [AR] freq=220.0 gate=1.0 onamp=1.0 offamp=0.5 instNumber=6.0 *args=0.0;    MCE=1, REORDERS INPUTS: [4,0,1,2,3,5]+stkInst :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkInst rate freq gate_ onamp offamp instNumber args = mkUGen Nothing [AR] (Left rate) "StkInst" [freq,gate_,onamp,offamp,instNumber] (Just [args]) 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkMandolin [KR,AR] freq=520.0 bodysize=64.0 pickposition=64.0 stringdamping=69.0 stringdetune=10.0 aftertouch=64.0 trig=1.0+stkMandolin :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkMandolin rate freq bodysize pickposition stringdamping stringdetune aftertouch trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkMandolin" [freq,bodysize,pickposition,stringdamping,stringdetune,aftertouch,trig_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkModalBar [KR,AR] freq=440.0 instrument=0.0 stickhardness=64.0 stickposition=64.0 vibratogain=20.0 vibratofreq=20.0 directstickmix=64.0 volume=64.0 trig=1.0+stkModalBar :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkModalBar rate freq instrument stickhardness stickposition vibratogain vibratofreq directstickmix volume trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkModalBar" [freq,instrument,stickhardness,stickposition,vibratogain,vibratofreq,directstickmix,volume,trig_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkMoog [KR,AR] freq=440.0 filterQ=10.0 sweeprate=20.0 vibfreq=64.0 vibgain=0.0 gain=64.0 trig=1.0+stkMoog :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkMoog rate freq filterQ sweeprate vibfreq vibgain gain trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkMoog" [freq,filterQ,sweeprate,vibfreq,vibgain,gain,trig_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkPluck [KR,AR] freq=440.0 decay=0.99+stkPluck :: Rate -> UGen -> UGen -> UGen+stkPluck rate freq decay_ = mkUGen Nothing [KR,AR] (Left rate) "StkPluck" [freq,decay_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkSaxofony [KR,AR] freq=220.0 reedstiffness=64.0 reedaperture=64.0 noisegain=20.0 blowposition=26.0 vibratofrequency=20.0 vibratogain=20.0 breathpressure=128.0 trig=1.0+stkSaxofony :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkSaxofony rate freq reedstiffness reedaperture noisegain blowposition vibratofrequency vibratogain breathpressure trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkSaxofony" [freq,reedstiffness,reedaperture,noisegain,blowposition,vibratofrequency,vibratogain,breathpressure,trig_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkShakers [KR,AR] instr=0.0 energy=64.0 decay=64.0 objects=64.0 resfreq=64.0+stkShakers :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkShakers rate instr energy decay_ objects resfreq = mkUGen Nothing [KR,AR] (Left rate) "StkShakers" [instr,energy,decay_,objects,resfreq] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  StkVoicForm [KR,AR] freq=440.0 vuvmix=64.0 vowelphon=64.0 vibfreq=64.0 vibgain=20.0 loudness=64.0 trig=1.0+stkVoicForm :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkVoicForm rate freq vuvmix vowelphon vibfreq vibgain loudness_ trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkVoicForm" [freq,vuvmix,vowelphon,vibfreq,vibgain,loudness_,trig_] Nothing 1 (Special 0) NoId++-- | String resonance filter+--+--  Streson [KR,AR] input=0.0 delayTime=3.0e-3 res=0.9;    FILTER: TRUE+streson :: UGen -> UGen -> UGen -> UGen+streson input delayTime res = mkUGen Nothing [KR,AR] (Right [0]) "Streson" [input,delayTime,res] Nothing 1 (Special 0) NoId++-- | Extended Karplus-Strong+--+--  StringVoice [AR] trig=0.0 infsustain=0.0 freq=100.0 accent=0.5 structure=0.5 brightness=0.5 damping=0.5+stringVoice :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stringVoice rate trig_ infsustain freq accent structure brightness damping = mkUGen Nothing [AR] (Left rate) "StringVoice" [trig_,infsustain,freq,accent,structure,brightness,damping] Nothing 1 (Special 0) NoId++-- | Pulse counter with floating point steps+--+--  Summer [KR,AR] trig=0.0 step=1.0 reset=0.0 resetval=0.0;    FILTER: TRUE+summer :: UGen -> UGen -> UGen -> UGen -> UGen+summer trig_ step reset resetval = mkUGen Nothing [KR,AR] (Right [0]) "Summer" [trig_,step,reset,resetval] Nothing 1 (Special 0) NoId++-- | feedback delay line implementing switch-and-ramp buffer jumping+--+--  SwitchDelay [AR] in=0.0 drylevel=1.0 wetlevel=1.0 delaytime=1.0 delayfactor=0.7 maxdelaytime=20.0;    FILTER: TRUE+switchDelay :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+switchDelay in_ drylevel wetlevel delaytime delayfactor maxdelaytime = mkUGen Nothing [AR] (Right [0]) "SwitchDelay" [in_,drylevel,wetlevel,delaytime,delayfactor,maxdelaytime] Nothing 1 (Special 0) NoId++-- | triggered beta random distribution+--+--  TBetaRand [KR,AR] lo=0.0 hi=1.0 prob1=0.0 prob2=0.0 trig=0.0;    FILTER: TRUE, NONDET+tBetaRand :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+tBetaRand z lo hi prob1 prob2 trig_ = mkUGen Nothing [KR,AR] (Right [4]) "TBetaRand" [lo,hi,prob1,prob2,trig_] Nothing 1 (Special 0) (toUId z)++-- | triggered random walk generator+--+--  TBrownRand [KR,AR] lo=0.0 hi=1.0 dev=1.0 dist=0.0 trig=0.0;    FILTER: TRUE, NONDET+tBrownRand :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+tBrownRand z lo hi dev dist trig_ = mkUGen Nothing [KR,AR] (Right [4]) "TBrownRand" [lo,hi,dev,dist,trig_] Nothing 1 (Special 0) (toUId z)++-- | triggered gaussian random distribution+--+--  TGaussRand [KR,AR] lo=0.0 hi=1.0 trig=0.0;    FILTER: TRUE, NONDET+tGaussRand :: ID a => a -> UGen -> UGen -> UGen -> UGen+tGaussRand z lo hi trig_ = mkUGen Nothing [KR,AR] (Right [2]) "TGaussRand" [lo,hi,trig_] Nothing 1 (Special 0) (toUId z)++-- | buffer granulator with linear att/dec+--+--  TGrains2 [AR] trigger=0.0 bufnum=0.0 rate=1.0 centerPos=0.0 dur=0.1 pan=0.0 amp=0.1 att=0.5 dec=0.5 interp=4.0;    NC INPUT: True+tGrains2 :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+tGrains2 numChannels rate trigger bufnum rate_ centerPos dur pan amp att dec interp = mkUGen Nothing [AR] (Left rate) "TGrains2" [trigger,bufnum,rate_,centerPos,dur,pan,amp,att,dec,interp] Nothing numChannels (Special 0) NoId++-- | buffer granulator with user envelope+--+--  TGrains3 [AR] trigger=0.0 bufnum=0.0 rate=1.0 centerPos=0.0 dur=0.1 pan=0.0 amp=0.1 att=0.5 dec=0.5 window=1.0 interp=4.0;    NC INPUT: True+tGrains3 :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+tGrains3 numChannels rate trigger bufnum rate_ centerPos dur pan amp att dec window interp = mkUGen Nothing [AR] (Left rate) "TGrains3" [trigger,bufnum,rate_,centerPos,dur,pan,amp,att,dec,window,interp] Nothing numChannels (Special 0) NoId++-- | Tracking Phase Vocoder+--+--  TPV [AR] chain=0.0 windowsize=1024.0 hopsize=512.0 maxpeaks=80.0 currentpeaks=0.0 freqmult=1.0 tolerance=4.0 noisefloor=0.2+tpv :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+tpv chain windowsize hopsize maxpeaks currentpeaks freqmult tolerance noisefloor = mkUGen Nothing [AR] (Left AR) "TPV" [chain,windowsize,hopsize,maxpeaks,currentpeaks,freqmult,tolerance,noisefloor] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  TTendency [KR,AR] trigger=0.0 dist=0.0 parX=0.0 parY=1.0 parA=0.0 parB=0.0+tTendency :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+tTendency rate trigger dist parX parY parA parB = mkUGen Nothing [KR,AR] (Left rate) "TTendency" [trigger,dist,parX,parY,parA,parB] Nothing 1 (Special 0) NoId++-- | pitch tracker+--+--  Tartini [KR] in=0.0 threshold=0.93 n=2048.0 k=0.0 overlap=1024.0 smallCutoff=0.5+tartini :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+tartini rate in_ threshold n k overlap smallCutoff = mkUGen Nothing [KR] (Left rate) "Tartini" [in_,threshold,n,k,overlap,smallCutoff] Nothing 2 (Special 0) NoId++-- | Neural Oscillator+--+--  TermanWang [AR] input=0.0 reset=0.0 ratex=1.0e-2 ratey=1.0e-2 alpha=1.0 beta=1.0 eta=1.0 initx=0.0 inity=0.0+termanWang :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+termanWang rate input reset ratex ratey alpha beta eta initx inity = mkUGen Nothing [AR] (Left rate) "TermanWang" [input,reset,ratex,ratey,alpha,beta,eta,initx,inity] Nothing 1 (Special 0) NoId++-- | display level of a UGen as a textual meter+--+--  TextVU [KR,AR] trig=2.0 in=0.0 label=0.0 width=21.0 reset=0.0 ana=0.0+textVU :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+textVU rate trig_ in_ label_ width reset ana = mkUGen Nothing [KR,AR] (Left rate) "TextVU" [trig_,in_,label_,width,reset,ana] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  Tilt [AR] w=0.0 x=0.0 y=0.0 z=0.0 tilt=0.0+tilt :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+tilt rate w x y z tilt_ = mkUGen Nothing [AR] (Left rate) "Tilt" [w,x,y,z,tilt_] Nothing 1 (Special 0) NoId++-- | triggered signal averager+--+--  TrigAvg [KR] in=0.0 trig=0.0+trigAvg :: Rate -> UGen -> UGen -> UGen+trigAvg rate in_ trig_ = mkUGen Nothing [KR] (Left rate) "TrigAvg" [in_,trig_] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  Tumble [AR] w=0.0 x=0.0 y=0.0 z=0.0 tilt=0.0+tumble :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+tumble rate w x y z tilt_ = mkUGen Nothing [AR] (Left rate) "Tumble" [w,x,y,z,tilt_] Nothing 1 (Special 0) NoId++-- | physical modeling simulation; two tubes+--+--  TwoTube [AR] input=0.0 k=1.0e-2 loss=1.0 d1length=100.0 d2length=100.0+twoTube :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+twoTube rate input k loss d1length d2length = mkUGen Nothing [AR] (Left rate) "TwoTube" [input,k,loss,d1length,d2length] Nothing 1 (Special 0) NoId++-- | (Undocumented class)+--+--  UHJ2B [AR] ls=0.0 rs=0.0+uhj2b :: Rate -> UGen -> UGen -> UGen+uhj2b rate ls rs = mkUGen Nothing [AR] (Left rate) "UHJ2B" [ls,rs] Nothing 3 (Special 0) NoId++-- | Vector Base Amplitude Panner+--+--  VBAP [KR,AR] in=0.0 bufnum=0.0 azimuth=0.0 elevation=1.0 spread=0.0;    NC INPUT: True+vbap :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+vbap numChannels rate in_ bufnum azimuth elevation spread = mkUGen Nothing [KR,AR] (Left rate) "VBAP" [in_,bufnum,azimuth,elevation,spread] Nothing numChannels (Special 0) NoId++-- | a chaotic oscillator network+--+--  VBFourses [AR] smoother=0.5 *freqarray=0.0;    MCE=1, REORDERS INPUTS: [1,0]+vbFourses :: Rate -> UGen -> UGen -> UGen+vbFourses rate smoother freqarray = mkUGen Nothing [AR] (Left rate) "VBFourses" [smoother] (Just [freqarray]) 4 (Special 0) NoId++-- | artifical reverberator+--+--  VBJonVerb [AR] in=0.0 decay=0.6 damping=0.3 inputbw=0.8 erfl=0.5 tail=0.5;    FILTER: TRUE+vbJonVerb :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+vbJonVerb in_ decay_ damping inputbw erfl tail_ = mkUGen Nothing [AR] (Right [0]) "VBJonVerb" [in_,decay_,damping,inputbw,erfl,tail_] Nothing 2 (Special 0) NoId++-- | a simple phase vocoder for time-stretching+--+--  VBPVoc [AR] numChannels=0.0 bufnum=0.0 playpos=0.0 fftsize=2048.0+vbpVoc :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+vbpVoc rate numChannels bufnum playpos fftsize = mkUGen Nothing [AR] (Left rate) "VBPVoc" [numChannels,bufnum,playpos,fftsize] Nothing 1 (Special 0) NoId++-- | lowpass filter for envelope following+--+--  VBSlide [KR,AR] in=0.0 slideup=50.0 slidedown=3000.0;    FILTER: TRUE+vbSlide :: UGen -> UGen -> UGen -> UGen+vbSlide in_ slideup slidedown = mkUGen Nothing [KR,AR] (Right [0]) "VBSlide" [in_,slideup,slidedown] Nothing 1 (Special 0) NoId++-- | 2D scanning pattern virtual machine+--+--  VMScan2D [AR] bufnum=0.0+vmScan2D :: Rate -> UGen -> UGen+vmScan2D rate bufnum = mkUGen Nothing [AR] (Left rate) "VMScan2D" [bufnum] Nothing 2 (Special 0) NoId++-- | vosim pulse generator+--+--  VOSIM [AR] trig=0.1 freq=400.0 nCycles=1.0 decay=0.9+vosim :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+vosim rate trig_ freq nCycles decay_ = mkUGen Nothing [AR] (Left rate) "VOSIM" [trig_,freq,nCycles,decay_] Nothing 1 (Special 0) NoId++-- | Variable Waveshape Oscillator+--+--  VarShapeOsc [KR,AR] freq=100.0 pw=0.5 waveshape=0.5 sync=1.0 syncfreq=105.0+varShapeOsc :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+varShapeOsc rate freq pw waveshape sync syncfreq = mkUGen Nothing [KR,AR] (Left rate) "VarShapeOsc" [freq,pw,waveshape,sync,syncfreq] Nothing 1 (Special 0) NoId++-- | Vosim oscillator+--+--  VosimOsc [KR,AR] freq=100.0 form1freq=951.0 form2freq=919.0 shape=0.0+vosimOsc :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+vosimOsc rate freq form1freq form2freq shape = mkUGen Nothing [KR,AR] (Left rate) "VosimOsc" [freq,form1freq,form2freq,shape] Nothing 1 (Special 0) NoId++-- | windowed amplitude follower+--+--  WAmp [KR] in=0.0 winSize=0.1+wAmp :: Rate -> UGen -> UGen -> UGen+wAmp rate in_ winSize = mkUGen Nothing [KR] (Left rate) "WAmp" [in_,winSize] Nothing 1 (Special 0) NoId++-- | decomposition into square waves, and reconstruction+--+--  WalshHadamard [AR] input=0.0 which=0.0+walshHadamard :: Rate -> UGen -> UGen -> UGen+walshHadamard rate input which = mkUGen Nothing [AR] (Left rate) "WalshHadamard" [input,which] Nothing 1 (Special 0) NoId++-- | Warp a buffer with a time pointer+--+--  WarpZ [AR] bufnum=0.0 pointer=0.0 freqScale=1.0 windowSize=0.2 envbufnum=-1.0 overlaps=8.0 windowRandRatio=0.0 interp=1.0 zeroSearch=0.0 zeroStart=0.0;    NC INPUT: True+warpZ :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+warpZ numChannels rate bufnum pointer freqScale windowSize envbufnum overlaps windowRandRatio interp zeroSearch zeroStart = mkUGen Nothing [AR] (Left rate) "WarpZ" [bufnum,pointer,freqScale,windowSize,envbufnum,overlaps,windowRandRatio,interp,zeroSearch,zeroStart] Nothing numChannels (Special 0) NoId++-- | Lose bits of your waves+--+--  WaveLoss [KR,AR] in=0.0 drop=20.0 outof=40.0 mode=1.0+waveLoss :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+waveLoss rate in_ drop_ outof mode = mkUGen Nothing [KR,AR] (Left rate) "WaveLoss" [in_,drop_,outof,mode] Nothing 1 (Special 0) NoId++-- | wave terrain synthesis+--+--  WaveTerrain [AR] bufnum=0.0 x=0.0 y=0.0 xsize=100.0 ysize=100.0+waveTerrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+waveTerrain rate bufnum x y xsize ysize = mkUGen Nothing [AR] (Left rate) "WaveTerrain" [bufnum,x,y,xsize,ysize] Nothing 1 (Special 0) NoId++-- | decomposition into Daub4 wavelets, and reconstruction+--+--  WaveletDaub [AR] input=0.0 n=64.0 which=0.0+waveletDaub :: Rate -> UGen -> UGen -> UGen -> UGen+waveletDaub rate input n which = mkUGen Nothing [AR] (Left rate) "WaveletDaub" [input,n,which] Nothing 1 (Special 0) NoId++-- | Weakly Nonlinear Oscillator+--+--  WeaklyNonlinear [AR] input=0.0 reset=0.0 ratex=1.0 ratey=1.0 freq=440.0 initx=0.0 inity=0.0 alpha=0.0 xexponent=0.0 beta=0.0 yexponent=0.0+weaklyNonlinear :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+weaklyNonlinear rate input reset ratex ratey freq initx inity alpha xexponent beta yexponent = mkUGen Nothing [AR] (Left rate) "WeaklyNonlinear" [input,reset,ratex,ratey,freq,initx,inity,alpha,xexponent,beta,yexponent] Nothing 1 (Special 0) NoId++-- | Weakly Nonlinear Oscillator+--+--  WeaklyNonlinear2 [AR] input=0.0 reset=0.0 ratex=1.0 ratey=1.0 freq=440.0 initx=0.0 inity=0.0 alpha=0.0 xexponent=0.0 beta=0.0 yexponent=0.0+weaklyNonlinear2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+weaklyNonlinear2 rate input reset ratex ratey freq initx inity alpha xexponent beta yexponent = mkUGen Nothing [AR] (Left rate) "WeaklyNonlinear2" [input,reset,ratex,ratey,freq,initx,inity,alpha,xexponent,beta,yexponent] Nothing 1 (Special 0) NoId++-- | Pulse counter with floating point steps+--+--  WrapSummer [KR,AR] trig=0.0 step=1.0 min=0.0 max=1.0 reset=0.0 resetval=0.0+wrapSummer :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+wrapSummer rate trig_ step min_ max_ reset resetval = mkUGen Nothing [KR,AR] (Left rate) "WrapSummer" [trig_,step,min_,max_,reset,resetval] Nothing 1 (Special 0) NoId+++-- | Sinewave multiplied by and sync'ed to a carrier+--+--  ZOsc [KR,AR] freq=100.0 formantfreq=91.0 shape=0.5 mode=0.5+zOsc :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen+zOsc rate freq formantfreq shape mode = mkUGen Nothing [KR,AR] (Left rate) "ZOsc" [freq,formantfreq,shape,mode] Nothing 1 (Special 0) NoId
Sound/SC3/UGen/Bindings/HW.hs view
@@ -38,13 +38,18 @@ -- | Poll value of input UGen when triggered. poll :: UGen -> UGen -> UGen -> UGen -> UGen poll trig_ in_ trigid label_ =-  let q = U.unpackLabel label_-      n = fromIntegral (length q)-  in C.mkFilter "Poll" ([trig_,in_,trigid,n] ++ q) 0+  let q = U.unpackLabel True label_+  in C.mkFilter "Poll" ([trig_,in_,trigid] ++ q) 0  -- | FFT onset detector. pv_HainsworthFoote :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen pv_HainsworthFoote buf h f thr wt = C.mkOsc AR "PV_HainsworthFoote" [buf,h,f,thr,wt] 1++-- | FFT feature detector for onset detection.+--+-- buffer, propsc=0.25, prophfe=0.25, prophfc=0.25, propsf=0.25, threshold=1.0, waittime=0.04+pv_JensenAndersen :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+pv_JensenAndersen buffer propsc prophfe prophfc propsf threshold waittime = C.mkOsc AR "PV_JensenAndersen" [buffer,propsc,prophfe,prophfc,propsf,threshold,waittime] 1  -- | ASCII string to length prefixed list of constant UGens. --
Sound/SC3/UGen/Bindings/HW/External/F0.hs view
@@ -17,6 +17,10 @@ redPhasor :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen redPhasor rate trig rate_ start end loop loopstart loopend = C.mkOsc rate "RedPhasor" [trig,rate_,start,end,loop,loopstart,loopend] 1 +-- | A phasor that can loop.+redPhasor2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+redPhasor2 rate trig rate_ start end loop loopstart loopend = C.mkOsc rate "RedPhasor2" [trig,rate_,start,end,loop,loopstart,loopend] 1+ -- Local Variables: -- truncate-lines:t -- End:
Sound/SC3/UGen/Bindings/HW/External/SC3_Plugins.hs view
@@ -4,6 +4,8 @@ import Sound.SC3.Common.Rate import qualified Sound.SC3.UGen.Bindings.HW.Construct as C import Sound.SC3.UGen.Type+import qualified Sound.SC3.UGen.UGen as U+import qualified Sound.SC3.UGen.Bindings.DB.External as X  -- | Convert frequency value to value appropriate for AY tone inputs. ayFreqToTone :: Fractional a => a -> a@@ -12,3 +14,29 @@ -- | LADSPA plugins inside SuperCollider. ladspa :: Int -> Rate -> UGen -> [UGen] -> UGen ladspa nc rt k z = C.mkOsc rt "LADSPA" (constant nc : k : z) nc++-- | Lookup index of STK instrument by name.+stkAt :: (Num t,Enum t) => String -> t+stkAt nm =+  let nm_seq = ["Clarinet", "BlowHole", "Saxofony", "Flute", "Brass"+               ,"BlowBotl", "Bowed", "Plucked", "StifKarp", "Sitar", "Mandolin"+               ,"Rhodey", "Wurley", "TubeBell", "HevyMetl", "PercFlut"+               ,"BeeThree", "FMVoices", "VoicForm", "Moog", "Simple", "Drummer"+               ,"BandedWG", "Shakers", "ModalBar", "Mesh2D", "Resonate", "Whistle"]+      tbl = zip nm_seq [0..]+  in case lookup nm tbl of+       Just ix -> ix+       Nothing -> error "stkAt: unknown instr"++-- | freq=220, gate=1, onamp=1, offamp=1, bowpressure=64, bowposition=64, vibfreq=64, vibgain=64, loudness=64+stkBowedI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen+stkBowedI rt freq gate_ onamp offamp bowpressure bowposition vibfreq vibgain loudness =+  let args = mce [2,bowpressure,4,bowposition,11,vibfreq,1,vibgain,128,loudness]+  in X.stkInst rt (stkAt "Bowed") freq gate_ onamp offamp args++-- | Wrapping Synthesis toolkit.+--+--  StkGlobals [AR] showWarnings=0.0 printErrors=0.0 rawfilepath=0.0+stkGlobals :: Rate -> UGen -> UGen -> UGen -> UGen+stkGlobals rate showWarnings printErrors rawfilepath =+  mkUGen Nothing [AR] (Left rate) "StkGlobals" ([showWarnings,printErrors] ++ U.unpackLabel False rawfilepath) Nothing 1 (Special 0) NoId
Sound/SC3/UGen/Bindings/HW/External/Zita.hs view
@@ -8,23 +8,19 @@ import Sound.SC3.UGen.Type  -- | Parameter (name,value) pairs.------ > unwords $ map fst zitaRev_param-zitaRev_param :: [(String, Double)]+zitaRev_param :: Num n => [(String,n,(n,n,String))] zitaRev_param =-  [("in1",0.0)-  ,("in2",0.0)-  ,("in_delay",60.0)-  ,("lf_x",200) -- log, 50, 1000-  ,("low_rt60",3) -- log, 1, 8-  ,("mid_rt60",2) -- log, 1, 8-  ,("hf_damping",6000) -- log, 1500, 24000-  ,("eq1_freq",315) -- log, 40, 2500-  ,("eq1_level",0) -- lin, -15, 15-  ,("eq2_freq",1500) -- log, 160, 10000-  ,("eq2_level",0) -- lin, -15, 15-  ,("dry_wet_mix",0) -- lin, 0, 1-  ,("level",-20) -- lin, -9, 9+  [("in_delay",60,(20,100,"lin")) -- ms+  ,("lf_x",200,(50,1000,"exp"))+  ,("low_rt60",3,(1,8,"exp"))+  ,("mid_rt60",2,(1,8,"exp"))+  ,("hf_damping",6000,(1500,24000,"exp"))+  ,("eq1_freq",315,(40,2500,"exp"))+  ,("eq1_level",0,(-15,15,"lin"))+  ,("eq2_freq",1500,(160,10000,"exp"))+  ,("eq2_level",0,(-15,15,"lin"))+  ,("dry_wet_mix",0,(0,1,"lin"))+  ,("level",-20,(-9,9,"lin"))   ]  -- | ZitaRev binding.
Sound/SC3/UGen/Bindings/Monad.hs view
@@ -12,7 +12,7 @@  -- | Clone a unit generator (mce . replicateM). clone :: UId m => Int -> m UGen -> m UGen-clone n = liftM mce . replicateM n+clone n = fmap mce . replicateM n  -- * Demand 
Sound/SC3/UGen/Envelope.hs view
@@ -40,8 +40,8 @@ envGate_def :: UGen envGate_def =     let level = 1-        gate_ = meta_control KR "gate" 1 (0,1,"lin",1,"")-        fadeTime = meta_control KR "fadeTime" 0.02 (0,10,"lin",0,"s")+        gate_ = control_m KR "gate" 1 (0,1,"gate")+        fadeTime = control_m KR "fadeTime" 0.02 (0,10,"lin")         doneAction = RemoveSynth         curve = EnvSin     in envGate level gate_ fadeTime doneAction curve
+ Sound/SC3/UGen/Event.hs view
@@ -0,0 +1,170 @@+-- | Event and Ctl systems for external control interfaces.+module Sound.SC3.UGen.Event where++import Sound.SC3.Common.Rate {- hsc3 -}+import Sound.SC3.UGen.Bindings.DB {- hsc3 -}+import Sound.SC3.UGen.Bindings.Composite {- hsc3 -}+import Sound.SC3.UGen.Type {- hsc3 -}+import Sound.SC3.UGen.UGen {- hsc3 -}++-- * Event++-- | (w/gate,x,y,z/force,orientation,radius-x,radius-y,pitch,pitch-x,pitch-y)+type REvent t = (t,t,t,t,t,t,t,t,t,t)++-- | Translate list to REvent.+rEvent_from_list :: Num t => [t] -> REvent t+rEvent_from_list l =+  case l of+    [w,x,y,z,o,rx,ry,p,px,py] -> (w,x,y,z,o,rx,ry,p,px,py)+    _ -> error "rEvent_from_list?"++{- | k0 = index of control bus zero for event system,+    stp = voice index incremennt,+      c = event channel or voice (zero indexed)+-}+rEventAddr :: UGen -> UGen -> UGen -> REvent UGen+rEventAddr k0 stp c =+  let u = in' 10 KR (k0 + (c * stp))+  in rEvent_from_list (mceChannels u)++-- | c0 = index of voice (channel) zero for event set, n = number of voices (channels)+rEventVoicerAddr :: UGen -> UGen -> UGen -> Int -> (Int -> REvent UGen -> UGen) -> UGen+rEventVoicerAddr k0 stp c0 n f = mce (map (\c -> f c (rEventAddr k0 stp (c0 + constant c))) [0 .. n - 1])++-- | 'rEventAddr' with 'control' inputs for /eventAddr/, /eventIncr/ and /eventZero/.+rEvent :: REvent UGen+rEvent = rEventAddr (control KR "eventAddr" 13000) (control KR "eventIncr" 10) (control KR "eventZero" 0)++-- | 'rEventVoicerAddr' with 'control' inputs for /eventAddr/, /eventIncr/ and /eventZero/.+rEventVoicer :: Int -> (Int -> REvent UGen -> UGen) -> UGen+rEventVoicer = rEventVoicerAddr (control KR "eventAddr" 13000) (control KR "eventIncr" 10) (control KR "eventZero" 0)++{- | Given /g/ and /p/ fields of an 'REvent' derive a 'gateReset' from g+and a trigger derived from monitoring /g/ and /p/ for changed values.+-}+rEventGateReset :: UGen -> UGen -> (UGen, UGen)+rEventGateReset g p = let tr = changed p 0.01 + changed g 0.01 in (gateReset g tr,tr)++-- * Ctl++-- | Sequence of 16 continous controller inputs in range (0-1).+type RCtl = (UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen)++-- | k0 = index of control bus zero for ctl system, c = ctl channel or voice (zero indexed)+rCtlAddr :: UGen -> UGen -> RCtl+rCtlAddr k0 c =+  let u = in' 16 KR (k0 + (c * 16))+  in case mceChannels u of+       [cc0,cc1,cc2,cc3,cc4,cc5,cc6,cc7,cc8,cc9,cc10,cc11,cc12,cc13,cc14,cc15] ->+         (cc0,cc1,cc2,cc3,cc4,cc5,cc6,cc7,cc8,cc9,cc10,cc11,cc12,cc13,cc14,cc15)+       _ -> error "rCtlAddr?"++-- | c0 = index of voice (channel) zero for ctl set, n = number of voices (channels)+rCtlVoicerAddr :: UGen -> UGen -> Int -> (Int -> RCtl -> UGen) -> UGen+rCtlVoicerAddr k0 c0 n f = mce (map (\c -> f c (rCtlAddr k0 (c0 + constant c))) [0 .. n - 1])++-- | 'rCtlAddr' with 'control' inputs for /CtlAddr/ and /CtlZero/.+rCtl :: RCtl+rCtl = rCtlAddr (control KR "CtlAddr" 11000) (control KR "CtlZero" 0)++-- | 'rCtlVoicerAddr' with 'control' inputs for /CtlAddr/ and /CtlZero/.+rCtlVoicer :: Int -> (Int -> RCtl -> UGen) -> UGen+rCtlVoicer = rCtlVoicerAddr (control KR "CtlAddr" 11000) (control KR "CtlZero" 0)++-- | First eight elements of RCtl.+type RCtl8 = (UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen)++-- | Select first eight elements of RCtl.+rCtl_to_rCtl8 :: RCtl -> RCtl8+rCtl_to_rCtl8 (cc0,cc1,cc2,cc3,cc4,cc5,cc6,cc7,_,_,_,_,_,_,_,_) = (cc0,cc1,cc2,cc3,cc4,cc5,cc6,cc7)++-- | 'rCtlVoicer' of 'rCtl_to_rCtl8'+rCtl8Voicer :: Int -> (Int -> RCtl8 -> UGen) -> UGen+rCtl8Voicer k0 f = rCtlVoicer k0 (\n c -> f n (rCtl_to_rCtl8 c))++-- * Names++{- | See SCClassLibrary/Common/Control/Spec:ControlSpec.initClass++"ControlSpec defines the range and curve of a control"+-}+sc3_control_spec :: Fractional t => [(String,(t,t,String))]+sc3_control_spec =+  [("amp",(0,1,"amp"))+  ,("beats",(0,20,"lin"))+  ,("bipolar",(-1,1,"lin"))+  ,("boostcut",(-20,20,"lin"))+  ,("db",(-180,0,"db"))+  ,("delay",(0.0001,1,"exp"))+  ,("detune",(-20,20,"lin"))+  ,("freq",(20,20000,"exp"))+  ,("lofreq",(0.1,100,"exp"))+  ,("midfreq",(25,4200,"exp"))+  ,("midi",(0,127,"lin"))+  ,("midinote",(0,127,"lin"))+  ,("midivelocity",(1,127,"lin"))+  ,("pan",(-1,1,"lin"))+  ,("phase",(0,6.28318,"lin"))+  ,("rate",(0.125,8,"exp"))+  ,("rq",(0.001,2,"exp"))+  ,("unipolar",(0,1,"lin"))+  ,("widefreq",(0.1,20000,"exp"))]++{- | See Kyma X Revealed, p.403++"The following EventValue names are associated with initial ranges+other than (0,1). EventValue names are not case-sensitive."++This list adds curve specifiers as strings.++> let x = Data.List.intersect (map fst sc3_control_spec) (map fst kyma_event_value_ranges)+> x == ["beats","boostcut","freq","rate"]+> let c z = let (p,q) = unzip z in let f i = filter (flip elem i . fst) in zip (f p sc3_control_spec) (f q kyma_event_value_ranges)+> c (zip x x)++> c [("lofreq","freqlow"),("midfreq","freqmid")]+> lookup "freqhigh" kyma_event_value_ranges+-}+kyma_event_value_ranges :: Fractional t => [(String,(t,t,String))]+kyma_event_value_ranges =+  [("angle",(-0.5,1.5,"lin"))+  ,("beats",(1,16,"lin"))+  ,("boostcut",(-12,12,"lin"))+  ,("bpm",(0,2000,"lin"))+  ,("centervalue",(-1,1,"lin"))+  ,("coef",(-1,1,"lin"))+  ,("cutoff",(0,10000,"exp"))+  ,("cycles",(0,100,"lin"))+  ,("dcoffset",(-1,1,"lin"))+  ,("direction",(-1,1,"lin"))+  ,("distance",(-2,2,"lin"))+  ,("fmntshift",(0.75,1.25,"lin"))+  ,("freq",(0,10000,"exp"))+  ,("freqhigh",(8000,24000,"exp")) -- sampleRate / 2+  ,("freqjitter",(0,1,"lin"))+  ,("freqlow",(0,1000,"exp"))+  ,("freqmid",(1000,8000,"exp"))+  ,("gain",(0,10,"amp"))+  ,("gaindb",(-128,128,"lin"))+  ,("interval",(-24,24,"lin"))+  ,("keynumber",(0,127,"lin"))+  ,("logfreq",(0,127,"lin"))+  ,("looplength",(-1,1,"lin"))+  ,("offset",(-1,1,"lin"))+  ,("onduration",(0,30,"lin"))+  ,("panner",(-0.5,1.5,"lin"))+  ,("pitch",(0,127,"lin"))+  ,("q",(0,10,"lin"))+  ,("radius",(-2,2,"lin"))+  ,("rate",(0,2,"lin"))+  ,("ratio",(0,100,"lin"))+  ,("scale",(-2,2,"lin"))+  ,("smallInterval",(0,12,"lin"))+  ,("steps",(1,128,"lin"))+  ,("swing",(0,0.5,"lin"))+  ,("threshdb",(-60,0,"lin"))+  ,("timeconstant",(0.0001,5,"lin"))+  ,("timeindex",(-1,1,"lin"))+  ,("tune",(-1,1,"lin"))+  ,("upinterval",(0,24,"lin"))]
Sound/SC3/UGen/Graph.hs view
@@ -19,11 +19,12 @@ import Data.List {- base -} import Data.Maybe {- base -} -import Sound.SC3.Common.Rate-import qualified Sound.SC3.UGen.Analysis as Analysis-import Sound.SC3.UGen.Type-import Sound.SC3.UGen.UGen+import Sound.SC3.Common.Rate {- hsc3 -}+import Sound.SC3.UGen.Type {- hsc3 -}+import Sound.SC3.UGen.UGen {- hsc3 -} +import qualified Sound.SC3.UGen.Analysis as Analysis {- hsc3 -}+ -- * Types  -- | Port index.@@ -52,7 +53,7 @@                        ,u_node_k_name :: String                        ,u_node_k_default :: Sample                        ,u_node_k_type :: K_Type-                       ,u_node_k_meta :: Maybe (C_Meta Sample)}+                       ,u_node_k_meta :: Maybe (Control_Meta Sample)}             | U_Node_U {u_node_id :: UID_t                        ,u_node_u_rate :: Rate                        ,u_node_u_name :: String@@ -65,6 +66,17 @@                        ,u_node_p_index :: Port_Index}             deriving (Eq,Show) +-- | Convert from U_Node_K to Control (ie. discard index).+u_node_k_to_control :: U_Node -> Control+u_node_k_to_control nd =+  case nd of+    U_Node_K _ rt ix nm df ty mt -> Control rt ix nm df (ty == K_TR) mt+    _ -> error "u_node_k_to_control?"++-- | Derive "user" name for U_Node+u_node_user_name :: U_Node -> String+u_node_user_name n = ugen_user_name (u_node_u_name n) (u_node_u_special n)+ -- | Type to represent a unit generator graph. data U_Graph = U_Graph {ug_next_id :: UID_t                        ,ug_constants :: [U_Node]@@ -185,7 +197,7 @@         cmp = compare `on` u_node_k_ix         c' = sortBy cmp c         coheres z = maybe True (== z) . u_node_k_index-        coherent = all id (zipWith coheres [0..] c')+        coherent = and (zipWith coheres [0..] c')     in if coherent then c' else error (show ("u_node_sort_controls: incoherent",c))  -- | Determine 'K_Type' of a /control/ UGen at 'U_Node_U', or not.@@ -198,14 +210,18 @@       ("AudioControl",AR) -> Just K_AR       _ -> Nothing --- | Is 'U_Node' an /implicit/ control UGen?-u_node_is_implicit_control :: U_Node -> Bool-u_node_is_implicit_control n =+-- | Is 'U_Node' a control UGen?+u_node_is_control :: U_Node -> Bool+u_node_is_control n =     let cs = ["AudioControl","Control","TrigControl"]     in case n of-        U_Node_U x _ s _ _ _ _ -> x == -1 && s `elem` cs+        U_Node_U _ _ s _ _ _ _ -> s `elem` cs         _ -> False +-- | Is 'U_Node' an /implicit/ control UGen?+u_node_is_implicit_control :: U_Node -> Bool+u_node_is_implicit_control n = u_node_is_control n && u_node_id n == -1+ -- | Is U_Node implicit? u_node_is_implicit :: U_Node -> Bool u_node_is_implicit n = u_node_u_name n == "MaxLocalBufs" || u_node_is_implicit_control n@@ -473,10 +489,7 @@  -- | Variant that runs 'error' as required. ug_pv_validate :: U_Graph -> U_Graph-ug_pv_validate g =-    case ug_pv_check g of-      Nothing -> g-      Just err -> error err+ug_pv_validate g = maybe g error (ug_pv_check g)  -- * UGen to U_Graph @@ -504,19 +517,18 @@     let cs = ug_constants s         ks = ug_controls s         us = ug_ugens s-        u_nm z = ugen_user_name (u_node_u_name z) (u_node_u_special z)         hist pp_f =           let h (x:xs) = (x,length (x:xs))               h [] = error "graph_stat_ln"-          in unwords . map (\(p,q) -> pp_f p ++ "×" ++ show q) . map h . group . sort+          in unwords . map ((\(p,q) -> pp_f p ++ "×" ++ show q) . h) . group . sort     in ["number of constants       : " ++ show (length cs)        ,"number of controls        : " ++ show (length ks)        ,"control rates             : " ++ hist show (map u_node_k_rate ks)        ,"control names             : " ++ unwords (map u_node_k_name ks)        ,"number of unit generators : " ++ show (length us)        ,"unit generator rates      : " ++ hist show (map u_node_u_rate us)-       ,"unit generator set        : " ++ hist id (map u_nm us)-       ,"unit generator sequence   : " ++ unwords (map u_nm us)]+       ,"unit generator set        : " ++ hist id (map u_node_user_name us)+       ,"unit generator sequence   : " ++ unwords (map u_node_user_name us)]  -- | 'unlines' of 'ug_stat_ln'. ug_stat :: U_Graph -> String
Sound/SC3/UGen/Graph/Reconstruct.hs view
@@ -1,4 +1,4 @@--- | A /disassembler/ for UGen graphs.+-- | A disassembler for UGen graphs. module Sound.SC3.UGen.Graph.Reconstruct where  import Data.Char {- base -}@@ -6,11 +6,12 @@ import Text.Printf {- base -}  import qualified Sound.SC3.Common.Math.Operator as Operator-import Sound.SC3.Common.Rate+import qualified Sound.SC3.Common.Rate as Rate import qualified Sound.SC3.UGen.Graph as Graph-import Sound.SC3.UGen.Type-import Sound.SC3.UGen.UGen+import qualified Sound.SC3.UGen.Type as Type+import qualified Sound.SC3.UGen.UGen as UGen +-- | Generate label for 'Graph.From_Port' from_port_label :: Char -> Graph.From_Port -> String from_port_label jn fp =     case fp of@@ -19,6 +20,7 @@       Graph.From_Port_U n Nothing -> printf "u_%d" n       Graph.From_Port_U n (Just i) -> printf "u_%d%co_%d" n jn i +-- | Any name that does not begin with a letter is considered an operator. is_operator_name :: String -> Bool is_operator_name nm =     case nm of@@ -41,9 +43,9 @@  reconstruct_graph_module :: String -> Graph.U_Graph -> [String] reconstruct_graph_module nm gr =-  let imp = ["import Sound.SC3"-            ,"import Sound.SC3.Common.Base"-            ,"import Sound.SC3.UGen.Plain"]+  let imp = ["import Sound.SC3 {- hsc3 -}"+            ,"import Sound.SC3.Common.Base {- hsc3 -}"+            ,"import Sound.SC3.UGen.Plain {- hsc3 -}"]       (b0:bnd,res) = reconstruct_graph gr       hs = ("  let " ++ b0) : map ("      " ++ ) bnd ++ ["  in " ++ res]       pre = [nm ++ " :: UGen",nm ++ " ="]@@ -71,11 +73,11 @@         c = Graph.u_node_c_value u     in printf "%s = constant (%f::Sample)" l c -reconstruct_c_ugen :: Graph.U_Node -> UGen-reconstruct_c_ugen u = constant (Graph.u_node_c_value u)+reconstruct_c_ugen :: Graph.U_Node -> Type.UGen+reconstruct_c_ugen u = Type.constant (Graph.u_node_c_value u)  -- | Discards index.-reconstruct_k_rnd :: Graph.U_Node -> (Rate,String,Sample)+reconstruct_k_rnd :: Graph.U_Node -> (Rate.Rate,String,Type.Sample) reconstruct_k_rnd u =     let r = Graph.u_node_k_rate u         n = Graph.u_node_k_name u@@ -88,13 +90,13 @@         (r,n,d) = reconstruct_k_rnd u     in printf "%s = control %s \"%s\" %f" l (show r) n d -reconstruct_k_ugen :: Graph.U_Node -> UGen+reconstruct_k_ugen :: Graph.U_Node -> Type.UGen reconstruct_k_ugen u =     let (r,n,d) = reconstruct_k_rnd u-    in control_f64 r Nothing n d+    in UGen.control_f64 r Nothing n d -ugen_qname :: String -> Special -> (String,String)-ugen_qname nm (Special n) =+ugen_qname :: String -> Type.Special -> (String,String)+ugen_qname nm (Type.Special n) =     case nm of       "UnaryOpUGen" -> ("uop CS",Operator.unaryName n)       "BinaryOpUGen" -> ("binop CS",Operator.binaryName n)@@ -125,7 +127,7 @@         nd_s = let t = "%s = nondet \"%s\" (UId %d) %s [%s] %d"                in printf t l n z (show r) i_l o         c = case q of-              "ugen" -> if Graph.u_node_u_ugenid u == NoId then u_s else nd_s+              "ugen" -> if Graph.u_node_u_ugenid u == Type.NoId then u_s else nd_s               _ -> printf "%s = %s \"%s\" %s %s" l q n (show r) i_s         m = reconstruct_mce_str u     in if Graph.u_node_is_implicit_control u@@ -136,6 +138,6 @@ reconstruct_mrg_str u =     let zero_out n = not (Graph.u_node_is_implicit_control n) && null (Graph.u_node_u_outputs n)     in case map Graph.u_node_label (filter zero_out u) of-         [] -> error "reconstruct_mrg_str"+         [] -> error "reconstruct_mrg_str: nil input?"          [o] -> printf "%s" o          o -> printf "mrg [%s]" (intercalate "," o)
Sound/SC3/UGen/HS.hs view
@@ -186,11 +186,14 @@     let b1 = exp (log 0.001 / (dt * sr))     in x + b1 * y1 --- | dt must not be zero.+-- | Given time /dt/ in frames construct 'iir1' 'lag' function.+--   dt must not be zero.+lag_f_frames :: Floating a => a -> a -> a -> a+lag_f_frames dt x y1 = let b1 = exp (log 0.001 / dt) in x + b1 * (y1 - x)++-- | 'lag_f_frames' with /dt/ in seconds. lag_f :: Floating a => a -> a -> a -> a -> a-lag_f sr dt x y1 =-    let b1 = exp (log 0.001 / (dt * sr))-    in x + b1 * (y1 - x)+lag_f sr dt = lag_f_frames (dt * sr)  lag :: Floating t => t -> F_ST1 t (t,t) t lag sr ((i,t),st) = let r = lag_f sr t i st in (r,r)@@ -209,6 +212,22 @@     let r = if trig then resetPos else sc3_wrap start end (ph + rate)     in (ph,r) +-- > Sound.SC3.Plot.plot_fn_r1_ln (\x -> mod_dif x 0 1) (0,4)+mod_dif :: RealFrac a => a -> a -> a -> a+mod_dif i j m =+  let d = absdif i j `sc3_mod` m+      h = m * 0.5+  in h - absdif d h++{-+-- > Sound.SC3.Plot.plot_fn_r1_ln (\x -> modDif x 0 1) (0,4)+modDif :: BinaryOp a => a -> a -> a -> a+modDif i j m =+  let d = absDif i j `modE` m+      h = m * 0.5+  in h - absDif d h+-}+ -- | * LIST PROCESSING  l_apply_f_st0 :: F_ST0 st o -> st -> [o]@@ -232,7 +251,7 @@ l_lag sr i t = l_apply_f_st1 (lag sr) 0 (zip i t)  l_slope :: Floating t => t -> [t] -> [t]-l_slope sr i = l_apply_f_st1 (slope sr) 0 i+l_slope sr = l_apply_f_st1 (slope sr) 0  -- > let rp = repeat -- > take 10 (l_phasor (rp False) (rp 1) (rp 0) (rp 4) (rp 0)) == [0,1,2,3,0,1,2,3,0,1]@@ -294,6 +313,7 @@ import Sound.SC3.Plot.FFT {- hsc3-plot -}  let n = take 4096 (l_white_noise 'α')+let plotTable1 = plot_p1_ln . return  plotTable1 n plotTable1 (take 4096 (l_brown_noise 'α'))@@ -315,7 +335,7 @@ plotTable1 (rfft_pure (l_resonz_ir (sr_to_rps 44100,440,0.1) n)) plotTable1 (rfft_pure (l_rlpf_ir (sr_to_rps 44100,1200,0.1) n)) -import Sound.SC3.Common.Math+import Sound.SC3.Common.Math {- hsc3 -}  plot_fft1_mnn 44100 (rfft_pure (l_bw_lpf (44100,midi_to_cps 60) n)) plot_fft1_mnn 44100 (rfft_pure (l_resonz_ir (sr_to_rps 44100,midi_to_cps 69,0.1) n))@@ -329,4 +349,5 @@  plotTable1 (take 512 (l_sin_osc 48000 (repeat 440))) plotTable1 (take 512 (l_cos_osc 48000 (repeat 440)))+ -}
Sound/SC3/UGen/Name.hs view
@@ -1,6 +1,6 @@ {- | Functions to normalise UGen names. -@SC3@ UGen names are capitalised.+@SC3@ UGen names are capitalised at word boundaries. @hsc3@ cannot use these names for UGen constructor functions. Haskell names are given by lower-casing until the first word edge. Lisp names are given by lower-casing everything and adding hyphens before edges.@@ -23,6 +23,7 @@ -}  -- | Find all SC3 name edges. Edges occur at non lower-case letters.+--   This rule is very simple but is coherent and predictable and works well for .hs names. sc3_name_edges_plain :: String -> [Bool] sc3_name_edges_plain = map (not . isLower) @@ -34,6 +35,7 @@ > sc3_name_edges "PV_Add" == [False,False,False,True,False,False] > sc3_name_edges "A2K" == [False,False,False] > sc3_name_edges "Lag2UD" == [False,False,False,True,True,True]+> sc3_name_edges "PeakEQ" == [False,False,False,False,True,True] -} sc3_name_edges :: String -> [Bool] sc3_name_edges s =@@ -43,22 +45,21 @@      then replicate n False ++ q      else replicate (n - 1) False ++ [True] ++ q -{- | Convert from SC3 name to HS style name.+{- | Convert from SCLang (class) name to Haskell (function) name. -> s = words "SinOsc LFSaw FFT PV_Add AllpassN BHiPass BinaryOpUGen HPZ1 RLPF TGrains DFM1 FBSineC A2K Lag2UD IIRFilter FMGrainB"-> l = words "sinOsc lfSaw fft pv_Add allpassN bHiPass binaryOpUGen hpz1 rlpf tGrains dfm1 fbSineC a2k lag2UD iirFilter fmGrainB"+> s = words "SinOsc LFSaw FFT PV_Add AllpassN BHiPass BinaryOpUGen HPZ1 RLPF TGrains DFM1 FBSineC A2K Lag2UD IIRFilter FMGrainB Pan2 PeakEQ RIRandN"+> l = words "sinOsc lfSaw fft pv_Add allpassN bHiPass binaryOpUGen hpz1 rlpf tGrains dfm1 fbSineC a2k lag2UD iirFilter fmGrainB pan2 peakEQ riRandN" > map sc3_name_to_hs_name s == l -} sc3_name_to_hs_name :: String -> String sc3_name_to_hs_name s =     let f (c,e) = if e then toUpper c else c-        s_lc = map toLower s-    in map f (zip s_lc (sc3_name_edges s))+    in zipWith (curry f) (map toLower s) (sc3_name_edges s)  {- | Convert from SC3 name to Lisp style name. -> s = words "SinOsc LFSaw FFT PV_Add AllpassN BHiPass BinaryOpUGen HPZ1 RLPF TGrains DFM1"-> l = words "sin-osc lf-saw fft pv-add allpass-n b-hi-pass binary-op-u-gen hpz1 rlpf t-grains dfm1"+> s = words "SinOsc LFSaw FFT PV_Add AllpassN BHiPass BinaryOpUGen HPZ1 RLPF TGrains DFM1 BPeakEQ Pan2 RIRandN"+> l = words "sin-osc lf-saw fft pv-add allpass-n b-hi-pass binary-op-u-gen hpz1 rlpf t-grains dfm1 b-peak-e-q pan-2 ri-rand-n" > map sc3_name_to_lisp_name s == l -} sc3_name_to_lisp_name :: String -> String
Sound/SC3/UGen/Plain.hs view
@@ -1,11 +1,8 @@ -- | Plain notation for SuperCollider UGen graphs. ----- > let {s = ugen "SinOsc" AR [440,0] 1--- >     ;m = binop "*" AR s 0.1--- >     ;o = ugen "Out" AR [0,m] 0}--- > in Sound.SC3.Server.Play.audition o >> Sound.SC3.UGen.Dot.draw o------ > audition (out 0 (sinOsc AR 440 0 * 0.1))+-- > s = ugen "SinOsc" AR [440,0] 1+-- > m = binop CI "*" AR s 0.1+-- > o = ugen "Out" AR [0,m] 0 module Sound.SC3.UGen.Plain where  import Sound.SC3.Common.Base@@ -46,7 +43,7 @@  -- | Construct non-deterministic UGen. ----- > import Sound.SC3.ID--- > nondet "WhiteNoise" (UId (fromEnum 'a')) AR [] 1 == whiteNoise 'a' AR+-- > import Sound.SC3.Common.UId+-- > binop CI "*" AR (nondet "WhiteNoise" (UId (fromEnum 'a')) AR [] 1) 0.05 nondet :: String -> UGenId -> Rate -> [UGen] -> Int -> UGen nondet nm z r i nc = mk_plain r nm i nc (Special 0) z
Sound/SC3/UGen/Type.hs view
@@ -1,4 +1,4 @@--- | Unit Generator ('UGen'), and associated types and instances.+-- | Unit Generator ('UGen') and associated types and instances. module Sound.SC3.UGen.Type where  import Data.Bits {- base -}@@ -6,8 +6,10 @@ import qualified Data.Fixed as F {- base -} import Data.List {- base -} import Data.Maybe {- base -}+import Text.Printf {- base -}+ import qualified Safe {- safe -}-import System.Random {- random -}+import qualified System.Random as Random {- random -}  import qualified Sound.SC3.Common.Math as Math import Sound.SC3.Common.Math.Operator@@ -37,26 +39,60 @@ -- -- > Constant 3 == Constant 3 -- > (Constant 3 > Constant 1) == True-data Constant = Constant {constantValue :: Sample}-                deriving (Eq,Ord,Read,Show)+newtype Constant = Constant {constantValue :: Sample} deriving (Eq,Ord,Read,Show)  -- | Control meta-data.-data C_Meta n =-    C_Meta {ctl_min :: n -- ^ Minimum-           ,ctl_max :: n -- ^ Maximum-           ,ctl_warp :: String -- ^ @(0,1)@ @(min,max)@ transfer function.-           ,ctl_step :: n -- ^ The step to increment & decrement by.-           ,ctl_units :: String -- ^ Unit of measure (ie hz, ms etc.).-           }+data Control_Meta n =+    Control_Meta {ctl_min :: n -- ^ Minimum+                 ,ctl_max :: n -- ^ Maximum+                 ,ctl_warp :: String -- ^ @(0,1)@ @(min,max)@ transfer function.+                 ,ctl_step :: n -- ^ The step to increment & decrement by.+                 ,ctl_units :: String -- ^ Unit of measure (ie hz, ms etc.).+                 ,controlGroup :: Maybe Control_Group -- ^ Control group.+                 }     deriving (Eq,Read,Show) --- | 5-tuple form of 'C_Meta' data.-type C_Meta_T5 n = (n,n,String,n,String)+-- | 3-tuple form of 'Control_Meta' data.+type Control_Meta_T3 n = (n,n,String) --- | Lift 'C_Meta_5' to 'C_Meta' allowing type coercion.-c_meta_t5 :: (n -> m) -> C_Meta_T5 n -> C_Meta m-c_meta_t5 f (l,r,w,stp,u) = C_Meta (f l) (f r) w (f stp) u+-- | Lift 'Control_Meta_T3' to 'Control_Meta' allowing type coercion.+control_meta_t3 :: Num m => (n -> m) -> Control_Meta_T3 n -> Control_Meta m+control_meta_t3 f (l,r,w) = Control_Meta (f l) (f r) w 0 "" Nothing +-- | 5-tuple form of 'Control_Meta' data.+type Control_Meta_T5 n = (n,n,String,n,String)++-- | Lift 'Control_Meta_T5' to 'Control_Meta' allowing type coercion.+control_meta_t5 :: (n -> m) -> Control_Meta_T5 n -> Control_Meta m+control_meta_t5 f (l,r,w,stp,u) = Control_Meta (f l) (f r) w (f stp) u Nothing++{- | Controls may form part of a control group. -}+data Control_Group+  = Control_Range+  | Control_Array Int+  | Control_XY+  deriving (Eq,Read,Show)++-- | The number of elements in a control group.+control_group_degree :: Control_Group -> Int+control_group_degree grp =+  case grp of+    Control_Range -> 2+    Control_Array n -> n+    Control_XY -> 2++{- | Grouped controls have names that have equal prefixes and identifying suffixes.+     Range controls have two elements, minima and maxima, suffixes are [ and ].+     Array controls have N elements and have IX suffixes.+     XY controls have two elements, X and Y coordinates, suffixes are X and Y.+-}+control_group_suffixes :: Control_Group -> [String]+control_group_suffixes grp =+  case grp of+    Control_Range -> ["[","]"]+    Control_Array n -> map (printf "%02d") [0 .. n - 1]+    Control_XY -> ["X","Y"]+ -- | Control inputs.  It is an invariant that controls with equal -- names within a UGen graph must be equal in all other respects. data Control = Control {controlOperatingRate :: Rate@@ -64,12 +100,11 @@                        ,controlName :: String                        ,controlDefault :: Sample                        ,controlTriggered :: Bool-                       ,controlMeta :: Maybe (C_Meta Sample)}+                       ,controlMeta :: Maybe (Control_Meta Sample)}                deriving (Eq,Read,Show)  -- | Labels.-data Label = Label {ugenLabel :: String}-             deriving (Eq,Read,Show)+newtype Label = Label {ugenLabel :: String} deriving (Eq,Read,Show)  -- | Unit generator output descriptor. type Output = Rate@@ -128,7 +163,6 @@     ceilingE = mkUnaryOperator Ceil ceilingE     floorE = mkUnaryOperator Floor floorE - instance UnaryOp UGen where     ampDb = mkUnaryOperator AmpDb ampDb     asFloat = mkUnaryOperator AsFloat asFloat@@ -271,8 +305,7 @@       MCE_U _ -> True       _ -> False --- | Output channels of UGen as a list.  If required, preserves the--- RHS of and MRG node in channel 0.+-- | Output channels of UGen as a list.  If required, preserves the RHS of and MRG node in channel 0. mceChannels :: UGen -> [UGen] mceChannels u =     case u of@@ -280,8 +313,7 @@       MRG_U (MRG x y) -> let r:rs = mceChannels x in MRG_U (MRG r y) : rs       _ -> [u] --- | Number of channels to expand to.  This function sees into MRG,--- and is defined only for MCE nodes.+-- | Number of channels to expand to.  This function sees into MRG, and is defined only for MCE nodes. mceDegree :: UGen -> Maybe Int mceDegree u =     case mrg_leftmost u of@@ -301,10 +333,19 @@                          in MRG_U (MRG r y) : rs       _ -> replicate n u --- | Apply MCE transform to a list of inputs.+-- | Is MCE required, ie. are any input values MCE?+mceRequired :: [UGen] -> Bool+mceRequired = any isMCE++{- | Apply MCE transform to a list of inputs.+     The transform extends each input so all are of equal length, and then transposes the matrix.++> mceInputTransform [mce2 1 2,mce2 3 4] == Just [[1,3],[2,4]]+> mceInputTransform [mce2 1 2,mce2 3 4,mce3 5 6 7] == Just [[1,3,5],[2,4,6],[1,3,7]]+-} mceInputTransform :: [UGen] -> Maybe [[UGen]] mceInputTransform i =-    if any isMCE i+    if mceRequired i     then let n = maximum (map mceDegree_err (filter isMCE i))          in Just (transpose (map (mceExtend n) i))     else Nothing@@ -384,7 +425,7 @@       Primitive_U p ->           let o = ugenOutputs p           in case o of-               _:_:_ -> mce (map (proxy u) [0..(length o - 1)])+               _:_:_ -> mce (map (proxy u) [0 .. length o - 1])                _ -> u       Constant_U _ -> u       _ -> error "proxify: illegal ugen"@@ -436,6 +477,8 @@  -- | Binary math constructor with constant optimisation. --+-- > constant 2 * constant 3 == constant 6+-- -- > let o = sinOsc AR 440 0 -- -- > o * 1 == o && 1 * o == o && o * 2 /= o@@ -627,12 +670,12 @@         in takeWhile (p (m + (n'-n)/2)) (enumFromThen n n')  -- | Unit generators are stochastic.-instance Random UGen where+instance Random.Random UGen where     randomR (Constant_U (Constant l),Constant_U (Constant r)) g =-        let (n, g') = randomR (l,r) g+        let (n, g') = Random.randomR (l,r) g         in (Constant_U (Constant n), g')     randomR _ _ = error "UGen.randomR: non constant (l,r)"-    random = randomR (-1.0, 1.0)+    random = Random.randomR (-1.0, 1.0)  -- | UGens are bit patterns. instance Bits UGen where
Sound/SC3/UGen/UGen.hs view
@@ -1,28 +1,27 @@ -- | UGen data structure representation and associated functions. module Sound.SC3.UGen.UGen where -import qualified Data.Char as C {- base -}+import qualified Data.Char {- base -} import Data.Maybe {- base -} import Data.List {- base -} -import qualified Sound.SC3.Common.Envelope as E-import qualified Sound.SC3.Common.Base as B-import qualified Sound.SC3.Common.Math.Operator as O-import qualified Sound.SC3.Common.Rate as R-import qualified Sound.SC3.Common.UId as UId-import Sound.SC3.UGen.Type+import qualified Data.List.Split as Split {- split -} +import qualified Sound.SC3.Common.Envelope as Envelope {- hsc3 -}+import qualified Sound.SC3.Common.Base as Base {- hsc3 -}+import qualified Sound.SC3.Common.Math.Operator as Operator {- hsc3 -}+import qualified Sound.SC3.Common.Rate as Rate {- hsc3 -}+import qualified Sound.SC3.Common.UId as UId {- hsc3 -}++import Sound.SC3.UGen.Type {- hsc3 -}+ -- | 'UId' of 'resolveID'. toUId :: UId.ID a => a -> UGenId toUId = UId . UId.resolveID  -- | Lookup operator name for operator UGens, else UGen name. ugen_user_name :: String -> Special -> String-ugen_user_name nm (Special n) =-    case nm of-      "UnaryOpUGen" -> O.unaryName n-      "BinaryOpUGen" -> O.binaryName n-      _ -> nm+ugen_user_name nm (Special n) = fromMaybe nm (Operator.ugen_operator_name nm n)  -- * UGen graph functions @@ -46,17 +45,16 @@          MRG_U (MRG l r) -> map_f (MRG_U (MRG (recur l) (recur r)))          _ -> map_f u --- | Right fold of UGen graph.+{- | Right fold of UGen graph.++> ugenFoldr (:) [] (pan2 (sinOsc AR 440 0) 0.25 0.1)+-} ugenFoldr :: (UGen -> a -> a) -> a -> UGen -> a ugenFoldr f st u =     let recur = flip (ugenFoldr f)     in case u of-         Primitive_U p ->-             let i = ugenInputs p-             in f u (foldr recur st i)-         Proxy_U p ->-             let s = proxySource p-             in f u (f (Primitive_U s) st)+         Primitive_U p -> f u (foldr recur st (ugenInputs p))+         Proxy_U p -> f u (ugenFoldr f st (Primitive_U (proxySource p)))          MCE_U m -> f u (foldr recur st (mceProxies m))          MRG_U (MRG l r) -> f u (f l (f r st))          _ -> f u st@@ -64,25 +62,39 @@ -- * Unit generator node constructors  -- | Control input node constructor.-control_f64 :: R.Rate -> Maybe Int -> String -> Sample -> UGen+control_f64 :: Rate.Rate -> Maybe Int -> String -> Sample -> UGen control_f64 r ix nm d = Control_U (Control r ix nm d False Nothing)  -- | 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'.-control :: R.Rate -> String -> Double -> UGen+control :: Rate.Rate -> String -> Double -> UGen control r = control_f64 r Nothing  -- | Variant of 'control' with meta data.-meta_control :: R.Rate -> String -> Double -> C_Meta_T5 Double -> UGen-meta_control rt nm df meta =-    let m = c_meta_t5 id meta+control_m :: Rate.Rate -> String -> Double -> Control_Meta_T3 Double -> UGen+control_m rt nm df meta =+    let m = control_meta_t3 id meta     in Control_U (Control rt Nothing nm df False (Just m)) +-- | Generate group of two controls.  Names are generated according to 'control_group_suffixes'+control_pair :: Control_Group -> Rate.Rate -> String -> (Double,Double) -> Control_Meta_T3 Double -> (UGen,UGen)+control_pair grp rt nm (df1,df2) meta =+    let m = (control_meta_t3 id meta) {controlGroup = Just grp}+    in case control_group_suffixes grp of+         [lhs,rhs] ->+           (Control_U (Control rt Nothing (nm ++ lhs) df1 False (Just m))+           ,Control_U (Control rt Nothing (nm ++ rhs) df2 False (Just m)))+         _ -> error "control_pair"++-- | Generate range controls.  Names are generated according to 'control_group_suffixes'+control_rng :: Rate.Rate -> String -> (Double,Double) -> Control_Meta_T3 Double -> (UGen,UGen)+control_rng = control_pair Control_Range+ -- | Triggered (kr) control input node constructor. tr_control_f64 :: Maybe Int -> String -> Sample -> UGen-tr_control_f64 ix nm d = Control_U (Control R.KR ix nm d True Nothing)+tr_control_f64 ix nm d = Control_U (Control Rate.KR ix nm d True Nothing)  -- | Triggered (kr) control input node constructor. tr_control :: String -> Double -> UGen@@ -96,7 +108,7 @@                    _ -> error "control_set: non control input?"     in zipWith f [0..] --- | Multiple root graph node constructor.+-- | Multiple root graph node constructor (left input is output) mrg2 :: UGen -> UGen -> UGen mrg2 u = MRG_U . MRG u @@ -106,8 +118,7 @@ mce2 :: UGen -> UGen -> UGen mce2 x y = mce [x,y] --- | Extract two channels from possible MCE, if there is only one--- channel it is duplicated.+-- | Extract two channels from possible MCE, if there is only one channel it is duplicated. mce2c :: UGen -> (UGen,UGen) mce2c u =     case mceChannels u of@@ -117,19 +128,23 @@  -- | Variant of 'mce2c' that requires input to have two channels. unmce2 :: UGen -> (UGen, UGen)-unmce2 = B.t2_from_list . mceChannels+unmce2 = Base.t2_from_list . mceChannels  -- | Multiple channel expansion for two inputs. mce3 :: UGen -> UGen -> UGen -> UGen mce3 x y z = mce [x,y,z] +-- | Variant of 'mce2c' that requires input to have two channels.+unmce3 :: UGen -> (UGen, UGen, UGen)+unmce3 = Base.t3_from_list . mceChannels+ -- | Apply a function to each channel at a unit generator. mceMap :: (UGen -> UGen) -> UGen -> UGen mceMap f u = mce (map f (mceChannels u))  -- | Map with element index. map_ix :: ((Int,a) -> b) -> [a] -> [b]-map_ix f = map f . zip [0..]+map_ix f = zipWith (curry f) [0..]  -- | Variant of 'mceMap' with element index. mce_map_ix :: ((Int,UGen) -> UGen) -> UGen -> UGen@@ -151,21 +166,42 @@ mceChannel n u =     case u of       MCE_U m -> mceProxies m !! n-      _ -> error "mceChannel: non MCE value"+      _ -> if n == 0 then u else error "mceChannel: non MCE value, non ZERO index"  -- | Transpose rows and columns, ie. {{a,b},{c,d}} to {{a,c},{b,d}}. mceTranspose :: UGen -> UGen mceTranspose = mce . map mce . transpose . map mceChannels . mceChannels +-- | Rotate mce /k/ places to the right, ie. {a,b,c,d} to {d,a,b,c}+--+-- > mceRotate 1 (mce [1,2,3,4]) == mce [4,1,2,3]+mceRotate :: Int -> UGen -> UGen+mceRotate k =+  let rotateRight n p = let (b,a) = splitAt (length p - n) p in a ++ b+  in mce . rotateRight k . mceChannels++-- | 'concat' at mce channels of each input, ie. {{a,b},{c,d}} to {a,b,c,d}.+--+-- > mceConcat (map mce [[1,2],[3,4]]) == mce [1..4]+mceConcat :: [UGen] -> UGen+mceConcat = mce . concat . map mceChannels++-- | Collect subarrays of mce.+--+-- > mceClump 2 (mce [1,2,3,4]) == mce2 (mce2 1 2) (mce2 3 4)+mceClump :: Int -> UGen -> UGen+mceClump k = mce . map mce . Split.chunksOf k . mceChannels+ -- * Transform  -- | Given /unmce/ function make halt mce transform. halt_mce_transform_f :: (a -> [a]) -> [a] -> [a] halt_mce_transform_f f l =-    let (l',e) = fromMaybe (error "halt_mce_transform: null?") (B.sep_last l)+    let (l',e) = fromMaybe (error "halt_mce_transform: null?") (Base.sep_last l)     in l' ++ f e  -- | The halt MCE transform, ie. lift channels of last input into list.+--   This is not used by hsc3, but it is used by hsc3-forth and stsc3. -- -- > halt_mce_transform [1,2,mce2 3 4] == [1,2,3,4] halt_mce_transform :: [UGen] -> [UGen]@@ -187,69 +223,72 @@ label :: String -> UGen label = Label_U . Label --- | 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.-unpackLabel :: UGen -> [UGen]-unpackLabel u =+{- | 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.++> unpackLabel False (label "/tmp")++-}+unpackLabel :: Bool -> UGen -> [UGen]+unpackLabel length_prefix u =     case u of       Label_U (Label s) ->           let q = fromEnum '?'-              f c = if C.isAscii c then fromEnum c else q+              f c = if Data.Char.isAscii c then fromEnum c else q               s' = map (fromIntegral . f) s-              n = fromIntegral (length s)-          in n : s'+          in if length_prefix then fromIntegral (length s) : s' else s'       MCE_U m ->-          let x = map unpackLabel (mceProxies m)-          in if B.equal_length_p x+          let x = map (unpackLabel length_prefix) (mceProxies m)+          in if Base.equal_length_p x              then map mce (transpose x)              else error (show ("unpackLabel: mce length /=",x))       _ -> error (show ("unpackLabel: non-label",u))  -- * Envelope --- | 'mce' of 'E.envelope_sc3_array'.-envelope_to_ugen :: E.Envelope UGen -> UGen+-- | 'mce' of 'Envelope.envelope_sc3_array'.+envelope_to_ugen :: Envelope.Envelope UGen -> UGen envelope_to_ugen =     let err = error "envGen: bad Envelope"-    in mce . fromMaybe err . E.envelope_sc3_array+    in mce . fromMaybe err . Envelope.envelope_sc3_array --- | 'mce' of 'E.envelope_sc3_ienvgen_array'.-envelope_to_ienvgen_ugen :: E.Envelope UGen -> UGen+-- | 'mce' of 'Envelope.envelope_sc3_ienvgen_array'.+envelope_to_ienvgen_ugen :: Envelope.Envelope UGen -> UGen envelope_to_ienvgen_ugen =     let err = error "envGen: bad Envelope"-    in mce . fromMaybe err . E.envelope_sc3_ienvgen_array+    in mce . fromMaybe err . Envelope.envelope_sc3_ienvgen_array  -- * Bitwise --- | 'O.BitAnd'+-- | 'Operator.BitAnd' bitAnd :: UGen -> UGen -> UGen-bitAnd = mkBinaryOperator O.BitAnd undefined+bitAnd = mkBinaryOperator Operator.BitAnd undefined --- | 'O.BitOr'+-- | 'Operator.BitOr' bitOr :: UGen -> UGen -> UGen-bitOr = mkBinaryOperator O.BitOr undefined+bitOr = mkBinaryOperator Operator.BitOr undefined --- | 'O.BitXor'+-- | 'Operator.BitXor' bitXOr :: UGen -> UGen -> UGen-bitXOr = mkBinaryOperator O.BitXor undefined+bitXOr = mkBinaryOperator Operator.BitXor undefined --- | 'O.BitNot'+-- | 'Operator.BitNot' bitNot :: UGen -> UGen-bitNot = mkUnaryOperator O.BitNot undefined+bitNot = mkUnaryOperator Operator.BitNot undefined --- | 'O.ShiftLeft'+-- | 'Operator.ShiftLeft' shiftLeft :: UGen -> UGen -> UGen-shiftLeft = mkBinaryOperator O.ShiftLeft undefined+shiftLeft = mkBinaryOperator Operator.ShiftLeft undefined --- | 'O.ShiftRight'+-- | 'Operator.ShiftRight' shiftRight :: UGen -> UGen -> UGen-shiftRight = mkBinaryOperator O.ShiftRight undefined+shiftRight = mkBinaryOperator Operator.ShiftRight undefined --- | 'O.UnsignedShift'+-- | 'Operator.UnsignedShift' unsignedShift :: UGen -> UGen -> UGen-unsignedShift = mkBinaryOperator O.UnsignedShift undefined+unsignedShift = mkBinaryOperator Operator.UnsignedShift undefined  -- | 'shiftLeft' operator. (.<<.) :: UGen -> UGen -> UGen@@ -258,3 +297,35 @@ -- | 'shiftRight' operator. (.>>.) :: UGen -> UGen -> UGen (.>>.) = shiftRight++-- * Rate Flow++-- | Traverse graph rewriting audio rate nodes as control rate.+rewriteUGenRates :: (Rate.Rate -> Bool) -> Rate.Rate -> UGen -> UGen+rewriteUGenRates sel_f set_rt =+  let f u = case u of+              Primitive_U p -> let Primitive rt nm i o s z = p+                               in Primitive_U (if sel_f rt then Primitive set_rt nm i o s z else p)+              _ -> u+  in ugenTraverse (const False) f -- requires endRewrite node (see rsc3-arf)++-- | Traverse graph rewriting audio rate nodes as control rate.+rewriteToControlRate :: UGen -> UGen+rewriteToControlRate = rewriteUGenRates (== Rate.AR) Rate.KR++-- | Traverse graph rewriting all nodes as demand rate.+rewriteToDemandRate :: UGen -> UGen+rewriteToDemandRate = rewriteUGenRates (const True) Rate.DR++-- | Traverse graph rewriting audio and control nodes as initialisation rate.+rewriteToInitialisationRate :: UGen -> UGen+rewriteToInitialisationRate = rewriteUGenRates (`elem` [Rate.KR,Rate.AR]) Rate.IR++-- | Select rewriting function given 'Rate.Rate'.+rewriteToRate :: Rate.Rate -> UGen -> UGen+rewriteToRate rt =+  case rt of+    Rate.KR -> rewriteToControlRate+    Rate.DR -> rewriteToDemandRate+    Rate.IR -> rewriteToInitialisationRate+    Rate.AR -> error "rewriteToRate: AR?"
emacs/hsc3.el view
@@ -1,25 +1,28 @@-;; Indentation and font locking is courtesy `haskell' mode.-;; Inter-process communication is courtesy `comint' and `inf-haskell'.+;; Indentation and font locking is courtesy `haskell' mode (debian=haskell-mode).+;; Inter-process communication is courtesy `comint'. ;; Symbol at point acquisition is courtesy `thingatpt'. ;; Directory search facilities are courtesy `find-lisp'. -(require 'scheme)+(require 'haskell) (require 'comint) (require 'thingatpt) (require 'find-lisp)-(require 'inf-haskell) ;; debian=haskell-mode -(defvar hsc3-help-directory-  nil-  "*The directory containing the help files (default=nil).")+(defcustom hsc3-buffer "*hsc3*"+  "*The name of the hsc3 haskell process buffer."+  :type 'string) -(defvar sc3-help-directory-  nil+(defvar hsc3-interpreter (list "ghci")+  "*The name of the haskell interpreter (default=\"ghci\").")++(defvar hsc3-directory nil+  "*The hsc3 directory (default=nil).")++(defvar sc3-help-directory nil   "*The directory containing the SC3 RTF help files (default=nil).") -(defvar hsc3-literate-p-  t-  "*Flag to indicate if we are in literate mode (default=t).")+(defvar hsc3-literate-p nil+  "*Flag to indicate if we are in literate mode (default=nil).")  (make-variable-buffer-local 'hsc3-literate-p) @@ -32,21 +35,36 @@         (list c)       (cons c (hsc3-chunk-string n (substring s n)))))) -(defun hsc3-send-string (s)-  (if (comint-check-proc inferior-haskell-buffer)+(defun hsc3-send-line (s)+  "Send string, with newline appended, to haskell."+  (if (comint-check-proc hsc3-buffer)       (let ((cs (hsc3-chunk-string 64 (concat s "\n"))))         (mapcar-         (lambda (c) (comint-send-string inferior-haskell-buffer c))+         (lambda (c) (comint-send-string hsc3-buffer c))          cs))-    (error "no hsc3 process running?")))+    (error "no hsc3 process?"))) -(defun hsc3-quit-haskell ()-  "Quit haskell."+(defun hsc3-send-layout-block (s)+  "Send string to haskell using ghci layout block notation."+  (hsc3-send-line (mapconcat 'identity (list ":{" s ":}") "\n")))++(defun hsc3-send-text (str)+  "If text spans multiple lines `hsc3-send-layout-block' else `hsc3-send-line'."+  (if (string-match "\n" str)+      (hsc3-send-layout-block str)+    (hsc3-send-line str)))++(defun hsc3-send-text-fn (fn str)+  "Send text with fn prefixed."+  (hsc3-send-text (if (string-match "\n" str) (concat fn " $\n" str) (concat fn " $ " str))))++(defun hsc3-send-quit ()+  "Send :quit instruction to haskell."   (interactive)-  (hsc3-send-string ":quit"))+  (hsc3-send-line ":quit"))  (defun hsc3-unlit (s)-  "Remove bird literate marks and preceding comment marker"+  "Remove Bird-literate marks."    (replace-regexp-in-string "^[> ]* ?" "" s))  (defun hsc3-uncomment (s)@@ -62,7 +80,7 @@   "Lookup up the name at point in the hsc3 help files."   (interactive)   (let ((rgx (concat "^" (thing-at-point 'symbol) "\\.help\\.l?hs$")))-    (hsc3-find-files hsc3-help-directory rgx)))+    (hsc3-find-files (concat hsc3-directory "Help/") rgx)))  (defun hsc3-sc3-help ()   "Lookup up the name at point in the SC3 (RTF) help files."@@ -70,223 +88,364 @@   (let ((rgx (concat "^" (thing-at-point 'symbol) "\\\(.help\\\)?.rtf$")))     (hsc3-find-files sc3-help-directory rgx))) +(defun hsc3-sc3-help-scdoc ()+  "Lookup up the UGen name at point in the SC3 (SCDOC) help files."+  (interactive)+  (hsc3-send-line+   (format+    "Sound.SC3.Common.Help.sc3_scdoc_help_open False (Sound.SC3.Common.Help.sc3_scdoc_help_path (Sound.SC3.UGen.DB.ugen_sc3_name \"%s\"))"+    (thing-at-point 'symbol))))+ (defun hsc3-ugen-summary ()-  "Lookup up the UGen at point in hsc3-db"+  "Lookup up the UGen at point in hsc3-db."   (interactive)-  (hsc3-send-string-      (format "Sound.SC3.UGen.DB.ugenSummary \"%s\""-              (thing-at-point 'symbol))))+  (hsc3-send-line+   (format "Sound.SC3.UGen.DB.ugen_summary_wr \"%s\"" (thing-at-point 'symbol)))) +(defun hsc3-ugen-default-param ()+  "Insert the default UGen parameters (arguments) for the UGen before <point>."+  (interactive)+  (let ((p (format "hsc3-help ugen-default-param %s" (thing-at-point 'symbol))))+    (insert " ")+    (insert (hsc3-remove-trailing-newline (shell-command-to-string p)))))++(defun hsc3-ugen-control-param ()+  "Insert control UGen parameters (arguments) for the UGen before <point>."+  (interactive)+  (let ((p (format "hsc3-help ugen-control-param %s" (thing-at-point 'symbol))))+    (insert (hsc3-remove-trailing-newline (shell-command-to-string p)))))++(defun hsc3-ugen-control-param-let (ugen-name)+  "Generate let bindings to controls for all UGen param (printed in *hsc3* buffer)."+  (interactive "SUGen Name: ")+  (hsc3-send-line+   (format "Sound.SC3.UGen.DB.ugen_control_param_wr \"%s\"" ugen-name)))+ (defun hsc3-remove-trailing-newline (s)+  "Delete trailing newlines from string."   (replace-regexp-in-string "\n\\'" "" s))  (defun hsc3-cd ()   "Change directory at ghci to current value of 'default-directory'."   (interactive)-  (hsc3-send-string (format ":cd %s" default-directory)))+  (hsc3-send-line (format ":cd %s" default-directory))) -(defun hsc3-load-buffer ()-  "Load the current buffer."+(defun hsc3-load-current-file ()+  "Send :load and the current buffer file name to haskell."   (interactive)   (save-buffer)   (hsc3-see-haskell)-  (hsc3-send-string (format ":load \"%s\"" buffer-file-name)))+  (hsc3-send-line (format ":load \"%s\"" buffer-file-name))) -(defun hsc3-run-line ()-  "Send the current line to the interpreter."+(defun hsc3-send-current-line ()+  "Send the current line to haskell."   (interactive)-  (let* ((s (buffer-substring (line-beginning-position)-			      (line-end-position)))+  (let* ((s (buffer-substring-no-properties+             (line-beginning-position)+             (line-end-position))) 	 (s* (if hsc3-literate-p 		 (hsc3-unlit s) 	       (hsc3-uncomment s))))-    (hsc3-send-string s*)))+    (hsc3-send-line s*))) -(defun hsc3-run-main ()-  "Run current main."+(defun hsc3-send-main ()+  "Send main to haskell."   (interactive)-  (hsc3-send-string "main"))+  (hsc3-send-line "main")) +(defun hsc3-region-string ()+  "Get current region as string."+  (buffer-substring-no-properties (region-beginning) (region-end)))++(defun hsc3-send-region ()+  "Send region text to interpreter."+  (interactive)+  (hsc3-send-text (hsc3-region-string)))++(defun hsc3-send-region-fn (fn)+  "Send region text with haskell function to be applied."+  (hsc3-send-text-fn fn (hsc3-region-string)))++(defun hsc3-play-region (k)+  "Play region at scsynth.  The (one-indexed) prefix agument indicates which server to send to."+  (interactive "p")+  (hsc3-send-region-fn+   (format+    "Sound.SC3.audition_at (\"%s\",%d + %d) Sound.SC3.def_play_opt"+    hsc3-server-host hsc3-server-port (- k 1))))++(defcustom hsc3-draw-command "draw"+  "*The un-qualified name of the draw function to use at `hsc3-draw-region'."+  :type 'string)++(defun hsc3-draw-region ()+  "Draw region UGen graph."+  (interactive)+  (hsc3-send-region-fn (format "Sound.SC3.UGen.Dot.%s $ out 0 " hsc3-draw-command)))++(defun hsc3-dump-ugens-region ()+  "Print region UGen graph."+  (interactive)+  (hsc3-send-region-fn "Sound.SC3.ugen_dump_ugens"))++(defun hsc3-ui-region ()+  "UI for region UGen graph."+  (interactive)+  (let ((str (hsc3-region-string)))+    (hsc3-send-region-fn "Sound.SC3.UI.SCLang.Control.ugen_ui_run \"ui\" 1")))++(defun hsc3-pp-html-region ()+  "HTML pretty-printer and viewer for region UGen graph."+  (interactive)+  (let ((str (hsc3-region-string)))+    (hsc3-send-region-fn "Sound.SC3.UI.HTML.ugen_graph_pp_html_wv")))++(defun hsc3-pp-forth ()+  "Forth PP"+  (interactive)+  (hsc3-send-region-fn "Sound.SC3.UGen.DB.PP.ugen_graph_forth_pp (False,False)"))++(defun hsc3-pp-smalltalk ()+  "Pretty print UGen as Smalltalk"+  (interactive)+  (hsc3-send-region-fn "Sound.SC3.UGen.DB.PP.Graph.ugen_graph_smalltalk_pp"))+ (defun hsc3-id-rewrite-region ()+  "Run hsc3-id-rewrite on region."   (interactive)-  (shell-command-on-region-   (region-beginning)-   (region-end)-   "hsc3-id-rewrite"-   nil-   t))+  (shell-command-on-region (region-beginning) (region-end) "hsc3-rw id-rewrite" nil t)) -(defun hsc3-id-rewrite ()+(defun hsc3-id-rewrite-buffer ()+  "Run hsc3-id-rewrite on buffer."   (interactive)-  (shell-command-on-region (point-min) (point-max) "hsc3-id-rewrite" nil t))+  (shell-command-on-region (point-min) (point-max) "hsc3-rw id-rewrite" nil t)) -(defun hsc3-interrupt-haskell ()-  "Interrupt haskell interpreter"+(defun hsc3-uparam-rewrite ()+  "Rewrite uparam notation inplace."   (interactive)-  (if (comint-check-proc inferior-haskell-buffer)-      (with-current-buffer inferior-haskell-buffer-        (interrupt-process (get-buffer-process (current-buffer))))-    (error "no haskell interpreter process running?")))+  (shell-command-on-region (region-beginning) (region-end) "hsc3-rw uparam expand" nil t)) +(defcustom hsc3-server-host "127.0.0.1"+  "The host that scsynth is listening at"+  :type 'string)++(defcustom hsc3-server-port 57110+  "The port that scsynth is listening at"+  :type 'integer)++(defun hsc3-with-sc3 (txt)+  "withSC3 at `hsc3-server-host' and `hsc3-server-port'"+  (hsc3-send-line+   (format "Sound.SC3.withSC3At (\"%s\",%d) %s" hsc3-server-host hsc3-server-port txt)))+ (defun hsc3-reset-scsynth ()-  "Reset scsynth"+  "Send SC3 reset instruction to haskell."   (interactive)-  (hsc3-send-string "Sound.SC3.withSC3 Sound.SC3.reset"))+  (hsc3-with-sc3 "Sound.SC3.reset")) +(defun hsc3-start-haskell ()+  "Start the hsc3 haskell process.++If `hsc3-interpreter' is not already a subprocess it is+started and a new window is created to display the results of+evaluating hsc3 expressions.  Input and output is via `hsc3-buffer'."+  (interactive)+  (if (comint-check-proc hsc3-buffer)+      (hsc3-see-haskell)+    (apply+     'make-comint+     "hsc3"+     (car hsc3-interpreter)+     nil+     (cdr hsc3-interpreter))+    (hsc3-see-haskell)))++(defun hsc3-interrupt-haskell ()+  "Interupt haskell."+  (interactive)+  (interrupt-process hsc3-buffer comint-ptyp))+ (defun hsc3-stop ()-  "Interrupt haskell interpreter & reset scsynth"+  "Interrupt haskell & reset scsynth."   (interactive)   (progn     (hsc3-interrupt-haskell)     (sleep-for 0.15)     (hsc3-reset-scsynth))) -(defun hsc3-status-scsynth ()-  "Status"+(defun hsc3-server-status ()+  "Send serverStatus request to haskell."   (interactive)-  (hsc3-send-string-   "Sound.SC3.withSC3 Sound.SC3.serverStatus >>= mapM putStrLn"))+  (hsc3-with-sc3 "Sound.SC3.serverStatus >>= mapM putStrLn"))  (defun hsc3-quit-scsynth ()   "Quit"   (interactive)-  (hsc3-send-string-   "Sound.SC3.withSC3 (Sound.SC3.send Sound.SC3.quit)"))+  (hsc3-with-sc3 "(Sound.OSC.sendMessage Sound.SC3.quit)")) -(defun hsc3-update-hsc3-tags ()-  "Update hsc3 TAGS file, must be run from hsc3 directory."+(defcustom hsc3-seq-degree 2+  "*Number of scsynth processes to address at -seq operations (default=2)."+  :type 'integer)++(defun hsc3-server-status-seq ()+  "Send serverStatus request to haskell."   (interactive)-  (if (and (executable-find "hasktags") (file-exists-p "hsc3.cabal"))-      (call-process-shell-command-       "find Sound . -name '*.hs' | xargs hasktags -e"-       nil-       nil)-    (error "no hasktags binary or not at hsc3 directory?")))+  (hsc3-send-line+   (format+    "Sound.SC3.withSC3At_seq (\"%s\",%d) %d Sound.SC3.serverStatus >>= mapM putStrLn . concat"+    hsc3-server-host hsc3-server-port hsc3-seq-degree))) -(defun hsc3-audition-graph ()-  "Audition the UGen graph at point."+(defun hsc3-play-region-seq ()+  "hsc3-play-region-opt with auditionAt_seq hsc3-seq-degree."   (interactive)-  (hsc3-send-string-   (concat "Sound.SC3.audition " (thing-at-point 'symbol))))+  (hsc3-send-region-fn+   (format+    "Sound.SC3.audition_at_seq (\"%s\",%d) def_play_opt %d"+    hsc3-server-host hsc3-server-port hsc3-seq-degree))) -(defun hsc3-audition-graph-m ()-  "Audition the (monadic) UGen graph at point."+(defun hsc3-reset-scsynth-seq ()+  "Send SC3 reset instruction to haskell."   (interactive)-  (hsc3-send-string-   (concat "Sound.SC3.audition =<<" (thing-at-point 'symbol))))+  (hsc3-send-line+   (format+    "Sound.SC3.withSC3At_seq_ (\"%s\",%d) %d Sound.SC3.reset"+    hsc3-server-host hsc3-server-port hsc3-seq-degree))) -(defun hsc3-audition-pattern ()-  "Audition the pattern at point."+(defun hsc3-dmenu-ugen-core ()+  "dmenu of categorised core SC3 UGens"   (interactive)-  (hsc3-send-string-   (concat "Sound.SC3.Lang.Pattern.paudition " (thing-at-point 'symbol))))+  (insert (shell-command-to-string "hsc3-db dmenu ugen core"))) -(defun hsc3-draw-graph ()-  "Draw the UGen graph at point."+(defun hsc3-dmenu-ugen-ext ()+  "dmenu of categorised external SC3 UGens"   (interactive)-  (hsc3-send-string-   (concat "Sound.SC3.UGen.Dot.draw " (thing-at-point 'symbol))))+  (insert (shell-command-to-string "hsc3-db dmenu ugen external"))) -(defun hsc3-draw-graph-plain ()-  "Draw the UGen graph at point (plain)."+(defun hsc3-dmenu-ugen-all ()+  "dmenu of all categorised SC3 UGens"   (interactive)-  (hsc3-send-string-   (concat "Sound.SC3.UGen.Dot.draw_plain " (thing-at-point 'symbol))))+  (insert (shell-command-to-string "hsc3-db dmenu ugen all"))) -(defun hsc3-draw-graph-m ()-  "Draw the (monadic) UGen graph at point."+(defun hsc3-xmenu-ugen-core ()+  "xmenu of categorised core SC3 UGens"   (interactive)-  (hsc3-send-string-   (concat "Sound.SC3.UGen.Dot.draw =<<" (thing-at-point 'symbol))))+  (insert (shell-command-to-string "hsc3-db xmenu core"))) +(defun hsc3-xmenu-ugen-ext ()+  "xmenu of categorised external SC3 UGens"+  (interactive)+  (insert (shell-command-to-string "hsc3-db xmenu external")))++(defun hsc3-xmenu-ugen-all ()+  "xmenu of categorised core and external SC3 UGens."+  (interactive)+  (insert (shell-command-to-string "cat ~/sw/hsc3-db/lib/xmenu/ugen-core-tree.text ~/sw/hsc3-db/lib/xmenu/nil.text ~/sw/hsc3-db/lib/xmenu/ugen-ext-tree.text | xmenu")))++(defun hsc3-load-file (fn)+  "Load named file as string"+  (with-temp-buffer+    (insert-file-contents fn)+    (buffer-substring-no-properties+       (point-min)+       (point-max))))++(defun hsc3-unload-all-modules ()+  "Unload all modules and delete all bindings at ghci.++   :load without any arguments unloads all the currently loaded modules and bindings"+  (interactive)+  (hsc3-send-line ":load"))++(defun hsc3-import-standard-modules ()+  "Send standard set of hsc3 and related module imports to haskell."+  (interactive)+  (mapc+   'hsc3-send-line+   (split-string (hsc3-load-file (concat hsc3-directory "lib/hsc3-std-imports.hs")) "\n")))+ (defun hsc3-set-prompt ()-  "Set ghci prompt to hsc3."+  "Set ghci prompt to hsc3> and the continuation prompt to nil."   (interactive)-  (hsc3-send-string ":set prompt \"hsc3> \""))+  (hsc3-send-line ":set prompt \"hsc3> \"")+  (hsc3-send-line ":set prompt-cont \"\""))  (defun hsc3-see-haskell ()  "Show haskell output."  (interactive)- (let* ((p (inferior-haskell-process))-        (b (process-buffer p)))+  (if (not (comint-check-proc hsc3-buffer))+      (hsc3-start-haskell)    (hsc3-set-prompt)+   (hsc3-import-standard-modules)    (delete-other-windows)    (split-window-vertically)-   (with-current-buffer b+   (with-current-buffer hsc3-buffer      (let ((window (display-buffer (current-buffer))))        (goto-char (point-max))        (save-selected-window          (set-window-point window (point-max))))))) +(defun hsc3-ugen-smalltalk ()+  "Insert hcs3-help ugen-smalltalk of thing-at-point"+  (interactive)+  (insert (shell-command-to-string (concat "hsc3-help ugen-smalltalk " (thing-at-point 'symbol)))))+ (defvar hsc3-mode-map nil   "Haskell SuperCollider keymap.")  (defun hsc3-mode-keybindings (map)   "Haskell SuperCollider keybindings."-  (define-key map [?\C-c ?<] 'hsc3-load-buffer)-  (define-key map [?\C-c ?>] 'hsc3-see-haskell)-  (define-key map [?\C-c ?\C-c] 'hsc3-run-line)-  (define-key map [?\C-c ?\C-h] 'hsc3-help)-  (define-key map [?\C-c ?\C-a] 'hsc3-audition-graph)-  (define-key map [?\C-c ?\M-a] 'hsc3-audition-graph-m)-  (define-key map (kbd "C-c p") 'hsc3-audition-pattern)-  (define-key map (kbd "C-c C-g") 'hsc3-draw-graph)-  (define-key map (kbd "C-c C-S-g") 'hsc3-draw-graph-plain)-  (define-key map [?\C-c ?\M-g] 'hsc3-draw-graph-m)-  (define-key map [?\C-c ?\C-j] 'hsc3-sc3-help)-  ;(define-key map [?\C-c ?\C-/] 'hsc3-sc3-html-help)-  (define-key map [?\C-c ?i] 'hsc3-interrupt-haskell)-  (define-key map [?\C-c ?\C-k] 'hsc3-reset-scsynth)-  (define-key map [?\C-c ?\C-m] 'hsc3-run-main)-  (define-key map [?\C-c ?\C-p] 'hsc3-status-scsynth)-  (define-key map [?\C-c ?\C-q] 'hsc3-quit-haskell)-  (define-key map [?\C-c ?\C-0] 'hsc3-quit-scsynth)-  (define-key map [?\C-c ?\C-.] 'hsc3-stop)-  (define-key map [?\C-c ?\C-s] 'hsc3-stop) ; ie. sclang-mode key-  (define-key map [?\C-c ?\C-u] 'hsc3-ugen-summary))+  (define-key map (kbd "C-c <") 'hsc3-load-current-file)+  (define-key map (kbd "C-c >") 'hsc3-see-haskell)+  (define-key map (kbd "C-c C-c") 'hsc3-send-current-line)+  (define-key map (kbd "C-c C-h") 'hsc3-help)+  (define-key map (kbd "C-c C-r") 'hsc3-send-region)+  (define-key map (kbd "C-c C-a") 'hsc3-play-region)+  (define-key map (kbd "C-c C-S-a") 'hsc3-play-region-seq)+  (define-key map (kbd "C-c C-g") 'hsc3-draw-region)+  (define-key map (kbd "C-c C-d") 'hsc3-dump-ugens-region)+  (define-key map (kbd "C-c C-v") 'hsc3-ui-region)+  (define-key map (kbd "C-c C-j") 'hsc3-sc3-help)+  (define-key map (kbd "C-c C-i") 'hsc3-interrupt-haskell)+  (define-key map (kbd "C-c C-k") 'hsc3-reset-scsynth)+  (define-key map (kbd "C-c C-S-k") 'hsc3-reset-scsynth-seq)+  (define-key map (kbd "C-c C-m") 'hsc3-send-main)+  (define-key map (kbd "C-c C-p") 'hsc3-server-status)+  (define-key map (kbd "C-c C-S-p") 'hsc3-server-status-seq)+  (define-key map (kbd "C-c C-q") 'hsc3-send-quit)+  (define-key map (kbd "C-c C-.") 'hsc3-stop)+  (define-key map (kbd "C-c C-s") 'hsc3-dmenu-ugen-all)+  (define-key map (kbd "C-c C-S-s") 'hsc3-xmenu-ugen-all)+  (define-key map (kbd "C-c C-u") 'hsc3-ugen-summary))  (defun hsc3-mode-menu (map)-  "Haskell SuperCollider menu."-  (define-key map [menu-bar hsc3]-    (cons "Haskell-SuperCollider" (make-sparse-keymap "Haskell-SuperCollider")))-  (define-key map [menu-bar hsc3 help]-    (cons "Help" (make-sparse-keymap "Help")))-  (define-key map [menu-bar hsc3 help hsc3]-    '("HSC3 Help" . hsc3-help))-  (define-key map [menu-bar hsc3 help ugen]-    '("UGen Summary" . hsc3-ugen-summary))-  ;(define-key map [menu-bar hsc3 help sc3-server]-  ;  '("SuperCollider Server Command help" . hsc3-sc3-server-help))-  (define-key map [menu-bar hsc3 help sc3-ugen]-    '("SC3 Help" . hsc3-sc3-ugen-help))-  (define-key map [menu-bar hsc3 expression]-    (cons "Expression" (make-sparse-keymap "Expression")))-  (define-key map [menu-bar hsc3 expression stop]-    '("Stop (interrupt and reset)" . hsc3-stop))-  (define-key map [menu-bar hsc3 expression change-directory]-    '("Change directory" . hsc3-cd))-  (define-key map [menu-bar hsc3 expression load-buffer]-    '("Load buffer" . hsc3-load-buffer))-  (define-key map [menu-bar hsc3 expression run-main]-    '("Run main" . hsc3-run-main))-  (define-key map [menu-bar hsc3 expression run-line]-    '("Run line" . hsc3-run-line))-  (define-key map [menu-bar hsc3 scsynth]-    (cons "SCSynth" (make-sparse-keymap "SCSynth")))-  (define-key map [menu-bar hsc3 scsynth quit]-    '("Quit scsynth" . hsc3-quit-scsynth))-  (define-key map [menu-bar hsc3 scsynth status]-    '("Display status" . hsc3-status-scsynth))-  (define-key map [menu-bar hsc3 scsynth reset]-    '("Reset scsynth" . hsc3-reset-scsynth))-  (define-key map [menu-bar hsc3 haskell]-    (cons "Haskell" (make-sparse-keymap "Haskell")))-  (define-key map [menu-bar hsc3 haskell quit-haskell]-    '("Quit haskell" . hsc3-quit-haskell))-  (define-key map [menu-bar hsc3 haskell interrupt-haskell]-    '("Interrupt haskell" . hsc3-interrupt-haskell))-  (define-key map [menu-bar hsc3 haskell see-haskell]-    '("See haskell" . hsc3-see-haskell)))+  "Haskell SuperCollider Menu"+  (define-key map [menu-bar hsc3] (cons "Haskell-SuperCollider" (make-sparse-keymap "Haskell-SuperCollider")))+  (define-key map [menu-bar hsc3 help] (cons "Help" (make-sparse-keymap "Help")))+  (define-key map [menu-bar hsc3 help hsc3] '("HSC3 Help" . hsc3-help))+  (define-key map [menu-bar hsc3 help ugen] '("UGen Summary" . hsc3-ugen-summary))+  (define-key map [menu-bar hsc3 help sc3-ugen] '("SC3 Help" . hsc3-sc3-ugen-help))+  (define-key map [menu-bar hsc3 expression] (cons "Expression" (make-sparse-keymap "Expression")))+  (define-key map [menu-bar hsc3 expression stop] '("Stop (interrupt and reset)" . hsc3-stop))+  (define-key map [menu-bar hsc3 expression change-directory] '("Change directory" . hsc3-cd))+  (define-key map [menu-bar hsc3 expression import-standard-modules] '("Import standard modules" . hsc3-import-standard-modules))+  (define-key map [menu-bar hsc3 expression server-status] '("Print server status" . hsc3-server-status))+  (define-key map [menu-bar hsc3 expression send-main] '("Send main" . hsc3-send-main))+  (define-key map [menu-bar hsc3 expression send-region] '("Send region" . hsc3-send-region))+  (define-key map [menu-bar hsc3 expression send-current-line] '("Send current line" . hsc3-send-current-line))+  (define-key map [menu-bar hsc3 expression id-rewrite-region] '("ID-rewrite region" . hsc3-id-rewrite-region))+  (define-key map [menu-bar hsc3 expression load-current-file] '("Load current file" . hsc3-load-current-file))+  (define-key map [menu-bar hsc3 expression dmenu-ugen] '("UGen dmenu" . hsc3-dmenu-ugen-all))+  (define-key map [menu-bar hsc3 expression xmenu-ugen] '("UGen xmenu" . hsc3-xmenu-ugen-all))+  (define-key map [menu-bar hsc3 expression draw-region] '("Draw region" . hsc3-draw-region))+  (define-key map [menu-bar hsc3 expression play-region] '("Play region" . hsc3-play-region))+  (define-key map [menu-bar hsc3 scsynth] (cons "SCSynth" (make-sparse-keymap "SCSynth")))+  (define-key map [menu-bar hsc3 scsynth quit] '("Quit scsynth" . hsc3-quit-scsynth))+  (define-key map [menu-bar hsc3 scsynth status] '("Display status" . hsc3-status-scsynth))+  (define-key map [menu-bar hsc3 scsynth reset] '("Reset scsynth" . hsc3-reset-scsynth))+  (define-key map [menu-bar hsc3 haskell] (cons "Haskell" (make-sparse-keymap "Haskell")))+  (define-key map [menu-bar hsc3 haskell quit-haskell] '("Quit haskell" . hsc3-quit-haskell))+  (define-key map [menu-bar hsc3 haskell interrupt-haskell] '("Interrupt haskell" . hsc3-interrupt-haskell))+  (define-key map [menu-bar hsc3 haskell see-haskell] '("See haskell" . hsc3-see-haskell)))  (if hsc3-mode-map     ()@@ -310,7 +469,7 @@   hsc3-mode   haskell-mode   "Haskell SuperCollider"-  "Major mode for interacting with an inferior haskell process."+  "Major mode for interacting with an inferior hsc3 process."   (setq hsc3-literate-p nil)   (turn-on-font-lock)) 
hsc3.cabal view
@@ -1,5 +1,5 @@ Name:              hsc3-Version:           0.18+Version:           0.19 Synopsis:          Haskell SuperCollider Description:       Haskell client for the SuperCollider synthesis server,                    <http://audiosynth.com/>.@@ -8,16 +8,16 @@                    <http://rohandrape.net/t/hsc3-texts>. License:           GPL-3 Category:          Sound-Copyright:         (c) Rohan Drape and others, 2005-2020+Copyright:         (c) Rohan Drape and others, 2005-2021 Author:            Rohan Drape Maintainer:        rd@rohandrape.net Stability:         Experimental Homepage:          http://rohandrape.net/t/hsc3-Tested-With:       GHC == 8.6.5+Tested-With:       GHC == 8.8.4 Build-Type:        Simple Cabal-Version:     >= 1.10 -Data-files:        README+Data-files:        README.md                    emacs/hsc3.el                    Help/Server/*.help.lhs                    Help/UGen/ix.md@@ -29,10 +29,12 @@                    binary,                    bytestring,                    containers,+                   data-binary-ieee754,                    data-ordlist,                    directory,                    filepath,-                   hosc == 0.18.*,+                   hosc == 0.19.*,+                   mtl,                    murmur-hash,                    network,                    process,@@ -52,12 +54,14 @@                    Sound.SC3.Common.Buffer.Vector                    Sound.SC3.Common.Enum                    Sound.SC3.Common.Envelope+                   Sound.SC3.Common.Help                    Sound.SC3.Common.Math                    Sound.SC3.Common.Math.Filter                    Sound.SC3.Common.Math.Filter.BEQ                    Sound.SC3.Common.Math.Interpolate                    Sound.SC3.Common.Math.Noise                    Sound.SC3.Common.Math.Operator+                   Sound.SC3.Common.Math.Warp                    Sound.SC3.Common.Math.Window                    Sound.SC3.Common.Monad                    Sound.SC3.Common.Monad.Operators@@ -74,6 +78,7 @@                    Sound.SC3.Server.Graphdef                    Sound.SC3.Server.Graphdef.Graph                    Sound.SC3.Server.Graphdef.Read+                   Sound.SC3.Server.Graphdef.Text                    Sound.SC3.Server.FD                    Sound.SC3.Server.Monad                    Sound.SC3.Server.NRT@@ -103,6 +108,7 @@                    Sound.SC3.UGen.Bindings.HW.External.Zita                    Sound.SC3.UGen.Enum                    Sound.SC3.UGen.Envelope+                   Sound.SC3.UGen.Event                    Sound.SC3.UGen.Graph                    Sound.SC3.UGen.Graph.Reconstruct                    Sound.SC3.UGen.Graph.Transform@@ -120,4 +126,4 @@  Source-Repository  head   Type:            git-  Location:        https://github.com/rd--/hsc3.git+  Location:        https://gitlab.com/rd--/hsc3