[MEI-L] How to distinguish different instruments in the <staffDef> and <staffGrp> elements

Hans Vereyken hans at neoscores.com
Fri May 22 14:01:33 CEST 2015


I think this problem can be tackled with an @players. @players can be an
attribute of staffGrp and means that the content is played by x
player(s)/instrument(s). It defaults to the amount of staves in the group.
The @players can also be an attribute of staffDef and means that the staff
is performed by x player(s)/instrument(s). It defaults to 1;
@players is required if it's isn't default.

Would this be possible?

Hans Vereyken
*Developer*

M hans op neoscores.com
T +32 472 52 75 59

neoScores BVBA <http://www.neoscores.com/> // Pluyseghemstraat 19, BE-2550
Kontich // Twitter: @neoscores
/////////////////////////////////////////////////////////////////////////////////////////////////////

Follow us on: Facebook <http://www.facebook.com/neoscores> // Twitter
<http://twitter.com/neoscores>

On 22 May 2015 at 13:34, Andrew Hankinson <andrew.hankinson op mail.mcgill.ca>
wrote:

>
> Notating multiple parts on one staff can be done with the layerDef, looks
> good, thanks.
>
> one part on multiple staves is a bit trickier, but can still be done. You
> can use the @staff and @layer attributes on events (chords, notes, rests)
> to "assign" that event to a particular staff and/or layer.
>
> One part on multiple staves is a very common thing (I'm a professional
> pianist) and shouldn't be 'a bit trickier'. Besides I'm working on reading
> files, not creating them. I didn't look through all the MEI examples but
> this far I didn't found a single example demonstrating this technique.
> Ruling out all files who don't follow this technique would be a massive
> mistake.
>
>
> I didn't mean to suggest that it's uncommon; I just meant that within the
> confines of XML, dealing with overlapping or crossing hierarchies requires
> a bit of extra semantics. The link I sent you to the cross-staff example
> should be able to give you a start on dealing with cross-staff notation.
>
>
>
> Follow us on: Facebook <http://www.facebook.com/neoscores> // Twitter
> <http://twitter.com/neoscores>
>
> On 22 May 2015 at 09:54, Andrew Hankinson <andrew.hankinson op mail.mcgill.ca
> > wrote:
>
>>
>> On May 22, 2015, at 9:16 AM, Hans Vereyken <hans op neoscores.com> wrote:
>>
>> Hi Andrew,
>>
>> I see, my subject title is a bit confusing, better would be: How to
>> distinguish different players in the <staffDef> and <staffGrp> elements.
>>
>> "If you have two different staves, these are two different players,
>> regardless of the label (a left and a right hand on a piano could be
>> thought of as two different "players" since they're playing two separate
>> parts)."
>> I strongly disagree on that, it is played by a single player and it is a
>> single part. This is even more clear if you think about harp parts,
>> (very often) one 'voice' (strangely called 'layers' in MEI) traveling
>> across 2 staves.
>>
>>
>> But they are independent lines. In theory, you could have two one-handed
>> people playing a piano and it would make no practical difference. :) The
>> voice/layer nomenclature in MEI comes from a desire to separate a melodic
>> line from any idea of "voice leading." (i.e., not wanting to confuse the
>> practical separation of independent instrument lines from the
>> music-theoretical notions of harmonic and melodic progression).
>>
>> Another problem is cross staff notes, in your opinion these are the same
>> as something that would be called 'cross part notes' (since each staff is a
>> part). Think about it, 'cross part notes'... I don't even know any
>> contemporary composer who did this.
>> I think this information should be added to the MEI format, and I think
>> it can be done with an attribute in the staffGrp element indicating that
>> all staves in that group are performed by one player/instrument (or group
>> of players, eg, 1st Violin).
>>
>>
>> Sorry, I'm still not clear on what you are asking. Have you looked at the
>> @instr attribute on staffGrp? Is this what you are looking for? Or is it
>> something else?
>>
>> This way you can keep numbering the staves top to bottom  for the whole
>> score, but it's clear which staves are played by the same player/instrument
>> and should be grouped together when playing around with parts.
>> I agree that it needs to be possible to hide a single staff in a part
>> with multiple staves, but semantically spoken it's a big difference with
>> hiding a part.
>>
>>
>> Would the `layerDef` mechanism help clear this up? You can define a
>> specific layer to correspond to a specific voice, in the same way you can
>> define a specific staffDef to define a specific staff. Then you can trace a
>> specific layer ("voice") throughout the work, having pre-defined it in your
>> scoreDef/staffDef block.
>>
>> For an example, see the Ponchielli_LarrivoDelRe.mei file, where you have
>> the percussion instruments on a single staff:
>>
>> <staffDef n="18" xml:id="P18" label="Batteria" label.abbr="Batt."
>> lines="1" clef.shape="perc" key.sig="4f" key.mode="major" spacing="117">
>>   <layerDef n="1">
>>     <instrDef n="Snare_Drum" xml:id="P18-X2"/>
>>   </layerDef>
>>   <layerDef n="2">
>>     <instrDef n="Bass_Drum" xml:id="P18-X1"/>
>>   </layerDef>
>> </staffDef>
>>
>> and then in the body (for example):
>>
>> <staff n="18">
>>    <layer n="1">
>>       <beam>
>>          <note xml:id="d1e1818" pname="f" oct="4" dur="16" stem.dir="up"
>>             instr="#P18-X2" pnum="61"/>
>>          <note xml:id="d1e1837" pname="f" oct="4" dur="16" stem.dir="up"
>>             instr="#P18-X2" pnum="61"/>
>>       </beam>
>>    </layer>
>>    <layer n="2">
>>       <rest xml:id="d1e1859" dur="8"/>
>>    </layer>
>> </staff>
>>
>>
>> At the same time it would be great to have another attribute in the
>> staffDef element indicating that this staff is performed by multiple
>> players, for instance 1st and 2nd Violins are notated as 1st and 2nd voice
>> (again, called layers in MEI). This would be very helpfull in reading some
>> chorus score's to (in the MEI examples this would clear up different parts
>> in Altenburg_Macht_auf_die_Tor).
>>
>>
>> I think the layerDef mechanism will help here too.
>>
>>
>> To be sure we are talking about the same:
>> - staff: needed to notate music
>> - part: music performed by a single player/instrument
>>
>> One part can be notated on multiple staves, multiple parts can be notated
>> on a single staff. For me part is definitely not the same as staff.
>>
>>
>> Multiple parts on a single staff is pretty easy; one part on multiple
>> staves is a bit trickier, but can still be done. You can use the @staff and
>> @layer attributes on events (chords, notes, rests) to "assign" that event
>> to a particular staff and/or layer.
>>
>> See: http://www.verovio.org/examples/features/cross-staff.mei for an
>> example of how this might work (and
>> http://www.verovio.org/features.xhtml?id=cross-staff for a sample
>> rendering).
>>
>>
>> Thanks
>> Hans
>>
>> Hans Vereyken
>> *Developer*
>>
>> M hans op neoscores.com
>> T +32 472 52 75 59
>>
>> neoScores BVBA <http://www.neoscores.com/> // Pluyseghemstraat 19,
>> BE-2550 Kontich // Twitter: @neoscores
>>
>> /////////////////////////////////////////////////////////////////////////////////////////////////////
>>
>> Follow us on: Facebook <http://www.facebook.com/neoscores> // Twitter
>> <http://twitter.com/neoscores>
>>
>> On 22 May 2015 at 00:58, Andrew Hankinson <
>> andrew.hankinson op mail.mcgill.ca> wrote:
>>
>>> Hi Hans,
>>>
>>> Welcome to MEI!
>>>
>>> Are you looking for the equivalent of the MIDI instrument that would
>>> perform these parts? Or something else?
>>>
>>> If you have two different staves, these are two different players,
>>> regardless of the label (a left and a right hand on a piano could be
>>> thought of as two different "players" since they're playing two separate
>>> parts). If you have a staff that is "hidden" (for example, if you have an
>>> instrument that does not play on certain pages) you still need to define
>>> the staff and give it a number. This number should be constant throughout
>>> the score. If it does not play in a specific place, it will simply not
>>> appear in the measure (as far as I understand it).
>>>
>>> If you're in a renderer and you want to switch all the "n=2" parts off,
>>> then, you would simply hide it whenever you have <staff n="2" ...>. The "2"
>>> does not refer to the second staff on any given page; rather, it refers to
>>> the second staff defined in a score, regardless of whether it appears or
>>> not.
>>>
>>> -Andrew
>>>
>>> > On May 21, 2015, at 4:26 PM, Hans Vereyken <hans op neoscores.com> wrote:
>>> >
>>> > Hi,
>>> >
>>> > This is my first post to the MEI mailing list.
>>> > I'm implementing MEI into our music renderer and am having trouble
>>> getting all the info I need about staves.
>>> >
>>> > I searches the documentation and mail archives for answers but wasn't
>>> able to find what I'm looking for.
>>> >
>>> > So each staff is declared seperatly, with the <staffGrp> certain
>>> groups and there symbols are declared. Although a brace usually means that
>>> the staves within are the same player (e.g. piano brace), it is not enough
>>> to be sure of it.
>>> >
>>> > In the example files I looked at 'Altenburg_Ein_feste_Burg', the
>>> relevant xml:
>>> >
>>> >                         <scoreDef meter.count="4" meter.unit="4"
>>> meter.sym="common" key.sig="0" key.mode="major">
>>> >                             <staffGrp>
>>> >                                 <staffGrp symbol="brace"
>>> barthru="true">
>>> >                                     <staffDef n="1" clef.line="2"
>>> clef.shape="G" key.sig="0" lines="5" label="Trompete 1" label.abbr="Tr 1"/>
>>> >                                     <staffDef n="2" clef.line="2"
>>> clef.shape="G" key.sig="0" lines="5" label="Trompete 2" label.abbr="Tr 2"/>
>>> >                                     <staffDef n="3" clef.line="2"
>>> clef.shape="G" key.sig="0" lines="5" label="Trompete 3" label.abbr="Tr 3"/>
>>> >                                 </staffGrp>
>>> >                                 <staffGrp symbol="bracket"
>>> barthru="true">
>>> >                                     <staffDef n="4" clef.shape="G"
>>> clef.dis="8" clef.dis.place="below" clef.line="2" label="Pos1 Tro 4"
>>> key.sig="0" label.abbr="P 1 Tr 4" lines="5"/>
>>> >                                     <staffDef n="5" clef.line="4"
>>> clef.shape="F" lines="5" key.sig="0" label="Posaune 2" label.abbr="Pos 2"/>
>>> >                                     <staffDef n="6" label="Posaune 3"
>>> label.abbr="Pos 3" clef.line="4" clef.shape="F" key.sig="0" lines="5"/>
>>> >                                 </staffGrp>
>>> >                             </staffGrp>
>>> >                         </scoreDef>
>>> >
>>> > and: Chopin_Etude_op.10_no.9:
>>> >
>>> >                         <scoreDef meter.count="6" meter.unit="8"
>>> key.sig="4f" key.mode="minor">
>>> >                             <staffGrp symbol="brace" barthru="true">
>>> >                                 <staffDef n="1" clef.shape="G"
>>> lines="5" clef.line="2"/>
>>> >                                 <staffDef n="2" clef.line="4"
>>> clef.shape="F" lines="5"/>
>>> >                             </staffGrp>
>>> >                         </scoreDef>
>>> >
>>> > So in both cases I have a group of staves with a brace symbol, how
>>> should I know which staves are played by which player.
>>> > I can try to sniff the labels and by guessing the semantic meaning of
>>> 'Trompete 1,2,3' and conclude these has to be 3 different parts. In the
>>> second example this isn't possible, so this won't work (no surprise).
>>> > In a dynamic music renderer, where you can switch parts on/off this is
>>> key information.
>>> >
>>> > How should it be done? Am I missing something?
>>> >
>>> > Thanks in advance!
>>> > Hans Vereyken
>>> > _______________________________________________
>>> > mei-l mailing list
>>> > mei-l op lists.uni-paderborn.de
>>> > https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>>>
>>>
>>> _______________________________________________
>>> mei-l mailing list
>>> mei-l op lists.uni-paderborn.de
>>> https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>>>
>>
>> _______________________________________________
>> mei-l mailing list
>> mei-l op lists.uni-paderborn.de
>> https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>>
>>
>>
>> _______________________________________________
>> mei-l mailing list
>> mei-l op lists.uni-paderborn.de
>> https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>>
>>
> _______________________________________________
> mei-l mailing list
> mei-l op lists.uni-paderborn.de
> https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>
>
>
> _______________________________________________
> mei-l mailing list
> mei-l op lists.uni-paderborn.de
> https://lists.uni-paderborn.de/mailman/listinfo/mei-l
>
>
------------- volgend deel ------------
Een HTML-bijlage is gescrubt...
URL: <http://lists.uni-paderborn.de/pipermail/mei-l/attachments/20150522/19779bde/attachment.html>


More information about the mei-l mailing list