[MEI-L] revision of content model of <instrumentation>

Roland, Perry D. (pdr4h) pdr4h at eservices.virginia.edu
Thu Sep 17 20:11:15 CEST 2015


Sue me, I lied - this is still bugging me.  :)

I still want to constrain the content of <instrumentation>, but I think I've finally found a better solution.  Changing the model to

ELEMENT instrumentation (ensemble|instrVoiceGrp)*

will validate all the following examples -

Ex 1. Empty
<instrumentation/>

Ex 2. Single named ensemble
<instrumentation>
  <ensemble>Orchestra</ensemble>
</instrumentation>

Ex 3. Any number of enumerated performing groups
<instrumentation>
  <instrVoiceGrp>
    <instrVoice>air guitar</instrVoice>
     <instrVoice>nose flute</instrVoice>
  </instrVoiceGrp>
</instrumentation>

Ex 4. (Axel's example with the soloists wrapped using <instrVoiceGrp>)
<instrumentation>
    <instrVoiceGrp code="on" xml:id="instrVoiceGrp_ce2418ae">
        <instrVoice code="wa" count="2" solo="false" xml:id="instrVoice_35190376">fl.</instrVoice>
        <instrVoice code="wb" count="1" solo="false" xml:id="instrVoice_eb76cb3c">ob.</instrVoice>
        <instrVoice code="wc" count="3" solo="false" xml:id="instrVoice_2a3dad65">cl.</instrVoice>
        <instrVoice code="wd" count="1" solo="false" xml:id="instrVoice_8452f43c">fg.</instrVoice>
        <instrVoice code="ba" count="4" solo="false" xml:id="instrVoice_4af15a73">cor.</instrVoice>
        <instrVoice code="bc" count="2" solo="false" xml:id="instrVoice_b3ce4944">cnt.</instrVoice>
        <instrVoice code="bd" count="2" solo="false" xml:id="instrVoice_6abf5bd6">trb.</instrVoice>
        <instrVoice code="be" count="2" solo="false" xml:id="instrVoice_29d73610">tb.</instrVoice>
        <instrVoice code="pa" count="1" solo="false" xml:id="instrVoice_589f0915">timp.</instrVoice>
        <instrVoice code="pz" count="1" solo="false" xml:id="instrVoice_54e51406">cmplli.</instrVoice>
    </instrVoiceGrp>
    <instrVoiceGrp code="ca" xml:id="instrVoiceGrp_fc8fef4e">
        <head>Choir</head>
        <instrVoice code="va" count="1" xml:id="instrVoice_44c2685b">S.</instrVoice>
        <instrVoice code="vc" count="1" xml:id="instrVoice_ba0dcf90">A.</instrVoice>
        <instrVoice code="vd" count="1" xml:id="instrVoice_205d576b">T.</instrVoice>
        <instrVoice code="vf" count="1" xml:id="instrVoice_95d6fb3b">B.</instrVoice>
    </instrVoiceGrp>
    <instrVoiceGrp>
      <instrVoice code="va" count="1" solo="true" xml:id="instrVoice_069a4d9b">S.</instrVoice>
      <instrVoice code="vd" count="1" solo="true" xml:id="instrVoice_205d8825">T.</instrVoice>
  </instrVoiceGrp>
</instrumentation>

Ex 5. (Axel's example with the entire content wrapped using <instrVoiceGrp>, nested enumerated groups)
<instrumentation>
  <instrVoiceGrp>
    <instrVoiceGrp code="on" xml:id="instrVoiceGrp_ce2418ae">
        <instrVoice code="wa" count="2" solo="false" xml:id="instrVoice_35190376">fl.</instrVoice>
        <instrVoice code="wb" count="1" solo="false" xml:id="instrVoice_eb76cb3c">ob.</instrVoice>
        <instrVoice code="wc" count="3" solo="false" xml:id="instrVoice_2a3dad65">cl.</instrVoice>
        <instrVoice code="wd" count="1" solo="false" xml:id="instrVoice_8452f43c">fg.</instrVoice>
        <instrVoice code="ba" count="4" solo="false" xml:id="instrVoice_4af15a73">cor.</instrVoice>
        <instrVoice code="bc" count="2" solo="false" xml:id="instrVoice_b3ce4944">cnt.</instrVoice>
        <instrVoice code="bd" count="2" solo="false" xml:id="instrVoice_6abf5bd6">trb.</instrVoice>
        <instrVoice code="be" count="2" solo="false" xml:id="instrVoice_29d73610">tb.</instrVoice>
        <instrVoice code="pa" count="1" solo="false" xml:id="instrVoice_589f0915">timp.</instrVoice>
        <instrVoice code="pz" count="1" solo="false" xml:id="instrVoice_54e51406">cmplli.</instrVoice>
    </instrVoiceGrp>
    <instrVoiceGrp code="ca" xml:id="instrVoiceGrp_fc8fef4e">
        <head>Choir</head>
        <instrVoice code="va" count="1" xml:id="instrVoice_44c2685b">S.</instrVoice>
        <instrVoice code="vc" count="1" xml:id="instrVoice_ba0dcf90">A.</instrVoice>
        <instrVoice code="vd" count="1" xml:id="instrVoice_205d576b">T.</instrVoice>
        <instrVoice code="vf" count="1" xml:id="instrVoice_95d6fb3b">B.</instrVoice>
    </instrVoiceGrp>
    <instrVoice code="va" count="1" solo="true" xml:id="instrVoice_069a4d9b">S.</instrVoice>
    <instrVoice code="vd" count="1" solo="true" xml:id="instrVoice_205d8825">T.</instrVoice>
  </instrVoiceGrp>
</instrumentation>

Ex. 6 Named ensemble + enumerated (nested) groups
<instrumentation>
  <ensemble>Orchestra</ensemble>
  <instrVoiceGrp>
    <head>Weird collection o' players</head>
    <instrVoice>air guitar</instrVoice>
    <instrVoice>nose flute</instrVoice>
    <instrVoiceGrp count="1">
      <instrVoice>tambourine</instrVoice>
      <instrVoice>autoharp</instrVoice>
    </instrVoiceGrp>
  </instrVoiceGrp>
</instrumentation>

Ex. 7 Multiple named ensembles
<instrumentation>
  <ensemble>Band</ensemble>
  <ensemble>Orchestra</ensemble>
  <ensemble>Steel Band</ensemble>
</instrumentation>

If anyone can demonstrate problems with this model, please let me know.

--
p.


From: mei-l [mailto:mei-l-bounces at lists.uni-paderborn.de] On Behalf Of Roland, Perry D. (pdr4h)
Sent: Wednesday, September 16, 2015 3:57 PM
To: Music Encoding Initiative
Subject: Re: [MEI-L] revision of content model of <instrumentation>

Hi Axel,

I think you've got it.  Another layer of nesting using an outer <instrVoiceGrp> isn't necessary.  I would recommend that you use <head> within all the <instrVoiceGrp> elements, not just the one for the Choir.  You could also group the soloists, but it's not required, I'm just being foolishly consistent.  :)

Looking more carefully, I now think the current model for <instrumentation> can't really be improved, since all my so-called "improvements" result in not being able to handle works for a standard ensemble (e.g., orchestra) and an enumerated list of performers (for example, air guitar, nose flute, tambourine and autoharp, where one player uses 2 instruments) -

<instrumentation>
  <ensemble>Orchestra</ensemble>
  <instrVoiceGrp>
    <head>Weird collection o' players</head>
    <instrVoice>air guitar</instrVoice>
    <instrVoice>nose flute</instrVoice>
    <instrVoiceGrp count="1">
      <instrVoice>tambourine</instrVoice>
      <instrVoice>autoharp</instrVoice>
    </instrVoiceGrp>
  </instrVoiceGrp>
</instrumentation>

Sorry for the unnecessary thrashing,

--
p.


From: mei-l [mailto:mei-l-bounces at lists.uni-paderborn.de] On Behalf Of Axel Teich Geertinger
Sent: Wednesday, September 16, 2015 9:03 AM
To: Music Encoding Initiative
Subject: Re: [MEI-L] revision of content model of <instrumentation>

Hi Perry

I use several elements within <instrumentation> very often. I haven't been using <ensemble>, though.
But in a cantata like this one: http://www.kb.dk/dcm/cnw/document.xq?doc=cnw0113.xml , I have the following to define an orchestra, a choir and vocal soloists:

<instrumentation>
    <instrVoiceGrp code="on" xml:id="instrVoiceGrp_ce2418ae">
        <instrVoice code="wa" count="2" solo="false" xml:id="instrVoice_35190376">fl.</instrVoice>
        <instrVoice code="wb" count="1" solo="false" xml:id="instrVoice_eb76cb3c">ob.</instrVoice>
        <instrVoice code="wc" count="3" solo="false" xml:id="instrVoice_2a3dad65">cl.</instrVoice>
        <instrVoice code="wd" count="1" solo="false" xml:id="instrVoice_8452f43c">fg.</instrVoice>
        <instrVoice code="ba" count="4" solo="false" xml:id="instrVoice_4af15a73">cor.</instrVoice>
        <instrVoice code="bc" count="2" solo="false" xml:id="instrVoice_b3ce4944">cnt.</instrVoice>
        <instrVoice code="bd" count="2" solo="false" xml:id="instrVoice_6abf5bd6">trb.</instrVoice>
        <instrVoice code="be" count="2" solo="false" xml:id="instrVoice_29d73610">tb.</instrVoice>
        <instrVoice code="pa" count="1" solo="false" xml:id="instrVoice_589f0915">timp.</instrVoice>
        <instrVoice code="pz" count="1" solo="false" xml:id="instrVoice_54e51406">cmplli.</instrVoice>
    </instrVoiceGrp>
    <instrVoiceGrp code="ca" xml:id="instrVoiceGrp_fc8fef4e">
        <head>Choir</head>
        <instrVoice code="va" count="1" xml:id="instrVoice_44c2685b">S.</instrVoice>
        <instrVoice code="vc" count="1" xml:id="instrVoice_ba0dcf90">A.</instrVoice>
        <instrVoice code="vd" count="1" xml:id="instrVoice_205d576b">T.</instrVoice>
        <instrVoice code="vf" count="1" xml:id="instrVoice_95d6fb3b">B.</instrVoice>
    </instrVoiceGrp>
    <instrVoice code="va" count="1" solo="true" xml:id="instrVoice_069a4d9b">S.</instrVoice>
    <instrVoice code="vd" count="1" solo="true" xml:id="instrVoice_205d8825">T.</instrVoice>
</instrumentation>

Is that a misunderstanding of the concept? How would you organize this instrumentation? By another layer of nesting <instrVoiceGrp> and <instrVoice> elements?

Best,
Axel

Fra: mei-l [mailto:mei-l-bounces at lists.uni-paderborn.de] På vegne af Roland, Perry D. (pdr4h)
Sendt: 15. september 2015 23:00
Til: mei-l at lists.uni-paderborn.de<mailto:mei-l at lists.uni-paderborn.de>
Emne: [MEI-L] revision of content model of <instrumentation>


Hello everyone,

This is pretty arcane stuff, so I expect that it will only be of interest to those who are deeply involved in creating detailed metadata regarding instrumentation, especially from MARC-encoded metadata.  Consider yourself warned.  :)

The current model of <instrumentation> is very lax in order to allow liberal mixing of ensemble, instrVoice, and instrVoiceGrp elements -

<content>
  <rng:zeroOrMore>
    <rng:ref name="model.headLike"/>
  </rng:zeroOrMore>
  <rng:zeroOrMore>
    <rng:choice>
      <rng:ref name="ensemble"/>
      <rng:ref name="instrVoice"/>
      <rng:ref name="instrVoiceGrp"/>
    </rng:choice>
  </rng:zeroOrMore>
</content>

My original thinking on this was that a very loosely structured model would be helpful if <instrumentation> were ever allowed to occur with the textual parts of MEI, say in <p>.  However, I believe that it is unlikely that <ensemble> will ever occur in the presence of the other two possibilities.  Therefore, unless someone can prove my hunch to be incorrect, I'm inclined to allow only one sub-element to be used at a time -

<content>
  <rng:zeroOrMore>
    <rng:ref name="model.headLike"/>
  </rng:zeroOrMore>
  <rng:optional>
    <rng:choice>
      <rng:ref name="ensemble"/>
      <rng:ref name="instrVoice"/>
      <rng:ref name="instrVoiceGrp"/>
    </rng:choice>
  </rng:optional>
</content>

Using this approach, one can use <ensemble> to encode the name of a performing group, like "orchestra" or use <instrVoiceGrp> to enumerate the parts/players of the group, but not both.

However, this change re-focuses attention on the relationship between <ensemble> and <instrVoice> - possibly a distinction without a difference, as the expected content of both is text and both provide the same attributes (att.authorized and att.coded) for connecting the textual content to an authorized list.  With this in mind, it might be beneficial to modify the content model even further -

<content>
  <rng:zeroOrMore>
    <rng:ref name="model.headLike"/>
  </rng:zeroOrMore>
  <rng:optional>
    <rng:choice>
      <rng:ref name="instrVoice"/>
      <rng:ref name="instrVoiceGrp"/>
    </rng:choice>
  </rng:optional>
</content>

eliminating <ensemble> entirely.  The problem with this solution is that some confusion may be created as "instrVoice" doesn't immediately spring to mind as a way to name an ensemble.  Conversely, the "Grp" part of the name "instrVoiceGrp" may lead the unwary into thinking that it can be used to *label* an ensemble, when in fact it should be used to *describe* an ensemble.

So, I'm looking for advice on how to resolve this quandary - a model that's too lax vs. a model that's more tightly controlled but with elements that are not completely descriptive of the material we're trying to encode.  At this point, I'm leaning toward the most restrictive model.

Is everyone OK with using <instrVoice>Band</instrVoice> to name an ensemble without enumerating its constituents and using

<instrVoiceGrp>
  <head>Band</head>
  <instrVoice>Flutes</instVoice>
  <instrVoice>Clarinets</instrVoice>
  etc.

to provide detailed instrumentation when needed?  Also, has anyone created markup that this change would break?

Thanks for your input,

--
p.

________________________________
Perry Roland
University of Virginia
P. O. Box 400874
Charlottesville, VA, 22904
434-982-2702 (w)
pdr4h (at) virginia (dot) edu

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.uni-paderborn.de/pipermail/mei-l/attachments/20150917/c0baf462/attachment.html>


More information about the mei-l mailing list