510      !"#$%&'()*+,-./NoneB&What to do when  # finds a misaligned time signature?Truncate the previous measure. Ignore it.Throw an exception.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.0 A hack to look up mappings in a 1= 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.2If 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.3GShould never happen. Signifies an internal error in the creation of a 12: either there was no event at position 0, or the 1 contains a 4 or 5.?The duration of a number of measures in a given time signature. >Computes the measure map, given the tempo track from the MIDI.!DUses the measure map to compute which measure a beat position is in."HUses the measure map to convert a measures+beats position to just beats.# Combines % and &.$=Prepends the given events to the event list at position zero.%>Returns the list of events at position zero of the event list.&4Drops all events at position zero of the event list.'.Looks for a track name event at position zero.(KRemoves any existing track name events at position zero and adds a new one.+Equivalent to  , except 6 doesn't have a 7 instance, presumably because 8 has an 9 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 :.:;< 054=23 !"#$%&'()*+,-./>?0  !"#$%&'()*+,-./0    !"'()*#$%&+,-./,;<  0=4523 !"#$%&'()*+,-./>?@        !"#$%&'()*+,-./0123456789:;<=>9?@ABC<DE  1FGH midi-util-0.1Sound.MIDI.Util Control.Monadjoin MeasureModeTruncateIgnoreError MeasureBeats MeasureMapTempoMapBPSfromBPSSeconds fromSecondsBeats fromBeats makeTempo applyTempo unapplyTempo decodeFileencodeFileBeats minResolution readTempo showTempo readSignature showSignature makeTempoMap applyTempoMapunapplyTempoMapapplyTempoTrackunapplyTempoTrackmeasuresmakeMeasureMapapplyMeasureMapunapplyMeasureMaptrackSplitZero trackGlueZero trackTakeZero trackDropZero trackName setTrackName readTrackName showTrackName trackJoin trackSplit trackTake trackDrop extractFirst DoubleKeycontainers-0.5.5.1 Data.Map.BaseMaplogBase2translationErrorLookupALookupBevent-list-0.1.1.2'Data.EventList.Relative.TimeBodyPrivateTbaseGHC.BaseMonad Data.EventList.Relative.TimeBodymergeghc-prim GHC.ClassesOrd Data.MaybeJust$fOrdDoubleKey $fEqDoubleKey