!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       Safe-Inferred    NoneM !"#$%&'()*+,- !"#$%&'()*+-, !"#$%&'()*+ !"#$%&'()*+,- Safe-Inferred.FAn Event is a value that occurs during the period given by the first ArcG. 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 resuqlt 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./ (s,e) :: Arc9 represents a time interval with a start and end value.  { t : s <= t && t < e } 0Time 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.1xThe starting point of the current cycle. A cycle occurs from each natural number to the next, so this is equivalent to floor.2IThe end point of the current cycle (and starting point of the next cycle)3@The position of a time value relative to the start of its cycle.4isIn a t is True iff t$ is inside the arc represented by a.5Splits the given Arc into a list of Arcs, at cycle boundaries.6 subArc i j( is the arc that is the intersection of i and j.73Map the given function over both the start and end Time values of the given Arc.8!Returns the `mirror image' of an Arc , used by Sound.Tidal.Pattern.rev.9The start time of the given Event:The start time of the given Event;The midpoint of an Arc./0123456789:;<./0123456789:;<0/.123456789:;<./0123456789:;<None++=-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.@atom is a synonym for pure.Asilence" returns a pattern with no events.BmapQueryArc f p returns a new Pattern with function f applied to the Arc values passed to the original Pattern p.CmapQueryTime 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.DmapResultArc f p returns a new Pattern with function f applied to the Arc2 values in the events returned from the original Pattern p.EmapResultTime 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.Foverlay combines two PatternCs into a new pattern, so that their events are combined over time.Hstack combines a list of PatternCs into a new pattern, so that their events are combined over time.Iappend 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 cycleJappend' does the same as appendN, but over two cycles, so that the cycles alternate between the two patterns.Kcatz 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.Mslowcat 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.N listToPatM turns the given list of values to a Pattern, which cycles through the list.OmaybeListToPat is similar to  listToPat., but allows values to be optional using the Maybe type, so that Nothing! results in gaps in the pattern.Prun n8 returns a pattern representing a cycle of numbers from 0 to n-1.Qdensity@ 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.R 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).Sslow does the opposite of density, i.e. slow 2 p/ will return a pattern that is half the speed.TThe <~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.UThe ~> operator does the same as ~>H but shifts events to the right (or clockwise) rather than to the left.Xrev p returns p@ with the event positions in each cycle reversed (or mirrored).Y palindrome p applies rev to pS every other cycle, so that the pattern alternates between forwards and backwards.Z 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.[ every n f p applies the function f to p, but only affects every n cycles.\sig f< takes a function from time to values, and turns it into a Pattern.]sinewave returns a Pattern of continuous DoubleV values following a sinewave with frequency of one cycle, and amplitude from -1 to 1.^sine is a synonym for @sinewave._sinerat is equivalent to sinewave for Rational values, suitable for use as Time offsets.a sinewave1 is equivalent to sinewave!, but with amplitude from 0 to 1.bsine1 is a synonym for  sinewave1.csinerat1 is equivalent to sinerat!, but with amplitude from 0 to 1.d sineAmp1 d returns  sinewave1 with its amplitude offset by d.esawwave is the equivalent of sinewave for sawtooth waves.fsaw is a synonym for sawwave.gsawrat is the same as sawwave but returns Rational values suitable for use as Time offsets.ktriwave is the equivalent of sinewave for triangular waves.ltri is a synonym for triwave.mtrirat is the same as triwave but returns Rational values suitable for use as Time offsets. 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.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.J=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~E=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~J=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~H=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None24-&-*None24HM+(-  None####None                     None !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%#$&#'(#')#'*#$+#,-#,.#,/#,0#12#13#,4#,5#67#,8#,9#,:#,;#,<#,=#,>#,?#,@#,A#,B#,B#,C#,D#,E#,F#,G#,H#,I#,J#,J#KL#KM#KN#KO#KP#KQ#KR#KS#KT#KU#VW#VX#VY#VZ#[\#[]#[^#[_#`a#`b#`c#`d#`e#`f#`g#`h#`i#jk#lm#no#np#nq#nr#ns#nt#nu#nv#nw#xy#xz#x{#x|#x}#x~#x#x#x#x#x#x#x###############################################################################1#1#1#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#$ tidal-0.4Sound.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 runClient bpsSetterclocked clockedTick updateTempo addClient removeClient broadcast startServer serverApp serverLoop $fShowTempo$fEqConnectionEventArcTimesamnextSamcyclePosisIn arcCyclessubArcmapArc mirrorArc eventStart eventOnsetmidPointhasOnsetPatternarcatomsilence mapQueryArc mapQueryTime mapResultArc mapResultTimeoverlay>+<stackappendappend'cat splitAtSamslowcat listToPatmaybeListToPatrundensity densityGapslow<~~>brakiterrev palindromewheneverysigsinewavesinesineratratsine sinewave1sine1sinerat1sineAmp1sawwavesawsawratsawwave1saw1sawrat1triwavetritrirattriwave1tri1trirat1 squarewave1square1 squarewavesquare filterOnsetsfilterStartInRangefilterOnsetsInRangeseqToRelOnsetssegmentsegment'splitpoints groupByTimeifprandirandwedge$fMonadPattern$fMonoidPattern$fApplicativePattern$fFunctorPattern $fShowPatternSignNegativePositiveColourD ParseableplexerbracesbracketsparensanglessymbolnaturalintegerfloatnaturalOrFloat applySignsign intOrFloatr parseRhythm pSequenceN pSequencepSinglepPartpPolyInpPolyOutpStringpVocablepDoublepBoolpIntpColourpMult pReplicatepRatio pRationalpDensity$fIsStringPattern$fParseableColour$fParseableRatio$fParseableInt$fParseableBool $fParseable[]$fParseableDouble OscPatternOscMapOscShapepathparams timestampParamIiDefaultFfDefaultSnamesDefaultlatency defaultDatum hasDefault defaulted defaultMaprequired hasRequiredisSubsettpbbpb toMessagedoAt applyShape'startstreamstreamcallbackonTickmakemakeSmakeFmakeIparammerge|+|weave $fShowParam $fOrdParam $fEqParamdirtkriole dirtstart dirtStream dirtstreamkstream doubledirt dirtToColour datumToColourstringToColoursoundoffsetbeginendspeedpanvelocityvowelcutoff resonance accelerateshapegaindelay delaytime delayfeedbackcutksymbolkpitchpickstriatestriate'striateO metronome interlacestutterechotriplequaddoublejuxjuxcutjux4 superimposesmashsamplesspread slowspreadspread'whenmodtruncspreadfspinspin4spin16sawwave4 sinewave4rand4 stackwithinsidestutbaseGHC.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<$