!$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None47=>?@ACHSX)8fadnoNote = pitch and duration. fadno7Monophonic pitch functor, i.e. Maybe with a sum monoid.fadno/Hand-rolled class providing monomorphic lenses.fadno smart constructor."fadno3Represent pitch as chroma and octave. It's a full , A instance, so negative octave values OK. Instances use C4 == 60.&fadnoChroma as enharmonic names.9fadnoMono/Maybe isomorphism.:fadnoMono ;fadnoMono .<fadnoMono eliminator=fadnocf catMaybe. Grab all non-rest values.>fadno from duration, given  pitch. Interoperates with chord and :(. Useful for batch duration conversion.@fadno Convert to & with 0==C, using (,,,/,2,6 enharmonics.Afadno& to 0-11.Bfadno&-to-chroma degenerate .SfadnoIso to integrals.Tfadnocompute total duration of notesUfadnomap notes to arrival timeVfadnomerge same-pitch notesXfadnomerge rests with prior noteZfadno=merge notes meeting some comparison by accumulating durations[fadnoPitch addition\fadnoPitch addition over a functorA !"#$%&*'74-.15()+,/023689:;<=>?@ABPQRSTUVWXYZ[\A 9:;!<=8>?&*'74-.15()+,/0236@AB"#$%QPRSTUVWXYZ[\5R6None4567=>?@ACMPSTX6]wfadno Tied notes.fadno2Duration iso, from Integral to Rational, given PPQfadno(Adapt a type to its HasXXX "Maybe Lens'"fadno2Adapt a non-Maybe lens to the HasXXX "Maybe Lens'"fadno6Adapt a type that does NOT support the HasXXX feature.fadnoSlurred notes.fadnoBar rehearsal mark.fadnoNote articulations.fadnoMusical direction.fadnoBarline.fadnoPart identifier, prefers  or  values.fadnoNote with notations. fadno%Lensy show of a Maybe field, given a  and its name. fadno show functions with a prelude.fadno%Bar as list of notes, with notations.fadnoNote smart ctor, used in ..fadnoBar smart ctor, used in .vbcedflkjihgmnwzyx{~}|  '()*+,-./vflkjihgmnbced{~}|wzyx  -,+*)('./None=?@AMPSXI&<fadnocover our tracks=fadno$Internal type for midi event or pad.@fadnoMidi ticks per quarter.BfadnoMidi program. See U.Dfadnonote velocity, 0-127FfadnoMidi channel, 1-16 presumably.Hfadno'Tempo in microseconds per quarter. See T.Jfadno-Convert some note value to midi-ready values.NfadnoSerializable midi data.OfadnoRational to ticksPfadnowrite to disk.Qfadnodebug midi file.RfadnoMake midi file dataSfadno@make a standard track which specifies tempo and program. | see V for more control.Tfadno%BPM to microseconds per quarter note.Ufadnoconvert a General MIDI .Vfadnomake a track from track events.Wfadnoturn notes into track events.Xfadno create a Voice MIDI eventYfadnotempo meta event.Zfadno create a Meta MIDI event[fadno create a Voice or Mode MIDI event.\fadno program change MIDI Voice event.]fadno!note on + note off events, using > to carve out space.^fadnonote on or note off event.'<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab'NMLJKHIFGDEBC@AO=>?<PQRSTUVWXYZ[\]^_`abNoneSXSE fadno with brackets.fadnotrace with output of result.fadno.trace with extra variable, not showing result.fadno/trace with extra variable and output of result.fadno8pop items off a stateful list, use for monadic function.fadno5 but only runs function if popped items are non-emptyfadnopopping with only headfadno with wraparound.fadno with wraparound.fadno do monadic 1 -- '(%=)' -- with pass-through of (before,after)fadno reorganize  for chaining on Justfadno generate A .. Z, AA .. AZ, BA .. BZ, .. AAA etcNone,>SXrfadno0Weights and pulse values for pre-configured TSs.fadnouse  with multiple input "bars".fadnoGiven a time signature and a "bar" (Traversable "b" of HasNotes "n"), make new "bars" (Traversable "c" of HasNotes "m"), partitioning notes, applying ties as needed, and decorating with the time signature.fadno using  and 'Note\'' for output.fadno using  and 'Note\'' for output.fadnoSet tie if not a restfadno$Representable duration denominators.fFor standard base-2 durs, 2 and 4 are spurious as they reduce to 1, thus 1 plus the "dot values" 3,7.For non-standard (quintuples etc), we admit 2 and 4 as well, for e.g. 2%5, a "half-note" under a quarter-quintuple. Anything greater exceeding the understanding limit: 8%17 can certainly be represented as a half-note, but it makes little sense to the reader.fadnoMax representable duration.fadno'Test for representational duration per  and .fadnoTie rules that work across any denominators, such that 5%8 -> [1%2,1%8], 9%16 -> [1%2,1%16], 11%16 -> [1%2,3%16], 13%16 -> [3%2,1%16], 9%4 -> [2,1%4].fadnoFind split by 1) finding largest power-of-2 fraction under value or 2) finding longest power-of-two denominator split, up to 8.fadnoApply rules in  and tie affected notes.fadnoMonomorphic-result 'tieRulesfadnoCombine scores from phrases.fadnoDnutty heuristic that overweights a TS for a uniform duration divisorfadnomain heuristic is finding the common divisible duration, with requirement that it must be greater than 1/4 the difference between the durations. Hopefully avoids crappy tiny TSs like 2/8.fadno.Attempt to construct a TS config from durationfadnoPre-configured timesigs.fadno;Given a median note duration, minima for acceptable quanta.fadnoGiven a phrase, select configsfadno0Filter and score time signatures per heuristics.fadno for fadno4Compute percentage of notes falling on pulse values.""None,>SXhfadnoHardcoded divisions.fadnoPartwise score.fadno%Render partwise part and score parts.fadnoRender partwise part with clef.fadnoPartwise measure.fadno'Add datum to beginning of first measurefadno&Add data to beginning of first measurefadno&Add datum to beginning of last measurefadno%Add data to beginning of last measurefadno7Use a "Maybe Lens" to generate some or none of a datum.fadno6Use a "Maybe Lens" to generate one or none of a datum.fadno Clef in barfadno Clef alone.fadnoMeasure barlines.fadno%Measure repeats for a single measure.fadno-Measure repeats bracketing existing measures.fadnoutilityfadnoMeasure time signature.fadnoMeasure rehearsal mark.fadnoMeasure direction.fadnoUtility for direction typesfadnorender note/rest as xmlfadno"render notes as xml chord or rest.fadnoIAdapt a rendered note to account for tie information. > xmlTie testNote  $ xmlChord 128 testNotefadnoSteps and enharmonics.fadno@Note values indexed by powers of two. [(1,Long) .. (1024,256th)]fadno Int pitch to xml. TODO C3 vs C4?fadnoInt duration/PPQ to xml values.fadno?Rational duration (ie, '1 % 4' for quarter note) to xml values.fadnoNumerator values to dots.    !"#$%&'()*+,-./00123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGGHHIIJJKKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                "fadno-1.1.2-COBOz7uRG6PIPWwpDHPycF Fadno.Note Fadno.XmlFadno.Notation Fadno.Midi Fadno.Util Fadno.Meter Debug.TracetracebaseGHC.Real%&fadno-xml-1.1.3-JhkNf0pYPYs804C8pwkbR8Fadno.Xml.EmitXml renderFile renderElement renderString!xml-1.3.14-ESp8cJy4XJ8BJKfvGeNymTText.XML.Light.TypesElementNote_pitch_dur$fEqNote $fGenericNoteMonoRestM_mPitchHasNotenotefromNote notePitchnoteDurdurpitchtoPair|:$fField2NoteNotebb'$fField1NoteNoteaa'$fBifunctorNote $fShowNote$fHasNoteNotepd $fShowMono$fEqMono $fOrdMono $fFunctorMonomPitchPitchRep_prPitch _prOctaveSpellingCCsDbDDsEbEFFsGbGGsAbAAsBbB_M maybeMonomonomono'unMonocatMonosrestisRest fromChromatoChromaspelling $fMonoidMono$fSemigroupMono$fShowPitchRep $fEqSpelling$fShowSpelling$fReadSpelling$fEnumSpelling $fOrdSpelling$fBoundedSpelling$fGenericSpelling $fEqPitchRep$fBoundedPitchRep$fGenericPitchRepprOctaveprPitch@:pitchRepsumDursmapTimetiedtied'legatolegato'merge transpose transpose'$fIntegralPitchRep$fRealPitchRep $fOrdPitchRep$fEnumPitchRep $fNumPitchRep TimeSignature _tsLength_tsUnitQuantaQ2Q4Q8Q16Q32Q64qToIntqFromInt$fShowTimeSignature $fEqQuanta $fShowQuanta $fOrdQuanta $fEnumQuanta$fBoundedQuanta$fEqTimeSignature$fOrdTimeSignatureTieTStartTStopTBothPPQPQ4PQ8PQ16PQ32PQ64PQ128PQ256HasTimeSignature timeSignaturetsLengthtsUnit/:ppqDiv tsToRatio tsFromRatio tsFromRatio'ratioPPQadaptHas adaptHasLens adaptHasNot$fEqPPQ $fShowPPQ$fOrdPPQ $fEnumPPQ $fBoundedPPQ$fEqTie $fBoundedTie $fEnumTie$fOrdTie $fShowTieSlurSStartSStopHasTietie $fHasTieNote $fHasTieTie$fEqSlur $fBoundedSlur $fEnumSlur $fOrdSlur $fShowSlur RehearsalMark_rehearsalTextHasArticulation articulation ArticulationStaccatoAccentHasSlurslur $fHasSlurSlur$fHasArticulationArticulation$fEqArticulation$fShowArticulation$fBoundedArticulation$fEnumArticulation$fOrdArticulation$fEqRehearsalMark$fOrdRehearsalMark$fIsStringRehearsalMark$fGenericRehearsalMark$fSemigroupRehearsalMark$fMonoidRehearsalMark$fDefaultRehearsalMark Direction_directionTextHasRehearsalMark rehearsalMark rehearsalText$fShowRehearsalMark$fHasRehearsalMarkRehearsalMark $fEqDirection$fOrdDirection$fIsStringDirection$fGenericDirection$fSemigroupDirection$fMonoidDirection$fDefaultDirectionClef TrebleClefBassClefAltoClefPercClef HasRepeatsrepeatsRepeatsRStartREndRBoth HasBarlinebarlineBarlineDoubleFinal HasDirection direction directionText$fShowDirection$fHasDirectionDirection$fHasBarlineBarline$fHasRepeatsRepeats $fEqBarline $fShowBarline $fOrdBarline$fGenericBarline $fEqRepeats $fShowRepeats $fOrdRepeats$fGenericRepeats$fEqClef $fShowClef $fOrdClef $fGenericClefPart_partIdxHasClefclef $fHasClefClef$fEqPart $fGenericPart $fOrdPart $fFunctorPart $fBoundedPart$fFoldablePart$fTraversablePart $fRealPart $fNumPart$fIsStringPartNote'_nNote_nTie_nSlur_nArticulationHasPartpartpartIdxmshowmshows $fShowPart $fEqNote'$fGenericNote'Bar_bNotes_bRehearsalMark _bDirection _bBarline _bRepeats_bTimeSignature_bClef nArticulationnNotenSlurnTienote'testNote $fShowNote'$fHasArticulationNote'$fHasSlurNote' $fHasTieNote'$fHasNoteNote'pd$fEqBar $fGenericBar $fFunctorBar $fFoldableBar$fTraversableBarbBarlinebClef bDirectionbNotesbRehearsalMarkbRepeatsbTimeSignaturebartestBar $fMonoidBar$fSemigroupBar $fShowBar$fHasRepeatsBar $fHasClefBar$fHasTimeSignatureBar$fHasBarlineBar$fHasDirectionBar$fHasRehearsalMarkBar$fConsBarBarnn$fSnocBarBarnn $fDefaultBar MidiTrack MidiEventPadEvent MidiTicks MidiProgram MidiVelocityMidiChan MidiTempo MidiNotes toMidiNotesIDurIPitchMidiDatatoTicks writeMidiFile showMidiFilemidi makeTrackFullfromBPMfromInstrument makeTrack toNoteEvents voiceEventsetTempo metaEvent midiEvent programChange noteEvents noteEventnoteOnnoteOfftest1playMidi $fMidiNotest $fMidiNotest0 $fMidiNotes[] $fEqMidiTempo$fShowMidiTempo$fEnumMidiTempo$fBoundedMidiTempo$fOrdMidiTempo$fNumMidiTempo$fRealMidiTempo$fIntegralMidiTempo $fEqMidiChan$fShowMidiChan$fEnumMidiChan$fBoundedMidiChan $fOrdMidiChan $fNumMidiChan$fRealMidiChan$fIntegralMidiChan$fEqMidiVelocity$fShowMidiVelocity$fEnumMidiVelocity$fBoundedMidiVelocity$fOrdMidiVelocity$fNumMidiVelocity$fRealMidiVelocity$fIntegralMidiVelocity$fEqMidiProgram$fShowMidiProgram$fEnumMidiProgram$fBoundedMidiProgram$fOrdMidiProgram$fNumMidiProgram$fRealMidiProgram$fIntegralMidiProgram $fEqMidiTicks$fShowMidiTicks$fEnumMidiTicks$fBoundedMidiTicks$fOrdMidiTicks$fNumMidiTicks$fRealMidiTicks$fIntegralMidiTicksdiffzipTailintegtrace'trace1trace1'poppingpopping'popping1wrapSuccwrapPredmutatingmaybe'median normalize pitchClassSetlfsrrehMarksrotate rotations allTuples monotonic interleavepivot filterOnKeyspairBydelimTsConfig_tSig_tWeight_tPulse HasRatioNotesrebarsrebarrebar'rebars'tieMay validDenomsmaxDurvalidDursplitDur findSplittieRules tieRules' $fEqTsConfig$fShowTsConfigtPulsetSigtWeight selectTimeSigselectTimeSigspreferDivisableHeads commonDivHeur tsConfigToDurtsConfigFromDur tsConfigs minMedianDurselectTsConfigs evalTsConfigfremisDivBy pulseCoverage$fHasChxMusicDataChxMusicData $fHasNoteNote$fHasChxNoteChxNote$fHasGrpFullNoteGrpFullNote$fHasMusicDataMusicData$fHasMeasureMeasure$fHasScorePartwiseScorePartwise$fHasScoreHeaderScoreHeader!$fHasIdentificationIdentification$fHasPartListPartListxmlScorexmlPart xmlPartClef xmlMeasurexmlPrependMeasureDataxmlPrependMeasureDatasxmlAppendMeasureDataxmlAppendMeasureDatasxmlClefxmlClef' xmlBarline xmlRepeats xmlRepeats' xmlTimeSigxmlRehearsalMark xmlDirectionxmlNotexmlChordxmlTie$fHasCmpPartCmpPartGHC.NumNumIntegralGHC.BaseMonoid"lens-4.18.1-3CVKkhd76525nVMSc8Tyc2Control.Lens.Reified ReifiedIso Data.StringIsString ReifiedGetter Data.Foldable concatMapGHC.ShowShow#midi-0.2.2.2-2fMGavgcPSI17jkv01u3dBSound.MIDI.General InstrumentGHC.EnumsuccpredControl.Lens.Setterover Data.MaybemayberemRealFrac xmlDivisionsmaybeMusicDatasmaybeMusicData mdBarline makeDirectionstepsnoteTypeValues convertPitch convertDur convertDurR dotValues