Ck      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m nopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                 !!!!!!!"""""""""""""""""""""""""""""""""""""""""""""###################################################################### # # # $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V%W%X%Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''(((()))))))****************++++,,,,,,,,,,,,,,,,,,,-------------. . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////////////////////////////////////////////////////////00000000000011111111111111111111111111111222222222222222222222222 2 2 2 2 2222222222222222333 4!4"4#4$4%5&5'5(5)6*6+6,6-6.6/606172737475767778797:7;7<7=7>7?7@7A7B7C7D7E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W9X9Y9Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h;i;j;ESafe!Operating rate of unit generator.:Integer rate identifier, as required for scsynth bytecode.+Rates as ordered for filter rate selection.Color identifiers for each . Set of all  values. !Case insensitive parser for rate. EData.Maybe.mapMaybe rate_parse (words "ar kR IR Dr") == [AR,KR,IR,DR]      SafeMultiple channel expansion.Extend  to specified degree.  Safe(Typeclass to constrain UGen identifiers.Hash s p and q and sum to form an k. #'a' `joinID` (1::Int) == 1627429042 !"##"!  !"#Safe $Guarded variant of l with default value.%m with default value. $lookup_env_default "PATH" "/usr/bin"&Read the environment variable SC3_HELP, the default value is !~/.local/share/SuperCollider/Help.'-Locate path to indicated SC3 class help file. vimport System.FilePath d <- sc3HelpDirectory h <- sc3HelpClassFile d "SinOsc" h == Just (d </> "Classes/SinOsc.html")(2Generate path to indicated SC3 operator help file. ?sc3HelpOperatorEntry "." "+" == "./Overviews/Operators.html#.+")+Generate path to indicated SC3 method help. 8sc3HelpMethod "." '*' ("C","m") == "./Classes/C.html#*m"*1Generate path to indicated SC3 class method help. 9sc3HelpClassMethod "." ("C","m") == "./Classes/C.html#*m"+4Generate path to indicated SC3 instance method help. <sc3HelpInstanceMethod "." ("C","m") == "./Classes/C.html#-m",0The name of the local SC3 Help file documenting u . Deletes @) to allow use on haddock quoted comments. import Sound.SC3.UGen.Name ugenSC3HelpFile "Collection.*fill" ugenSC3HelpFile "Collection.inject" ugenSC3HelpFile (toSC3Name "sinOsc")-Use BROWSER or  x-www-browser to view SC3 help file for u. )get_env_default "BROWSER" "x-www-browser" import Sound.SC3.UGen.Name viewSC3Help (toSC3Name "Collection.*fill") viewSC3Help (toSC3Name "Collection.inject") viewSC3Help (toSC3Name "sinOsc") $%&'()*+,- $%&'()*+,- $%&'()*+,- $%&'()*+,-Safe ."Nodes are either groups of synths.1'Name or index and value or bus mapping.2Get nth field of status as n.3Names of status fields.4Status pretty printer.7YControl (parameter) data may be given as names or indices and as values or bus mappings. |queryTree_ctl (string "freq",float 440) == (Left "freq",Left 440.0) queryTree_ctl (int32 1,string "c0") == (Right 1,Right 0)8If rc is o then 1' data is expected (ie. flag was set at  /g_queryTree). k is the synth-id, and nm the name. Nlet d = [int32 1,string "freq",float 440] in queryTree_synth True 1000 "saw" d;Parse result of  g_queryTree. let r = [int32 1,int32 0,int32 2,int32 1,int32 1 ,int32 100,int32 1 ,int32 1000,int32 (-1),string "saw" ,int32 1,string "freq",float 440.0 ,int32 2,int32 0] in queryTree r<"Extact sequence of group-ids from ..= Transform . to p. putStrLn (T.drawTree (fmap query_node_pp (queryTree_rt (queryTree r)))) > 0 > | > +- 1 > | | > | `- 100 > | | > | `- (1000,"saw","freq:440.0") > | > `- 2./0123456789:;<=./0123456789:;<=2341./056789:;<=./0123456789:;<=Safe@`Generate path to indicated SC3 instance method help. Adds initial forward slash if not present. ilet r = "./Reference/Server-Command-Reference.html#/b_alloc" in sc3_server_command_ref "." "b_alloc" == rALookup SC3 help file for server command c. ISound.SC3.Server.Help.viewServerHelp "/b_allocRead" viewServerHelp "done"@A@A@A@ANoneg,Pascal (length prefixed) encoding of string.h Byte-encode L value.j Byte-encode H.,BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm,BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm,PONLMQKJIHRSTUVBCDEFGWXYZ[\]^_`abcdefghijklm&BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmSaferSample format.{Sound file format.%Enumeration of Message printer types.Error posting mode.Turn error posting offTurn error posting onError posting scope. Global scope Bundle scopeEnumeration of flags for '/b_gen' command.EEnumeration of possible locations to add new nodes (s_new and g_new). to bit number. $map b_gen_bit [minBound .. maxBound]Set of  to flag. &b_gen_flag [minBound .. maxBound] == 7.Sample format to standard file extension name.-Infer sample format from file extension name.*rstuvwxyz{|}~*rstuvwxyz{|}~*{|}~rstuvwxyz rstuvwxyz{|}~ Safe  SC3 server commands are strings.!Enumerate server command numbers.Lookup command number in . <map sc3_cmd_number ["/b_alloc","/s_new"] == [Just 28,Just 9]q of .CList of asynchronous server commands, ie. commands that reply with /done.o if r is an asynchronous r. Timport Sound.SC3 map isAsync [b_close 0,n_set1 0 "0" 0,status] == [True,False,False]eAsynchronous commands are at the left. This function should preserve the ordering of both branches. *partition_async [b_close 0,n_set1 0 "0" 0]Types & names for b_info message fields./Type, name and value descriptors for fields of n_info message. Safe+CI = Case insensitive, CS = case sensitive. Variant of s requiring exact match.Predicates for .Predicates for .String equality with . $string_eq CI "lower" "LOWER" == True of .t parser with . #parse_enum CI "FALSE" == Just Falseu with equality function.Reverse u with equality function.(prev,cur,next) triples. Opcn_triples [1..3] == [(Nothing,1,Just 2),(Just 1,2,Just 3),(Just 2,3,Nothing)]Separate first list element. *sep_first "astring" == Just ('a',"string")Separate last list element. )sep_last "stringb" == Just ("string",'b')Are lists of equal length? Jequal_length_p ["t1","t2"] == True equal_length_p ["t","t1","t2"] == False Histogramv of f at x and g at y. Length prefixed list variant of .v of f at x and g at y and h at z. None Minimal NRT rendering options. The sound file type is inferred from the file name extension. Structure is: OSC file name, output audio file name, output number of channels, sample rate, sample format, further parameters (ie. ["-m","32768"]) to be inserted before the NRT -N option.An  score is a sequence of ws.&Encode and prefix with encoded length.Trivial NRT statistics.x of f of y . Can be used to separate the initialisation and  remainder parts of a score. Encode an  score. Write an  score. Write an  score to a file handle. Decode an  z to a list of ws. Decode an  z. of {.>Minimal NRT rendering, for more control see Stefan Kersten's  hsc3-process package at:  ,https://github.com/kaoskorobase/hsc3-process.  Safe Convert from hsc3 name to SC3 name. toSC3Name "sinOsc" == "SinOsc" toSC3Name "lfSaw" == "LFSaw" toSC3Name "pv_Copy" == "PV_Copy" map toSC3Name ["bpf","fft","tpv","out","in'","fbSineN"] Inverse of . olet nm = ["SinOsc","LFSaw","PV_Copy","FBSineN"] in map fromSC3Name nm == ["sinOsc","lfSaw","pv_Copy","fbSineN"] :map fromSC3Name ["BPF","FFT","TPV"] == ["bpf","fft","tpv"] #map fromSC3Name (words "HPZ1 RLPF")Find SC3 name edges. ?sc3_name_edges "SinOsc" == [False,False,False,True,False,False])Convert from SC3 name to Lisp style name. let {s = words "SinOsc LFSaw FFT PV_Add AllpassN BHiPass BinaryOpUGen HPZ1 RLPF TGrains" ;l = words "sin-osc lf-saw fft pv-add allpass-n b-hi-pass binary-op-ugen hpz1 rlpf t-grains"} in map sc3_name_to_lisp_name s == l SC3 UGen namesA are given with rate suffixes if oscillators, without if filters. /map sc3_ugen_name_sep (words "SinOsc.ar LPF *") Safe Enumeration of SC3 unary operator UGens. )map show [minBound :: Binary .. maxBound]"Enumeration of SC3 unary operator UGens.YType-specialised .Z5Table of symbolic names for standard unary operators.[;Lookup possibly symbolic name for standard unary operators.\*Given name of unary operator derive index. XmapMaybe (unaryIndex CI) (words "NEG CUBED") == [0,13] unaryIndex CS "SinOsc" == Nothing]q of \. Nmap (is_unary CI) (words "ABS MIDICPS NEG") map (is_unary CI) (words "- RAND")^Type-specialised ._6Table of symbolic names for standard binary operators.`<Lookup possibly symbolic name for standard binary operators. 0map binaryName [1,2,8,12] == ["-","*","<","Min"]a+Given name of binary operator derive index. ^mapMaybe (binaryIndex CI) (words "* MUL RING1") == [2,2,30] binaryIndex CI "SINOSC" == Nothingbq of a. -map (is_binary CI) (words "== > % TRUNC MAX")c#Order of lookup: binary then unary. 3map (resolve_operator CI) (words "+ - ADD SUB NEG")t      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abct      !"2$#%&'()*+,-./013456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abct"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]      !^_`abc 1      !"6#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcSafe=n#Union type of Unit Generator forms.vMultiple root graph.z Proxy to multiple channel input.~UGen primitives.-Operating mode of unary and binary operators.!Unit generator output descriptor.Labels.|Control inputs. It is an invariant that controls with equal names within a UGen graph must be equal in all other respects.5-tuple form of  data.Control meta-data.MinimumMaximum(0,1)  (min,max) transfer function.%The step to increment & decrement by.!Unit of measure (ie hz, ms etc.). Constants. :Constant 3 == Constant 3 (Constant 3 > Constant 1) == TrueSC3 samples are 32-bit |#. hsc3 represents data as 64-bit }. If n6 values are used more generally (ie. see hsc3-forth) |9 may be too imprecise, ie. for representing time stamps.)Data type for internalised identifier at n. Alias of , the  used for deterministic UGens.Lift C_Meta_5 to  allowing type coercion.Type-specialised ~. See into o. Value of o .Erroring variant. Multiple root graph constructor. See into u7, follows leftmost rule until arriving at non-MRG node.Constant node predicate.True if input is a sink n%, ie. has no outputs. Sees into MRG. See into s.,Multiple channel expansion node constructor.Type specified .!Multiple channel expansion node (t) predicate. Sees into MRG.aOutput channels of UGen as a list. If required, preserves the RHS of and MRG node in channel 0.bNumber of channels to expand to. This function sees into MRG, and is defined only for MCE nodes.Erroring variant.HExtend UGen to specified degree. Follows "leftmost" rule for MRG nodes.(Apply MCE transform to a list of inputs.0Build a UGen after MCE transformation of inputs.True if MCE is an immediate proxy for a multiple-out Primitive. This is useful when disassembling graphs, ie. ugen_graph_forth_pp at hsc3-db. Ensure input n is valid, ie. not a sink. Constant value node constructor.Type specialised .Type specialised .Type specialised .&Unit generator proxy node constructor.Determine the rate of a UGen.'Apply proxy transformation if required.5Construct proxied and multiple channel expanded UGen.Ucf = constant function, rs = rate set, r = rate, nm = name, i = inputs, o = outputs.Operator UGen constructor.2Unary math constructor with constant optimization.3Binary math constructor with constant optimization. let o = sinOsc AR 440 0 o * 1 == o && 1 * o == o && o * 2 /= o o + 0 == o && 0 + o == o && o + 1 /= o o - 0 == o && 0 - o /= o o / 1 == o && 1 / o /= o o ** 1 == o && o ** 2 /= o3Binary math constructor with constant optimization.UGens are bit patterns.Unit generators are stochastic.Unit generators are enumerable.$Unit generators are orderable (when  Constants). !(constant 2 > constant 1) == TrueUnit generators are integral.Unit generators are real.#Unit generators are floating point.Unit generators are fractional.Unit generators are numbers.cnopqrstuvwxyz{|}~Ynopqrstuvwxyz{|}~c~z{|}vwxynopqrstu;nopqrstuvwxyz{|}~Safe9Oscillator constructor with constrained set of operating s.Oscillator constructor with .0Oscillator constructor, rate restricted variant.;Rate restricted oscillator constructor, setting identifier.+Oscillator constructor, setting identifier. Provided  variant of .9Variant oscillator constructor with MCE collapsing input.9Variant oscillator constructor with MCE collapsing input.Rate constrained filter n constructor.Filter UGen constructor.Filter UGen constructor.Filter n constructor.Filter UGen constructor. Provided  filter with  input.5Variant filter constructor with MCE collapsing input.5Variant filter constructor with MCE collapsing input.5Variant filter constructor with MCE collapsing input.1Information unit generators are very specialized.SafeAEmulation of the sound generation hardware of the Atari TIA chip.POKEY Chip Sound SimulatorSafeForward wavelet transform. Inverse of .%Pass wavelets above a threshold, ie.  pv_MagAbove.Pass wavelets with scale above threshold.Pass wavelets with time above threshold.  Product in W domain, ie. pv_Mul.    Safe(-1,+1)                Safe9;Quaternary function.Ternary function.Binary function.Unary function. UId. vA class indicating a monad (and functor and applicative) that will generate a sequence of unique integer identifiers." with initial state of zero. 1uid_st_eval (replicateM 3 generateUId) == [0,1,2]#!Thread state through sequence of .$ of #. 0uid_st_seq_ (replicate 3 generateUId) == [0,1,2]%Unary UId lift.&Binary UId lift.'Ternary UId lift.(Quaternary UId lift.)*Clone a unit generator (mce . replicateM). !"#$%&'()*+, !"#$%&'() !"#$,+*%&'() !"#$%&'()*+,Safe- Variant of ..;Construct unary operator, the name can textual or symbolic. uop CI "NEG" AR 1/<Construct binary operator, the name can textual or symbolic. vbinop CI "*" AR 1 2 == binop CI "MUL" AR 1 2 binop CS "*" AR (ugen "SinOsc" AR [440,0] 1) 0.1 == sinOsc AR 440 0 * 0.10Construct deterministic UGen. hlet o = ugen "SinOsc" AR [440,0] 1 o == sinOsc AR 440 0 ugen "Out" AR [0,o] 0 == out 0 (sinOsc AR 440 0)1!Construct non-deterministic UGen. Yimport Sound.SC3.ID nondet "WhiteNoise" (UId (fromEnum 'a')) AR [] 1 == whiteNoise 'a' AR-./01-./01-./01-./01Safe 2 variant with  at left. /fmap (== 5) (return 3 .+ 2) [3,4] .+ 2 == [5,6]3 variant with  at right. /fmap (== 5) (3 +. return 2) 3 +. [2,3] == [5,6]4 variant with  at left and right. vfmap (== 5) (return 3 .+. return 2) [3,4] .+. [2,3] == [5,6,6,7] getZipList (ZipList [3,4] .+. ZipList [2,3]) == [5,7]5 variant with  at left. fmap (== 6) (return 3 .* 2)6 variant with  at right. fmap (== 6) (3 *. return 2)7 variant with  at left and right. #fmap (== 6) (return 3 .*. return 2)8 variant with  at left. /fmap (== 1) (return 3 .- 2) [3,4] .- 2 == [1,2]9 variant with  at right. /fmap (== 1) (3 -. return 2) 3 -. [2,3] == [1,0]: variant with  at left and right. vfmap (== 1) (return 3 .-. return 2) [3,4] .-. [2,3] == [1,0,2,1] getZipList (ZipList [3,4] .-. ZipList [2,3]) == [1,1]; variant with  at left. fmap (== 3) (return 6 ./ 2)< variant with  at right. fmap (== 3) (6 /. return 2)= variant with  at left and right. Dfmap (== 3) (return 6 ./. return 2) [5,6] ./. [2,3] == [5/2,5/3,3,2] 23456789:;<= 23456789:;<= 23456789:;<= 23456789:;<= 2636465767778696:6;7<7=7Safe> of ? of >.@Right to left compositon of  functions. qfmap (== 7) (composeM [return . (+ 1),return . (/ 2)] 3) fmap (== 8) (composeM [return . (* 2),return . (+ 1)] 3)AFeed forward composition of n applications of f. )fmap (== 3) (chainM 3 (return . (+ 1)) 0)>?@A>?@A>?@A>?@ASafeB A discrete n element rendering of a C.C6A function from a (0,1) normalised input to an output.D Generate an n8 element table from a (0,1) normalised window function.En ^ 2.FGaussian window,  <= 0.5.GHann raised cosine window.HHamming raised cosine window.IUnit (+) window, also known as a Dirichlet window.J window.K<Triangular window, ie. Bartlett window with zero end-points.LD . F. Rimport Sound.SC3.Plot plotTable [gaussian_table 1024 0.25,gaussian_table 1024 0.5]MD . H. ,plotTable [hann_table 128,hamming_table 128]ND . G. plotTable [hann_table 128]OD . J.plotTable [sine_table 128]PD . K."plotTable [triangular_table (2^9)]BCDEFGHIJKLMNOPBCDEFGHIJKLMNOPCBDEFGHIJKLMNOPBCDEFGHIJKLMNOPSafe)VHalf pi. half_pi == 1.5707963267948966WTwo pi. two_pi == 6.283185307179586X4Multiply and add, ordinary haskell argument order. mul_add is a method of the MulAdd class. Kmap (mul_add_hs 2 3) [1,2] == [5,7] && map (mul_add_hs 3 4) [1,2] == [7,10]] Variant of SC3 roundTo function. `let r = [0,0,0.25,0.25,0.5,0.5,0.5,0.75,0.75,1,1] in map (`sc3_round_to` 0.25) [0,0.1 .. 1] == r_The SC3 % UGen operator is the  function. ]> 1.5 % 1.2 // ~= 0.3 > -1.5 % 1.2 // ~= 0.9 > 1.5 % -1.2 // ~= -0.9 > -1.5 % -1.2 // ~= -0.3 clet (%) = sc3_mod 1.5 % 1.2 ~= 0.3 (-1.5) % 1.2 ~= 0.9 1.5 % (-1.2) ~= -0.9 (-1.5) % (-1.2) ~= -0.3 ]> 1.2 % 1.5 // ~= 1.2 > -1.2 % 1.5 // ~= 0.3 > 1.2 % -1.5 // ~= -0.3 > -1.2 % -1.5 // ~= -1.2 Q1.2 % 1.5 ~= 1.2 (-1.2) % 1.5 ~= 0.3 1.2 % (-1.5) ~= -0.3 (-1.2) % (-1.5) ~= -1.2 ?map (\n -> sc3_mod n 12.0) [-1.0,12.25,15.0] == [11.0,0.25,3.0]`Type specialised _.aType specialised _.bSC3 clip function. Clip n to within range (i,j). clip is a UGen. >map (\n -> sc_clip n 5 10) [3..12] == [5,5,5,6,7,8,9,10,10,10]c Variant of b! with haskell argument structure. 8map (clip_hs (5,10)) [3..12] == [5,5,5,6,7,8,9,10,10,10]dFractional modulo. >map (\n -> sc_mod n 12.0) [-1.0,12.25,15.0] == [11.0,0.25,3.0]eWrap function that is  non-inclusive' at right edge, ie. the Wrap UGen rule. ^map (sc_wrap_ni 0 5) [4,5,6] == [4,0,1] map (sc_wrap_ni 5 10) [3..12] == [8,9,5,6,7,8,9,5,6,7]fWrap n to within range (i,j), ie. AbstractFunction.wrap, ie.  inclusive at right edge. wrap is a UGen, hence prime. => [5,6].wrap(0,5) == [5,0] map (wrap_hs (0,5)) [5,6] == [5,0] w> [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]g Variant of wrap' with SC3 argument ordering. Bmap (\n -> sc_wrap n 5 10) [3..12] == map (wrap_hs (5,10)) [3..12]hGeneric variant of wrap'. B> [5,6].wrap(0,5) == [5,0] map (generic_wrap (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 (generic_wrap (5::Integer,10)) [3..12] == [9,10,5,6,7,8,9,10,5,6]j&Midi note number to cycles per second. umap (floor . midi_to_cps) [0,24,69,120,127] == [8,32,440,8372,12543] map (floor . midi_to_cps) [-36,138] == [1,23679]k&Cycles per second to midi note number. umap (round . cps_to_midi) [8,32,440,8372,12543] == [0,24,69,120,127] map (round . cps_to_midi) [1,24000] == [-36,138]nLinear amplitude to decibels. Umap (round . amp_to_db) [0.01,0.05,0.0625,0.125,0.25,0.5] == [-40,-26,-24,-18,-12,-6]oDecibels to linear amplitude. Pmap (floor . (* 100). db_to_amp) [-40,-26,-24,-18,-12,-6] == [01,05,06,12,25,50]p6Fractional midi note interval to frequency multiplier. 6map midi_to_ratio [0,7,12] == [1,1.4983070768766815,2]q Inverse of p. 3map ratio_to_midi [3/2,2] == [7.019550008653875,12]r1Scale uni-polar (0,1) input to linear (l,r) range 'map (urange 3 4) [0,0.5,1] == [3,3.5,4]s(Calculate multiplier and add values for t transform. range_muladd 3 4 == (0.5,3.5)teScale bi-polar (-1,1) input to linear (l,r) range. Note that the argument order is not the same as x. ymap (range 3 4) [-1,0,1] == [3,3.5,4] map (\x -> let (m,a) = linlin_muladd (-1) 1 3 4 in x * m + a) [-1,0,1] == [3,3.5,4]w(Calculate multiplier and add values for x transform. range_muladd 3 4 == (0.5,3.5) linlin_muladd (-1) 1 3 4 == (0.5,3.5) linlin_muladd 0 1 3 4 == (1,3) linlin_muladd (-1) 1 0 1 == (0.5,0.5) linlin_muladd (-0.3) 1 (-1) 1x2Map from one linear range to another linear range. 0map (\i -> linlin i (-1) 1 0 1) [-1,-0.9 .. 1.0]yOVariant with a more typical argument structure, ranges as pairs and input last. /map (linlin_hs (0,127) (-0.5,0.5)) [0,63.5,127]zGiven enumeration from dst! that is in the same relation as n is from src. `linlin _enum' 'a' 'A' 'e' == 'E' linlin_enum' 0 (-50) 16 == -34 linlin_enum' 0 (-50) (-1) == -51{ Variant of z that requires src and dst& ranges to be of equal size, and for n to lie in src. linlin_enum (0,100) (-50,50) 0x10 == Just (-34) linlin_enum (-50,50) (0,100) (-34) == Just 0x10 linlin_enum (0,100) (-50,50) (-1) == Nothing|Erroring variant.} Variant of x that requires src and dst6 ranges to be of equal size, thus with constraint of  and  instead of . [linlin_eq (0,100) (-50,50) 0x10 == Just (-34) linlin_eq (-50,50) (0,100) (-34) == Just 0x10~Erroring variant.SimpleNumber.linexp* shifts from linear to exponential ranges. > [1,1.5,2].collect({|i| i.linexp(1,2,10,100).floor}) == [10,31,100] map (floor . sc_linexp 1 2 10 100) [0,1,1.5,2,3] == [10,10,31,100,100]SimpleNumber.explin is the inverse of linexp. -map (sc_explin 10 100 1 2) [10,10,31,100,100]Map xf from an assumed linear input range (src_l,src_r) to an exponential curve output range (dst_l,dst_r). curveV is like the parameter in Env. Unlike with linexp, the output range may include zero. Q> (0..10).lincurve(0,10,-4.3,100,-3).round == [-4,24,45,61,72,81,87,92,96,98,100] jlet f = round . sc_lincurve (-3) 0 10 (-4.3) 100 in map f [0 .. 10] == [-4,24,45,61,72,81,87,92,96,98,100] gimport Sound.SC3.Plot plotTable (map (\c-> map (sc_lincurve c 0 1 (-1) 1) [0,0.01 .. 1]) [-6,-4 .. 6]) Inverse of . hlet f = round . sc_curvelin (-3) (-4.3) 100 0 10 in map f [-4,24,45,61,72,81,87,92,96,98,100] == [0..10]Exponential range conversion. *map (\i -> lin_exp i 1 2 1 3) [1,1.1 .. 2]sr = sample rate, r = cycle (two-pi), cps = frequency Qcps_to_incr 48000 128 375 == 1 cps_to_incr 48000 two_pi 458.3662361046586 == 6e-2 Inverse of . incr_to_cps 48000 128 1 == 375 Linear pan. 4map (lin_pan2 1) [-1,0,1] == [(1,0),(0.5,0.5),(0,1)]Fold k to within range (i,j), ie. AbstractFunction.fold 8map (foldToRange 5 10) [3..12] == [7,6,5,6,7,8,9,10,9,8] Variant of  with SC3 argument ordering.>QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~>QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~>VWXYZ[\]^_`abcdefghijklmnopqrstuQRSTUvwxyz{|}~:QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe 1An 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.Clip x to (0,1) and run f. "interpolate linear (-1,1) 0.5 == 0Step function, ignores t and returns x1.Linear interpolation. Timport Sound.SC3.Plot {- hsc3-plot -} plotTable1 (map (linear (-1) 1) [0,0.01 .. 1])Exponential interpolation, x0 must not be 0, (x0,x1) must not span 0. 4plotTable1 (map (exponential 0.001 1) [0,0.01 .. 1])Variant that allows x0 to be 0 , though (x0,x1) must not span 0. fplotTable1 (map (exponential' 0 1) [0,0.01 .. 1]) plotTable1 (map (exponential' 0 (-1)) [0,0.01 .. 1]) of , ie. allows (x0,x1 ) to span 0. 5plotTable1 (map (exponential'' (-1) 1) [0,0.01 .. 1]) with t' transformed by sine function over (-pi2,pi2). ,plotTable1 (map (sine (-1) 1) [0,0.01 .. 1])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]))Curvature controlled by single parameter c. 0 is , increasing c approaches . FplotTable (map (\c-> map (curve c (-1) 1) [0,0.01 .. 1]) [-6,-4 .. 6]) Square of  of  of x0 and x1%, therefore neither may be negative. ,plotTable1 (map (squared 0 1) [0,0.01 .. 1])Cubic variant of . *plotTable1 (map (cubed 0 1) [0,0.01 .. 1])"x0 until end, then immediately x1. )plotTable1 (map (hold 0 1) [0,0.01 .. 1])    Safe T = tuple U = uniformF = function, ST = state avg = averagefir = finite impulse responseiir = infinite impulse responsesos = second order sectionhp = high pass lp = low passbp = band passbr = band rejectmavg = moving average-Sample rate (SR) to radians per sample (RPS). )sr_to_rps 44100 == 0.00014247585730565955!ff = feed-forward, fb = feed-backir = initialization raterlp = resonant low passLIST PROCESSINGPPPPSafe9Parameters for ASR envelopes.+Parameters for Roland type ADSSR envelopes._Parameters for ADSR envelopes. The sustain level is given as a proportion of the peak level.Parameters for LINEN envelopes.@A set of start time, start level, end time, end level and curve.SC3 envelope segment modelSet of n levels, n is >= 1Set of n-1 time intervalsPossibly empty curve setMaybe index to release nodeMaybe index to loop nodeEnvelope curve quadruple.Envelope curve triple.Envelope curve pair.Envelope curve indicator input.Note: not implemented at SC3$Convert  to shape value. ,map env_curve_shape [EnvSin,EnvSqr] == [3,6]%The value of EnvCurve is non-zero for  . 0map env_curve_value [EnvWelch,EnvNum 2] == [0,2]&Interpolation_F of .'Apply f to   value.(Apply f to all a at .)AVariant without release and loop node inputs (defaulting to nil).* Duration of , ie.   .+Number of segments at , ie.   .,.Determine which envelope segment a given time t falls in.-(Extract envelope segment given at index i..Extract all segments./Transform list of s into lists (,,).0An envelope is normal* if it has no segments with zero duration.19Normalise envelope by deleting segments of zero duration.2Get value for  at time t , or zero if tn is out of range. By convention if the envelope has a segment of zero duration we give the rightmost value.3Render  to breakpoint set of n equi-distant places.4Contruct a lookup table of n places from .5 Variant on [ that expands the, possibly empty, user list by cycling (if not empty) or by filling with .6Linear SC3 form of  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 r7IEnvGen SC3 form of $ data. Offset not supported (zero). 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 r8o if  is not .9 Delay the onset of the envelope.:7Connect releaseNode (or end) to first node of envelope.;Trapezoidal envelope generator. Requires ( =)and (=) functions returning 1 for true and 0 for false.The arguments are: 1. shape0 determines the sustain time as a proportion of dur@, zero is a triangular envelope, one a rectangular envelope; 2. skew determines the attack/decay ratio, zero is an immediate attack and a slow decay, one a slow attack and an immediate decay; 3. duration in seconds; 4.  amplitude as linear gain.<LCo-ordinate based static envelope generator. Points are (time,value) pairs. slet e = envCoord [(0,0),(1/4,1),(1,0)] 1 1 EnvLin in envelope_sc3_array e == Just [0,2,-99,-99,1,1/4,1,0,0,3/4,1,0] import Sound.SC3.Plot 8plotEnvelope [envCoord [(0,0),(1/4,1),(1,0)] 1 1 EnvLin]=Variant >( with user specified 'Envelope_Curve a'.>EPercussive envelope, with attack, release, level and curve inputs.?4Triangular envelope, with duration and level inputs. \let e = envTriangle 1 0.1 in envelope_sc3_array e = Just [0,2,-99,-99,0.1,0.5,1,0,0,0.5,1,0]@.Sine envelope, with duration and level inputs. Wlet e = envSine 0 0.1 in envelope_sc3_array e == Just [0,2,-99,-99,0.1,0,3.0,0,0,0,3,0]ARecord ( ) variant of C.B Variant of C( with user specified 'Envelope_Curve a'.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)E?Attack, decay, sustain, release envelope parameter constructor.F&Vairant with defaults for pL, c and b.GRecord ( ) variant of E.HFAttack, decay, slope, sustain, release envelope parameter constructor.IRecord ( ) variant of H.J6SC3 .asr has singular curve argument, hence _c suffix.K8Attack, sustain, release envelope parameter constructor. jlet {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) == rLRecord ( ) variant of K.M"All segments are horizontal lines.`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM` !"#$%&'()*+,-./0123456789:;<=>?@     ABCDEFGHIJKLM4        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMSafe RUnification of integer and n buffer identifiers.UType specialised (n) envelope curve.V#Warp interpolation indicator input.Z Completion mode indicator input.`Interpolation indicator input.eType-specialised f.fLoop indicator input.jResolve f.kResolve `.lResolve Z.mResolve V.nLift to n.RSTUVWXYZ[\]^_`abcdefghijklmnRTSUVYWXZ_[\]^`dabcefghijklmnfghiej`abcdkZ[\]^_lVWXYmURSTn RSTUVWXYZ[\]^_`abcdefghijklmnSafey of  resolveID.z8Lookup operator name for operator UGens, else UGen name.{"Depth first traversal of graph at u applying f to each node.|Right fold of UGen graph.}Control input node constructor.~Control input node constructor.=Note that if the name begins with a t_ prefix the control is not0 converted to a triggered control. Please see . Variant of ~ with meta data..Triggered (kr) control input node constructor..Triggered (kr) control input node constructor."Set indices at a list of controls.%Multiple root graph node constructor.*Multiple channel expansion for two inputs.WExtract two channels from possible MCE, if there is only one channel it is duplicated. Variant of * that requires input to have two channels.*Multiple channel expansion for two inputs.5Apply a function to each channel at a unit generator.Map with element index. Variant of  with element index.*Apply UGen list operation on MCE contents.!Reverse order of channels at MCE.Obtain indexed channel at MCE.?Transpose rows and columns, ie. {{a,b},{c,d}} to {{a,c},{b,d}}.0Collapse mce by summing (see also mix and mixN).Given unmce" function make halt mce transform.BThe halt MCE transform, ie. lift channels of last input into list. .halt_mce_transform [1,2,mce2 3 4] == [1,2,3,4]Lift a  to a UGen label (ie. for poll).,Unpack a label to a length prefixed list of cs. There is a special case for mce nodes, but it requires labels to be equal length. Properly, pollG would not unpack the label, it would be done by the synthdef builder.&yz{|}~&yz{|}~&yz{|}~&yz{|}~Safeu Audio to control rate converter.A2K [KR] in=0.0FIXME: APF purpose.9APF [KR,AR] in=0.0 freq=440.0 radius=0.8; FILTER: TRUE-All pass delay line with cubic interpolation.UAllpassC [KR,AR] in=0.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0; FILTER: TRUE.All pass delay line with linear interpolation.UAllpassL [KR,AR] in=0.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0; FILTER: TRUE*All pass delay line with no interpolation.UAllpassN [KR,AR] in=0.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0; FILTER: TRUE,Basic psychoacoustic amplitude compensation./AmpComp [IR,KR,AR] freq=0.0 root=0.0 exp=0.3333EBasic psychoacoustic amplitude compensation (ANSI A-weighting curve).@AmpCompA [IR,KR,AR] freq=1000.0 root=0.0 minAmp=0.32 rootAmp=1.0Amplitude follower=Amplitude [KR,AR] in=0.0 attackTime=1.0e-2 releaseTime=1.0e-2(Undocumented class)AudioControl [AR] values=0.0All Pass Filter8BAllPass [AR] in=0.0 freq=1200.0 rq=1.0; FILTER: TRUEBand Pass Filter9BBandPass [AR] in=0.0 freq=1200.0 bw=1.0; FILTER: TRUEBand reject filter9BBandStop [AR] in=0.0 freq=1200.0 bw=1.0; FILTER: TRUE512db/oct rolloff - 2nd order resonant Hi Pass Filter7BHiPass [AR] in=0.0 freq=1200.0 rq=1.0; FILTER: TRUEHi Shelf?BHiShelf [AR] in=0.0 freq=1200.0 rs=1.0 db=0.0; FILTER: TRUE512db/oct rolloff - 2nd order resonant Low Pass Filter8BLowPass [AR] in=0.0 freq=1200.0 rq=1.0; FILTER: TRUE Low Shelf@BLowShelf [AR] in=0.0 freq=1200.0 rs=1.0 db=0.0; FILTER: TRUE&2nd order Butterworth bandpass filter.5BPF [KR,AR] in=0.0 freq=440.0 rq=1.0; FILTER: TRUETwo zero fixed midpass.$BPZ2 [KR,AR] in=0.0; FILTER: TRUEParametric equalizer>BPeakEQ [AR] in=0.0 freq=1200.0 rq=1.0 db=0.0; FILTER: TRUE)2nd order Butterworth band reject filter.5BRF [KR,AR] in=0.0 freq=440.0 rq=1.0; FILTER: TRUETwo zero fixed midcut.$BRZ2 [KR,AR] in=0.0; FILTER: TRUEStereo signal balancerFBalance2 [KR,AR] left=0.0 right=0.0 pos=0.0 level=1.0; FILTER: TRUE!physical model of bouncing object2Ball [KR,AR] in=0.0 g=1.0 damp=0.0 friction=1.0e-2Autocorrelation beat tracker!BeatTrack [KR] chain=0.0 lock=0.0Template matching beat trackermBeatTrack2 [KR] busindex=0.0 numfeatures=0.0 windowsize=2.0 phaseaccuracy=2.0e-2 lock=0.0 weightingscheme=0.02D Ambisonic B-format panner.4BiPanB2 [KR,AR] inA=0.0 inB=0.0 azimuth=0.0 gain=1.07Apply a binary operation to the values of an input UGen,BinaryOpUGen [] a=0.0 b=0.0; FILTER: TRUE Band limited impulse oscillator.%Blip [KR,AR] freq=440.0 numharm=200.0(Undocumented class)BlockSize [IR] Brown Noise.BrownNoise [KR,AR] ; NONDET:Buffer based all pass delay line with cubic interpolation.;BufAllpassC [AR] buf=0.0 in=0.0 delaytime=0.2 decaytime=1.0;Buffer based all pass delay line with linear interpolation.;BufAllpassL [AR] buf=0.0 in=0.0 delaytime=0.2 decaytime=1.07Buffer based all pass delay line with no interpolation.;BufAllpassN [AR] buf=0.0 in=0.0 delaytime=0.2 decaytime=1.02Current number of channels of soundfile in buffer.BufChannels [IR,KR] bufnum=0.06Buffer based comb delay line with cubic interpolation.IBufCombC [AR] buf=0.0 in=0.0 delaytime=0.2 decaytime=1.0; FILTER: TRUE7Buffer based comb delay line with linear interpolation.IBufCombL [AR] buf=0.0 in=0.0 delaytime=0.2 decaytime=1.0; FILTER: TRUE3Buffer based comb delay line with no interpolation.IBufCombN [AR] buf=0.0 in=0.0 delaytime=0.2 decaytime=1.0; FILTER: TRUE8Buffer based simple delay line with cubic interpolation..BufDelayC [KR,AR] buf=0.0 in=0.0 delaytime=0.29Buffer based simple delay line with linear interpolation..BufDelayL [KR,AR] buf=0.0 in=0.0 delaytime=0.25Buffer based simple delay line with no interpolation..BufDelayN [KR,AR] buf=0.0 in=0.0 delaytime=0.2(Current duration of soundfile in buffer.BufDur [IR,KR] bufnum=0.01Current number of frames allocated in the buffer.BufFrames [IR,KR] bufnum=0.04Buffer rate scaling in respect to server samplerate.BufRateScale [IR,KR] bufnum=0.0Buffer reading oscillator.}BufRd [KR,AR] bufnum=0.0 phase=0.0 loop=1.0 interpolation=2.0; NC INPUT: True, ENUMERATION INPUTS: 2=Loop, 3=InterpolationBuffer sample rate. BufSampleRate [IR,KR] bufnum=0.0$Current number of samples in buffer.BufSamples [IR,KR] bufnum=0.0Buffer writing oscillator.BufWr [KR,AR] bufnum=0.0 phase=0.0 loop=1.0 *inputArray=0.0; MCE, FILTER: TRUE, REORDERS INPUTS: [3,0,1,2], ENUMERATION INPUTS: 2=LoopChorusing wavetable oscillator.,COsc [KR,AR] bufnum=0.0 freq=440.0 beats=0.5.Test for infinity, not-a-number, and denormals>CheckBadValues [KR,AR] in=0.0 id=0.0 post=2.0; FILTER: TRUE'Clip a signal outside given thresholds.5Clip [IR,KR,AR] in=0.0 lo=0.0 hi=1.0; FILTER: TRUE Clip Noise.ClipNoise [KR,AR] ; NONDETStatistical gate.9CoinGate [KR,AR] prob=0.0 in=0.0; FILTER: TRUE, NONDET)Comb delay line with cubic interpolation.RCombC [KR,AR] in=0.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0; FILTER: TRUE*Comb delay line with linear interpolation.RCombL [KR,AR] in=0.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0; FILTER: TRUE&Comb delay line with no interpolation.RCombN [KR,AR] in=0.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0; FILTER: TRUE+Compressor, expander, limiter, gate, duckerzCompander [AR] in=0.0 control=0.0 thresh=0.5 slopeBelow=1.0 slopeAbove=1.0 clampTime=1.0e-2 relaxTime=0.1; FILTER: TRUE,Compressor, expander, limiter, gate, ducker.aCompanderD [AR] in=0.0 thresh=0.5 slopeBelow=1.0 slopeAbove=1.0 clampTime=1.0e-2 relaxTime=1.0e-2Duration of one blockControlDur [IR]Server control rate.ControlRate [IR]Real-time convolver.2Convolution [AR] in=0.0 kernel=0.0 framesize=512.0!Real-time fixed kernel convolver.@Convolution2 [AR] in=0.0 kernel=0.0 trigger=0.0 framesize=2048.0-Real-time convolver with linear interpolationOConvolution2L [AR] in=0.0 kernel=0.0 trigger=0.0 framesize=2048.0 crossfade=1.0Time based convolver.CConvolution3 [KR,AR] in=0.0 kernel=0.0 trigger=0.0 framesize=2048.0Chaotic noise function.Crackle [KR,AR] chaosParam=1.5Cusp map chaotic generator*CuspL [AR] freq=22050.0 a=1.0 b=1.9 xi=0.0Cusp map chaotic generator*CuspN [AR] freq=22050.0 a=1.0 b=1.9 xi=0.0"Create a constant amplitude signalDC [KR,AR] in=0.0(Demand rate brownian movement generator.`Dbrown [DR] length=1.0e8 lo=0.0 hi=1.0 step=1.0e-2; REORDERS INPUTS: [1,2,3,0], DEMAND/NONDETBuffer read demand ugenWDbufrd [DR] bufnum=0.0 phase=0.0 loop=1.0; ENUMERATION INPUTS: 2=Loop, DEMAND/NONDETBuffer 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/NONDETExponential decay3Decay [KR,AR] in=0.0 decayTime=1.0; FILTER: TRUEExponential decayFDecay2 [KR,AR] in=0.0 attackTime=1.0e-2 decayTime=1.0; FILTER: TRUE2D Ambisonic B-format decoder.EDecodeB2 [KR,AR] w=0.0 x=0.0 y=0.0 orientation=0.5; NC INPUT: TrueConvert signal to modal pitch.BDegreeToKey [KR,AR] bufnum=0.0 in=0.0 octave=12.0; FILTER: TRUE%Tap a delay line from a DelTapWr UGenMDelTapRd [KR,AR] buffer=0.0 phase=0.0 delTime=0.0 interp=1.0; FILTER: TRUE%Write to a buffer for a DelTapRd UGen3DelTapWr [KR,AR] buffer=0.0 in=0.0; FILTER: TRUESingle sample delay.&Delay1 [KR,AR] in=0.0; FILTER: TRUETwo sample delay.&Delay2 [KR,AR] in=0.0; FILTER: TRUE+Simple delay line with cubic interpolation.EDelayC [KR,AR] in=0.0 maxdelaytime=0.2 delaytime=0.2; FILTER: TRUE,Simple delay line with linear interpolation.EDelayL [KR,AR] in=0.0 maxdelaytime=0.2 delaytime=0.2; FILTER: TRUE(Simple delay line with no interpolation.EDelayN [KR,AR] in=0.0 maxdelaytime=0.2 delaytime=0.2; FILTER: TRUE&Demand results from demand rate UGens.HDemand [KR,AR] trig=0.0 reset=0.0 *demandUGens=0.0; MCE, FILTER: TRUEDemand rate envelope generatorDemandEnvGen [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=DoneActionSearch a buffer for a value6DetectIndex [KR,AR] bufnum=0.0 in=0.0; FILTER: TRUE9When input falls below a threshhold, evaluate doneAction.rDetectSilence [KR,AR] in=0.0 amp=1.0e-4 time=0.1 doneAction=0.0; FILTER: TRUE, ENUMERATION INPUTS: 3=DoneAction"Demand rate geometric series UGen.VDgeom [DR] length=1.0e8 start=1.0 grow=2.0; REORDERS INPUTS: [1,2,0], DEMAND/NONDET(Demand rate brownian movement generator.aDibrown [DR] length=1.0e8 lo=0.0 hi=1.0 step=1.0e-2; REORDERS INPUTS: [1,2,3,0], DEMAND/NONDETStream in audio from a file.NDiskIn [AR] bufnum=0.0 loop=0.0; NC INPUT: True, ENUMERATION INPUTS: 1=LoopRecord to a soundfile to disk.2DiskOut [AR] bufnum=0.0 *channelsArray=0.0; MCE)Demand rate white noise random generator.SDiwhite [DR] length=1.0e8 lo=0.0 hi=1.0; REORDERS INPUTS: [1,2,0], DEMAND/NONDET(Undocumented class)#Donce [DR] in=0.0; DEMAND/NONDET0Monitors another UGen to see when it is finishedDone [KR] src=0.04Print the current output value of a demand rate UGenADpoll [DR] in=0.0 label=0.0 run=1.0 trigid=-1.0; DEMAND/NONDET&Demand rate random sequence generator.ODrand [DR] repeats=1.0 *list=0.0; MCE, REORDERS INPUTS: [1,0], DEMAND/NONDETdemand rate reset.Dreset [DR] in=0.0 reset=0.0; DEMAND/NONDETDemand rate sequence generator.NDseq [DR] repeats=1.0 *list=0.0; MCE, REORDERS INPUTS: [1,0], DEMAND/NONDETDemand rate sequence generator.NDser [DR] repeats=1.0 *list=0.0; MCE, REORDERS INPUTS: [1,0], DEMAND/NONDET#Demand rate arithmetic series UGen.XDseries [DR] length=1.0e8 start=1.0 step=1.0; REORDERS INPUTS: [1,2,0], DEMAND/NONDET%Demand rate random sequence generatorODshuf [DR] repeats=1.0 *list=0.0; MCE, REORDERS INPUTS: [1,0], DEMAND/NONDETDemand rate input replicator,Dstutter [DR] n=0.0 in=0.0; DEMAND/NONDET4Demand rate generator for embedding different inputsODswitch [DR] index=0.0 *list=0.0; MCE, REORDERS INPUTS: [1,0], DEMAND/NONDET3Demand rate generator for switching between inputs.PDswitch1 [DR] index=0.0 *list=0.0; MCE, REORDERS INPUTS: [1,0], DEMAND/NONDETBReturn the same unique series of values for several demand streamsLDunique [DR] source=0.0 maxBufferSize=1024.0 protected=1.0; DEMAND/NONDETRandom impulses.#Dust [KR,AR] density=0.0; NONDETRandom impulses.$Dust2 [KR,AR] density=0.0; NONDET&Demand results from demand rate UGens.xDuty [KR,AR] dur=1.0 reset=0.0 doneAction=0.0 level=1.0; REORDERS INPUTS: [0,1,3,2], ENUMERATION INPUTS: 2=DoneAction )Demand rate white noise random generator.RDwhite [DR] length=1.0e8 lo=0.0 hi=1.0; REORDERS INPUTS: [1,2,0], DEMAND/NONDET &Demand rate random sequence generator.PDxrand [DR] repeats=1.0 *list=0.0; MCE, REORDERS INPUTS: [1,0], DEMAND/NONDET Envelope generatorEnvGen [KR,AR] gate=1.0 levelScale=1.0 levelBias=0.0 timeScale=1.0 doneAction=0.0 *envelope=0.0; MCE, REORDERS INPUTS: [5,0,1,2,3,4,5], ENUMERATION INPUTS: 4=DoneAction, 5=Envelope UGen +Exponential single random number generator.6ExpRand [IR] lo=1.0e-2 hi=1.0; FILTER: TRUE, NONDET )Feedback sine with chaotic phase indexingAFBSineC [AR] freq=22050.0 im=1.0 fb=0.1 a=1.1 c=0.5 xi=0.1 yi=0.1)Feedback sine with chaotic phase indexingAFBSineL [AR] freq=22050.0 im=1.0 fb=0.1 a=1.1 c=0.5 xi=0.1 yi=0.1)Feedback sine with chaotic phase indexingAFBSineN [AR] freq=22050.0 im=1.0 fb=0.1 a=1.1 c=0.5 xi=0.1 yi=0.1Fast Fourier TransformEFFT [KR] buffer=0.0 in=0.0 hop=0.5 wintype=0.0 active=1.0 winsize=0.0First order filter section.8FOS [KR,AR] in=0.0 a0=0.0 a1=0.0 b1=0.0; FILTER: TRUEFast sine oscillator.%FSinOsc [KR,AR] freq=440.0 iphase=0.0'Fold a signal outside given thresholds.5Fold [IR,KR,AR] in=0.0 lo=0.0 hi=1.0; FILTER: TRUEFormant oscillator8Formant [AR] fundfreq=440.0 formfreq=1760.0 bwfreq=880.0FOF-like filter.OFormlet [KR,AR] in=0.0 freq=440.0 attacktime=1.0 decaytime=1.0; FILTER: TRUEWhen triggered, frees a node.*Free [KR] trig=0.0 id=0.0; FILTER: TRUE%When triggered, free enclosing synth.FreeSelf [KR] in=0.00Free the enclosing synth when a UGen is finishedFreeSelfWhenDone [KR] src=0.0A reverb@FreeVerb [AR] in=0.0 mix=0.33 room=0.5 damp=0.5; FILTER: TRUEA two-channel reverbIFreeVerb2 [AR] in=0.0 in2=0.0 mix=0.33 room=0.5 damp=0.5; FILTER: TRUEFrequency Shifter.(FreqShift [AR] in=0.0 freq=0.0 phase=0.0A two-channel reverbGVerb [AR] in=0.0 roomsize=10.0 revtime=3.0 damping=0.5 inputbw=0.5 spread=15.0 drylevel=1.0 earlyreflevel=0.7 taillevel=0.5 maxroomsize=300.0; FILTER: TRUE Gate or hold.-Gate [KR,AR] in=0.0 trig=0.0; FILTER: TRUE$Gingerbreadman map chaotic generator&GbmanL [AR] freq=22050.0 xi=1.2 yi=2.1$Gingerbreadman map chaotic generator&GbmanN [AR] freq=22050.0 xi=1.2 yi=2.1 'Dynamic stochastic synthesis generator.Gendy1 [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; NONDET!'Dynamic stochastic synthesis generator.Gendy2 [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 a=1.17 c=0.31; NONDET"'Dynamic stochastic synthesis generator.Gendy3 [KR,AR] ampdist=1.0 durdist=1.0 adparam=1.0 ddparam=1.0 freq=440.0 ampscale=0.5 durscale=0.5 initCPs=12.0 knum=0.0; NONDET#0Granular synthesis with sound stored in a bufferGrainBuf [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 interp=2.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0; NC INPUT: True$6Granular synthesis with frequency modulated sine tonesGrainFM [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0; NC INPUT: True%Granulate an input signalaGrainIn [AR] trigger=0.0 dur=1.0 in=0.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0; NC INPUT: True&"Granular synthesis with sine tonesfGrainSin [AR] trigger=0.0 dur=1.0 freq=440.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0; NC INPUT: True' Gray Noise.GrayNoise [KR,AR] ; NONDET(&2nd order Butterworth highpass filter..HPF [KR,AR] in=0.0 freq=440.0; FILTER: TRUE)Two point difference filter$HPZ1 [KR,AR] in=0.0; FILTER: TRUE*Two zero fixed midcut.$HPZ2 [KR,AR] in=0.0; FILTER: TRUE+Randomized value.&Hasher [KR,AR] in=0.0; FILTER: TRUE,Henon map chaotic generator2HenonC [AR] freq=22050.0 a=1.4 b=0.3 x0=0.0 x1=0.0-Henon map chaotic generator2HenonL [AR] freq=22050.0 a=1.4 b=0.3 x0=0.0 x1=0.0.Henon map chaotic generator2HenonN [AR] freq=22050.0 a=1.4 b=0.3 x0=0.0 x1=0.0/1Applies the Hilbert transform to an input signal.$Hilbert [AR] in=0.0; FILTER: TRUE01Applies the Hilbert transform to an input signal.!HilbertFIR [AR] in=0.0 buffer=0.011Envelope generator for polling values from an EnvlIEnvGen [KR,AR] index=0.0 *envelope=0.0; MCE, REORDERS INPUTS: [1,0], ENUMERATION INPUTS: 1=Envelope UGen2Inverse Fast Fourier Transform/IFFT [KR,AR] buffer=0.0 wintype=0.0 winsize=0.03'Single integer random number generator.%IRand [IR] lo=0.0 hi=127.0; NONDET4Impulse oscillator.$Impulse [KR,AR] freq=440.0 phase=0.05Read a signal from a bus.%In [KR,AR] bus=0.0; NC INPUT: True6ARead signal from a bus with a current or one cycle old timestamp.*InFeedback [AR] bus=0.0; NC INPUT: True7*Tests if a signal is within a given range.8InRange [IR,KR,AR] in=0.0 lo=0.0 hi=1.0; FILTER: TRUE8,Test if a point is within a given rectangle.#InRect [KR,AR] x=0.0 y=0.0 rect=0.09(Generate a trigger anytime a bus is set.&InTrig [KR] bus=0.0; NC INPUT: True: Index into a table with a signal0Index [KR,AR] bufnum=0.0 in=0.0; FILTER: TRUE;_Finds the (lowest) point in the Buffer at which the input signal lies in-between the two values9IndexInBetween [KR,AR] bufnum=0.0 in=0.0; FILTER: TRUE<5Index into a table with a signal, linear interpolated IndexL [KR,AR] bufnum=0.0 in=0.0=Base class for info ugensInfoUGenBase [IR]>A leaky integrator.3Integrator [KR,AR] in=0.0 coef=1.0; FILTER: TRUE? Control to audio rate converter.K2A [AR] in=0.0@Respond to the state of a key7KeyState [KR] keycode=0.0 minval=0.0 maxval=1.0 lag=0.2A Key tracker3KeyTrack [KR] chain=0.0 keydecay=2.0 chromaleak=0.5BSine oscillator bankeKlang [AR] freqscale=1.0 freqoffset=0.0 *specificationsArrayRef=0.0; MCE, REORDERS INPUTS: [2,0,1]CBank of resonatorsKlank [AR] input=0.0 freqscale=1.0 freqoffset=0.0 decayscale=1.0 *specificationsArrayRef=0.0; MCE, FILTER: TRUE, REORDERS INPUTS: [4,0,1,2,3]D Clipped noise)LFClipNoise [KR,AR] freq=500.0; NONDETE*A sine like shape made of two cubic pieces#LFCub [KR,AR] freq=440.0 iphase=0.0FDynamic clipped noise*LFDClipNoise [KR,AR] freq=500.0; NONDETGDynamic step noise'LFDNoise0 [KR,AR] freq=500.0; NONDETHDynamic ramp noise'LFDNoise1 [KR,AR] freq=500.0; NONDETIDynamic cubic noise'LFDNoise3 [KR,AR] freq=500.0; NONDETJGaussian function oscillatorvLFGauss [KR,AR] duration=1.0 width=0.1 iphase=0.0 loop=1.0 doneAction=0.0; ENUMERATION INPUTS: 3=Loop, 4=DoneActionK Step noise&LFNoise0 [KR,AR] freq=500.0; NONDETL Ramp noise&LFNoise1 [KR,AR] freq=500.0; NONDETMQuadratic noise.&LFNoise2 [KR,AR] freq=500.0; NONDETNParabolic oscillator#LFPar [KR,AR] freq=440.0 iphase=0.0Opulse oscillator/LFPulse [KR,AR] freq=440.0 iphase=0.0 width=0.5PSawtooth oscillator#LFSaw [KR,AR] freq=440.0 iphase=0.0QTriangle oscillator#LFTri [KR,AR] freq=440.0 iphase=0.0R$2nd order Butterworth lowpass filter.LPF [KR,AR] in=0.0 freq=440.0; FILTER: TRUESTwo point average filter$LPZ1 [KR,AR] in=0.0; FILTER: TRUETTwo zero fixed lowpass$LPZ2 [KR,AR] in=0.0; FILTER: TRUEUExponential lag/Lag [KR,AR] in=0.0 lagTime=0.1; FILTER: TRUEVExponential lag0Lag2 [KR,AR] in=0.0 lagTime=0.1; FILTER: TRUEWExponential lag@Lag2UD [KR,AR] in=0.0 lagTimeU=0.1 lagTimeD=0.1; FILTER: TRUEXExponential lag0Lag3 [KR,AR] in=0.0 lagTime=0.1; FILTER: TRUEYExponential lag@Lag3UD [KR,AR] in=0.0 lagTimeU=0.1 lagTimeD=0.1; FILTER: TRUEZ+Read a control signal from a bus with a lag-LagIn [KR] bus=0.0 lag=0.1; NC INPUT: True[Exponential lag?LagUD [KR,AR] in=0.0 lagTimeU=0.1 lagTimeD=0.1; FILTER: TRUE\.Output the last value before the input changed5LastValue [KR,AR] in=0.0 diff=1.0e-2; FILTER: TRUE]Sample and hold.Latch [KR,AR] in=0.0 trig=0.0; FILTER: TRUE^Latoocarfian chaotic generatorELatoocarfianC [AR] freq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 xi=0.5 yi=0.5_Latoocarfian chaotic generatorELatoocarfianL [AR] freq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 xi=0.5 yi=0.5`Latoocarfian chaotic generatorELatoocarfianN [AR] freq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 xi=0.5 yi=0.5a Remove DC1LeakDC [KR,AR] in=0.0 coef=0.995; FILTER: TRUEbOutput least changedLeastChange [KR,AR] a=0.0 b=0.0c Peak limiter9Limiter [AR] in=0.0 level=1.0 dur=1.0e-2; FILTER: TRUEd%Linear congruential chaotic generator4LinCongC [AR] freq=22050.0 a=1.1 c=0.13 m=1.0 xi=0.0e%Linear congruential chaotic generator4LinCongL [AR] freq=22050.0 a=1.1 c=0.13 m=1.0 xi=0.0f%Linear congruential chaotic generator4LinCongN [AR] freq=22050.0 a=1.1 c=0.13 m=1.0 xi=0.0g*Map a linear range to an exponential rangeQLinExp [IR,KR,AR] in=0.0 srclo=0.0 srchi=1.0 dstlo=1.0 dsthi=2.0; FILTER: TRUEhTwo channel linear pan.9LinPan2 [KR,AR] in=0.0 pos=0.0 level=1.0; FILTER: TRUEiSkewed random number generator.0LinRand [IR] lo=0.0 hi=1.0 minmax=0.0; NONDETjTwo channel linear crossfade.XLinXFade2 [KR,AR] inA=0.0 inB=0.0 pan=0.0 level=1.0; FILTER: TRUE, PSUEDO INPUTS: [3]kLine generator.ZLine [KR,AR] start=0.0 end=1.0 dur=1.0 doneAction=0.0; ENUMERATION INPUTS: 3=DoneActionl!Simple linear envelope generator.vLinen [KR] gate=1.0 attackTime=1.0e-2 susLevel=1.0 releaseTime=1.0 doneAction=0.0; ENUMERATION INPUTS: 4=DoneActionm$Allocate a buffer local to the synthNLocalBuf [IR] numChannels=1.0 numFrames=1.0; REORDERS INPUTS: [1,0], NONDETn,Define and read from buses local to a synth.4LocalIn [KR,AR] *default=0.0; MCE, NC INPUT: Trueo Write to buses local to a synth.9LocalOut [KR,AR] *channelsArray=0.0; MCE, FILTER: TRUEpChaotic noise function4Logistic [KR,AR] chaosParam=3.0 freq=1000.0 init=0.5qLorenz chaotic generatorMLorenzL [AR] freq=22050.0 s=10.0 r=28.0 b=2.667 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0r-Extraction of instantaneous loudness in sones,Loudness [KR] chain=0.0 smask=0.25 tmask=1.0s#Mel frequency cepstral coefficients!MFCC [KR] chain=0.0 numcoeff=13.0tReduce precision.5MantissaMask [KR,AR] in=0.0 bits=3.0; FILTER: TRUEuMedian filter.1Median [KR,AR] length=3.0 in=0.0; FILTER: TRUEvParametric filter.>MidEQ [KR,AR] in=0.0 freq=440.0 rq=1.0 db=0.0; FILTER: TRUEw6Minimum difference of two values in modulo arithmetics%ModDif [IR,KR,AR] x=0.0 y=0.0 mod=1.0x5Moog VCF implementation, designed by Federico FontanaDMoogFF [KR,AR] in=0.0 freq=100.0 gain=2.0 reset=0.0; FILTER: TRUEyOutput most changed./MostChange [KR,AR] a=0.0 b=0.0; FILTER: TRUEzMouse button UGen..MouseButton [KR] minval=0.0 maxval=1.0 lag=0.2{Cursor tracking UGen.QMouseX [KR] minval=0.0 maxval=1.0 warp=0.0 lag=0.2; ENUMERATION INPUTS: 2=Warp|Cursor tracking UGen.QMouseY [KR] minval=0.0 maxval=1.0 warp=0.0 lag=0.2; ENUMERATION INPUTS: 2=Warp}Sum of uniform distributions.)NRand [IR] lo=0.0 hi=1.0 n=0.0; NONDET~Flattens dynamics.<Normalizer [AR] in=0.0 level=1.0 dur=1.0e-2; FILTER: TRUENumber of audio busses.NumAudioBuses [IR]Number of open buffers.NumBuffers [IR]Number of control busses.NumControlBuses [IR]Number of input busses.NumInputBuses [IR]Number of output busses.NumOutputBuses [IR]#Number of currently running synths.NumRunningSynths [IR,KR]4Write a signal to a bus with sample accurate timing.BOffsetOut [KR,AR] bus=0.0 *channelsArray=0.0; MCE, FILTER: TRUEOne pole filter.0OnePole [KR,AR] in=0.0 coef=0.5; FILTER: TRUEOne zero filter.0OneZero [KR,AR] in=0.0 coef=0.5; FILTER: TRUEOnset detectoryOnsets [KR] chain=0.0 threshold=0.5 odftype=3.0 relaxtime=1.0 floor=0.1 mingap=10.0 medianspan=11.0 whtype=1.0 rawodf=0.0#Interpolating wavetable oscillator.+Osc [KR,AR] bufnum=0.0 freq=440.0 phase=0.0&Noninterpolating wavetable oscillator.,OscN [KR,AR] bufnum=0.0 freq=440.0 phase=0.0Write a signal to a bus.<Out [KR,AR] bus=0.0 *channelsArray=0.0; MCE, FILTER: TRUE.Very fast sine grain with a parabolic envelope)PSinGrain [AR] freq=440.0 dur=0.2 amp=1.0Complex addition.#PV_Add [KR] bufferA=0.0 bufferB=0.0Scramble bins.EPV_BinScramble [KR] buffer=0.0 wipe=0.0 width=0.2 trig=0.0; NONDETShift and stretch bin position.<PV_BinShift [KR] buffer=0.0 stretch=1.0 shift=0.0 interp=0.0*Combine low and high bins from two inputs.0PV_BinWipe [KR] bufferA=0.0 bufferB=0.0 wipe=0.0 Zero bins.%PV_BrickWall [KR] buffer=0.0 wipe=0.0*Base class for UGens that alter FFT chainsPV_ChainUGen [KR] maxSize=0.0Complex plane attack.3PV_ConformalMap [KR] buffer=0.0 areal=0.0 aimag=0.0Complex conjugatePV_Conj [KR] buffer=0.0Copy an FFT buffer$PV_Copy [KR] bufferA=0.0 bufferB=0.0Copy magnitudes and phases.)PV_CopyPhase [KR] bufferA=0.0 bufferB=0.0Random phase shifting.$PV_Diffuser [KR] buffer=0.0 trig=0.0Complex division#PV_Div [KR] bufferA=0.0 bufferB=0.0$Pass bins which are a local maximum.)PV_LocalMax [KR] buffer=0.0 threshold=0.0Pass bins above a threshold.)PV_MagAbove [KR] buffer=0.0 threshold=0.0Pass bins below a threshold.)PV_MagBelow [KR] buffer=0.0 threshold=0.0Clip bins to a threshold.(PV_MagClip [KR] buffer=0.0 threshold=0.0Division of magnitudes4PV_MagDiv [KR] bufferA=0.0 bufferB=0.0 zeroed=1.0e-4Freeze magnitudes.'PV_MagFreeze [KR] buffer=0.0 freeze=0.0Multiply magnitudes.&PV_MagMul [KR] bufferA=0.0 bufferB=0.0Multiply magnitudes by noise.PV_MagNoise [KR] buffer=0.0)shift and stretch magnitude bin position.1PV_MagShift [KR] buffer=0.0 stretch=1.0 shift=0.0Average magnitudes across bins.$PV_MagSmear [KR] buffer=0.0 bins=0.0Square magnitudes.PV_MagSquared [KR] buffer=0.0Maximum magnitude.#PV_Max [KR] bufferA=0.0 bufferB=0.0Minimum magnitude.#PV_Min [KR] bufferA=0.0 bufferB=0.0Complex multiply.#PV_Mul [KR] bufferA=0.0 bufferB=0.0 Shift phase.5PV_PhaseShift [KR] buffer=0.0 shift=0.0 integrate=0.0Shift phase by 270 degrees. PV_PhaseShift270 [KR] buffer=0.0Shift phase by 90 degrees.PV_PhaseShift90 [KR] buffer=0.0Pass random bins.8PV_RandComb [KR] buffer=0.0 wipe=0.0 trig=0.0; NONDETCrossfade in random bin order.EPV_RandWipe [KR] bufferA=0.0 bufferB=0.0 wipe=0.0 trig=0.0; NONDETMake gaps in spectrum.<PV_RectComb [KR] buffer=0.0 numTeeth=0.0 phase=0.0 width=0.5Make gaps in spectrum.JPV_RectComb2 [KR] bufferA=0.0 bufferB=0.0 numTeeth=0.0 phase=0.0 width=0.5Two channel equal power pan.6Pan2 [KR,AR] in=0.0 pos=0.0 level=1.0; FILTER: TRUEFour channel equal power pan./Pan4 [KR,AR] in=0.0 xpos=0.0 ypos=0.0 level=1.0Azimuth panneraPanAz [KR,AR] in=0.0 pos=0.0 level=1.0 width=2.0 orientation=0.5; NC INPUT: True, FILTER: TRUEAmbisonic B-format panner.6PanB [KR,AR] in=0.0 azimuth=0.0 elevation=0.0 gain=1.02D Ambisonic B-format panner.)PanB2 [KR,AR] in=0.0 azimuth=0.0 gain=1.0!Real-time partitioned convolution-PartConv [AR] in=0.0 fftsize=0.0 irbufnum=0.0When triggered, pauses a node.Pause [KR] gate=0.0 id=0.0&When triggered, pause enclosing synth.PauseSelf [KR] in=0.0!FIXME: PauseSelfWhenDone purpose.PauseSelfWhenDone [KR] src=0.0Track peak signal amplitude.-Peak [KR,AR] in=0.0 trig=0.0; FILTER: TRUETrack peak signal amplitude.8PeakFollower [KR,AR] in=0.0 decay=0.999; FILTER: TRUE,A resettable linear ramp between two levels.?Phasor [KR,AR] trig=0.0 rate=1.0 start=0.0 end=1.0 resetPos=0.0 Pink Noise.PinkNoise [KR,AR] ; NONDETAutocorrelation pitch followerPitch [KR] in=0.0 initFreq=440.0 minFreq=60.0 maxFreq=4000.0 execFreq=100.0 maxBinsPerOctave=16.0 median=1.0 ampThreshold=1.0e-2 peakThreshold=0.5 downSample=1.0 clar=0.0Time domain pitch shifter.lPitchShift [AR] in=0.0 windowSize=0.2 pitchRatio=1.0 pitchDispersion=0.0 timeDispersion=0.0; FILTER: TRUESample playback oscillator.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=DoneActionA Karplus-Strong UGenaPluck [AR] in=0.0 trig=1.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0 coef=0.5; FILTER: TRUEBand limited pulse wave."Pulse [KR,AR] freq=440.0 width=0.5Pulse counter.6PulseCount [KR,AR] trig=0.0 reset=0.0; FILTER: TRUEPulse divider.@PulseDivider [KR,AR] trig=0.0 div=2.0 start=0.0; FILTER: TRUE'General quadratic map chaotic generator3QuadC [AR] freq=22050.0 a=1.0 b=-1.0 c=-0.75 xi=0.0'General quadratic map chaotic generator3QuadL [AR] freq=22050.0 a=1.0 b=-1.0 c=-0.75 xi=0.0'General quadratic map chaotic generator3QuadN [AR] freq=22050.0 a=1.0 b=-1.0 c=-0.75 xi=0.0A resonant high pass filter.6RHPF [KR,AR] in=0.0 freq=440.0 rq=1.0; FILTER: TRUEA resonant low pass filter.6RLPF [KR,AR] in=0.0 freq=440.0 rq=1.0; FILTER: TRUENumber of radians per sample.RadiansPerSample [IR],Break a continuous signal into line segments0Ramp [KR,AR] in=0.0 lagTime=0.1; FILTER: TRUESingle random number generator."Rand [IR] lo=0.0 hi=1.0; NONDET$Set the synth's random generator ID.RandID [IR,KR] id=0.0'Sets the synth's random generator seed.)RandSeed [IR,KR,AR] trig=0.0 seed=56789.0 Record or overdub into a Buffer.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, REORDERS INPUTS: [8,0,1,2,3,4,5,6,7], ENUMERATION INPUTS: 5=Loop, 7=DoneAction4Send signal to a bus, overwriting previous contents.CReplaceOut [KR,AR] bus=0.0 *channelsArray=0.0; MCE, FILTER: TRUEResonant filter.9Resonz [KR,AR] in=0.0 freq=440.0 bwr=1.0; FILTER: TRUERinging filter.>Ringz [KR,AR] in=0.0 freq=440.0 decaytime=1.0; FILTER: TRUERotate a sound field.4Rotate2 [KR,AR] x=0.0 y=0.0 pos=0.0; FILTER: TRUETrack maximum level.3RunningMax [KR,AR] in=0.0 trig=0.0; FILTER: TRUETrack minimum level.3RunningMin [KR,AR] in=0.0 trig=0.0; FILTER: TRUERunning sum over n frames7RunningSum [KR,AR] in=0.0 numsamp=40.0; FILTER: TRUE%Second order filter section (biquad).FSOS [KR,AR] in=0.0 a0=0.0 a1=0.0 a2=0.0 b1=0.0 b2=0.0; FILTER: TRUEDuration of one sample.SampleDur [IR]Server sample rate.SampleRate [IR]Band limited sawtooth.Saw [KR,AR] freq=440.0Schmidt trigger.'Schmidt [IR,KR,AR] in=0.0 lo=0.0 hi=1.0FIXME: ScopeOut purpose.*ScopeOut [KR,AR] inputArray=0.0 bufnum=0.0(Undocumented class)NScopeOut2 [KR,AR] inputArray=0.0 scopeNum=0.0 maxFrames=4096.0 scopeFrames=0.0&Select output from an array of inputs.<Select [IR,KR,AR] which=0.0 *array=0.0; MCE, FILTER: TRUE:Send a trigger message from the server back to the client.9SendTrig [KR,AR] in=0.0 id=0.0 value=0.0; FILTER: TRUESet-reset flip flop.6SetResetFF [KR,AR] trig=0.0 reset=0.0; FILTER: TRUE Wave shaper.1Shaper [KR,AR] bufnum=0.0 in=0.0; FILTER: TRUE(Interpolating sine wavetable oscillator.#SinOsc [KR,AR] freq=440.0 phase=0.0Feedback FM oscillator(SinOscFB [KR,AR] freq=440.0 feedback=0.0Slew rate limiter.2Slew [KR,AR] in=0.0 up=1.0 dn=1.0; FILTER: TRUESlope of signal%Slope [KR,AR] in=0.0; FILTER: TRUESpectral centroidSpecCentroid [KR] buffer=0.0Spectral Flatness measureSpecFlatness [KR] buffer=0.0+Find a percentile of FFT magnitude spectrum6SpecPcile [KR] buffer=0.0 fraction=0.5 interpolate=0.0#physical model of resonating spring)Spring [KR,AR] in=0.0 spring=1.0 damp=0.0Standard map chaotic generator/StandardL [AR] freq=22050.0 k=1.0 xi=0.5 yi=0.0Standard map chaotic generator/StandardN [AR] freq=22050.0 k=1.0 xi=0.5 yi=0.0Pulse counter.YStepper [KR,AR] trig=0.0 reset=0.0 min=0.0 max=7.0 step=1.0 resetval=0.0; FILTER: TRUE4Stereo real-time convolver with linear interpolationbStereoConvolution2L [AR] in=0.0 kernelL=0.0 kernelR=0.0 trigger=0.0 framesize=2048.0 crossfade=1.0*Offset from synth start within one sample.SubsampleOffset [IR]Sum three signals0Sum3 [] in0=0.0 in1=0.0 in2=0.0; FILTER: TRUESum four signals8Sum4 [] in0=0.0 in1=0.0 in2=0.0 in3=0.0; FILTER: TRUETriggered linear ramp0Sweep [KR,AR] trig=0.0 rate=1.0; FILTER: TRUEHard sync sawtooth wave.,SyncSaw [KR,AR] syncFreq=440.0 sawFreq=440.04Control rate trigger to audio rate trigger converterT2A [AR] in=0.0 offset=0.04Audio rate trigger to control rate trigger converterT2K [KR] in=0.0!physical model of bouncing object4TBall [KR,AR] in=0.0 g=10.0 damp=0.0 friction=1.0e-2Trigger delay..TDelay [KR,AR] in=0.0 dur=0.1; FILTER: TRUE1Demand results as trigger from demand rate UGens.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.Triggered exponential random number generator.CTExpRand [KR,AR] lo=1.0e-2 hi=1.0 trig=0.0; FILTER: TRUE, NONDETBuffer granulator.pTGrains [AR] trigger=0.0 bufnum=0.0 rate=1.0 centerPos=0.0 dur=0.1 pan=0.0 amp=0.1 interp=4.0; NC INPUT: True*Triggered integer random number generator.@TIRand [KR,AR] lo=0.0 hi=127.0 trig=0.0; FILTER: TRUE, NONDET"Triggered random number generator.=TRand [KR,AR] lo=0.0 hi=1.0 trig=0.0; FILTER: TRUE, NONDETTriggered windex.gTWindex [KR,AR] in=0.0 normalize=0.0 *array=0.0; MCE, FILTER: TRUE, REORDERS INPUTS: [0,2,1], NONDET"Returns time since last triggered.'Timer [KR,AR] trig=0.0; FILTER: TRUEToggle flip flop.*ToggleFF [KR,AR] trig=0.0; FILTER: TRUETimed trigger.,Trig [KR,AR] in=0.0 dur=0.1; FILTER: TRUETimed trigger.-Trig1 [KR,AR] in=0.0 dur=0.1; FILTER: TRUEFIXME: TrigControl purpose.TrigControl [IR,KR] values=0.0Two pole filter.=TwoPole [KR,AR] in=0.0 freq=440.0 radius=0.8; FILTER: TRUETwo zero filter.=TwoZero [KR,AR] in=0.0 freq=440.0 radius=0.8; FILTER: TRUE6Apply a unary operation to the values of an input ugen%UnaryOpUGen [] a=0.0; FILTER: TRUE/Stream in audio from a file, with variable ratecVDiskIn [AR] bufnum=0.0 rate=1.0 loop=0.0 sendID=0.0; NC INPUT: True, ENUMERATION INPUTS: 2=LoopVariable wavetable oscillator.,VOsc [KR,AR] bufpos=0.0 freq=440.0 phase=0.0%Three variable wavetable oscillators.<VOsc3 [KR,AR] bufpos=0.0 freq1=110.0 freq2=220.0 freq3=440.0Variable shaped lag?VarLag [KR,AR] in=0.0 time=0.1 curvature=0.0 warp=5.0 start=0.0Variable duty saw.VarSaw [KR,AR] freq=440.0 iphase=0.0 width=0.5 :The Vibrato oscillator models a slow frequency modulation.Vibrato [KR,AR] freq=440.0 rate=6.0 depth=2.0e-2 delay=0.0 onset=0.0 rateVariation=4.0e-2 depthVariation=0.1 iphase=0.0; NONDET !Warp a buffer with a time pointerWarp1 [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; NC INPUT: True  White noise.WhiteNoise [KR,AR] ; NONDET (Undocumented class)WidthFirstUGen [] maxSize=0.0 'Wrap a signal outside given thresholds.5Wrap [IR,KR,AR] in=0.0 lo=0.0 hi=1.0; FILTER: TRUE!Index into a table with a signal.4WrapIndex [KR,AR] bufnum=0.0 in=0.0; FILTER: TRUE#Equal power two channel cross fade.AXFade2 [KR,AR] inA=0.0 inB=0.0 pan=0.0 level=1.0; FILTER: TRUEExponential line generator.[XLine [KR,AR] start=1.0 end=2.0 dur=1.0 doneAction=0.0; ENUMERATION INPUTS: 3=DoneAction9Send signal to a bus, crossfading with previous contents.GXOut [KR,AR] bus=0.0 xfade=0.0 *channelsArray=0.0; MCE, FILTER: TRUE Zero crossing frequency follower,ZeroCrossing [KR,AR] in=0.0; FILTER: TRUELocalBuf countMaxLocalBufs [IR] count=0.0 Multiply add9MulAdd [IR,KR,AR] in=0.0 mul=0.0 add=0.0; FILTER: TRUESet local bufferXSetBuf [IR] buf=0.0 offset=0.0 length=0.0 *array=0.0; MCE, REORDERS INPUTS: [0,1,2,3]w      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     w      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     w      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     w      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     SafeSUGen primitive. Sees through Proxy and MRG, possible multiple primitives for MCE.#Heuristic based on primitive name (FFT, PV_). Note that IFFT is at control rate, not PV rate. Variant on primitive_is_pv_rate.Traverse input graph until an FFT or PV_SplitT node is encountered, and then locate the buffer input. Biases left at MCE nodes. import Sound.SC3 let z = soundIn 4 let f1 = fft 10 z 0.5 0 1 0 let f2 = ffta 'a' 1024 z 0.5 0 1 0 pv_track_buffer (pv_BrickWall f1 0.5) == Right 10 pv_track_buffer (pv_BrickWall f2 0.5) == Right (localBuf 'a' 1024 1)GBuffer node number of frames. Biases left at MCE nodes. Sees through LocalBuf, otherwise uses  bufFrames. buffer_nframes 10 == bufFrames IR 10 buffer_nframes (control KR "b" 0) == bufFrames KR (control KR "b" 0) buffer_nframes (localBuf '' 2048 1) == 2048 then . SafeMulAdd operator class.Binary operator class.<Unary operator class. Amap (floor . (* 1e4) . dbAmp) [-90,-60,-30,0] == [0,10,316,10000]R Variant of  with non  results.XHVariant on Ord class, result is of the same type as the values compared.]GVariant on Eq class, result is of the same type as the values compared.`Pseudo-infinite constant UGen.a9True is conventionally 1. The test to determine true is > 0.bFalse is conventionally 0.cLifted . ;sc3_not sc3_true == sc3_false sc3_not sc3_false == sc3_trued Translate  to a and b.eLift comparison function.fLifted .gLifted .hLifted .iLifted .jLifted .kLifted .lAssociation table for + to haskell function implementing operator.mu l via .nAssociation table for "+ to haskell function implementing operator.ou n via .pn form or ].qn form of V.r2Map from one linear range to another linear range.s1Scale uni-polar (0,1) input to linear (l,r) rangeteScale bi-polar (-1,1) input to linear (l,r) range. Note that the argument order is not the same as linLin.s !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Y&:9 !"#$%'()*+,-./012345678;<QB=>?@ACDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrsts`abcdefghijklmno]^_XYZ[\RSTUVWp~q<=>?@ABCDEFGHIJKLMNOPQ}|{ !"#$%&'()*+,-./0123456789:;zyxwvurst5 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~!SafeZero local buffer.HClearBuf does not copy the buffer number through so this is an MRG node./Demand rate weighted random sequence generator.Outputs signal for FFT chains, without performing FFT.3Pack demand-rate FFT bin streams into an FFT chain.(Poll value of input UGen when triggered.DSend a reply message from the server back to all registered clients.<Unpack a single value (magnitude or phase) from an FFT chain"Safe-Buffer demand ugen.&Buffer write on demand unit generator.Demand rate white noise. Demand rate integer white noise.Demand rate brown noise. Demand rate integer brown noise.Demand rate random selection./Demand rate weighted random sequence generator.:Demand rate random selection with no immediate repetition.Demand rate arithmetic series.Demand rate geometric series.Demand rate sequence generator.Demand rate series generator.Demand rate sequence shuffler.Demand input replicationDemand rate input switching.Demand rate input switching.Randomize order of bins.Randomly clear bins.)Cross fade, copying bins in random order. Brown noise. Clip noise. Randomly pass or block triggers.Random impulses in (-1, 1).Random impulse in (0,1).)Random value in exponential distribution. Gray noise.'Random integer in uniform distribution. Clip noise.Dynamic clip noise.Dynamic step noise.Dynamic ramp noise.Dynamic cubic noise Step noise. Ramp noise.Quadratic noise.+Random value in skewed linear distribution.-Random value in sum of n linear distribution. Pink noise.%Random value in uniform distribution.4Random value in exponential distribution on trigger.2Random integer in uniform distribution on trigger.0Random value in uniform distribution on trigger.Triggered windex. White noise.----#SafeH4Generate a localBuf and use setBuf to initialise it.3Calculate coefficients for bi-quad low pass filter.!Buffer reader (no interpolation).%Buffer reader (linear interpolation).$Buffer reader (cubic interpolation).Triggers when a value changes variant of .% of . of m.Demand rate (:) function.Demand rate (:) function.+Dynamic klang, dynamic sine oscillator bank3Dynamic klank, set of non-fixed resonating filters.xVariant FFT constructor with default values for hop size (0.5), window type (0), active status (1) and window size (0). variant that allocates m. Llet c = ffta '' 2048 (soundIn 0) 0.5 0 1 0 in audition (out 0 (ifft c 0 0))Sum of  and .Frequency shifter, in terms of / (see also ).0Variant ifft with default value for window type.Generalised Klan(kg) specification rule. f unwraps inputs, g/ wraps output. flet r = [220,0.2,0,219,0.1,1,221,0.1,2] in klanx_spec_f id id [220,219,221] [0.2,0.1,0.1] [0,1,2] == rFFormat frequency, amplitude and decay time data as required for klank. Variant of  for non-UGen inputs. Variant of  for MCE inputs.FFormat frequency, amplitude and decay time data as required for klank.Variant for non-UGen inputs. Variant of  for MCE inputs.=Randomly select one of a list of UGens (initialisation rate).% of .g of (-1,1).g of (0,1).2Map from one linear range to another linear range. where source is (0,1). where source is (-1,1).Variant with defaults of zero. Generate an   UGen with fadeTime and gate controls. oimport Sound.SC3 audition (out 0 (makeFadeEnv 1 * sinOsc AR 440 0 * 0.1)) withSC3 (send (n_set1 (-1) "gate" 0))Count  channels.!Collapse possible mce by summing.Mix variant, sum to n channels.!Construct and sum a set of UGens.Monad variant on mixFill.!Variant that is randomly pressed. Randomised mouse UGen (see also  and ).1Variant that randomly traverses the mouseX space.1Variant that randomly traverses the mouseY space.3Translate onset type string to constant UGen value.8Onset detector with default values for minor parameters.=Format magnitude and phase data data as required for packFFT.=Calculate size of accumulation buffer given FFT and IR sizes.PM oscillator. Variant of  that generates an B value with the input signal at left, and that allows a constant  frequency input in place of a trigger. Variant of 5) offset so zero if the first private bus. Variant of ) offset so zero if the first private bus.Apply function f to each bin of an FFT chain, fF receives magnitude, phase and index and returns a (magnitude,phase). with left edge set to zero.  form of . with left edge set to negative n.  form of .RMS variant of . Mix one output from many sourcesSet local buffer values.Silence.Zero indexed audio input buses..Pan a set of channels across the stereo field. 2input, spread:1, level:1, center:0, levelComp:trueOptimised sum function.Single tap into a delayline1Randomly select one of several inputs on trigger.&Randomly select one of several inputs.Triangle wave as sum of n_ sines. For partial n, amplitude is (1 / square n) and phase is pi at every other odd partial.<Randomly select one of several inputs on trigger (weighted).1Randomly select one of several inputs (weighted).>Unpack an FFT chain into separate demand-rate FFT bin streams. If z isn't a sink node route to an out node writing to bus. If fadeTime is given multiply by . cimport Sound.SC3 audition (wrapOut (sinOsc AR 440 0 * 0.1) 1) withSC3 (send (n_set1 (-1) "gate" 0)) .An oscillator that reads through a table once.I   I   I   I   <Safe      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        $SafeJ Band limited impulse generation BLIT derived sawtooth$Bipolar BLIT derived square waveformBipolar BLIT derived triangle;Triangle via 3rd order differerentiated polynomial waveform;Sawtooth via 4th order differerentiated polynomial waveformSingle gammatone filterSimple cochlear hair cell modelMeddis cochlear hair cell model;Emulation of AY (aka YM) soundchip, used in Spectrum/Atari.@Convert frequency value to value appropriate for AY tone inputs.*An amplitude tracking based onset detectorWindowed amplitude follower#Impulses around a certain frequencyrandom walk steprandom walk linear interprandom walk cubic interpString resonance filter"Triggered beta random distributionTriggered random walk generator &Triggered gaussian random distribution!Concatenative cross-synthesis."(Concatenative cross-synthesis (variant).#FM-modulable resonating filter$7Ring modulation based on the physical model of a diode.%0Demand rate implementation of a Wiard noise ring&algorithmic delay'aRaw version of the JPverb algorithmic reverberator, designed to produce long tails with chorusing( Brown noise.)Plucked physical model.**Resynthesize sinusoidal ATS analysis data.+=Resynthesize sinusoidal and critical noise ATS analysis data.,"Granular synthesis with FM grains.-=Granular synthesis with FM grains and user supplied envelope..Resynthesize LPC analysis data./0Extract cps, rmso and err signals from LPC data.0 Metronome1)Delay and Feedback on a bin by bin basis.2#Play FFT data from a memory buffer.3dur and hop are in seconds,  frameSize and  sampleRate0 in frames, though the latter maybe fractional. <pv_calcPVRecSize 4.2832879818594 1024 0.25 48000.0 == 8232994Invert FFT amplitude data.5$Plays FFT data from a memory buffer.6$Records FFT data to a memory buffer.7Sample looping oscillator8@Detect the largest value (and its position) in an array of UGens9ADetect the smallest value (and its position) in an array of UGens:@Detect the largest value (and its position) in an array of UGens;@Detect the largest value (and its position) in an array of UGens<3D Perlin Noise=-Wave squeezer. Maybe a kind of pitch shifter.>2Triangular waveguide mesh of a drum-like membrane.?2Triangular waveguide mesh of a drum-like membrane.@Spectral Modeling SynthesisATracking Phase VocoderBTartini model pitch tracker.C$Constant Q transform pitch follower.D8Calculates mean average of audio or control rate signal.E@Feedback delay line implementing switch-and-ramp buffer jumping.FyOctave chroma band based representation of energy in a signal; Chromagram for nTET tuning systems with any base referenceG#Phase modulation oscillator matrix.HPrigogine oscillatorIForced DoubleWell OscillatorJEnvelope Follower FilterKEnvelope FollowerL-Linear Time Invariant General Filter EquationM'Experimental time domain onset detectorNwave terrain synthesisOSTK bowed string model.PSTK flute model.QSTK mandolin model.RSTK modal bar models.SSTK shaker models.T Digitally modelled analog filterU!Vocal simulation due to W. Kaegi.J   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUJ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUJ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUJ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU=Safe]       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU%SafeVTrapezoidal envelope generator. ^import Sound.SC3.Plot plotEnvelope [envTrapezoid 0.99 0.5 1 1,envTrapezoid 0.5 0.75 0.65 0.35]WSingleton fade envelope.X-Variant with default values for all inputs. gate and fadeTime are ~s,  doneAction is ], curve is .VWXVWXVWXVWX&Safe:Y4-tuple to count |s.]0Type to represent nodes in unit generator graph.rA connection from u to s.sA destination port.uMType to represent the left hand side of an edge in a unit generator graph.|5Enumeration of the four operating rates for controls.'Type to represent unit generator graph. Port index.Node identifier. of ], ie.  for constants, & see through a.Find ] with indicated .Generate a label for ] using the type and the b.Get { for x, else 0.Is ] a constant.Is ] a control.Is ] a UGen.#Calculate all edges given a set of `. Transform ] to u.Locate ] of u in . The empty .Find the maximum  used at  (this ought normally be the ).Compare _ values  h.!Determine class of control given  and trigger status.Predicate to determine if ] is a constant with indicated value.Insert a constant ] into the .Either find existing  ], or insert a new ].Predicate to determine if ] is a control with indicated name. Names must be unique.Insert a control node into the .Either find existing  ], or insert a new ].4Predicate to locate primitive, names must be unique. Insert a  primitive ` into the .Either find existing ~ node, or insert a new ].'Proxies do not get stored in the graph. Transform n into , appending to existing . Transform mce nodes to mrg nodes:If controls have been given indices they must be coherent. Variant on - starting with an empty graph, reverses the n list and sorts the  list, and adds implicit nodes. Determine | of a control UGen at ` , or not.Map associating | with UGen index.Lookup |% index from map (erroring variant of u). Generate Z2 translating node identifiers to synthdef indexes.)Locate index in map given node identifer .|Controls are a special case. We need to know not the overall index but the index in relation to controls of the same type.Count the number of controls of each |.Construct implicit control unit generator NodesZ. Unit generators are only constructed for instances of control types that are present. Add implicit control UGens to .6Zero if no local buffers, or if maxLocalBufs is given. Add implicit  maxLocalBufs if not present. and .Is ] an implicit control UGen?Is Node implicit?Remove implicit UGens from Is u x.List of x at e with multiple out edges.Descendents at  of ].List PV ]s at  with multiple out edges.Error if graph has invalid PV& subgraph, ie. multiple out edges at PV node not connecting to  Unpack1FFT & PackFFT.(Transform a unit generator into a graph. Limport Sound.SC3.UGen ugen_to_graph (out 0 (pan2 (sinOsc AR 440 0) 0.5 0.1))cYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~cYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~h|}~uvwxyyzy{str]^_`abcbdefghibjklmnobpq\[ZY?YZ[\]^_`abcbdefghibjklmnobpqrstuvwxyyzy{|}~'None Construct Input& form required by byte-code generator. Byte-encode ` primitive node.)Construct instrument definition bytecode.(None)Safe Transform ^ to _,  for other ] types. Ylet r = (NodeK 8 KR Nothing "k_8" 0.1 K_KR,9) in constant_to_control 8 (NodeC 0 0.1) == rErroring variant of .If the u is a constant generate a control ], else retain u.Lift a set of ` inputsG from constants to controls. The result triple gives the incremented , the transformed u, list, and the list of newly minted control ]s.*SafeGenerate a reconstruction of a . import Sound.SC3 let {k = control KR "bus" 0 ;o = sinOsc AR 440 0 + whiteNoise 'a' AR ;u = out k (pan2 (o * 0.1) 0 1) ;m = mrg [u,out 1 (impulse AR 1 0 * 0.1)]} in putStrLn (reconstruct_graph_str "anon" (ugen_to_graph m))Discards index.+SafeThe SC3 default instrument n graph.A Gabor grain, envelope is by J.A sine grain, envelope is by   of @.!Trivial file playback instrument.If use_gate is o there is a gated parameter and the synth ends either when the sound file ends or the gate closes, else there is a sustain\ parameter to indicate the duration. In both cases a linear envelope with a decay time of decay is applied.The rdelay parameter sets the maximum pre-delay time (in seconds), each instance is randomly pre-delayed between zero and the indicated time. The  ramplitude5 parameter sets the maximum amplitude offset of the ampV parameter, each instance is randomly amplified between zero and the indicated value.,None A named unit generator graph.Lift a n graph into a .The SC3 default instrument , see . import Sound.OSC {- hosc -} import Sound.SC3 {- hsc3 -} withSC3 (sendMessage (d_recv defaultSynthdef)) audition defaultSynthdefThe SC3 default% sample (buffer) playback instrument , see . UwithSC3 (sendMessage (d_recv (defaultSampler False))) audition (defaultSampler False) of .Parameter names at . BsynthdefParam defaultSynthdef == ["amp","pan","gate","freq","out"]&Find the indices of the named UGen at %. The index is required when using >?.graph_to_graphdef at .Encode  as a binary data stream.Write / to indicated directory. The filename is the ! with the appropriate extension (scsyndef).6Simple statistical analysis of a unit generator graph. of synth.-None $Encode an OSC packet as an OSC blob.8Install a bytecode instrument definition. (Asynchronous)?Load an instrument definition from a named file. (Asynchronous)@Load a directory of instrument definitions files. (Asynchronous)NAllocates zero filled buffer to number of channels and samples. (Asynchronous);Allocate buffer space and read a sound file. (Asynchronous)VAllocate buffer space and read a sound file, picking specific channels. (Asynchronous) Free buffer data. (Asynchronous)EClose attached soundfile and write header information. (Asynchronous)<Read sound file data into an existing buffer. (Asynchronous)<Read sound file data into an existing buffer. (Asynchronous)%Write sound file data. (Asynchronous) Zero sample data. (Asynchronous)    .NoneXNAllocates zero filled buffer to number of channels and samples. (Asynchronous) ;Allocate buffer space and read a sound file. (Asynchronous) VAllocate buffer space and read a sound file, picking specific channels. (Asynchronous) EClose attached soundfile and write header information. (Asynchronous) Fill ranges of sample values.  Free buffer data. (Asynchronous)0Call a command to fill a buffer. (Asynchronous)Call sine1  command.Call sine2  command.Call sine3  command.Call cheby  command.Call copy  command.Get sample values.Get ranges of sample values.Request /b_info messages.<Read sound file data into an existing buffer. (Asynchronous)WRead sound file data into an existing buffer, picking specific channels. (Asynchronous)Set sample values.Set ranges of sample values.%Write sound file data. (Asynchronous) Zero sample data. (Asynchronous)Fill ranges of bus values.Get bus values.Get ranges of bus values. Set bus values.!Set ranges of bus values."8Install a bytecode instrument definition. (Asynchronous)#8Install a bytecode instrument definition. (Asynchronous)$?Load an instrument definition from a named file. (Asynchronous)%@Load a directory of instrument definitions files. (Asynchronous)&5Remove definition once all nodes using it have ended.'5Free all synths in this group and all its sub-groups.(Delete all nodes in a group.)Add node to head of group.*Create a new group.+Add node to tail of group.,lPost a representation of a group's node subtree, optionally including the current control values for synths.-oRequest a representation of a group's node subtree, optionally including the current control values for synths.Replies to the sender with a /g_queryTree.replyU message listing all of the nodes contained within the group in the following format: zint32 - if synth control values are included 1, else 0 int32 - node ID of the requested group int32 - number of child nodes contained within the requested group For each node in the subtree: [ int32 - node ID int32 - number of child nodes contained within this node. If -1 this is a synth, if >= 0 it's a group. If this node is a synth: symbol - the SynthDef name for this node. If flag (see above) is true: int32 - numControls for this synth (M) [ symbol or int: control name or index float or symbol: value or control bus mapping symbol (e.g. 'c1') ] * M ] * the number of nodes in the subtreeN.B. The order of nodes corresponds to their execution order on the server. Thus child nodes (those contained within a group) are listed immediately following their parent..Place a node after another./Place a node before another.0'Fill ranges of a node's control values.1Delete a node.3)Map a node's controls to read from buses.40Map a node's controls to read from an audio bus.5/Map a node's controls to read from audio buses.6Get info about a node.7Turn node on or off.8Set a node's control values.9&Set ranges of a node's control values.: Trace a node.;"Move an ordered sequence of nodes.<1Create a new parallel group (supernova specific).=Get control values.>Get ranges of control values.?Create a new synth.@-Auto-reassign synth's ID to a reserved value.A#Send a command to a unit generator.BSend a plugin command.C-Remove all bundles from the scheduling queue.D8Select printing of incoming Open Sound Control messages.E!Set error posting scope and mode.F9Select reception of notification messages. (Asynchronous)G0End real time mode, close file (un-implemented).HStop synthesis server.IRequest /status.reply message.JHRequest /synced message when all current asynchronous commands complete.K<Add a completion packet to an existing asynchronous command.L=Add a completion message to an existing asynchronous command. jlet m = n_set1 0 "0" 0 let e = encodeMessage m withCM (b_close 0) m == Message "/b_close" [Int32 0,Blob e]M=Pre-allocate for b_setn1, values preceding offset are zeroed.NGet ranges of sample values.O Variant on .PSet single sample value.QSet a range of sample values.RSegmented variant of Q.SGet ranges of sample values.TSet single bus values.USet single range of bus values.VTurn a single node on or off.W Set a single node control value.Xs_new with no parameters.YSegment a request for m places into sets of at most n. Cb_segment 1024 2056 == [8,1024,1024] b_segment 1 5 == replicate 5 1Z Variant of Y* that takes a starting index and returns  (index,size) duples. fb_indices 1 5 0 == zip [0..4] (replicate 5 1) b_indices 1024 2056 16 == [(16,8),(24,1024),(1048,1024)][FGenerate accumulation buffer given time-domain IR buffer and FFT size.\FResult is null for non-conforming data, or has five or sevel elements.^Unpack n_info message.` Unpack the '/tr' messages sent by sendTrig.dUnpack b_info6 message, fields are (id,frames,channels,sample-rate).eVariant generating .^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde/NoneXfSynth-node identifier (number).gGroup-node identifier (number).hNode identifier (number).i Control bus identifier (number).jFile connection flag.kBuffer index (frame index).l"Buffer identifier (buffer number).mNAllocates zero filled buffer to number of channels and samples. (Asynchronous)n;Allocate buffer space and read a sound file. (Asynchronous)oVAllocate buffer space and read a sound file, picking specific channels. (Asynchronous)pEClose attached soundfile and write header information. (Asynchronous)qFill ranges of sample values.r Free buffer data. (Asynchronous)s0Call a command to fill a buffer. (Asynchronous)tGet sample values.uGet ranges of sample values.vRequest /b_info messages.w<Read sound file data into an existing buffer. (Asynchronous)xWRead sound file data into an existing buffer, picking specific channels. (Asynchronous)ySet sample values.zSet ranges of sample values.{%Write sound file data. (Asynchronous)| Zero sample data. (Asynchronous)}Fill ranges of bus values.~Get bus values.Get ranges of bus values.Set bus values.Set ranges of bus values.8Install a bytecode instrument definition. (Asynchronous)8Install a bytecode instrument definition. (Asynchronous)?Load an instrument definition from a named file. (Asynchronous)@Load a directory of instrument definitions files. (Asynchronous)5Remove definition once all nodes using it have ended.5Free all synths in this group and all its sub-groups.$Delete all nodes in a set of groups.Add node to head of group.Create a new group.Add node to tail of group.lPost a representation of a group's node subtree, optionally including the current control values for synths.oRequest a representation of a group's node subtree, optionally including the current control values for synths.Place a node after another.Place a node before another.'Fill ranges of a node's control values.Delete a node.)Map a node's controls to read from buses.0Map a node's controls to read from an audio bus./Map a node's controls to read from audio buses.Get info about a node.Turn node on or off.Set a node's control values.&Set ranges of a node's control values. Trace a node.#Move and order a sequence of nodes.1Create a new parallel group (supernova specific).Get control values.Get ranges of control values.Create a new synth.-Auto-reassign synth's ID to a reserved value.#Send a command to a unit generator.Send a plugin command.-Remove all bundles from the scheduling queue.8Select printing of incoming Open Sound Control messages.!Set error posting scope and mode.9Select reception of notification messages. (Asynchronous)0End real time mode, close file (un-implemented).Stop synthesis server.Request /status.reply message.HRequest /synced message when all current asynchronous commands complete.Get ranges of sample values. Variant on v.Get ranges of sample values.Set single bus values.Set single range of bus values.Turn a single node on or off. Set a single node control value.s_new with no parameters.Segment a request for m places into sets of at most n. Cb_segment 1024 2056 == [8,1024,1024] b_segment 1 5 == replicate 5 1 Variant of ) that takes a starting index and returns  (index,size) duples. fb_indices 1 5 0 == zip [0..4] (replicate 5 1) b_indices 1024 2056 16 == [(16,8),(24,1024),(1048,1024)]Call copy s command.Call sine1 s command.Call sine2 s command.Call sine3 s command.Call cheby s command.=Pre-allocate for b_setn1, values preceding offset are zeroed.Set single sample value.Set a range of sample values.Segmented variant of .FGenerate accumulation buffer given time-domain IR buffer and FFT size.bfghijklmnopqrstuvwxyz{|}~bfghijklmnopqrstuvwxyz{|}~blkjihgfmnopqrstuvwxyz{|}~bfghijklmnopqrstuvwxyz{|}~>Nonekfghijklmnopqrstuvwxyz{|}~0None XInserts at the first position where it compares less but not equal to the next element. import Data.Function insertBy (compare `on` fst) (3,'x') (zip [1..5] ['a'..]) insertBy_post (compare `on` fst) (3,'x') (zip [1..5] ['a'..]) using .Apply f at all but last element, and g at last element. )at_last (* 2) negate [1..4] == [2,4,6,-4](Merge two NRT scores. Retains internal  messages.&Merge a set of NRT. Retains internal  messages.The empty NRT.0Add bundle at first permissable location of NRT./Add bundle at last permissable location of NRT.y of  of ./Apply temporal and message functions to bundle.Delete any internal 0 messages, and require one at the final bundle.Append q to p, assumes last timestamp at p precedes first at q.    1None1Class for values that can be encoded and sent to scsynth for audition.Send a r and  for a /done reply.If  then   else .-Variant that timestamps synchronous messages.Bracket SC3 communication.Free all nodes ( ) at group 1.Free all nodes () at and re-create groups 1 and 2.Send  and  messages to scsynth. of .Send an  anonymous instrument definition using .Wait (6) until bundle is due to be sent relative to initial 6, then send each message, asynchronously if required. Perform an  score (as would be rendered by ,). In particular note that all timestamps must be in NTPr form.Turn on notifications, run f), turn off notifications, return result. Variant of . that waits for return message and unpacks it. (withSC3 (\fd -> b_getn1_data fd 0 (0,5)) Variant of  that segments individual u messages to n elements. 2withSC3 (\fd -> b_getn1_data_segment fd 1 0 (0,5)) Variant of  that gets the entire buffer."Collect server status information.#Read nominal sample rate of server."Read actual sample rate of server.!Retrieve status data from server.2None#1Class for values that can be encoded and send to scsynth for audition.Variant where id is -1.((node-id,add-action,group-id,parameters) and  for a /done reply. of .If  then  else .-Variant that timestamps synchronous messages.Local host (ie.  127.0.0.1 ) at port 57110.Bracket SC3 communication, ie.  . import Sound.SC3.Server.Command 9withSC3 (sendMessage status >> waitReply "/status.reply") of .Free all nodes ( ) at group 1.Runs & and then frees and re-creates groups 1 and 2.Send  and  messages to scsynth.Send  and  messages to scsynth.Send an  anonymous instrument definition using .Wait (:) until bundle is due to be sent relative to the initial 6, then send each message, asynchronously if required.Play an  score (as would be rendered by ). let sc = NRT [bundle 1 [s_new0 "default" (-1) AddToHead 1] ,bundle 2 [n_set1 (-1) "gate" 0]] in withSC3 (nrt_play sc),Variant where asynchronous commands at time 0 are separated out and run before the initial time-stamp is taken. This re-orders synchronous commands in relation to asynchronous at time 0. of .Variant where id is -1. Turn on notifications, run f(, turn off notifications, return result.  Variant of . that waits for return message and unpacks it. withSC3 (b_getn1_data 0 (0,5))  Variant of   that segments individual u messages to n elements. (withSC3 (b_getn1_data_segment 1 0 (0,5))  Variant of   that gets the entire buffer. First channel of  , errors if there is no data.  withSC3 (b_fetch1 512 123456789)Combination of  and  .b_info_unpack_err of .Type specialised . withSC3 (b_query1_unpack 0) Variant of / that waits for the reply and unpacks the data. Variant of & that waits for and unpacks the reply. Variant of & that waits for and unpacks the reply."Collect server status information.#Read nominal sample rate of server. withSC3 serverSampleRateNominal"Read actual sample rate of server. withSC3 serverSampleRateActual!Retrieve status data from server.,     )     ,     *     3Safe4Safe Constant form of rand UGen.!Constant form of iRand UGen." Optimise n graph by re-writing rand and iRand UGens that have  inputs. This, of course, changes the nature of the graph, it is no longer randomised at the server. It's a useful transformation for very large graphs which are being constructed and sent each time the graph is played. import Sound.SC3.UGen.Dot Rlet u = sinOsc AR (rand 'a' 220 440) 0 * 0.1 in draw (u + ugen_optimise_ir_rand u)# Optimise n, graph by re-writing binary operators with b inputs. The standard graph constructors already do this, however subsequent optimisations, ie. "- can re-introduce these sub-graphs, and the Plain& graph constructors are un-optimised. let u = constant u 5 * u 10 == u 50 u 5 ==* u 5 == u 1 u 5 >* u 4 == u 1 u 5 <=* u 5 == u 1 abs (u (-1)) == u 1 u 5 / u 2 == u 2.5 let {u = lfPulse AR (2 ** rand '' (-9) 1) 0 0.5 ;u' = ugen_optimise_ir_rand u} in draw (mix (mce [u,u',ugen_optimise_const_operator u'])) !"#$ !"#$ !"#$ !"#$5Safe%.The default show is odd, 0.05 shows as 5.0e-2.&+Print as integer if integral, else as real.(Print constants and labels directly, primitives as un-adorned names, mce as [p,q], mrg as p&q, contols as nm=def and proxies as u@n.%&'(%&'(%&'(%&'(6Safe)Collect Ids at UGen graph*Apply f at , or no-op at .+Add idHash of e to all r at u., Variant of +I with subsequent identifiers derived by incrementing initial identifier.-Make n parallel instances of n with protected identifiers.. variant of -./-Left to right UGen function composition with  protection.0Make n sequential instances of f with protected Ids.)*+,-./0)*+,-./0)*+,-./0)*+,-./0@Safe $%&'()*+,-      !"2$#%&'()*+,-./013456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcnopqrstuvwxyz{|}~ !"#$%&'()RTSUVYWXZ_[\]^`dabcefghijklmnyz{|}~&:9 !"#$%'()*+,-./012345678;<QB=>?@ACDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrstVWX !"#$)*+,-./07None1Parameters for recording scsynth.3Sound file format.4Sample format.5 File name.6Number of channels.7 Bus number.8ID of buffer to allocate.9Number of frames at buffer.:ID to allocate for node.;Group to allocate node within.<Recoring duration if fixed.=Default recording structure.>*The name indicates the number of channels.? Generate " with required number of channels. (Sound.SC3.UGen.Dot.draw (rec_synthdef 2)@Asyncronous initialisation rs (, m and {). :withSC3 (sendBundle (bundle immediately (rec_init_m def)))ABegin recording r (). 'withSC3 (sendMessage (rec_begin_m def))BEnd recording rs (, p and r). 9withSC3 (sendBundle (bundle immediately (rec_end_m def)))C score for recorder, if < is given schedule B. import Sound.SC3 withSC3 (Sound.OSC.sendMessage (dumpOSC TextPrinter)) audition (out 0 (sinOsc AR (mce2 440 441) 0 * 0.1)) let rc = default_SC3_Recorder {rec_dur = Just 5.0} nrt_audition (sc3_recorder rc)123456789:;<=>?@ABCD123456789:;<=>?@ABC123456789:;<=D>?@ABC 1 23456789:;<=>?@ABCDANone./0123456789:;<=rstuvwxyz{|}~fghijklmnopqrstuvwxyz{|}~123456789:;<=>?@ABCBNone./0123456789:;<=rstuvwxyz{|}~fghijklmnopqrstuvwxyz{|}~123456789:;<=>?@ABCCNone ./0123456789:;<=rstuvwxyz{|}~fghijklmnopqrstuvwxyz{|}~     123456789:;<=>?@ABC8SafeEz ranges from 0 (for i ) to 1 (for j). <> 1.5.blend(2.0,0.50) == 1.75 > 1.5.blend(2.0,0.75) == 1.875 2blend 0.50 1.5 2 == 1.75 blend 0.75 1.5 2 == 1.875FrVariant of '(!!)' but values for index greater than the size of the collection will be clipped to the last index.G of '(-)'.HI with clip function as argument.ISequenceableCollection.blendAt` returns a linearly interpolated value between the two closest indices. Inverse operation is indexInBetween. > [2,5,6].blendAt(0.4) == 3.2 1blendAt 0 [2,5,6] == 2 blendAt 0.4 [2,5,6] == 3.2JResampling function, n is destination length, r is source length, f is the indexing function, c is the collection.KSequenceableCollection.resamp1 returns a new collection of the desired length, with values resampled evenly-spaced from the receiver with linear interpolation. W> [1].resamp1(3) == [1,1,1] > [1,2,3,4].resamp1(12) > [1,2,3,4].resamp1(3) == [1,2.5,4] Nresamp1 3 [1] == [1,1,1] resamp1 12 [1,2,3,4] resamp1 3 [1,2,3,4] == [1,2.5,4]LArrayedCollection.normalizeSum ensures sum of elements is one. M> [1,2,3].normalizeSum == [1/6,1/3,0.5] normalizeSum [1,2,3] == [1/6,2/6,3/6]M:Variant that specifies range of input sequence separately.NArrayedCollection.normalizeM returns a new Array with the receiver items normalized between min and max. K> [1,2,3].normalize == [0,0.5,1] > [1,2,3].normalize(-20,10) == [-20,-5,10] Lnormalize 0 1 [1,2,3] == [0,0.5,1] normalize (-20) 10 [1,2,3] == [-20,-5,10]O2List of 2-tuples of elements at distance (stride) n. )t2_window 3 [1..9] == [(1,2),(4,5),(7,8)]P&List of 2-tuples of adjacent elements. Mt2_adjacent [1..6] == [(1,2),(3,4),(5,6)] t2_adjacent [1..5] == [(1,2),(3,4)]Q)List of 2-tuples of overlapping elements. (t2_overlap [1..4] == [(1,2),(2,3),(3,4)]RConcat of 2-tuples. Wt2_concat (t2_adjacent [1..6]) == [1..6] t2_concat (t2_overlap [1..4]) == [1,2,2,3,3,4]SlA Signal is half the size of a Wavetable, each element is the sum of two adjacent elements of the Wavetable. from_wavetable [-0.5,0.5,0,0.5,1.5,-0.5,1,-0.5] == [0.0,0.5,1.0,0.5] let s = [0,0.5,1,0.5] in from_wavetable (to_wavetable s) == sTA Wavetable has  n * 2 + 2 elements, where n? is the number of elements of the Signal. Each signal element e0 expands to the two elements (2 * e0 - e1, e1 - e0) where e1r is the next element, or zero at the final element. Properly wavetables are only of power of two element signals. N> Signal[0,0.5,1,0.5].asWavetable == Wavetable[-0.5,0.5,0,0.5,1.5,-0.5,1,-0.5] >to_wavetable [0,0.5,1,0.5] == [-0.5,0.5,0,0.5,1.5,-0.5,1,-0.5]U Variant of V! that gives each component table. ilet t = sineGen 1024 (map recip [1,2,3,5,8,13,21,34,55]) (replicate 9 0) map length t == replicate 9 1024 !import Sound.SC3.Plot plotTable tVSignal.*sineFillt is a table generator. Frequencies are partials, amplitudes and initial phases are as given. Result is normalised. let t = let a = [[21,5,34,3,2,13,1,8,55] ,[13,8,55,34,5,21,3,1,2] ,[55,34,1,3,2,13,5,8,21]] in map (\amp -> sineFill 1024 (map recip amp) (replicate 9 0)) a !import Sound.SC3.Plot plotTable tEFGHIJKLMNOPQRSTUVEFGHIJKLMNOPQRSTUVEFGHIJKLMNOPQRSTUVEFGHIJKLMNOPQRSTUV9SafeWF.XDE of W. YblendAt 0 (A.listArray (0,2) [2,5,6]) == 2 blendAt 0.4 (A.listArray (0,2) [2,5,6]) == 3.2YDF. oresamp1 12 (A.listArray (0,3) [1,2,3,4]) resamp1 3 (A.listArray (0,3) [1,2,3,4]) == A.listArray (0,2) [1,2.5,4]WXYWXYWXYWXY:SafeZ#Sum (mix) multiple tables into one.[Unit normalisation.f6Generate Chebyshev waveshaping table, see b_gen_cheby. >import Sound.SC3.Plot plotTable1 (gen_cheby 256 [1,0,1,1,0,1])Z[\]^_`abcdefgZ[\]^_`abcdefgZ[\]^_`abcdefgZ[\]^_`abcdefg;NonehF.iH of h. qblendAt 0 (V.fromList [2,5,6]) == 2 blendAt 0.4 (V.fromList [2,5,6]) == 3.2 blendAt 2.1 (V.fromList [2,5,6]) == 6jK. Zresamp1 12 (V.fromList [1,2,3,4]) resamp1 3 (V.fromList [1,2,3,4]) == V.fromList [1,2.5,4]hijhijhijhijGSafe>?@AQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMEFGHIJKLMNOPQRSTUVHNoneS $%&'()*+,-./0123456789:;<=rstuvwxyz{|}~      !"2$#%&'()*+,-./013456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcnopqrstuvwxyz{|}~ !"#$%&'()>?@AQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMRTSUVYWXZ_[\]^`dabcefghijklmnyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     &:9 !"#$%'()*+,-./012345678;<QB=>?@ACDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrst   VWXfghijklmnopqrstuvwxyz{|}~ !"#$)*+,-./0123456789:;<=>?@ABCEFGHIJKLMNOPQRSTUVINoneb $%&'()*+,-./0123456789:;<=rstuvwxyz{|}~      !"2$#%&'()*+,-./013456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcnopqrstuvwxyz{|}~ !"#$%&'()>?@AQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMRTSUVYWXZ_[\]^`dabcefghijklmnyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     &:9 !"#$%'()*+,-./012345678;<QB=>?@ACDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrst   VWXfghijklmnopqrstuvwxyz{|}~      !"#$)*+,-./0123456789:;<=>?@ABCEFGHIJKLMNOPQRSTUVJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~J                                   ! " # $ $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                           !"#$%&'()*+,-./0123456789:;<=>?@ABCCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !!"#$%&&'()*+,-./001234567889:;<=>??@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        !"#$%&'()*+,-./0123456789:;< = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b  c d e f g h i j k l m n o p  q r s t u v w x y z { | } ~                                               !!!!!!!"""""""""""""""""""""""""""""""""""""""""""""######################################## # # # # ################### #!#"###$#%#&#'#(#)#*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t%u%v%w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''(((()))))))****************++++,,,,,,,, , , , , ,,,,,,,------------ -!....."..#.$.%.&.'.(.).*.+...,.-. .!.../.0.1.2.3....4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.?.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r/s/t/u/v/w/x//////"//#/)/*/+///,/-/ /!/.///0/1/2/3////4/5/6/7/8/9/:/;/</=/>/?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/?/O/P/Q/R/S/T/U/V/W/[/\/`/a/b/c/d/e/f/g/(/$/%/&/'/Z/]/^/_/h/j/k/l/m/n/o/p/q/r0y0z0{0|0}0~000000111111111111111111111111111112222222222222222222222222222222222222222222233344444555566666666777777777777777777778888E888F88888888888999F::::::::::::::;;;F       !"#$%&'&($)$*+,-./01&2&3456$789+:8;<=&>?&@&A+B+C8DE8F8G8H8I8J KLMNO8PQRSRTUVUWXTXSXY$Z[ hsc3-0.16-1lX6LRvRtpuBdK1iRAj5blSound.SC3.UGen.RateSound.SC3.UGen.MCESound.SC3.UGen.IdentifierSound.SC3.UGen.HelpSound.SC3.Server.StatusSound.SC3.Server.HelpSound.SC3.Server.GraphdefSound.SC3.Server.EnumSound.SC3.Server.Command.EnumSound.SC3.Common.PreludeSound.SC3.Server.NRTSound.SC3.UGen.NameSound.SC3.UGen.OperatorSound.SC3.UGen.Type$Sound.SC3.UGen.Bindings.HW.Construct&Sound.SC3.UGen.Bindings.HW.External.F0,Sound.SC3.UGen.Bindings.HW.External.Wavelets(Sound.SC3.UGen.Bindings.HW.External.ZitaSound.SC3.UGen.UIdSound.SC3.UGen.Plain Sound.SC3.Common.Monad.OperatorsSound.SC3.Common.MonadSound.SC3.Common.Math.WindowSound.SC3.Common.Math!Sound.SC3.Common.Math.InterpolateSound.SC3.UGen.HSSound.SC3.Common.EnvelopeSound.SC3.UGen.EnumSound.SC3.UGen.UGenSound.SC3.UGen.Bindings.DBSound.SC3.UGen.AnalysisSound.SC3.UGen.MathSound.SC3.UGen.Bindings.HWSound.SC3.UGen.Bindings.Monad!Sound.SC3.UGen.Bindings.Composite/Sound.SC3.UGen.Bindings.HW.External.SC3_PluginsSound.SC3.UGen.EnvelopeSound.SC3.UGen.GraphSound.SC3.Server.Graphdef.GraphSound.SC3.Server.Graphdef.ReadSound.SC3.UGen.Graph.Transform Sound.SC3.UGen.Graph.ReconstructSound.SC3.UGen.Help.GraphSound.SC3.Server.Synthdef#Sound.SC3.Server.Command.Completion Sound.SC3.Server.Command.GenericSound.SC3.Server.Command.PlainSound.SC3.Server.NRT.EditSound.SC3.Server.Transport.FD Sound.SC3.Server.Transport.MonadSound.SC3.UGen.Math.CompositeSound.SC3.UGen.OptimiseSound.SC3.UGen.PPSound.SC3.UGen.ProtectSound.SC3.Server.RecorderSound.SC3.Common.BufferSound.SC3.Common.Buffer.ArraySound.SC3.Common.Buffer.GenSound.SC3.Common.Buffer.VectorSound.SC3.UGen.Bindings#Sound.SC3.UGen.Bindings.HW.ExternalSound.SC3.Server.Commandu_cmdSound.SC3.UGenSound.SC3.ServerSound.SC3.Server.FDSound.SC3.Server.MonadC blendAtByresamp1Sound.SC3.Common Sound.SC3.FD Sound.SC3RateIRKRARDRrateIdrate_ord rate_color all_rates rate_parse $fOrdRate$fEqRate $fEnumRate $fBoundedRate $fShowRate $fReadRateMCEMCE_Unit MCE_Vectormce_elem mce_extendmce_map mce_binop$fFractionalMCE$fNumMCE$fEqMCE $fReadMCE $fShowMCEID resolveIDjoinID $fIDDouble $fIDFloat$fIDChar $fIDInteger$fIDIntget_env_defaultlookup_env_defaultsc3HelpDirectorysc3HelpClassFilesc3HelpOperatorEntry sc3HelpMethodsc3HelpClassMethodsc3HelpInstanceMethodugenSC3HelpFile viewSC3Help Query_Node Query_Group Query_Synth Query_CtlextractStatusField statusFields statusFormat query_ctl_pp query_node_pp queryTree_ctlqueryTree_synthqueryTree_groupqueryTree_child queryTreequeryNode_to_group_seq queryTree_rt$fEqQuery_Node$fShowQuery_Nodesc3_server_command_refviewServerHelpGraphdef graphdef_namegraphdef_constantsgraphdef_controlsgraphdef_ugensUGenSpecialOutputInputSampleControlName input_ugen_ix ugen_inputs ugen_outputsugen_is_control ugen_rateinput_is_control graphdef_ugengraphdef_controlgraphdef_constant_nidgraphdef_control_nidgraphdef_ugen_nidread_i8read_i16read_i32 read_sample read_pstr read_control read_input read_output read_ugen read_graphdefread_graphdef_file encode_pstr encode_inputencode_control encode_ugen encode_sampleencode_graphdef graphdef_stat $fEqInput $fShowInput $fEqGraphdef$fShowGraphdef SampleFormatPcmInt8PcmInt16PcmInt24PcmInt32PcmFloat PcmDoublePcmMulawPcmAlawSoundFileFormatAiffFlacIrcamNextRawWave PrintLevel NoPrinter TextPrinter HexPrinter AllPrinter ErrorMode ErrorsOffErrorsOn ErrorScopeGloballyLocallyB_Gen Normalise WavetableClear AddAction AddToHead AddToTail AddBeforeAddAfter AddReplace b_gen_bit b_gen_flagsoundFileFormatStringsoundFileFormat_from_extensionsampleFormatString $fEqAddAction$fShowAddAction$fEnumAddAction $fEqB_Gen $fEnumB_Gen$fBoundedB_Gen $fShowB_Gen$fEqErrorScope$fShowErrorScope$fEnumErrorScope $fEqErrorMode$fShowErrorMode$fEnumErrorMode$fEqPrintLevel$fShowPrintLevel$fEnumPrintLevel$fEnumSoundFileFormat$fEqSoundFileFormat$fReadSoundFileFormat$fShowSoundFileFormat$fEnumSampleFormat$fEqSampleFormat$fReadSampleFormat$fShowSampleFormat SC3_Commandsc3_cmd_enumerationsc3_cmd_number known_sc3_cmd async_cmdsisAsyncpartition_async b_info_fields n_info_fieldsT4T3T2 Case_RuleCICS reads_exactis_ciis_cs string_eq rlookup_str parse_enumd_dxdx_dd_dx'dx_d' lookup_by rlookup_by pcn_triples sep_firstsep_lastequal_length_p histogramdup2dup3dup4 mk_duples mk_duples_l mk_triples $fEqCase_RuleNRT_Render_PlainNRT_STATNRT nrt_bundles oscWithSizenrt_statnrt_span encodeNRTwriteNRTputNRTdecode_nrt_bundles decodeNRTreadNRTnrt_render_plain $fShowNRT toSC3Name fromSC3Namesc3_name_edgessc3_name_to_lisp_namesc3_ugen_name_sepBinaryAddSubMulIDivFDivModEQ_NELT_GT_LEGEMinMaxBitAndBitOrBitXorLCMGCDRoundRoundUpTruncAtan2HypotHypotxPow ShiftLeft ShiftRight UnsignedShiftFillRing1Ring2Ring3Ring4DifSqrSumSqrSqrSumSqrDifAbsDifThreshAMClipScaleNegClip2ExcessFold2Wrap2FirstArg RandRange ExpRandRangeUnaryNegNotIsNilNotNilBitNotAbsAsFloatAsIntCeilFloorFracSignSquaredCubedSqrtExpRecipMIDICPSCPSMIDI MIDIRatio RatioMIDIDbAmpAmpDbOctCPSCPSOctLogLog2Log10SinCosTanArcSinArcCosArcTanSinHCosHTanHRand_Rand2LinRand_ BiLinRandSum3RandDistortSoftClipCoin DigitValueSilenceThru RectWindow HanWindow WelchWindow TriWindowRamp_SCurve parse_unary unaryTable unaryName unaryIndexis_unary parse_binary binaryTable binaryName binaryIndex is_binaryresolve_operator $fEqUnary $fShowUnary $fEnumUnary$fBoundedUnary $fReadUnary $fEqBinary $fShowBinary $fEnumBinary$fBoundedBinary $fReadBinary Constant_U Control_ULabel_U Primitive_UProxy_UMCE_UMRG_UMRGmrgLeftmrgRightProxy proxySource proxyIndex PrimitiveugenRateugenName ugenInputs ugenOutputs ugenSpecialugenIdLabel ugenLabelcontrolOperatingRate controlIndex controlNamecontrolDefaultcontrolTriggered controlMeta C_Meta_T5C_Metactl_minctl_maxctl_warpctl_step ctl_unitsConstant constantValueUGenIdNoIdUIdno_id c_meta_t5 parse_doubleparse_constant un_constant u_constantu_constant_errmrg mrg_leftmost isConstantisSinkun_proxyisProxymce mceProxiesisMCE mceChannels mceDegree mceDegree_err mceExtendmceInputTransformmceBuildmce_is_direct_proxy checkInputconstant int_to_ugen float_to_ugendouble_to_ugenproxyrateOfproxifymkUGen mkOperatormkUnaryOperatormkBinaryOperator_optimizemkBinaryOperator $fBitsUGen $fRandomUGen $fEnumUGen $fOrdUGen$fRealFracUGen$fIntegralUGen $fRealUGen$fFloatingUGen$fFractionalUGen $fNumUGen $fEqUGenId $fReadUGenId $fShowUGenId $fEqConstant $fOrdConstant$fReadConstant$fShowConstant $fEqC_Meta $fReadC_Meta $fShowC_Meta $fEqControl $fReadControl $fShowControl $fEqLabel $fReadLabel $fShowLabel $fEqSpecial $fReadSpecial $fShowSpecial$fEqUGen $fReadUGen $fShowUGen$fEqMRG $fReadMRG $fShowMRG $fEqProxy $fReadProxy $fShowProxy $fEqPrimitive$fReadPrimitive$fShowPrimitivemk_oscmkOscmkOscRmkOscIdRmkOscId mk_osc_mcemkOscMCE mkOscMCEId mk_filter mkFilterIdR mkFilterRmkFilter mkFilterId mk_filter_mce mkFilterMCER mkFilterMCE mkFilterMCEIdmkInfo atari2600mzPokeydwtidwt wt_MagAbovewt_FilterScale wt_TimeWipewt_MulZitaRev1zr1_in1zr1_in2 zr1_delay zr1_xover zr1_rtlow zr1_rtmid zr1_fdamp zr1_eq1fr zr1_eq1gn zr1_eq2fr zr1_eq2gn zr1_opmix zr1_level zitaRev1_rzitaRev1Fn4Fn3Fn2Fn1UId_ST generateUId uid_st_eval uid_st_seq uid_st_seq_liftUIdliftUId2liftUId3liftUId4clone $fUIdReaderT$fUIdIO $fUIdStateTmk_plainuopbinopugennondet.++..+..**..*..--..-..//../.repeatMrepeatM_composeMchainMTableWindow window_tablesquaregaussianhannhamming rectangularsine triangulargaussian_table hamming_table hann_table sine_tabletriangular_table Clip_Rule Clip_None Clip_Left Clip_Right Clip_Bothhalf_pitwo_pi mul_add_hs sc_truncatesc_round sc_ceilingsc_floor sc3_round_tosc3_idivsc3_modfmod_f32fmod_f64sc_clipclip_hssc_mod sc_wrap_niwrap_hssc_wrap generic_wrap bin_to_freq midi_to_cps cps_to_midi cps_to_oct oct_to_cps amp_to_db db_to_amp midi_to_ratio ratio_to_midiurange range_muladdrangerange_hsapply_clip_rule linlin_muladdlinlin linlin_hs linlin_enum' linlin_enumlinlin_enum_err linlin_eq linlin_eq_err sc_linexp sc_explin sc_expexp sc_lincurve sc_curvelin linexp_hslin_exp cps_to_incr incr_to_cpslin_pan2sc3_properFraction sc_dif_sqrsc_hypot sc_hypotx foldToRangefold_$fEnumClip_Rule$fBoundedClip_RuleInterpolation_F interpolatesteplinear exponential exponential' exponential''welchcurvesquaredcubedholdT9T8T7T6T5F_U9F_U8F_U7F_U6F_U5F_U4F_U3F_U2F_ST1F_ST0avg2avg3avg4avg5avg9fir1fir2fir3fir4fir8iir1iir2biquadsos_fsoshpz1hpz2lpz1lpz2bpz2brz2mavg5mavg9 sr_to_rpsresonz_f iir2_ff_fb resonz_irrlpf_frlpf_irbw_lpf_or_hpf_coef bw_hpf_ir bw_lpf_ir white_noise brown_noise_f brown_noisedecay_flag_flaglatchas_trigphasor l_apply_f_st0 l_white_noise l_brown_noise l_apply_f_st1l_lagl_phasor l_phasor_osc l_sin_osc l_cos_oscl_hpz1l_hpz2l_lpz1l_lpz2l_bpz2l_brz2l_bw_hpfl_bw_lpf l_resonz_ir l_rlpf_irl_mavg5l_mavg9ASRasr_attackTimeasr_sustainLevelasr_releaseTime asr_curveADSSRadssr_attackTimeadssr_attackLeveladssr_decayTimeadssr_decayLeveladssr_slopeTimeadssr_sustainLeveladssr_releaseTime adssr_curve adssr_biasADSRadsr_attackTimeadsr_decayTimeadsr_sustainLeveladsr_releaseTimeadsr_peakLevel adsr_curve adsr_biasLINENlinen_attackTimelinen_sustainTimelinen_releaseTime linen_level linen_curveEnvelope_SegmentEnvelope env_levels env_times env_curvesenv_release_node env_loop_nodeEnvelope_Curve4Envelope_Curve3Envelope_Curve2Envelope_CurveEnvStepEnvLinEnvExpEnvSinEnvWelchEnvNumEnvSqrEnvCubEnvHoldenv_curve_shapeenv_curve_valueenv_curve_interpolation_fenv_curve_coerceenvelope_coerceenvelopeenvelope_durationenvelope_n_segmentsenvelope_segment_ixenvelope_segmentenvelope_segmentspack_envelope_segmentsenvelope_is_normalenvelope_normalise envelope_atenvelope_renderenvelope_tableenvelope_curvesenvelope_sc3_arrayenvelope_sc3_ienvgen_arrayenv_is_sustained env_delay env_circleenvTrapezoid_fenvCoordenvPerc'envPerc envTriangleenvSine envLinen_r envLinen'envLinen adsrDefaultenvADSRenvADSR' envADSR_renvADSSR envADSSR_renvASR_cenvASRenvASR_renvStep$fEqEnvelope_Curve$fShowEnvelope_Curve $fEqEnvelope$fShowEnvelopeBuffer Buffer_IdEnvCurveWarpLinear Exponential DoneAction DoNothing PauseSynth RemoveSynth RemoveGroup InterpolationNoInterpolationLinearInterpolationCubicInterpolationLoopLoop'NoLoopWithLoop from_loopfrom_interpolationfrom_done_action from_warp from_buffer $fEqLoop' $fShowLoop'$fEqInterpolation$fShowInterpolation$fEqDoneAction$fShowDoneAction$fEqWarp $fShowWarp $fEqBuffer $fShowBuffertoUIdugen_user_name ugenTraverse ugenFoldr control_f64control meta_controltr_control_f64 tr_control control_setmrg2mce2mce2c t2_from_listunmce2mce3mceMapmap_ix mce_map_ixmceEdit mceReverse mceChannel mceTransposemceSumhalt_mce_transform'halt_mce_transformlabel unpackLabelenvelope_to_ugenbitAndbitOrbitXOrbitNot shiftLeft shiftRight unsignedShift.<<..>>.a2KapfallpassCallpassLallpassNampCompampCompA amplitude audioControlbAllPass bBandPass bBandStopbHiPassbHiShelfbLowPass bLowShelfbpfbPeakEQbrfbalance2ball beatTrack beatTrack2biPanB2 binaryOpUGenblip blockSize brownNoise bufAllpassC bufAllpassL bufAllpassN bufChannelsbufCombCbufCombLbufCombN bufDelayC bufDelayL bufDelayNbufDur bufFrames bufRateScalebufRd bufSampleRate bufSamplesbufWrcOsccheckBadValuesclip clipNoisecoinGatecombCcombLcombN compander companderD controlDur controlRate convolution convolution2 convolution2L convolution3cracklecuspLcuspNdcdbrowndbufrddbufwrdecaydecay2decodeB2 degreeToKeydelTapRddelTapWrdelay1delay2delayCdelayLdelayNdemand demandEnvGen detectIndex detectSilencedgeomdibrowndiskIndiskOutdiwhitedoncedonedpolldranddresetdseqdserdseriesdshufdstutterdswitchdswitch1duniquedustdust2dutydwhitedxrandenvGenexpRandfbSineCfbSineLfbSineNfftfosfSinOscfoldformantformletfreefreeSelffreeSelfWhenDonefreeVerb freeVerb2 freqShiftgVerbgategbmanLgbmanNgendy1gendy2gendy3grainBufgrainFMgrainIngrainSin grayNoisehpfhPZ2hasherhenonChenonLhenonNhilbert hilbertFIRiEnvGenifftiRandimpulsein' inFeedbackinRangeinRectinTrigindexindexInBetweenindexL infoUGenBase integratork2AkeyStatekeyTrackklangklank lfClipNoiselfCub lfdClipNoise lfdNoise0 lfdNoise1 lfdNoise3lfGausslfNoise0lfNoise1lfNoise2lfParlfPulselfSawlfTrilpflPZ2lag2lag2UDlag3lag3UDlagInlagUD lastValue latoocarfianC latoocarfianL latoocarfianNleakDC leastChangelimiterlinCongClinCongLlinCongNlinExplinPan2linRand linXFade2linelinenlocalBuflocalInlocalOutlogisticlorenzLloudnessmFCC mantissaMaskmedianmidEQmodDifmoogFF mostChange mouseButtonmouseXmouseYnRand normalizer numAudioBuses numBuffersnumControlBuses numInputBusesnumOutputBusesnumRunningSynths offsetOutonePoleoneZeroonsetsoscoscNout pSinGrainpv_Addpv_BinScramble pv_BinShift pv_BinWipe pv_BrickWall pv_ChainUGenpv_ConformalMappv_Conjpv_Copy pv_CopyPhase pv_Diffuserpv_Divpv_HainsworthFootepv_JensenAndersen pv_LocalMax pv_MagAbove pv_MagBelow pv_MagClip pv_MagDiv pv_MagFreeze pv_MagMul pv_MagNoise pv_MagShift pv_MagSmear pv_MagSquaredpv_Maxpv_Minpv_Mul pv_PhaseShiftpv_PhaseShift270pv_PhaseShift90 pv_RandComb pv_RandWipe pv_RectComb pv_RectComb2pan2pan4panAzpanBpanB2partConvpause pauseSelfpauseSelfWhenDonepeak peakFollower pinkNoisepitch pitchShiftplayBufpluckpulse pulseCount pulseDividerquadCquadLquadNrhpfrlpfradiansPerSampleramprandrandIDrandSeed recordBuf replaceOutresonzringzrotate2 runningMax runningMin runningSum sampleDur sampleRatesawschmidtscopeOut scopeOut2selectsendTrig setResetFFshapersinOscsinOscFBslewslope specCentroid specFlatness specPcilespring standardL standardNstepperstereoConvolution2LsubsampleOffsetsum3sum4sweepsyncSawt2At2KtBalltDelaytDutytExpRandtGrainstIRandtRandtWindextimertoggleFFtrigtrig1 trigControltwoPoletwoZero unaryOpUGenvDiskInvOscvOsc3varLagvarSawvibratowarp1 whiteNoisewidthFirstUGenwrap wrapIndexxFade2xLinexOut zeroCrossing maxLocalBufsmulAddsetBufugen_primitiveprimitive_is_pv_rateugen_is_pv_ratepv_track_bufferbuffer_nframespv_track_nframesMulAddmul_addBinaryOpabsDifamClipatan2Eclip2difSqrexcess exprandRangefillfirstArgfold2gcdEhypothypotxiDivlcmEmodE randRangering1ring2ring3ring4roundUpscaleNegsqrDifsqrSumsumSqrthreshtruncwrap2UnaryOpampDbasFloatasIntcpsMIDIcpsOctdbAmpdistortfracisNillog10log2midiCPS midiRationotEnotNiloctCPSramp_ ratioMIDIsoftClip RealFracEproperFractionE truncateEroundEceilingEfloorEOrdE<*<=*>*>=*EqE==*/=*dinfsc3_true sc3_falsesc3_notsc3_boolsc3_comparisonsc3_eqsc3_neqsc3_ltsc3_ltesc3_gtsc3_gte binop_hs_tblbinop_special_hs uop_hs_tbluop_special_hsroundToceil linlin_ma urange_marange_ma$fMulAddDouble $fMulAddFloat $fMulAddUGen$fBinaryOpUGen$fBinaryOpDouble$fBinaryOpFloat $fUnaryOpUGen$fUnaryOpDouble$fUnaryOpFloat$fRealFracEUGen$fRealFracEDouble$fRealFracEFloat $fOrdEUGen $fOrdEDouble $fOrdEFloat $fOrdEInt64 $fOrdEInt32 $fOrdEInteger $fOrdEInt $fEqEUGen $fEqEDouble $fEqEFloat $fEqEInt64 $fEqEInt32 $fEqEInteger$fEqEIntclearBufdwrand fftTriggerpackFFTpoll sendReply unpack1FFTdbufrdMdbufwrMdwhiteMdiwhiteMdbrownMdibrownMdrandMdwrandMdxrandMdseriesMdgeomMdseqMdserMdshufM dstutterM dswitch1MdswitchMpv_BinScrambleM pv_RandCombM pv_RandWipeM brownNoiseM clipNoiseM coinGateMdust2MdustMexpRandM grayNoiseMiRandM lfClipNoiseM lfdClipNoiseM lfdNoise0M lfdNoise1M lfdNoise3M lfNoise0M lfNoise1M lfNoise2MlinRandMnRandM pinkNoiseMrandM tExpRandMtIRandMtRandMtWindexM whiteNoiseM asLocalBuf bLowPassCoefbufRdNbufRdLbufRdCchangedchoosechooseM clearLocalBufdconsdconsMdynKlangdynKlankfft'fftafirstPrivateBusfreqShift_hilbertifft' klanx_spec_f klangSpec klangSpec' klangSpec_mce klankSpec klankSpec' klankSpec_mcelchooselchooseMlinExp_blinExp_ulinLinlinLin_ulinLin_blocalIn' makeFadeEnvmceNmixmixNmixFillmixFillM mouseButton'mouseRmouseX'mouseY' onsetTypeonsets' packFFTSpecpc_calcAccumSizepmOscpoll' privateIn privateOut pvcollectrand0rand0Mrand2rand2M runningSumRMSselectXsetBuf'silentsoundInsplaysum_opttaptChoosetChooseMtriAStWChoose tWChooseM unpackFFTwrapOut playBufCFosc1blitB3 blitB3Saw blitB3Square blitB3TridPW3TridPW4Saw gammatonehairCellmeddisay ayFreqToTonecoyotewAmp gaussTrig lfBrownNoise0 lfBrownNoise1 lfBrownNoise2streson tBetaRand tBrownRand tGaussRandconcat'concat2 complexRes diodeRingMod dNoiseRing greyholeRaw jPverbRaw disintegrator dWGPlucked2atsSynth atsNoiSynthfmGrainfmGrainBlpcSynthlpcValsmetro pv_BinDelaypv_BufRdpv_calcPVRecSize pv_Invert pv_PlayBuf pv_RecordBufloopBufarrayMaxarrayMinbufMaxbufMinperlin3squizmembraneCirclemembraneHexagonsmstpvtartiniqitch averageOutput switchDelay chromagramfm7 brusselator doubleWell3 envDetect envFollowltisLOnset waveTerrainstkBowedstkFlute stkMandolin stkModalBar stkShakersdfm1vosim envTrapezoidenvGateenvGate'KS_COUNTMapsMap UGenPartsNodeNodeCNodeKNodeUNodePnode_id node_c_value node_k_rate node_k_index node_k_namenode_k_default node_k_type node_k_meta node_u_rate node_u_name node_u_inputsnode_u_outputsnode_u_special node_u_ugenid node_p_node node_p_indexEdgeToPortFromPort FromPort_C FromPort_K FromPort_Uport_nidport_ktport_idxKTypeK_IRK_KRK_TRK_ARGraphnextId constantscontrolsugens PortIndexNodeId node_k_eq node_rate find_node node_labelport_idx_or_zero is_node_c is_node_k is_node_uedges as_from_portfrom_port_node empty_graphgraph_maximum_id node_k_cmpktypefind_c_ppush_c mk_node_cfind_k_ppush_k mk_node_kfind_u_ppush_u mk_node_u_acc mk_node_u mk_node_pmk_node prepare_root sort_controlsmk_graph node_ktype mk_ktype_mapktype_map_lookupmk_mapsfetchfetch_kks_countmk_implicit_ctladd_implicit_ctllocalbuf_countadd_implicit_buf add_implicitis_implicit_control is_implicitremove_implicitis_from_port_umultiple_u_out_edgesnode_descendentspv_multiple_out_edges pv_validate ugen_to_graph $fEqKType $fShowKType $fOrdKType $fEqFromPort$fShowFromPort $fEqToPort $fShowToPort $fShowNode $fShowGraph make_inputnode_k_to_controlnode_u_to_ugengraph_to_graphdefinput_to_from_portgraphdef_to_graphconstant_to_controlfrom_port_node_errc_lift_from_port c_lift_inputs c_lift_ugen c_lift_ugenslift_constants node_sortfrom_port_labelis_operator_nameparenthesise_operatorreconstruct_graphreconstruct_graph_modulereconstruct_graph_strreconstruct_c_strreconstruct_c_ugenreconstruct_k_rndreconstruct_k_strreconstruct_k_ugen ugen_qnamereconstruct_mce_strreconstruct_u_strreconstruct_mrg_strdefault_ugen_graphgabor_grain_ugen_graphsine_grain_ugen_graphdefault_sampler_ugen_graphSynthdef synthdefName synthdefUGensynthdefdefaultSynthdefdefaultSampler synthdefGraph synthdefParam ugenIndicessynthdef_to_graphdef synthdefData synthdefWrite graph_stat synthstat' synthstat$fDefaultSynthdef $fEqSynthdef$fShowSynthdef encode_blobd_recvd_load d_loadDirb_alloc b_allocReadb_allocReadChannelb_freeb_closeb_read b_readChannelb_writeb_zerob_fillb_gen b_gen_sine1 b_gen_sine2 b_gen_sine3 b_gen_cheby b_gen_copyb_getb_getnb_queryb_setb_setnc_fillc_getc_getnc_setc_setnd_recv'd_free g_deepFree g_freeAllg_headg_newg_tail g_dumpTree g_queryTreen_aftern_beforen_filln_freen_mapn_mapnn_mapan_mapann_queryn_runn_setn_setnn_tracen_orderp_news_gets_getns_news_noidcmd clearScheddumpOSC errorModenotifynrt_endquitstatussyncwith_completion_packetwithCM b_alloc_setn1b_getn1b_query1b_set1b_setn1b_setn1_segmentedc_getn1c_set1c_setn1n_run1n_set1s_new0 b_segment b_indicespc_preparePartConvunpack_n_info_datum_plainunpack_n_info_plain unpack_n_infounpack_n_info_err unpack_tr unpack_tr_err unpack_b_setnunpack_b_setn_err unpack_b_infounpack_b_info_errSynth_IdGroup_IdNode_IdBus_IdBuffer_Leave_File_Open Buffer_Ix insertBy_post insert_postat_last nrt_merge nrt_merge_set nrt_emptynrt_insert_prenrt_insert_post nrt_end_time bundle_map nrt_close nrt_appendAudibleplay_idplayasync maybe_asyncmaybe_async_atwithSC3stopreset playGraphdef playSynthdefplayUGen run_bundlenrt_play nrt_audition audition_idauditionwithNotifications b_getn1_datab_getn1_data_segmentb_fetchb_fetch1 serverStatusserverSampleRateNominalserverSampleRateActualserverStatusData $fAudibleUGen$fAudibleSynthdef$fAudibleGraphdefplay_atPlay_Optasync_sc3_default_udpwithSC3_play_graphdef_msgplay_synthdef_msgnrt_play_reorder audition_at b_fetch_hdrb_query1_unpack_genericb_query1_unpack c_getn1_datan_query1_unpack_fn_query1_unpackn_query1_unpack_plaing_queryTree1_unpackugen_if"ugen_integral_and_fractional_partsugen_fmidi_to_midi_detunec_randc_irandugen_optimise_ir_randugen_optimise_const_operator constant_opt double_ppreal_pp bracketedugen_concise_ppugenIdsatUGenIduprotect uprotect'uclone'ucloneucomposeuseq SC3_Recorder rec_sftype rec_coding rec_fnamerec_ncrec_bus rec_buf_idrec_buf_frames rec_node_id rec_group_idrec_durdefault_SC3_Recorderrec_synthdef_nm rec_synthdef rec_init_m rec_begin_m rec_end_m sc3_recorder$fDefaultSC3_RecorderblendclipAtabsdifblendAt resamp1_gen normalizeSum normalise_rng normalize t2_window t2_adjacent t2_overlap t2_concatfrom_wavetable to_wavetablesineGensineFillsum_lnrm_usine1_psine1_lsine1 sine1_nrmsine2_lsine2 sine2_nrmsine3_psine3_lsine3 gen_chebychebyghc-prim GHC.TypesIntbaseSystem.EnvironmentgetEnv lookupEnv GHC.FloatFloatingTruecontainers-0.5.7.1 Data.TreeTree Data.MaybeisJust hosc-0.16-CCCOrDODpHPEmjIfmGoq9VSound.OSC.PacketMessage Text.ReadreadsGHC.EnumEnumGHC.Listlookup Data.Foldable concatMapBundlespan bundleTimebytestring-0.10.8.1Data.ByteString.Lazy.Internal ByteStringData.ByteString.LazyreadFileFloatDouble readMaybetransformers-0.5.2.0Control.Monad.Trans.State.LazyState evalStaterunState Data.TuplefstGHC.Num+GHC.BaseFunctor Applicative*-GHC.Real/Data.Traversablesequencerepeat Data.FunctorvoidMonadidsin Data.Fixedmod'Num GHC.ClassesEq Fractional<sqrtsum.lengthNothingStringRealFracIntegralnotBool==/=<=>>=toEnum Data.FunctiononGHC.ErrerrorcomparelastSound.OSC.Transport.FD waitReply sendMessageSound.OSC.TimepauseThreadUntilTimeSound.OSC.Transport.Monad withTransportabs