!c$      !"#$%&'()*+,-./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 PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv w x y z { | } ~                                                                     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCD 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%{%|%}%~%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&'''''''''())))))*****+++,,-....//////0015None_5Uvivid[Encode OSC bundles, specifically for NRT synthesis. (It's more than just "mconcat . map ").Note also that the last action is when the song ends - so if you want e.g. a note to hold at the end you need to add a "wait"Safe8vivid-Picks a random element from the provided listvividKReturns an infinite list of randomly-chosen elements from the provided liste.g. ,> > take 5 <$> picks [1,2,3,4] > [2,3,1,1,3]None%-./18=>?@ACEHUVX_Hvivid(Lets you combine sets of arguments. e.g. 4(1 ::I "foo", 2 ::I "bar") `AddParams` (3 ::I "baz")means the same thing as '(1 ::I "foo", 2 ::I "bar", 3 ::I "baz")This is left-biased, just like i.e. if you say: *(99 ::I "same") `AddParams` (0 ::I "same")It'll mean the same as (99 ::I "same")vivid > > :kind! SetEqual '["bye", "hi","bye","bye"] '["bye","hi","hi"] > SetEqual '["bye","hi","bye","bye"] '["bye","hi","hi"] :: Bool > = 'Truevivid x> . :kind! SetIntersection '[4,3,4,5] '[7,5,3] > SetIntersection '[4,3,4,5] '[7,5,3] :: [GHC.TypeLits.Nat] > = '[3, 5]vividSo for example if you have: ^ foo = sd (440 ::I "freq") $ do s <- sinOsc (freq_ (A::A "freq!!!")) out 0 [s,s] @It'll tell you that you have an invalid synthdef with the error:  Couldn't match type 'False_IsSubsetOf  with 'True_IsSubsetOf  In the first argument of sinOsc , namely (freq_ (V :: A "freq!!!"))  vividWheeeeeeeeeeeeeeee!((  None.HVVvivid"State monad to construct SynthDefsThe SynthDef is an under-construction synth definition The [Int] is the id supply. Its type definitely could change in the futurevividRepresentation of Unit Generators. You usually won't be creating these by hand, but instead using things from the library in 23vivid;Internal representation of Synth Definitions. Usually, use 4$ instead of making these by hand. This representation (especially ) might change in the future.vividGiven +good0 :: SDBody '["2"] () good0 = return () 7good1 :: SDBody '["3","1","3","1"] () good1 = return () /bad0 :: SDBody '["bwahaha"] () bad0 = return () outer :: SDBody '[ "1", "2", "3"]() outer = do zoomSDBody good0 -- works zoomSDBody good1 -- works -- zoomSDBody bad0 -- doesn't work - great!A None ./=?@AHVX None-./=>?@AEHUVXY vivid "UGen Arg" !"#$%&'(*)+,-./0(*)+-/0&'$% !"#.,None%.HV_h; Pvivid-Action to take with a UGen when it's finished-This representation will change in the futurevividFix for github.com supercollider supercolliderissues1749Xvivid Alias for YYvivid$Add a unit generator with one outputZvivid Polyphonic -- returns a list of ;s. In the future this might be a tuple instead of a list[vividDefine a Synth Definition\vividNDefine a Synth Definition and give it a name you can refer to from e.g. sclang^vivid"Set the calculation rate of a UGene.g. kplay $ do s0 <- 1 ~+ (lfSaw (freq_ 1) ? KR) s1 <- 0.1 ~* lfSaw (freq_ $ 220 ~* s0) out 0 [s1, s1] Mnemonic: "?" is like thinkingAIn the future, the representation of calculation rates may change`vividLike 5 but for sbvividvThis is the hash of the UGen graph and params, but not the name! So (re)naming a SynthDef will not change its hash. =76/0<;:9854321.-,+*)('&%$#"!  uOZestrqponmlkjihgfdcba`_^]\[YXWVUTSRQPNMLKJIHGFEDCBA@?>,PQRSTUVWXYZ[\]^_`aXYZa[\T^PQRSUV_uOZestrqponmlkjihgfdcba`_^]\[YXWVUTSRQPNMLKJIHGFEDCBA@?> =76/0<;:9854321.-,+*)('&%$#"!  W]`,None.H_qtvividIf you've started the SC server with a non-default number of buffer ids, (e.g. with the "-b" argument), you can reflect that hereoNote that the buffer ids start at 512, to not clash with any that another client (e.g. sclang) has allocatedxwv{zy~}|efghijklmnopqrstu{zyxwv~}|qefghijklmnoprtus None_zvivid To prevent NodeId clashes when multiple clients are connected to the same server, each client should have a separate clientId, which keeps the nodeId separate. Sclang's default clientId is 0, and ours is 1, so you can run both at the same time without config.vivid,You usually don't need to call this functionLUse this if to connect on a non-default port or to a server not at localhostOtherwise the connection is created when it's needed. You can also use this to explicitly create the connection, so the computation is done upfrontThe ' is the ip address or "localhost". The  is the portvivid3Explicitly close Vivid's connection to a SC server.IDay-to-day, you can usually just let your program run without using this.For example though, if you're running code that uses Vivid in ghci, and you ":r", you'll want to disconnect first -- there are processes running which can step on the toes of your new instance (TODO: this isn't fully true - I ":r" all the time - what do I mean here?)Also if you want to change the params of your connection (e.g. to connect to a different server), you'll want to disconnect from the other connection firstvividThe default _scConnectConfig_clientId is 1, and sclang's is 0, so you should be able to run vivid side-by-side with the SC IDE out of the box.vivid&Print all messages other than "/done"svivid4If you don't want to hear what the server has to sayvwxyz{|}~vwxyz{|}~ None.>EHX_ vivid50 is linear, positive curves up, negative curves downvivid Same as "Env.shapeNumber" in SC.DThis is useful if you want to set a the env shape of a running synthvivid'"shapeNumber" with a name I like better NoneHSXvividSend an $ message to the SuperCollider servervividJSend a ByteString to the SuperCollider server. You usually want to use call instead.vivid4Blocks until the server finishes processing commandsvivid1As the user, you probably don't want to use this:2Many commands already include a "sync" -- e.g.  makeBuffer already syncs.DWhen you do want to do an explicit sync you probably want to use  instead, or vividWait, in secondsvivid5Send a synth definition to be loaded on the SC servergNote that this is sort of optional -- if you don't call it, it'll be called the first time you call synth with the SynthDefvivid@Send an OSC message and wait for it to complete before returningvividMaybe can dedupe with None%/=?vivid SynchronousNone.Hvivid and vividFor gradually-typed freevividIThis enforces type safety of the arguments -- e.g. if you have a synthdef 0> let x = sd (3 ::I "foo") bar > s <- synth x ()AThen this won't typecheck (because "bar" isn't an argument to x): > set s (4 ::I "bar"):Note that if you don't want this type safety, you can e.g. 2> Synth n <- synth foo () > setG n (0.1 ::I "vol")Or: T> ns <- mapM (flip synth ()) [foo, bar, baz] > map (setG (0::I "asdf") . unSynth) nsOr: > n <- synthG foo ()(You also may want to look at T if you want to construct a list which has synthdefs or nodes of different types)vividSo let's say you have a node: &foo :: Synth '["amp", "freq", "phase"]*and you want to add it to a list of nodes:  ns :: [Synth '["freq", "phase"]]aIf you don't plan on setting the "amp" argument, you can "shrink" to the compatible arguments: ns' = shrinkSynthArgs foo : ns((The same thing exists for SynthDefs -- 6)NoneLvividYWe may add arguments in the future ; to future-proof your code, just update fields of vividfYour "emergency" button. Run this and everything playing on the SC server will be freed -- silence!GCorresponds to the cmd-. / ctrl-. key command in the SuperCollider IDEvivid Alias of vividMake an empty bufferThe Int32 is the buffer length  in samplesn. Multiply seconds by the default sample rate of the server (usually 48000) to get the number of samplesNote that this is synchronous -- it doesn't return until the buffer is allocated (in theory, this could hang if e.g. the UDP packet is lost)vivid5Make a buffer and fill it with sound data from a fileThe file path should be absolute (not relative), and if you're connecting to a non-localhost server don't expect it to be able to read files from your local hard drive!Note that like  this is synchronousvividWrite a buffer to a file Alias of  Synchronous.vivid4Close an open soundfile and write header information Synchronousvivid Zero the sample data in a buffer SynchronousBxwv{zy~}|efghijklmnopqrstuvwxyz{|.xwv{zyvwxyz{|None/=?Hvivid.Schedule an action to happen at the given timevivid/Schedule an action to happen n seconds from nowvividSchedule an action to happen right now. Because of server latency this could arrive late, so you might want to do something like doScheduledIn 0.01 instead:None/=?_Ћvivid:Generate a file of actions that SC can use to do NRT with.3If you just want the .aiff file, you probably want  instead.#Usage: this will create a file at "tmpNRTout.aiff" with your sound :: NRT a: XwriteNRT "/tmp/foo.osc" test scsynth -N /tmp/foo.osc _ /tmp/NRTout.aiff 44100 AIFF int16vividpGenerate an audio file from an NRT action -- this can write songs far faster than it would take to play them. This uses f for its sample rate, number of channels, etc. If you want to use args other than the default, use .qThe file type is detected from its extension. The extensions supported at the moment are .aif, .aiff, and .wav$(macOS users will need to make sure scsynth is in their $PATH)M(And I apologize, but I really don't know what Windows users will need to do)9Currently doesn't work with single quotes in the filename  None.HVހvividMultiply signalsvividExponentiation of signalsvivid Add signalsvividDivide signalsvividSubtract signalsvividBuild your own!The calculation rate of the result is the larger (more frequent) of the 2 input signals (So you shouldn't need to use "?" very much!)vivid Alias of . Shorter, fer livecodinvividBuild your own, from usvivid Alias of vividzConvert from a midi note number (0-127, each representing a musical half step) to a frequency in hz (cycles per second) vivid Inverse of  vivid_The prime is to not conflict with "abs" in the prelude. May just use "uOp Abs" in the future vividThe prime, like  /, is to not conflict with a prelude definition.!Remember you can always just use: uOp TanH vividLike )71 but the lo value is always negative the hi valuevividBitwise xor. Short for  biOp BitXor          78676None ,.=>?EHUVXh#vividSC compatibilityvividSC compatibilityvivid Alias of , for SC compatibility#vivid!For SC compatibility -- alias of ")vivid Alias of +vivid Alias of *, for SC compatibility0vivid!For SC compatibility -- alias of /1vivid *This may change in the future**6vivid Alias of 5 for SC compatibility7vivid Alias of 5 for SC compatibility9vivid Alias of : for SC compatibility;vivid Alias of : for SC compatibility<vivid Alias of : for SC compatibilityHvivid Alias of INvivid Alias of OQvivid!For SC compatibility -- alias of PUvivid!For SC compatibility -- alias of Tevivid Interpolationfvivid!For SC compatibility -- alias of eivivid!For SC compatibility -- alias of  irBufSize_kvividAlias, for SC compatibilitymvividFor SC compatibility:vvivid Alias of u for SC compatibilitywvivid Alias of u for SC compatibility{vivid Alias of s, for SC compatibilityvivid Alias of }, for SC compatibilityvivid Alias of  for SC compatibilityvivid Alias of , for SC compatibilityvividShorter alias for vividAlias, for compatibilityvividAlias, for compatibilityvividAlias for "threshold_"vividYou can use "trig_" insteadvividShort alias for vivid Alias of  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ʼ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None.vivid$"Implements the (optimized) formula:)compensationFactor = (root / freq) ** expPHigher frequencies are normally perceived as louder, which AmpComp compensates.""Note that for frequencies very much smaller than root the amplitudes can become very high. In this case limit the freq with freq.max(minval), or use AmpCompA." Computed at AR, KR, or IRvivid"Higher frequencies are normally perceived as louder, which AmpCompA compensates. Following the measurings by Fletcher and Munson, the ANSI standard describes a function for loudness vs. frequency. Note that this curve is only valid for standardized amplitude."8_NOTE_ "Apart from freq, the values are not modulatable"vivid"This is a better pitch follower than ZeroCrossing, but more costly of CPU. For most purposes the default settings can be used and only in needs to be supplied.""[This function] returns two values [...], a freq which is the pitch estimate and hasFreq, which tells whether a pitch was found."%Note -- as this returns a 2-tuple of s -- that you may need to be careful not to accidentally use functions from the Foldable instance for (,) with the return value of .o"Some vowels are still problematic, for instance a wide open mouth sound somewhere between a low pitched short a sound as in sat , and long i sound as in fire<, contains enough overtone energy to confuse the algorithm."+"None of these settings are time variable."Can only run at KRNone .>HV_$ vividAdd a single LocalBuf for FFTCan use ) for "numChans" and S! for "Vivid.UGens.Args.numFrames"vivid)Unlike in SC, "doneAction\" defaults to 2Also, the default rate is the  of the buffervividAUnlike in SC, "doneAction" defaults to 2 and "loop" defaults to 0vivid Defaults to  . Can be 9 too but be careful that the buffer doesn't change if so!vivid Defaults to  . Can be 9 too but be careful that the buffer doesn't change if so!vivid Defaults to  . Can be 9 too but be careful that the buffer doesn't change if so!3Note you don't need to use "buf_" when you use thisvivid Defaults to  . Can be 9 too but be careful that the buffer doesn't change if so!3Note you don't need to use "buf_" when you use thisvivid Defaults to  . Can be 9 too but be careful that the buffer doesn't change if so!3Note you don't need to use "buf_" when you use thisvivid Defaults to  . Can be 9 too but be careful that the buffer doesn't change if so!3Note you don't need to use "buf_" when you use thisvivid"phase" must be at audio rate ()O"numChans" can't be set after the synth is created, and must be a fixed integervivid"phase" must be at audio rate ()vivid"phase" must be the output of delTapWrV delTapRd :: (Args '["buf", "phase", "delSecs"] '["interp"] a) => s -> SDBody a Signal  NoneHV_'qvivid5Convert an audio rate signal to a control rate signalvivid5Convert a control rate signal to an audio rate signalNone.)vivid"This one can run at control rate (M). It's inefficient so only useful for very small kernels or control rate.None.SX*  None.>SX3Mvivid&This correctly decodes/encodes to OSC:vividd"Dbrown returns numbers in the continuous range between lo and hi , Dibrown returns integer values."2"The arguments can be a number or any other UGen.">"See Pbrown, BrownNoise for structurally related equivalents."vivid Defaults to vivid"O never plays the same value twice, whereas drand chooses any value in the list"vivid:The list come second so you can curry the repeats and use  or vivid2"dxrand never plays the same value twice, whereas  chooses any value in the list"  None.HV7vividNote this can only run at ARE"secs" is the lookahead time -- if you're coming from SC you can use H for consistencyvividNote this can only run at ARE"secs" is the lookahead time -- if you're coming from SC you can use HNone %.>HVX_Cvivid Defaults to vivid Defaults to vivid9"Generates a line from the start value to the end value."fNote this won't change after it's created, so if you'd like to e.g. be able to change the "freq" in #line (start_ 0, end_ (V::V "freq"))you should write ((V::V "freq") ~* line (start_ 0, end_ 1)instead.Defaults to KRvivid""Simple linear envelope generator"6Can't change after it's created -- see the note about  if you want it toOnly computes at KRvividPercussive hit doneAction; is currently 2 but may either be 0 or 2 in future versionsvivid"Generates an exponential curve from the start value to the end value. Both the start and end values must be non-zero and have the same sign."Defaults to KRNone.H@vividDYou can use "wintype_" and "winsize_" if you're used to the SC args:vividDYou can use "wintype_" and "winsize_" if you're used to the SC args:vivid3"As [the number of bins] rises, so will CPU usage."vivid3"Alternates blocks of bins between the two inputs."          None.Yp vividBand-pass filterRq: bandwidth / cutofffreq"vividHigh-pass filter&vivid"Klank is a bank of fixed frequency resonators which can be used to simulate the resonant modes of an object. Each mode is given a ring time, which is the time for the mode to decay by 60 dB"The `? argument is "the excitation input to the resonant filter bank"REach tuple in the list argument is a triple of frequency, amplitude, and ring timeCan only run in 'vividIThe "lagSecs" arg is the same as the "lagTime" arg in SC (you can use m if you like)CThe calculation rate of this is whatever its "in" is (cool, right?)(vivid4'lag2 (in_ x)' is equal to 'lag (in_ (lag (in_ x)))'4The calculation rate of this is whatever its "in" is)vivid@'lag3 (in_ x)' is equal to 'lag (in_ $ lag (in_ $ lag (in_ x)))'4The calculation rate of this is whatever its "in" is*vividcNote the default for both AR and KR are the same: 0.995. In SC lang, the KR one defaults to 0.9.+vividLow-pass filter.vividDb6 is the boost or attenuation of the signal in decibels! !"#$%&'()*+,-./0123456789! !"#$%&'()*+,-./0123457689None.Z:;<=>?@:;<=>?@None.]Avivid"Moves all the components of a signal by a fixed amount but does not preserve the original harmonic relationships." You might want B instead.ABCABC None.kYDvividI"A linear-interpolating sound generator based on the difference equation:!x[n+1] = a - b * sqrt(abs(x[n]))"Only has an AR instanceEvividF"A non-interpolating sound generator based on the difference equation:!x[n+1] = a - b * sqrt(abs(x[n]))"Only has an AR instance.FvividH"A cubic-interpolating sound generator based on the difference equation:x[n+1] = (a * x[n] + c) % mAThe output signal is automatically scaled to a range of [-1, 1]." Only has a AR methodGvividI"A linear-interpolating sound generator based on the difference equation:x[n+1] = (a * x[n] + c) % mAThe output signal is automatically scaled to a range of [-1, 1]." Only has a AR methodHvividF"A non-interpolating sound generator based on the difference equation:x[n+1] = (a * x[n] + c) % mAThe output signal is automatically scaled to a range of [-1, 1]." Only has a AR methodDEFGHDEFGH!None.qEJvividOnly runs at audio rate. All arguments must be at control rate or constant. "bwFreq" must be greater than or equal to "fundFreq".PvividF"A non-band-limited sawtooth oscillator. Output ranges from -1 to +1."QvividF"A non-band-limited triangle oscillator. Output ranges from -1 to +1."Tvivid Sine waveVvivid!Width is "duty cycle from 0 to 1"IJKLMNOPQRSTUVIJKLMNOPQRSTUV8Safe.q"None.s/Wvivid8"This UGen simply outputs the initial value you give it"WW#None. XvividG"Generates noise whose spectrum falls off in power by 6 dB per octave."Yvividy"Generates noise whose values are either -1 or 1. This produces the maximum energy for the least peak to peak amplitude."Zvivid*"Generates random impulses from -1 to +1."[vivid*"Generates random impulses from -1 to +1."\vivid"Generates noise which results from flipping random bits in a word. This type of noise has a high RMS level relative to its peak to peak level. The spectrum is emphasized towards lower frequencies."]vividE.g. Jplay $ 0.1 ~* lfClipNoise (freq_ $ xLine (start_ 1e3, end_ 1e4, secs_ 10))^vivid$"Like LFClipNoise, it generates the values -1 or +1 at a rate given by the freq argument, with two differences: " - no time quantization " - fast recovery from low freq values " If you don't need very high or very low freqs, or use fixed freqs, LFDClipNoise is more efficient."bvivid=Freq is "approximate rate at which to generate random values"cvivid=Freq is "approximate rate at which to generate random values"dvivid=Freq is "approximate rate at which to generate random values"evivid"Generates noise whose spectrum falls off in power by 3 dB per octave. This gives equal power over the span of each octave. This version gives 8 octaves of pink noise."fvividD"Generates noise whose spectrum has equal power at all frequencies."XYZ[\]^_`abcdefXYZ[\]^_`abcdef$None ._hvividbuf4 is a temporary buffer to accumulate before writing."NOTE: The Buffer's numFrames must be a power of two and is recommended to be at least 65536 -- preferably 131072 or 262144. Smaller buffer sizes mean more frequent disk access, which can cause glitches."965536 == 2 ^ 16 131072 == 2 ^ 17 262144 == 2 ^ 18For ease of use with [D this has output type "[Signal]", but the list is always emptypvividAudio bus input (usually mic) ghijklmnop hgijklmnop%None%./=?ŀqvivid5Given a UGen graph, just start playing it right away.e.g. Hplay $ do s <- 0.2 ~* lpf (in_ whiteNoise, freq_ 440) out 0 [s, s].The "out" is optional, too -- so you can write -play $ 0.2 ~* lpf (in_ whiteNoise, freq_ 440)%and an "out" will be added, in stereovividGradually-typed version of s or rk. Note that this allows you to attempt to free a NodeId of a Group as if it were a synth. Be careful!rvividShorter name for ssvivid Immediately stop a synth playingThis can create a "clipping" artifact if the sound goes from a high amplitude to 0 in an instant -- you can avoid that with e.g. 9:! or with an envelope (especially envGate)tvividwAssuming your "gate" argument is on an EnvGen or similar, will release the synth over the EnvGen-specified fade time>If you'd like to specify a fade time in the moment, check out uuvivid.Assumes your "gate" is on an EnvGen or relatedSpecify a fade time and releasevvivid+Set the given parameters of a running synthe.g._let setTest = sd (0.05 ::I "pan") $ out 0 =<< pan2 (in_ $ 0.1 ~* whiteNoise, pos_ (A::A "pan"))s <- synth setTest ()set s (-0.05 ::I "pan")uAny parameters not referred to will be unaffected, and any you specify that don't exist will be (silently) ignoredwvividDCreate a real live music-playing synth from a boring, dead SynthDef.If you haven't defined the SynthDef on the server, this will do it automatically (Note that this may cause jitters in musical timing)Given...+let foo = sd () $ out 0 [0.1 ~* whiteNoise]!...you can create a synth with... synth foo ()cCareful!: The SC server doesn't keep track of your nodes for you, so if you do something like...s <- synth someSynth ()2s <- synth oops () -- 's' is overwrittenk...you've got no way to refer to the first synth you've created, and if you want to stop it you have to  cmdPeriodI(If you want to interop with SC's language (or other SC clients), use sdNamed and y)xvividMake a synth, "G"radually typed -- doesn't check that _ is a subset of _ Useful e.g. if you want to send a bunch of args, some of which may be discarded2(Personally I'd recommend not using this function)%let s = undefined :: SynthDef '["ok"]%synth s (4::I "ok", 5::I "throwaway")<interactive>:BCould not deduce (Elem "ignore" '[]) arising from a use of synth &synthG s (4::I "ok", 5::I "throwaway")(works)|vividICreate a synth at the head of the target group (see "Order of Execution")}vivid Alias for |ICreate a synth at the head of the target group (see "Order of Execution")~vivid Alias for |ICreate a synth at the head of the target group (see "Order of Execution")vividICreate a synth at the tail of the target group (see "Order of Execution")ICreate a synth at the head of the target group (see "Order of Execution")vivid Alias for ICreate a synth at the head of the target group (see "Order of Execution")vividECreate a synth just before the target node (see "Order of Execution")vivid Alias for ECreate a synth just before the target node (see "Order of Execution")vividDCreate a synth just after the target node (see "Order of Execution")ECreate a synth just before the target node (see "Order of Execution")vivid Alias for ECreate a synth just before the target node (see "Order of Execution")vividStop the SuperCollider servervivid Synchronous<qrstuvwxyz{|}~ wxyz|}~vqrstu{&None.vividBThe (current) duration of a control block on the server in seconds Equal to 1 ~/ controlRatevivid&The current control rate of the server Equal to 1 ~/ controlDurvividThe number of audio busesvividThe number of open buffers'None.`vividBand-pass filtervividThis is only in AR  (None.5 !"#$%&'()*+,-./0123456789:;<=>?@ABC)None._ܭvividP*Note this has different behavior than 0.1!** "lo" is not implied by "hi".SIf you know you always want "lo" to be negative "hi" (like -1 to 1) you can use biOp vivid]Returns 1.0 if "in" is between "lo" and "hi" (including equalling "lo" or "hi"). Else 0.0.8Can be audio rate (AR), control rate (KR), or fixed (IR)Lo and hi default to 0 and 1vividDReturns the value of whichever of the 2 signals is changing least;Its default calculation rate is the highest of its 2 inputsvividF"Converts a linear range of values to an exponential range of values."Args:$*in* - The input signal to convert.%*srclo* - Lower limit of input range.%*srchi* - Upper limit of input range.&*dstlo* - Lower limit of output range.&*dsthi* - Upper limit of output range.J*"The dstlo and dsthi arguments must be nonzero and have the same sign."**=This will have the same calculation rate as its "in" argumentvivid Opposite of *None.Xvividpos is -1 to 1level is "a control-rate level input"vivid7"Spreads [a list] of channels across the stereo field."vivid"Spreads [a list] of channels across the stereo field. Optional arguments are spread and center, and equal power levelCompensation. The formula for the stereo position is: 5((0 .. (n - 1)) * (2 / (n - 1) - 1) * spread + centervivid/Mixes down a list of audio rate inputs to one. !This is more efficient than e.g.  foldl1 (~+))If the list is empty this is the same as dc 0vividLike J but if the lists are of different lengths, doesn't shorten the longer one+None.,None .vivid1"mix", "room", and "damp" params range from 0 to1vivid,Note this is specifically a two-channel UGen,There are known issues with this! (From SC:)e"There is a large CPU spike when the synth is instantiated while all the delay lines are zeroed out."3"Quick changes in roomsize result in zipper noise."["Changing the roomsize does not work properly! Still trying to look for the bug... (-josh)"Since: vivid-0.4.1-None.vividFFrees the synth when the trigger changes from non-positive to positiveRuns at .None.vividU"Outputs one inpulse each time it receives a certain number of triggers at its input"kThe trigger "can be any signal. A trigger happens when the signal changes from non-positive to positive"9"div" is the number of pulses to divide by. Default is 2.*"start" is the starting value of the countCan be  or /None vividBitwise andvividBitwise orvividBit shift rightvividBit shift leftvividE.g. play byteBeatFromHelpFilevividE.g. (play $ baseThing $ \t -> t &&& (t >>> 8);Safe.O0None .>HVvivid Only runs at Args: - warp -- "Mapping curve. 0 is linear, 1 is exponential (e. g. for freq or times)" - lag -- "Lag factor to dezpipper cursor movement"vivid Only runs at Args: - warp -- "Mapping curve. 0 is linear, 1 is exponential (e. g. for freq or times)" - lag -- "Lag factor to dezpipper cursor movement"9NoneEX[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopNone."      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ =76/0<;:9854321.-,+*)('&%$#"!  uOZestrqponmlkjihgfdcba`_^]\[YXWVUTSRQPNMLKJIHGFEDCBA@?>xwv{zy~}| "*,.PQRSTUVWXYZ[\]^_`aefghijklmnopqrstuvwxyz{|      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ "*.2None      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ =76/0<;:9854321.-,+*)('&%$#"!  uOZestrqponmlkjihgfdcba`_^]\[YXWVUTSRQPNMLKJIHGFEDCBA@?>xwv{zy~}| "*,.PQRSTUVWXYZ[\]^_`aefghijklmnopqrstuvwxyz{|      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1None.$vividDbrown example from the SC help file<=>?@ABCDEFGEFHEFHIJKIJLIJMIJNIJOIPQIPRIPSIPTIPUIPVIPWIPXIPYIPZIP[IP\IP]IP^IP_IP`IPaIPbIPcIPdIPeIPfIPgIPhIPiIPjIPkIPlIPmIPnIPoIPpIPqIPrIPsIPtIPuIPvIPwIPxIPyIPzIP{IP|IP}IP~IPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIIIIIIIIIIIIIII      !"#$%&'()*+,-./01223456789::;<=>?@ABCDEFGHIJKLMN 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 { | } ~        46                                                                       5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR:STUVWXYZ[\]^_`abcdefghijklmn o p q r s!t!u!v!w!x!y!z!{!|!}!~!!!"###############$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&'''''''''()7)))))*****+++,,-....//////001EFEFIPIPIP <  <  % <<< < < < < < < < <<< < < < <  < !<"#<"$< %< &< '< (< )*+,<-.<-/<-0<-123423523623723823923:23;23<23=23>23?23@23A23B23C23DBEFBEG< H< I< J< K< L< M< N< O< P< Q<RS<=T<UV<UW<UX<UY<"Z<[<\<]<^<_<`<a<b<c<d<e<f<g<hi<hjklmklnkloklpklqklrklskltkluklvklwklxklyklzklkl{k|}k|~k|k|k|k|k|k|k|k|k|k|k|k|k|<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<R< < < < < < < < IPIP$vivid-0.4.2.3-D9DlaLFb77SGqO1jH87yMbVivid.NoPluginsVivid.SynthDefVivid.SCServerVivid.SCServer.StateVivid.OSC.BundlesVivid.RandomnessVivid.SynthDef.TypesafeArgsVivid.SynthDef.TypesVivid.SynthDef.ToSigVivid.SynthDef.FromUAVivid.SCServer.ConnectionVivid.EnvelopesVivid.Actions.ClassVivid.Actions.IOVivid.SCServer.TypesVivid.Actions.ScheduledVivid.Actions.NRTVivid.UGens.AlgebraicVivid.UGens.ArgsVivid.UGens.AnalysisVivid.UGens.BufferVivid.UGens.ConversionVivid.UGens.ConvolutionVivid.UGens.DelaysVivid.UGens.DemandVivid.UGens.DynamicsVivid.UGens.EnvelopesVivid.UGens.FFTVivid.UGens.Filters.LinearVivid.UGens.Filters.NonlinearVivid.UGens.Filters.PitchVivid.UGens.Generators.Chaotic$Vivid.UGens.Generators.Deterministic"Vivid.UGens.Generators.SingleValue!Vivid.UGens.Generators.StochasticVivid.UGens.InOut Vivid.ActionsVivid.UGens.InfoVivid.UGens.Filters.BEQSuiteVivid.UGens.FiltersVivid.UGens.MathsVivid.UGens.MultichannelVivid.UGens.RandomVivid.UGens.ReverbsVivid.UGens.SynthControlVivid.UGens.TriggersVivid.ByteBeatVivid.UGens.UserInteractionVivid.UGens.ExamplesVividUGenssdshrinkSynthArgs shrinkSDArgsclipVivid.UGens.Generators.Granular Vivid.UGenslagVivid.UGens.Undocumentedbase Data.Function&bytestring-0.10.8.2Data.ByteString.Internal ByteStringtransformers-0.5.5.0Control.Monad.Trans.State.Lazy execState(vivid-osc-0.5.0.0-Hygtv1SwwSw4NfpQHF2C0P Vivid.OSCaddSecs Timestamp2vivid-supercollider-0.4.1.1-8b8Kh0Pgk8F6uc0lUK1jsfVivid.SC.SynthDef.Literally sdLitPrettyspecialIToBiOpbiOpToSpecialI specialIToUOp uOpToSpecialIVivid.SC.SynthDef.TypesNumBinarySelectors ExpRandRange RandRangeFirstArgWrap2Fold2ExcessClip2ScaleNegAMClipThreshAbsDifSqrDifSqrSumSumSqrDifSqrRing4Ring3Ring2Ring1Fill UnsignedShift ShiftRight ShiftLeftPowHypotxHypotAtan2TruncRoundUpRoundGcdLcmBitXorBitOrBitAndMaxMinGeLeGtLtNeEqModFDivIDivMulSubAddBinaryOpNumUnarySelectorsSCurveRamp TriWindow WelchWindow HanWindow RectWindowThruSilence DigitValueCoinSoftClipDistortSum3Rand BiLinRandLinRandRand2RandTanHCosHSinHArcTanArcCosArcSinTanCosSinLog10Log2LogCPSOctOctCPSAmpDbDbAmp RatioMIDI MIDIRatioCPSMIDIMIDICPSRecipExpSqrtCubedSquaredSignFracFloorCielAsIntAsFloatAbsBitNotNotNilIsNilNotNegUnaryOpVivid.SC.Server.Types _unNodeIdNodeId _unBufferIdBufferId _unSyncIdSyncId_unGroupGroup _unParGroupParGroupencodeOSCBundlesinitTreeCommandpickpicksexprandElemSubset AddParamsTagListAllTags tagStringsVarList InnerVarsmakeTypedVarList TypedVarListIVarSet GetSymbolVals getSymbolValsVVsVariableSetEqualIsElemOf Bool_IsElemOf True_IsElemOfFalse_IsElemOf IsSubsetOfSetUnion SetInsertBool_IsSubsetOfTrue_IsSubsetOfFalse_IsSubsetOfElemBoolToBoolSubsetBoolToBool emptyVarSettoItoF iToLiteralVariToVar$fShowVariable$fGetSymbolValsproxy$fGetSymbolValsproxy0 $fShowVarSet $fRandomI $fRealFloatI $fFloatingI $fRealFracI$fRealI$fEnumI $fFractionalI$fNumI$fShowI$$fVarList(,,,,,,,,,,,,,,,,,,,,,,,,,)#$fVarList(,,,,,,,,,,,,,,,,,,,,,,,,)"$fVarList(,,,,,,,,,,,,,,,,,,,,,,,)!$fVarList(,,,,,,,,,,,,,,,,,,,,,,) $fVarList(,,,,,,,,,,,,,,,,,,,,,)$fVarList(,,,,,,,,,,,,,,,,,,,,)$fVarList(,,,,,,,,,,,,,,,,,,,)$fVarList(,,,,,,,,,,,,,,,,,,)$fVarList(,,,,,,,,,,,,,,,,,)$fVarList(,,,,,,,,,,,,,,,,)$fVarList(,,,,,,,,,,,,,,,)$fVarList(,,,,,,,,,,,,,,)$fVarList(,,,,,,,,,,,,,)$fVarList(,,,,,,,,,,,,)$fVarList(,,,,,,,,,,,)$fVarList(,,,,,,,,,,)$fVarList(,,,,,,,,,)$fVarList(,,,,,,,,)$fVarList(,,,,,,,)$fVarList(,,,,,,)$fVarList(,,,,,)$fVarList(,,,,)$fVarList(,,,) $fVarList(,,) $fVarList(,) $fVarListI $fVarList() $fVarList(,)0$fTagList(,,,,,,,,,,,,,,)$fTagList(,,,,,,,,,,,,,)$fTagList(,,,,,,,,,,,,)$fTagList(,,,,,,,,,,,)$fTagList(,,,,,,,,,,)$fTagList(,,,,,,,,,)$fTagList(,,,,,,,,)$fTagList(,,,,,,,)$fTagList(,,,,,,)$fTagList(,,,,,)$fTagList(,,,,)$fTagList(,,,) $fTagList(,,) $fTagList(,)$fTagListVariable $fTagList()$fVarListAddParams$fShowAddParams$fOrdI$fReadI$fEqISDBody'UGenNameUGName_SUGName_UUGName_BUGen _ugenName_ugenCalculationRate_ugenIns _ugenNumOutsSDName SDName_Named SDName_HashSynthDef_sdName _sdParams_sdUGensSignalConstantParamUGOut zoomSynthDef zoomSDBody $fShowSignal $fEqSignal $fShowSDName $fEqSDName $fReadSDName $fOrdSDName$fShowUGenName $fEqUGenName $fShowUGen$fEqUGen$fShowSynthDefToSigtoSig$fToSigStateTargs$fToSigBufferIdargs$fToSigFloatargs$fToSigDoubleargs$fToSigIntargs$fToSigIntegerargs$fToSigVariableargs$fToSigSignalargsArgsAllEqualUA NoDefaultsOverwritingArgs DefaultArgsFromUAUAsArgs SDBodyArgsfromUASDBodyfromUAWithDefaultsnoneuaArgValuaArgValWDefault$fFromUANoDefaults $fFromUA(,) $fFromUAUA $fFromUA(,,)#$fFromUA(,,,,,,,,,,,,,,,,,,,,,,,,,)"$fFromUA(,,,,,,,,,,,,,,,,,,,,,,,,)!$fFromUA(,,,,,,,,,,,,,,,,,,,,,,,) $fFromUA(,,,,,,,,,,,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,,)$fFromUA(,,,,,,,,,,,)$fFromUA(,,,,,,,,,,)$fFromUA(,,,,,,,,,)$fFromUA(,,,,,,,,)$fFromUA(,,,,,,,)$fFromUA(,,,,,,)$fFromUA(,,,,,)$fFromUA(,,,,) $fFromUA(,,,)$fShowNoDefaults$fEqNoDefaults$fOrdNoDefaults$fReadNoDefaults DoneAction DoNothing FreeEnclosingDoneAction_AsNumsdPretty doneActionNum sdToLiteral getSDHashNameaddUGen addMonoUGen addPolyUGensdNamed makeSynthDef? getCalcRateencodeSD$fHashableSynthDef$fShowDoneAction$fEqDoneAction SCServerState#_scServerState_socketConnectStarted_scServerState_socket_scServerState_listener!_scServerState_availableBufferIds_scServerState_maxBufIds_scServerState_availableNodeIds_scServerState_availableSyncIds_scServerState_syncIdMailboxes$_scServerState_serverMessageFunction_scServerState_definedSDs scServerState setClientIdnumberOfSyncIdsToDropsetMaxBufferIdsgetNextAvailableSCConnectConfig_scConnectConfig_hostName_scConnectConfig_port_scConnectConfig_clientId_scConnectConfig_connProtocol&_scConnectConfig_serverMessageFunction ConnProtocolConnProtocol_UDPcreateSCServerConnectioncloseSCServerConnectiondefaultConnectConfigwaitForSync_iowaitForSync_io_noGCdefaultMessageFunctionignoreMessagesFunctiongetMailboxForSyncIdgetSCServerSocket$fShowConnProtocol$fReadConnProtocol$fEqConnProtocol$fOrdConnProtocolEnvCurve Curve_Step Curve_Linear Curve_LinCurve_Exponential Curve_Exp Curve_Sine Curve_Sin Curve_Welch Curve_Wel Curve_Squared Curve_Sqr Curve_Cubed Curve_Cub Curve_Curve EnvSegment_envSegment_targetVal_envSegment_timeToGetThere_envSegment_curve EnvLiterally_envLiterally_initialVal_envLiterally_releaseNode_envLiterally_offset_envLiterally_loopNode_envLiterally_curveSegmentsenvLiterallyToSignals shapeNumber curveNumberenv$fShowEnvCurve $fEqEnvCurve$fShowEnvSegment$fEqEnvSegment VividActioncallOSCcallBSsync waitForSyncwaitgetTime newBufferId newNodeId newSyncIdforkdefineSDcallOSCAndSyncoscWSyncdefineSDFromFile$fVividActionIOIsGroup SynthOrNodeIdIsNode getNodeIdSynth_unSynth$fIsNodeParGroup $fIsNodeGroup $fIsNodeSynth$fIsNodeNodeId$fSynthOrNodeIdNodeId$fSynthOrNodeIdSynth$fIsGroupParGroup$fIsGroupGroup $fShowSynth $fReadSynth $fEqSynth $fOrdSynth WriteBufArgs _wb_keepOpen cmdPeriodfreeAll newBuffernewBufferFromFilenewBufferFromFileBetweenmakeBufferFromFile makeBuffer saveBuffer writeBufferwriteBufferWith defaultWBArgs closeBuffercloseBufzeroBuf defaultGroup$fShowWriteBufArgs$fReadWriteBufArgs$fEqWriteBufArgs$fOrdWriteBufArgs Scheduled doScheduledAt doScheduledIndoScheduledNow$fVividActionStateTNRTArgs_nrtArgs_sampleRate_nrtArgs_numChansNRTrunNRT writeNRTScorewriteNRT writeNRTWithdefaultNRTArgs $fEqMaximum $fOrdMaximum $fShowNRTArgs $fReadNRTArgs $fEqNRTArgs $fOrdNRTArgs~*~**~+~/~-binaryOpbiOpunaryOpuOpmidiCPScpsMIDIabs'negtanh'clip2xora_a0_a1_a2_active_add_ ampThreshold_aReal_areal_aImag_aimag_ attackSecs_ attackTime_b_b1_b2_bias_bins_bits_buf_buffer_bus_bw_bwFreq_bwr_c_chans_ clampSecs_ clampTime_clar_coef_control_ crossFade_ crossfade_ curve_curvedamp_damping_db_ decaySecs_ decayTime_ decaytime_default_delay_ delaySecs_ delayTime_ delaytime_density_depth_depthVariation_div_dn_ doneAction_ downSample_ dryLevel_ drylevel_dsthi_dstlo_dur_ duration_earlyRefLevel_earlyreflevel_end_ execFreq_exp_ exponent_fftSize_fftsize_ formFreq_frames_ frameSize_ framesize_freeze_freq_ friction_ fundFreq_g_gain_gate_hi_hop_id_in_ initFreq_inputBW_inputbw_ integrate_interp_interpolation_iphase_ irBufNum_ irbufnum_kernel_lag_lagSecs_lagTime_length_level_lo_loop_m_max_maxBinsPerOctave_ maxDelaySecs_ maxDelayTime_ maxdelaytime_maxFreq_ maxRoomSize_ maxroomsize_maxVal_median_min_minFreq_minmax_minVal_mix_mul_ numChans_ numFrames_ numTeeth_offset_onset_ peakLevel_peakThreshold_phase_pitchDispersion_pos_post_ preLevel_rate_rateVariation_radius_ratio_ recLevel_ relaxSecs_ relaxTime_ releaseSecs_ releaseTime_repeats_reps_reset_ resetPos_revTime_revtime_room_ roomSize_ roomsize_root_rq_rs_run_sawFreq_secs_shift_ slopeAbove_ slopeBelow_spread_spring_srchi_srclo_ startPos_start_step_stretch_ susLevel_ syncFreq_ tailLevel_ taillevel_ threshold_thresh_timeDispersion_trig_trigger_trigid_ug_ugen_up_warp_width_wipe_winsize_ windowSize_wintype_ windowType_xi_ makeMakeUGen makeMonoUGenmakeUGen makePolyUGenampComp amplitudepitchlocalBufplayBuf recordBuf bufChannelsbufDur bufFrames bufRateScale bufSampleRate bufSamplesbufRdbufWrphasora2kk2a convolution convolution2 convolution2L convolution3partConvallpassCallpassLallpassNcombCcombLcombNdelay1delay2delayCdelayLdelayNpluckinfdbrowndemanddibrowndiwhitedranddseqdserdshufdwhitedxrand companderlimiter normalizeradsrGenenvGateenvGen envGen_wGatelinelinenpercGenxLinefftifftpv_binScramble pv_binShift pv_brickWallpv_conformalMappv_conj pv_diffuser pv_localMax pv_magAbove pv_magBelow pv_magClip pv_magFreeze pv_magNoise pv_magShift pv_magSmear pv_magSquared pv_phaseShiftpv_phaseShift270pv_phaseShift90 pv_randComb pv_rectCombapfbpfbpz2brfbrz2decaydecay2fosformlethpfhpz1hpz2 integratorklanklag2lag3leakDClpflpz1lpz2midEQonePoleoneZerorhpfrlpframpresonzringzslopesostwoPoletwoZeroballhasher mantissaMaskmedianslewspringtBall freqShift pitchShiftvibratocuspLcuspNlinCongClinCongLlinCongNfSinOscformantimpulselfCublfGausslfParlfPulselfSawlfTripulsesawsinOscsyncSawvarSawdc brownNoise clipNoisedustdust2 grayNoise lfClipNoise lfdClipNoise lfdNoise0 lfdNoise1 lfdNoise3lfNoise0lfNoise1lfNoise2 pinkNoise whiteNoiseaIndiskOutkInlocalInlocalOutoutout'aOut replaceOutsoundInplayfree freeSynthrelease releaseInsetsynthsynthG synthNamed synthNamedG makeSynthnewSynthAtHead synthHeadsynthOnnewSynthAtTail synthTailnewSynthBefore synthBefore newSynthAfter synthAfter quitSCServerfreeBufnewGroup newParGroupnewGroupBefore newGroupAfternewGroupAtHeadnewGroupAtTailnewParGroupBeforenewParGroupAfternewParGroupAtHeadnewParGroupAtTail$fMonoOrPolySignal$fMonoOrPoly[]checkBadValues controlDur controlRate numAudioBuses numBuffersnumControlBuses numInputBusesnumOutputBusesnumRunningSynthspollradiansPerSample sampleDur sampleRatesubsampleOffsetbAllpass bBandPass bBandStopbHiPassbHiShelfbLowPass bLowPass4 bLowShelfbPeakEQmoogFFinRange leastChangelinExp mostChangemulAddpan2splayselectmix addChannelsexpRandlinRandrandfreeVerbgVerbfreeSelflatch pulseCount pulseDividersweep&&&|||>>><<<byteBeatFromHelpFile baseThingmouseYmouseXbufToIbToIb2idbrown_exampleencodeOSCBundle+random-shuffle-0.0.4-LbSg6RXCsmXEBiZyqz0r56System.Random.ShuffleshuffleMshuffle'shufflecontainers-0.6.0.1Data.Map.InternalunionSetIntersection?> replaceBitNot&network-2.8.0.0-AkCJm1aNSYz7ekXKYyI0pFNetwork.SocketHostName ServiceNameOSCKRIRARGHC.Base=<<>>=freeG Control.MonadzipWithMguardjoinMonadreturn>>failFunctorfmap<$Control.Monad.FixMonadFixmfix Applicativepure<*>*>liftA2<*Data.TraversablemapMsequence<>Monoidmemptymappendmconcatghc-prim GHC.TypesIntGHC.IntInt8Int16Int32Int64!random-1.1-3ypV4EIycgb35PKjTYYr5q System.RandomRandomrandomrandomRrandomRsrandoms randomRIOrandomIOStdGen RandomGensplitnextgenRangemkStdGen setStdGen getStdGen newStdGen getStdRandomControl.Monad.Trans.Class MonadTranslift MonadPlusmzerompluswhenliftMliftM2liftM3liftM4liftM5ap Data.Functorvoidfix Data.FoldablemapM_forM_ sequence_msumforMfilterM>=><=<forever mapAndUnzipM zipWithM_foldMfoldM_ replicateM replicateM_unless<$!>mfilterControl.Monad.IO.ClassMonadIOliftIO*MonadRandom-0.5.1.1-BzljSu5UeV7CMzQFadrdArControl.Monad.Trans.Random.Lazy evalRandTIO evalRandIO withRandTmapRandT execRandT evalRandTrunRandT liftRandTwithRandmapRandexecRandevalRandrunRandliftRandRandTControl.Monad.Random.Class uniformMayuniform fromListMayfromList weightedMayweighted MonadRandom getRandomR getRandom getRandomRs getRandoms MonadSplitgetSplitMonadInterleave interleaveControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListData.Functor.ConstConstgetConst Data.MonoidFirstgetFirstLastgetLastApgetApData.Semigroup.InternalDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductAltgetAlt<$>liftA3liftA<**> Alternativeempty<|>somemanyCalculationRateDR