2Q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP  Safe-Inferred    NoneM !"#$%&'()*+,-. !"#$%&'()*+,.- !"#$%&'()*+, !"#$%&'()*+,-. Safe-Inferred/FAn Event is a value that occurs during the period given by the first ArcF. The second one indicates the event's "domain of influence". These will often be the same, but many temporal transformations, such as rotation and scaling time, may result in arcs being split or truncated. In such cases, the first arc is preserved, but the second arc reflects the portion of the event which is relevant.0 (s,e) :: Arc9 represents a time interval with a start and end value.  { t : s <= t && t < e } 1Time is represented by a rational number. Each natural number represents both the start of the next rhythmic cycle, and the end of the previous one. Rational numbers are used so that subdivisions of each cycle can be accurately represented.2xThe starting point of the current cycle. A cycle occurs from each natural number to the next, so this is equivalent to floor.3IThe end point of the current cycle (and starting point of the next cycle)4@The position of a time value relative to the start of its cycle.5isIn a t is True iff t$ is inside the arc represented by a.6Splits the given Arc into a list of Arcs, at cycle boundaries.7Splits the given Arc into a list of ArcDs, at cycle boundaries, but wrapping the arcs within the same cycle.8 subArc i j( is the arc that is the intersection of i and j.93Map the given function over both the start and end Time values of the given Arc.: Similar to mapArcJ but time is relative to the cycle (i.e. the sam of the start of the arc);!Returns the `mirror image' of an Arc , used by Sound.Tidal.Pattern.rev.<The start time of the given Event= The original onset of the given Event>!The original offset of the given Event?The arc of the given Event@The midpoint of an Arc/0123456789:;<=>?@ABCD/0123456789:;<=>?@ABCD10/23456789:;<=>?@ABCD/0123456789:;<=>?@ABCDNone+-E-The pattern datatype, a function from a time Arc to Event values. For discrete patterns, this returns the events which are active during that time. For continuous patterns, events with values for the midpoint of the given Arc is returned.Hatom is a synonym for pure.Isilence" returns a pattern with no events.JwithQueryArc f p returns a new Pattern with function f applied to the Arc values passed to the original Pattern p.KwithQueryTime f p returns a new Pattern with function f( applied to the both the start and end Time of the Arc passed to Pattern p.LwithResultArc f p returns a new Pattern with function f applied to the Arc2 values in the events returned from the original Pattern p.MwithResultTime f p returns a new Pattern with function f( applied to the both the start and end Time of the Arc2 values in the events returned from the original Pattern p.Noverlay combines two PatternCs into a new pattern, so that their events are combined over time.Pstack combines a list of PatternCs into a new pattern, so that their events are combined over time.Qappend combines two patterns Patterns into a new pattern, so that the events of the second pattern are appended to those of the first pattern, within a single cycleRappend' does the same as appendN, but over two cycles, so that the cycles alternate between the two patterns.Scatz returns a new pattern which interlaces the cycles of the given patterns, within a single cycle. It's the equivalent of append, but with a list of patterns.Uslowcat does the same as catR, but maintaining the duration of the original patterns. It is the equivalent of append', but with a list of patterns.V listToPatM turns the given list of values to a Pattern, which cycles through the list.WmaybeListToPat is similar to  listToPat., but allows values to be optional using the Maybe type, so that Nothing! results in gaps in the pattern.Xrun n8 returns a pattern representing a cycle of numbers from 0 to n-1.Zdensity@ returns the given pattern with density increased by the given Time factor. Therefore  density 2 p3 will return a pattern that is twice as fast, and density (1%3) p& will return one three times as slow.[ densityGap is similar to density3 but maintains its cyclic alignment. For example, densityGap 2 p% would squash the events in pattern pK into the first half of each cycle (and the second halves would be empty).\slow does the opposite of density, i.e. slow 2 p/ will return a pattern that is half the speed.]The <~Y operator shifts (or rotates) a pattern to the left (or counter-clockwise) by the given Time value. For example  (1%16) <~ pS will return a pattern with all the events moved one 16th of a cycle to the left.^The ~> operator does the same as ~>H but shifts events to the right (or clockwise) rather than to the left.arev p returns p@ with the event positions in each cycle reversed (or mirrored).b palindrome p applies rev to pS every other cycle, so that the pattern alternates between forwards and backwards.c when test f p applies the function f to p4, but in a way which only affects cycles where the test/ function applied to the cycle number returns True.h every n f p applies the function f to p, but only affects every n cycles.isig f< takes a function from time to values, and turns it into a Pattern.jsinewave returns a Pattern of continuous DoubleV values following a sinewave with frequency of one cycle, and amplitude from -1 to 1.ksine is a synonym for @sinewave.lsinerat is equivalent to sinewave for Rational values, suitable for use as Time offsets.n sinewave1 is equivalent to sinewave!, but with amplitude from 0 to 1.osine1 is a synonym for  sinewave1.psinerat1 is equivalent to sinerat!, but with amplitude from 0 to 1.q sineAmp1 d returns  sinewave1 with its amplitude offset by d.rsawwave is the equivalent of sinewave for sawtooth waves.ssaw is a synonym for sawwave.tsawrat is the same as sawwave but returns Rational values suitable for use as Time offsets.xtriwave is the equivalent of sinewave for triangular waves.ytri is a synonym for triwave.ztrirat is the same as triwave but returns Rational values suitable for use as Time offsets.envL is a Pattern of continuous Double values, representing a linear interpolation between 0 and 1 during the first cycle, then staying constant at 1 for all following cycles. Possibly only useful if you're using something like the retrig function defined in tidal.el. wedge t p p' combines patterns p and p' by squashing the p) into the portion of each cycle given by t, and p'" into the remainer of each cycle.splitQueries p wraps p to ensure that it does not get queries that | span arcs. For example `arc p (0.5, 1.5)` would be turned into two queries, `(0.5,1)` and `(1,1.5)`, and the results combined. Being able to assume queries don't span cycles often makes transformations easier to specify.mempty is a synonym for silence. | mappend is a synonym for overlay.pure a, returns a pattern with an event with value a>, which has a duration of one cycle, and repeats every cycle.show (p :: Pattern)i returns a text string representing the event values active during the first cycle of the given pattern.jEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~eEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~jEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~hEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None24/(/,None24HM.   +0       None*   !"#$%&'()*+,-./012345*   !"#$%&'()*+,-./012345*   !"#$%&'()*+,-./012345*   !"#$%&'()*+,-./012345None6789:;<=>?@ABCDEFGHIJKLMNOP6789:;<=>?@ABCDEFGHIJKLMNOP6789:;<=>?@ABCDEFGHIJKLMNOP6789:;<=>?@ABCDEFGHIJKLMNOP NoneQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZXY[X\]X\^X\_XY`XabXacXadXaeXfgXfhXaiXajXklXamXanXaoXapXaqXarXasXatXauXavXawXawXaxXayXazXa{Xa|Xa}Xa~XaXaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X Xf Xf Xf X\X\X\X\X\X\X\X\X\X\X\X\X\X\X\X\X\X\X\ X\!X\"X\#X\$X\%X\&X\'X\(X\)X\*X\+X\,X\-X\.X\/X\0X\1X\2X\3XY45 tidal-0.4.21Sound.Tidal.UtilsSound.Tidal.TempoSound.Tidal.TimeSound.Tidal.PatternSound.Tidal.ParseSound.Tidal.StreamSound.Tidal.DirtSound.Tidal.StrategiesSound.Tidal.Context enumeratemapFstmapFstsmapSndmapSndswordsBy maybeReadfst'snd'thd'mapFst'mapSnd'mapThd'mapFsts'mapSnds'mapThds'mapArcs getEnvDefault ClientStateTempoatbeatbps getClockIp getServerPort readTempo logicalTime tempoMVarbeatNow clientAppsendBps connectClient runClientbpsUtils bpsSetterclocked clockedTick updateTempo addClient removeClient broadcast startServer serverApp serverLoop $fShowTempo$fEqConnectionEventArcTimesamnextSamcyclePosisIn arcCycles arcCycles'subArcmapArcmapCycle mirrorArc eventStart eventOnset eventOffseteventArcmidPointhasOnset hasOffsetonsetInoffsetInPatternarcatomsilence withQueryArc withQueryTime withResultArcwithResultTimeoverlay>+<stackappendappend'cat splitAtSamslowcat listToPatmaybeListToPatrunscandensity densityGapslow<~~>brakiterrev palindromewhenwhenTplayWhenplayForseqPeverysigsinewavesinesineratratsine sinewave1sine1sinerat1sineAmp1sawwavesawsawratsawwave1saw1sawrat1triwavetritrirattriwave1tri1trirat1 squarewave1square1 squarewavesquareenvLfadeOutfadeInspread slowspreadspread' filterValues filterOnsetsfilterStartInRangefilterOnsetsInRangeseqToRelOnsetssegmentsegment'splitpoints groupByTimeifprandirand degradeBy unDegradeBy sometimesBy sometimesoftenrarely almostNever almostAlwaysdegradewedgewhenmod superimpose splitQueriestrunczoomcompresssliceArcwithinrevArcee'$fMonadPattern$fMonoidPattern$fApplicativePattern$fFunctorPattern $fShowPatternSignNegativePositiveColourD ParseableplexerbracesbracketsparensanglessymbolnaturalintegerfloatnaturalOrFloat applySignsign intOrFloatr parseRhythm pSequenceN pSequencepSinglepPartpPolyInpPolyOutpStringpVocablepDoublepBoolpIntpColourpMultpRandpE pReplicatepRatio pRationalpDensity$fIsStringPattern$fParseableColour$fParseableRatio$fParseableInt$fParseableBool $fParseable[]$fParseableDouble OscPatternOscMapOscShapepathparams timestamplatency TimeStampNoStamp MessageStamp BundleStampParamIiDefaultFfDefaultSnamesDefault ticksPerCycle defaultDatum hasDefault defaulted defaultMaprequired hasRequiredisSubset toMessagedoAt applyShape'startstreamstreamcallbackonTickmakemakeSmakeFmakeIparammerge|+|weave $fShowParam $fOrdParam $fEqParamdirtkriole dirtstart dirtStream dirtstreamkstream doubledirt dirtToColour showToColour datumToColourstringToColoursoundoffsetbeginendspeedpanvelocityvowelcutoff resonance accelerateshapegaindelay delaytime delayfeedbackcrushcoarsehcutoff hresonancebandfbandqcutksymbolkpitchpickstriatestriate'striateO metronome interlacestutterechotriplequaddoublejuxjuxcutjux4juxBysmashsmash'samplesspreadfspinspin4spin16sawwave4 sinewave4rand4 stackwithinsidestutscalechopgapchopArcenbaseGHC.Base++foldrGHC.ListconcatfilterzipmapControl.Applicative<*>pure Alternative ApplicativeGHC.RealRatioRational<**> Data.RatioapproxRationaloptionalliftA3liftA2liftA<**>manysome<|>emptygetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListControl.ConcurrentthreadWaitWriteSTMthreadWaitReadSTMthreadWaitWritethreadWaitReadrunInUnboundThreadrunInBoundThreadisCurrentThreadBoundforkOS forkFinallyrtsSupportsBoundThreadsControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.ChanwriteList2ChangetChanContents isEmptyChan unGetChandupChanreadChan writeChannewChanChan Data.Functor<$> GHC.Conc.IO threadDelayControl.Concurrent.MVar mkWeakMVaraddMVarFinalizermodifyMVarMaskedmodifyMVarMasked_ modifyMVar modifyMVar_withMVarMaskedwithMVarswapMVar GHC.Conc.SyncmkWeakThreadIdthreadCapabilityyield myThreadIdthrowTo killThreadsetNumCapabilitiesgetNumCapabilitiesforkOnWithUnmaskforkOnforkIOWithUnmaskforkIOThreadId Data.Listunwordswordsunlineslinesproductsumfoldl1'foldl1foldl'unfoldrsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLength minimumBy maximumByminimummaximuminsertByinsert mapAccumR mapAccumL partition transpose intercalate intersperse intersectBy intersectunionByunion\\deleteBydeletenubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndexfind elemIndices elemIndex stripPrefix dropWhileEndGHC.MVar isEmptyMVar tryReadMVar tryPutMVar tryTakeMVarputMVarreadMVartakeMVarnewMVar newEmptyMVarMVar denominator numerator%unzip3unzipzipWith3zipWithzip3!! concatMaplookupnotElemelemallanyorandreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrfoldr1scanl1scanlfoldllengthnullinitlasttailhead<$