[MEI-L] Music Addressability API draft; fractions in data.BEAT

Byrd, Donald A. donbyrd at indiana.edu
Tue Nov 11 16:07:31 CET 2014


Regarding Laurent's suggestion that fractions in data.BEAT might be useful, e.g.,referring to the second note of a tuplet, as "1+1/3" instead of "1.33": I think allowing rational numbers, a.k.a. fractions, is a very good idea. In music like that of Brian Ferneyhough, who has used _at least_ four levels of nested tuplets (cf. my CMN Extremes list), I don't know that two decimal places will always be enough; besides, it's less explicit a representation of the rhythm than a fraction. On the other hand, as Roger Dannenberg pointed out long ago, with nested tuplets and short durations, you might end up with very large numbers, possibly requiring extended precision arithmetic.

--Don

________________________________________
From: mei-l [mei-l-bounces at lists.uni-paderborn.de] on behalf of Laurent Pugin [laurent at music.mcgill.ca]
Sent: Tuesday, November 11, 2014 3:15 AM
To: Music Encoding Initiative
Subject: Re: [MEI-L] Music Addressability API draft

Hi,

One remark on the @tstamp2 - points 5) and 6) in Jo's e-mail. I would
avoid values such as "4.999". "5" seems better, even though I
understand it might look awkward. Actually, I think one reason why
this is unclear is that there is a mix of relative and absolute
referencing in how @tstamp2 currently works ("xm+y"). "x" is relative
to @tstamp, while "y" is absolute in the measure.

Another way of representing this could be to have something like a
@timespan to encode the extend of the event. We would end up with
something like:

<hairpin tstamp="1" timespan="4"/> for a harpin up to the end of the measure.

This would be equivalent to

<hairpin tstamp="1" timespan="0m+4"/>

Or to

<hairpin tstamp="1" timespan="1m"/>

The latter could be used to indicate that the event needs to cross the
barline (see the top example in Behind Bars p. 105) even though in
terms of musical duration there is not difference.

A question I have in this timestamp context concerns the data.BEAT
type. Do we have the possibility to use fractions? For example, for a
timestamp referring to the second note of a tuplet, is "1+1/3"
possible? This would probably be better than something like "1.33".
Any thoughts?

I haven't had the time to look at the EMA repository yet, but this
looks quite useful!

Laurent

On Tue, Nov 4, 2014 at 2:09 PM, Kőmíves Zoltán <zolaemil at gmail.com> wrote:
> Hi Raff,
>
> My comment was more about the ambiguity that is created by the implicit
> nature of the actual cut-off mode (and this is vaguely related to the MEI
> tstamp2 problem).
>
> If the definition of the "cut" mode is that the end value is the absolute
> end, that is nothing can extend longer than the end value, you can still
> chose to discard or actually cut the events that would extend longer, but
> the point is that this position is defined by then end value explicitly,
> rather than implicitly (by applying ceil or +1).
>
> So in 4/4 the if the URL ended something like "../1-3/cut" and there's a
> half-note starting on the second beat, it will be qualified as a non-fit
> (while according the original system, it would be qualified as a fit.) This
> would also allow you to specify an interval shorter than a beat (e.g.
> 1-1.5/cut).
>
> I wasn't trying to suggest anything about what to do with the non-fitters
> though. I guess it is very much application dependent; perhaps would be a
> good idea to allow three options here: drop, keep, cut?
>
> Z
>
>
> 2014-11-04 14:46 GMT+00:00 Raffaele Viglianti <raffaeleviglianti at gmail.com>:
>>
>> Hi Zoltan,
>>
>> Thanks for your email!
>>
>> I think we agree entirely on the tstamp2 issue. Your more sophisticated
>> example matches my expectations. I would definitely keep the same behavior
>> also for percussive/plucked instruments and other borderline scenarios like
>> an eight for double bass that is to be played both pizzicato and crescendo
>> (I guess in this case the bass becomes a plucked instrument).
>>
>> I also struggle to think of a reasonable example for slurs, but notation
>> doesn't always match a physical gesture or real sound effect. So I would
>> keep the same tstamp2 behavior for phrase marks too.
>>
>> About EMA, I see your point. I think ceil(end) is what I mean now for
>> "cut" mode. If you have an end beat of 1, you consider the whole of beat 1.
>> If you have 1.2 you consider the whole of beat 1 and .2 of the following.
>> This forces a processor to alter the notation to fit the beat limit. Are you
>> suggesting that event that do not end within the range should be dropped
>> entirely in "cut" mode? That may be easier to implement, but then a
>> selection of beat 1 to 1 where only a whole note is encoded, would return an
>> empty set.
>>
>> Raff
>>
>>
>> On Tue, Nov 4, 2014 at 4:14 AM, Kőmíves Zoltán <zolaemil at gmail.com> wrote:
>>>
>>> Hi Raff,
>>>
>>> I'm glad to see you're making great progress with the EMA project! Let me
>>> chip in to the discussion with some casual comments.
>>>
>>> I like your description of the thought-process of transcribing a hairpin
>>> from a source document. I think there may be room for some more
>>> sophistication here: for example if a performer sees a hairpin ending
>>> roughly on the last beat of the measure, or perhaps slightly after it, they
>>> could argue that the crescendo needs to continue right to the end of the
>>> measure, (they would especially inclined to do so, if in the next measure a
>>> diminuendo starts at beat one). I think it is necessary to distinguish
>>> between this and the case, when the crescendo would actually stop at the
>>> beginning of the last beat, and the performer would keep the volume for the
>>> duration of the last beat. Based on the logic you describe, I would
>>> transcribe the full-length crescendo with tstamp2="5" or "4.999", as Jo
>>> suggests. Then it could be up to there renderer to decide whether to draw
>>> the hairpin right up to the barline or somewhere between the last note and
>>> the barline.
>>>
>>> In short, my penny is on tstamp2 meaning the absolute end.
>>>
>>> N.B. the above problem only arises in situations when an event can
>>> feasibly start/end between other time positions than beginning of notes;
>>> such a situation is a crescendo performed on a non-percussive(e.g. piano)
>>> and non-plucked instrument. Well, even on these instruments, the full-length
>>> crescendo may be the "artistic intention" and should be kept intact, even
>>> though it is never going to be executed. However, I cannot think of any
>>> problematic case for slurs, for example (off the top of my head I cannot
>>> think of any example when the a slur starting or ending in between notes is
>>> particularly meaningful...)
>>>
>>> As far as I can see, when it comes to EMA, it all boils down to the
>>> definition of the end of the range. By default, the range is flexible on the
>>> right hand side: it includes everything that start within the base range,
>>> defined by start and end positions. But it's not clear what the cut-off
>>> point is when you apply "cut"? Is it end+1 or ceil(end)? If it is ceil(end),
>>> is it not too restrictive that you cannot cut off at other positions than
>>> integer beat positions? If it is end+1 it may not be very intuitive to use
>>> when end isn't an integer value.
>>>
>>> It seems to me that a more explicit definition of the end of the range
>>> could be more easy to deal with: by default the range as defined now, but in
>>> "cut" mode nothing should extend longer than the end position. Then the user
>>> could have more control over the actual cut-off point.
>>>
>>> Best
>>> Zoltan
>>>
>>> 2014-11-03 22:15 GMT+00:00 Raffaele Viglianti
>>> <raffaeleviglianti at gmail.com>:
>>>>
>>>> Hi Jo,
>>>>
>>>> Thank you for your reply! Very interesting question.
>>>>
>>>> To help me explain my view on the problem you pose, let's consider your
>>>> example 3 and 4 as if they were on two different staves of the same piece.
>>>> Time is 4/4.
>>>>
>>>> On staff 1 we'd have a whole note with a crescendo, and we're debating
>>>> whether tstamp2 should be 1 or 4:
>>>> <hairpin tstamp="1" tstamp2="0m+1" form="cres" /> or
>>>> <hairpin tstamp="1" tstamp2="0m+4" form="cres" />
>>>>
>>>> On staff 2 we'd have three quarters and two eights, with an hairpin
>>>> going to the last note
>>>> <hairpin tstamp="1" tstamp2="0m+4.5" form="cres" />
>>>>
>>>> If I were encoding a source document, I would use tstamp2 to specify
>>>> were I think the crescendo ends in relationship to the beat. I justify this
>>>> by imagining a performer performing the MEI (heh): I would prefer a
>>>> tstamp2=4 to indicate that the performer is expected to hold the volume
>>>> around beat 4. I would do this because if the hairpin were shorter, that
>>>> would be meaningful musically. For example, if it were stopping around what
>>>> would seem, as a performer, closer to beat 3 than 4.
>>>>
>>>> What is less evident to me, instead, is how I would encode this when the
>>>> staff below has the hairpin stretching to 4.5 because of the eights. Is it
>>>> ok to have the hairpins on each staff ending at different tstamps (4 and
>>>> 4.5)? If the source document aligns them, should the tstamp2s be aligned
>>>> too? Or should the alignment be left to a rendering system. I may lean
>>>> towards adjusting both tstamp2s to match, but I can also see why the
>>>> opposite could be argued.
>>>>
>>>> EMA is relative unaffected by this problem. The API, as it is now,
>>>> specifies that any notational element occurring *on* the final beat is
>>>> considered in its entirety, regardless of how its dur or tstamp2 are
>>>> expressed. So a selection on the example above of staff 1, beat 1, would
>>>> return the whole note *and* the hairpin with its tstamp2 unaltered.
>>>>
>>>> This default behavior can be overridden by raising the "cut" flag, which
>>>> will force the returned notation to be altered to stay within the range
>>>> specified. So a selection on the example above of staff 1, beat 1, would
>>>> return *a quarter* note and the hairpin with its tstamp2 changed to 1.
>>>>
>>>> I'm more than happy to discuss whether this is a good idea, etc.
>>>>
>>>> Thanks again! Best,
>>>> Raff
>>>>
>>>>
>>>>
>>>> On Mon, Nov 3, 2014 at 4:33 PM, Johannes Kepper <kepper at edirom.de>
>>>> wrote:
>>>>>
>>>>> Hi Raff,
>>>>>
>>>>> it's great to hear about EMA again, and it seems like you've made a lot
>>>>> of progress (congrats!). There is one question I stumbled upon recently in
>>>>> the Freischütz context, which clearly falls into the scope of EMA as well,
>>>>> and I would like to hear your opinion about it. Since it (in my opinion) is
>>>>> an MEI question, I prefer to discuss it over here, instead of Github. Let's
>>>>> see where it leads us…
>>>>>
>>>>> Let's assume we're in a simple 4/4 meter, and we want to encode a slur
>>>>> that ranges from the first to the last note in that measure. Now let's look
>>>>> at different examples in this setup.
>>>>>
>>>>> 1)
>>>>> We have four quarter notes. Our slur is
>>>>> <slur tstamp="1" tstamp2="0m+4"/>
>>>>>
>>>>> 2)
>>>>> Let's consider we have a hairpin instead, which ranges from the first
>>>>> to the last quarter:
>>>>> <hairpin tstamp="1" tstamp2="0m+4"/>
>>>>>
>>>>> 3)
>>>>> Let's consider our hairpin stretches across the full measure, which
>>>>> contains just a whole note:
>>>>> <hairpin tstamp="1" tstamp2="0m+4"/>
>>>>>
>>>>> 4)
>>>>> Let's go back to a slur which stretches to the second of two eighth
>>>>> notes on the last beat. Our slur is
>>>>> <slur tstamp="1" tstamp2="0m+4.5"/>
>>>>>
>>>>> 5)
>>>>> What does this mean to 3)? Should it be
>>>>> <hairpin tstamp="1" tstamp2="0m+4.5"/>
>>>>> instead, to indicate that the hairpin really goes to the end of the
>>>>> measure? By definition, in MEI a tstamp="5" (in 4/4) denotes the right
>>>>> barline, so should we use something like "5", or perhaps "4.999" in this
>>>>> situation?
>>>>>
>>>>> 6)
>>>>> To my understanding, a musical range in MEI should include all events
>>>>> which have an onset (=tstamp) that is between the range's starting tstamp
>>>>> and it's ending tstamp2.
>>>>>
>>>>> 7)
>>>>> If 6) is true, a valid encoding for 3) would be
>>>>> <hairpin tstamp="1" tstamp2="0m+1"/>
>>>>> This hairpin would cover all notes that start at tstamp="1", which is
>>>>> obviously true for a whole note.
>>>>>
>>>>> 8)
>>>>> However, this encoding obviously does not address the (graphical)
>>>>> aspect of the hairpin stretching the whole measure. I'm not sure if this is
>>>>> a problem – it could be addressed with other (more graphical) attributes
>>>>> instead.
>>>>>
>>>>> ----
>>>>>
>>>>> It all comes down to the question if 6) is correct, or if a tstamp2
>>>>> denotes the absolute end of a range. In other words: Does the crescendo stop
>>>>> at the onset of the note at which hairpin/@tstamp2 is pointing, or does it
>>>>> also include the duration of that note (which would make it context
>>>>> dependent…)? In terms of EMA: Would you include the notes that start at the
>>>>> specified ending beat, or would you drop them, since they don't completely
>>>>> fit into the specified range?
>>>>>
>>>>> I think MEI isn't clear enough on this, on EMA seems to be a perfect
>>>>> opportunity to discuss how people would interpret it, and if we should try
>>>>> to be more explicit on this.
>>>>>
>>>>> Best,
>>>>> jo
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Am 03.11.2014 um 17:11 schrieb Raffaele Viglianti
>>>>> <raffaeleviglianti at gmail.com>:
>>>>>
>>>>> > Dear List,
>>>>> >
>>>>> > The idea behind the Enhancing Music Notation Addressability (EMA)
>>>>> > project is to investigate ways to make it possible to link to specific parts
>>>>> > of a music document available online. Being able to do so could be useful to
>>>>> > quote passages, express analytical statements and annotations, or passing a
>>>>> > selection of music notation on to another process for rendering,
>>>>> > computational analysis, etc.
>>>>> >
>>>>> > As part of the project, I've been working on a URL specification to
>>>>> > express a selection of music notation based on measure, staves, and beats. I
>>>>> > am also writing an API that describes how to process the URL and the music
>>>>> > notation.
>>>>> >
>>>>> > You can find the URL specification and the API documentation here:
>>>>> > https://github.com/umd-mith/ema/blob/master/docs/api.md
>>>>> >
>>>>> > I am now working on an implementation of the API that works with MEI
>>>>> > files. If you have used an image server before, you can imagine how this
>>>>> > will work: given a URL specifying a zoom level and a region of an image, the
>>>>> > server returns an image of the selected region. Likewise, this MEI-based
>>>>> > implementation would return the region of an MEI file, according to the
>>>>> > selection specified by the URL.
>>>>> >
>>>>> > I would be very interested in hearing any comments and suggestions
>>>>> > that you might have at this stage. Can you imagine that this system may be
>>>>> > useful for your projects? Is the URL specification expressive enough? Are
>>>>> > there other parameters that you would want the API to include?
>>>>> >
>>>>> > If you are interested, I would encourage you to fork the GitHub
>>>>> > repository and contributing!
>>>>> >
>>>>> > Many thanks and all the best,
>>>>> > Raff
>>>>> > _______________________________________________
>>>>> > mei-l mailing list
>>>>> > mei-l at lists.uni-paderborn.de
>>>>> > https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> mei-l mailing list
>>>>> mei-l at lists.uni-paderborn.de
>>>>> https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> mei-l mailing list
>>>> mei-l at lists.uni-paderborn.de
>>>> https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>>>>
>>>
>>>
>>> _______________________________________________
>>> mei-l mailing list
>>> mei-l at lists.uni-paderborn.de
>>> https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>>>
>>
>>
>> _______________________________________________
>> mei-l mailing list
>> mei-l at lists.uni-paderborn.de
>> https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>>
>
>
> _______________________________________________
> mei-l mailing list
> mei-l at lists.uni-paderborn.de
> https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>

_______________________________________________
mei-l mailing list
mei-l at lists.uni-paderborn.de
https://lists.uni-paderborn.de/mailman/listinfo/mei-l



More information about the mei-l mailing list