erik flister wrote:
    I am dealing with ties because I am converting a MusicXML document
    into a more natural form for my purposes. The initial form of the
    document will have tied notes (as it comes that way from MusicXML),
    and I want to convert that into a form that makes it possible to
    ignore ties and see notes as having a single duration.


but can't you just say that the first note of a tie has the indicated start time and a duration which is the sum of the tied notes? i don't know musicXML, but i'm not seeing why that would be hard...

That's what I want to do. I'm asking about a good way to write the algorithm that traverses the notes and reconstructs the document with the correct duration in each note. Actually, I don't want to lose information about the original form of the document, so I have separate fields for the duration of the graphical single note, and the duration of the tied chain.

Actually, it is better to speak of the end time than the duration, because what units do you put duration in? Beats? The time signature could be changing measure to measure. MusicXML "position"? The meaning of "one position" changes measure to measure and can be different in different parts. It can get confusing. So I use this concept of "location":

data Loc = Loc Int Rational   -- measure number and beat within the measure

I.e. measure 1, beat 2
     measure 7, beat 3 1/2

I use Rational so there is no worry about precision of Floats.

Thanks,
Mike



_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to