[MEI-L] How to distinguish different instruments in the <staffDef> and <staffGrp> elements
Hans Vereyken
hans at neoscores.com
Tue May 26 15:57:10 CEST 2015
Hi Andrew and Laurent,
@Andrew: Yes! thats what I'm after!
So now I can see how I can read it (if the information is there). I'm a
bit surprised by location of this information in an mei file. I think
this information shouldn't be in the meta-data part of the file, this is
content, I expected to find this info somewhere inside the 'music'
element. I clicked trough some example files and found that the @instr
and @instrGrp aren't used, so I'm still stuck. I know now how a file can
be created in a way this info is clear, but I'm interesting in reading
files. And I'm still confident this info should (also) be inside the
music element, it's semantical data, not meta-data.
So I think it would be good to have a system to make this more clear.
And to rule out any ambiguity this system should be required for any
part using more than one staff.
@Laurent: yes! would be great, but like I said above, I think this
actually isn't meta-data. And Also, this @instr in <layerDef> and
<staffDef> should be required if a part isn't one whole staff.
Thanks!
Hans
On 2015-05-26 10:48, Laurent Pugin wrote:
> Hi Andrew and Hans,
>
> This makes sense to me. I guess you would also need to have @instr in
> <layerDef> when there is more than one instrument represented in one
> staff, wouldn't you?
>
> Laurent
>
> On Tue, May 26, 2015 at 12:56 AM, Andrew Hankinson
> <andrew.hankinson op mail.mcgill.ca
> <mailto:andrew.hankinson op mail.mcgill.ca>> wrote:
>
> I think I know what you're trying to do: You're trying to ensure
> that a part that gets extracted to the right amount of staves,
> correct? That, given an ensemble work that features a piano, your
> software does not try to extract two different parts for the right
> and left hands of the piano. Correct?
>
> I believe what you are looking for is in the <instrumentation>,
> <ensemble>, <instrVoice> and <instrVoiceGrp> cluster of tags.
> <instrVoice> contains @count which indicates the number of
> performers.
>
> http://www.music-encoding.org/documentation/guidelines2013/instrVoice
>
> Looking this over I might suggest to move @instr out of the MIDI
> module and specify that it should point to an <instrVoice>
> element, and perhaps do the same and have @instrGrp / <instrGrp>
> pairs as well. That way you could do:
>
> <instrumentation>
> <instrVoiceGrp n="1">
> <instrVoice n="1" code="sa">Violin I</instrVoice>
> <instrVoice n="2" code="sa">Violin II</instrVoice>
> <instrVoice n="3" code="sb">Viola</instrVoice>
> <instrVoice n="4" code="sc">Violoncello</instrVoice>
> </instrGrp>
> <instrVoice n="6" code="pf" count="1">Piano</instrVoice>
> </instrumentation>
>
> And then:
>
> <staffGrp instrGrp="1"> ... </staffGrp>
> <staffGrp instr="6">
> <staffDef> ...treble staff... </staffDef>
> <staffDef> ...bass staff... </staffDef>
> </staffGrp>
>
> The other possibility to move instrGrp/instrDef out of the MIDI
> module and have them replace instrVoiceGrp/instrVoice.
>
> Anyone else out there have any ideas?
>
> -Andrew
>
>> On May 22, 2015, at 8:01 AM, Hans Vereyken <hans op neoscores.com
>> <mailto:hans op neoscores.com>> wrote:
>>
>> 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 <mailto:hans op neoscores.com>
>> T +32 472 52 75 59 <tel:%2B32%20472%2052%2075%2059>
>>
>> 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
>> <mailto: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
>>> <mailto:andrew.hankinson op mail.mcgill.ca>> wrote:
>>>
>>>
>>>> On May 22, 2015, at 9:16 AM, Hans Vereyken
>>>> <hans op neoscores.com <mailto: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 <mailto:hans op neoscores.com>
>>>> T +32 472 52 75 59 <tel:%2B32%20472%2052%2075%2059>
>>>>
>>>> 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
>>>> <mailto: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 <mailto: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
>>>> <mailto: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
>>>> <mailto: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
>>>> <mailto: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
>>> <mailto: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
>>> <mailto: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
>> <mailto: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 <mailto: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 <mailto: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/20150526/0c870a87/attachment.html>
More information about the mei-l
mailing list