73?      !"#$%&'()*+,-./0123456789:;<=>NoneC&What to do when *# finds a misaligned time signature?Throw an exception. Ignore it.Truncate the previous measure.bA number of measures (starting from 0), and an offset within that measure (also starting from 0).TConverts between a simple beat position, and a measure offset plus a beat position.9Converts between positions in musical time and real time.IA ratio between musical time and real time, measured in beats per second. Real time, measured in seconds.5Musical time, measured in beats a.k.a. quarter notes.? A hack to look up mappings in a @= using either one of two key types, which increase together.GCreates a tempo as a ratio of a music duration to a real time duration.7Uses a tempo to convert from musical time to real time.7Uses a tempo to convert from real time to musical time.Assigns units to the tracks in a MIDI file. Supports both the common ticks-based files as well as real-time SMPTE-encoded files.vEncodes the tracks' beat positions in ticks, using the given resolution. Positions will be rounded if necessary; see .uTo correctly encode all the given tracks without rounding, the resolution must be a multiple of the returned number.-Extracts the tempo from a tempo change event.Creates a MIDI event to set the tempo to the given value. Rounds the tempo to the nearest whole "microseconds per beat" if necessary.rGiven a MIDI event, if it is a time signature event, returns the length of one measure set by the time signature.AIf the given number is 2 ^ n where n% is a non-negative integer, returns n.DGiven a measure length, tries to encode it as a MIDI time signature.BGShould never happen. Signifies an internal error in the creation of a @2: either there was no event at position 0, or the @ contains a C or D.)?The duration of a number of measures in a given time signature.*>Computes the measure map, given the tempo track from the MIDI.0DUses the measure map to compute which measure a beat position is in.1HUses the measure map to convert a measures+beats position to just beats.2 Combines 4 and 5.3=Prepends the given events to the event list at position zero.4>Returns the list of events at position zero of the event list.54Drops all events at position zero of the event list.6.Looks for a track name event at position zero.7KRemoves any existing track name events at position zero and adds a new one.:Equivalent to  , except E doesn't have a F instance, presumably because G has an H constraint.; Combines < and =.<@Drops all events at or after the given time from the event list.=Drops the given amount of time from the start of the event list. Events that are exactly at the time that is dropped will be kept in the list.>BFinds and extracts the first event for which the function returns I.KJK ?LCDA B!"#$%&'()*+,-./0123456789:;<=>MNOP?  !"#$%&'()*+,-./0123456789:;<=>?   '(!"#$%&)*+-/,.01 67892345:;<=>:JK  ?LCDA B!"#$%&'()*+,-./0123456789:;<=>MNOPQ        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLGMNOPQJKR  ?STUVWmidiu_Ku5TCTXhg6QFAzS9tugCYmSound.MIDI.Util Control.Monadjoin MeasureModeErrorIgnoreTruncate MeasureBeats MeasureMapTempoMapBPSfromBPSSeconds fromSecondsTimeSig timeSigLength timeSigUnitBeats fromBeats makeTempo applyTempo unapplyTempo decodeFileencodeFileBeats minResolution readTempo showTempo readSignaturereadSignatureFull showSignatureshowSignatureFullmeasureLengthToTimeSig makeTempoMapunmakeTempoMaptempoMapFromBPS tempoMapToBPS applyTempoMapunapplyTempoMapapplyTempoTrackunapplyTempoTrackmeasuresmakeMeasureMapunmakeMeasureMapmeasureMapFromTimeSigsmeasureMapFromLengthsmeasureMapToTimeSigsmeasureMapToLengthsapplyMeasureMapunapplyMeasureMaptrackSplitZero trackGlueZero trackTakeZero trackDropZero trackName setTrackName readTrackName showTrackName trackJoin trackSplit trackTake trackDrop extractFirst DoubleKeyconta_2C3ZI8RgPO2LBMidXKTvIU Data.Map.BaseMaplogBase2translationErrorLookupALookupBevent_4KIizBMN1Lm5dSgqlSHiNX'Data.EventList.Relative.TimeBodyPrivateTbaseGHC.BaseMonad Data.EventList.Relative.TimeBodymergeghc-prim GHC.ClassesOrdJust$fShowMeasureMap$fShowTempoMap$fOrdDoubleKey $fEqDoubleKey