[MEI-L] Music Addressability API draft

Roland, Perry D. (pdr4h) pdr4h at eservices.virginia.edu
Wed Nov 12 11:49:32 CET 2014


It seems to me that there are at least 2 intertwined issues here.  One is how to specify the logical and visual endpoints of a control event; that is, a feature that uses @tstamp2.  Another is what values @tstamp2 ought to allow.  Yet another is the question of "addressability".

On issue 1 Laurent wrote:

> With @tstamp2, we could recommend to have 
> 
> <hairpin tstamp="1" tstamp2="0m+3"/>
> 
> if the hairpin stops before the barline and
> 
> <hairpin tstamp="1" tstamp2="1m+1"/>
>
> if it stops after right before the first note of the next measure as
> in the attachement. Then further adjustments can be done with @ho.

This is the precisely how I think tstamp2 should be used.  Assuming the first example is in 2/4, "0m+3" would be at the barline.  The second hairpin would end on beat 1 of the following measure.  Visually, however, both hairpins should terminate just before their "logical" endpoints.  This is consistent with the way most musicians understand hairpins (as other things with the tstamp2 attribute) -- a hairpin is in effect until the next beat or fraction of a beat following its visual end.  This accommodates any marking (such as a forte dynamic marking) that might occur directly on the logical beat (on beat 1 in the 2nd example).  I believe this is what Raffaele was referring to by saying he would allow the rendering engine to make decisions about the visual placement of the endpoint of the hairpin.  This spacing between the logical end of the hairpin and its visual end should be specified in the configuration of the renderer.

@ho is relative to this ending value.  So, 

tstamp="0m+3" ho="-1.2"

indicates termination at the barline, but visually moved "backward" 1.2 virtual units (remember a virtual unit is 1/2 the distance between staff lines).  The only question for me is whether the "default" behavior of allowing some space between the visual ending of the feature and its logical ending is or is not accounted for in this case.  I think it is not; that is, the @ho value "overrides" the amount of space the rendering engine would normally leave between the end of the hairpin and the terminal beat. Note that the value of @ho can be positive or negative, allowing one to move the endpoint forward or backward.

Point 2:
I'm not opposed to somehow allowing fractions within data.BEAT, but if we make our position on Point 1 clear, then I don't see the need for it, since "1.3" is just another way of writing "1+1/3".  I don't think we should be concerned with round-off error since the decimal part of "1.3" is intended to indicate a fractional part of the beat; that is, one can write "1.333" or "1.3" or "1+1/3", but all three mean the location of the 2nd note of a triplet beginning on beat 1, in other words, a musical value, not a visual one.  @tstamp2 *should only* refer to the "logical" endpoint. @ho should be used to move the visual endpoint.  This contradicts my own earlier thinking and Johannes' suggestion to use "4.999" to encode a hairpin stopping just before the beat.  I believe this erroneously conflates the logical and visual endpoints.

Does this help clarify things?  Am I missing something?

I will delay comment on addressability until later.  It's dinner time in Kunming.  :-)

--
p.


__________________________
Perry Roland
Music Library
University of Virginia
P. O. Box 400175
Charlottesville, VA 22904
434-982-2702 (w)
pdr4h (at) virginia (dot) edu
________________________________________
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 1:54 PM
To: Music Encoding Initiative
Subject: Re: [MEI-L] Music Addressability API draft

>>
>> Another way of representing this could be to have something like a
>> @timespan to encode the extend of the event.
>
>
> I wonder if this would really be more expressive than tstamp2... There is
> some advantage in switching the context to the "landing" measure; it seems
> more intuitive to me to determine the beat relatively to the time signature
> at the measure where the event stops.
>

Changing to a @tispan could still mean that the time signature of the
measure where it ends has to be taken into account. But I agree it
does not necessary change much. What is probably bugging me is the use
of the sign "+" together with the fact that is is 1-based. It seems
confusing to says 1m+1 where actually +1 adds nothing. Another sign
(e.g., /) would be clearer, I think: "1m/1", or making it 0-based.
This might look like a detail, but I think it creates a lot of
confusion and it might very well be one reason for the discussion
here. If this cannot be changed it certainly requires some
clarification.

> Re: Behind Bars p. 105, I'm conflicted on whether that should be something
> left to a rendering system (or @ho). I would be tempted to encode that as
> extending to the forte on beat 1 with @tstamp2="1m+1" and leave it to a
> rendering system to figure out whether it needs to stop before the barline
> or not. That would be my interpretation of the semantics there and my
> encoding would reflect that. I would use @ho to specify relative positions
> if I want to be specific with the intended output. What do you think?

I am not sure how to encode this with @ho. The problem is an offset to
what? We can have many things at the beginning for the measure before
the first note (clef, key signature, etc.), so it seems difficult to
use offsets for this, but maybe I am overlooking something. This is
why I thought that having two ways of encoding an event with the same
duration could be of some help (not necessary for rendering, but also
for encoding how this is in a source). With @tstamp2, we could
recommend to have

<hairpin tstamp="1" tstamp2="0m+3"/>

if the hairpin stops before the barline and

<hairpin tstamp="1" tstamp2="1m+1"/>

if it stops after right before the first note of the next measure as
in the attachement. Then further adjustments can be done with @ho. Is
this what you are saying? Or would you use only the second approach
even we it stops before the barline?

>
> (For those who don't have Behind Bars or don't want to go grab the book from
> the high shelf, I'm attaching a version of the Behind Bars example
> re-typeset in MuseScore - I hope it makes it because I don't remember if the
> list allows attachments)

Thanks!

>
> On the other hand, I wouldn't be opposed to allowing fractions in the
> datatype. It could be useful.

Good.
>
>>
>> I haven't had the time to look at the EMA repository yet, but this
>> looks quite useful!
>
>
> Thanks! I look forward to your comments if you have any :)

Yes: do you think it would be possible to support un-measured music? I
saw that measure is required, and I am not sure how this would work
with MEI where we have /staff directly under /section. Any idea?

Best,
Laurent

>
> Raff
>
>>
>>
>> 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
>
>
>
> _______________________________________________
> 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