Closed davidrizo closed 6 years ago
I have a system for dual-encoding of mensural signs which is similar to the system for dual-encoding of clefs. *oclef
is used like *clef
to indicate the "original clef" that should be used when displaying the notation in mensural form, and likewise for *met
, there is *omet
which indicates how to display the "original mensurations" in the mensural notation.
*met(c)
is used for the modern common-time meter signature, and *met(C)
is used for the C mensuration. But I do not automatically convert between these two, since they are similar but not identical in meaning. Instead I encode the modern and original styles in both the **kern
and **mens
data. This allows for easy transformation between the two displays without having the computer guess what should be done with the mensurations and clefs when converting.
Here is a visual display of *met(c)
and *met(C)
:
Currently the Humdrum-to-MEI converter requires a time signature for the time signature change (but not the initial time signature for some reason).
For clefs, there is the modern clef, such as: *clefG2
for a treble clef (this is standard *kern encoding in Humdrum). If you prefix an "o", this will indicate the "original" clef (of the manuscript/source): `oclefG2. When displaying
*kerndata in modern notation, the
clef` form gets priority:
and when the data is converted to **mens
, priority is given to the *oclef
form:
Pressing alt-c
to compile the filter and display the **mens
data in the VHV editor:
Note that in the **mens
format, if a *oclef
is not found, then any *clef
will be used:
The **kern
data will not default to *oclef
if *clef
is not used. It would be possible to allow this. But the primary purpose of the oclef/clef system was to display scores for the Tasso in Music Project scores in modern notation, but with an optional display of the original clefs by pressing the "o" button in the notation toolbar on work pages such as this:
http://www.tassomusic.org/work/?id=Trm0047a
Clicking on the "o" on the top right side of the notation toolbar causes the music to be displayed in the original clefs:
[Note that the "original" notation shows both a mensuration sign and a time signature. Here is a bug report to verovio to suppress the time signature: https://github.com/rism-ch/verovio/issues/853]
You can see how it is encoded in MEI via this link:
And then pressing alt-m
to view the MEI conversion. Near the start of the music you will see this code:
<app xml:id="app-0000000297977571">
<lem xml:id="lem-0000000653270779" />
<rdg xml:id="rdg-0000000357440679" label="original-clef">
<scoreDef xml:id="scoredef-0000000013330015">
<staffGrp xml:id="staffgrp-0000001514854801">
<staffDef xml:id="staffdef-0000001230742793" clef.shape="C" clef.line="1" mensur.sign="C" mensur.slash="1" n="1" />
<staffDef xml:id="staffdef-0000000404399634" clef.shape="C" clef.line="3" mensur.sign="C" mensur.slash="1" n="2" />
<staffDef xml:id="staffdef-0000001578592168" clef.shape="C" clef.line="4" mensur.sign="C" mensur.slash="1" n="3" />
<staffDef xml:id="staffdef-0000001946511480" clef.shape="F" clef.line="4" mensur.sign="C" mensur.slash="1" n="4" />
</staffGrp>
</scoreDef>
</rdg>
</app>
I am using the variant-control system in MEI to encode the original clefs in a reading called original-clef
. On the Tasso website, I set an option called --app-x-path-query
on the command line or appXPathQuery
in JavaScript. If you display the vrvOptions
variable in the JavaScript console of the web browser on a Tasso work page, you will see the options used to print the score on the page. In this case the options are:
Note that the appXPathQuery
is set to an array of filters, and the xpath filter is ./rdg[contains(@label, 'original-clef')]
. This means to choose the reading with the label original-clef
in the <app>
. If no xpath is given, then the <lem>
(lemma) of the reading is selected by verovio. And in this case the </lem>
is empty since the stadard clef is already being set above the <app>
.
Now on to mensural signs finally :smile:
Like clef/oclef, there is a met/omet system:
And displaying in mensural form:
The met has priority, and then the time signature has second priority:
Removing *met
will cause display of time signature:
And currently omet is never displayed in VHV (but could be displayed using xpath as mentioned above).
Using *met
for a mensuration is a little weird since met
mean meter signature
. But modern meter signatures are a corruption of the mensuration system, so I expanded the same abbreviation to handle mensuration signs. *men()
could be used to specify the subdivisions of each rhythmic level, such as *men(2,2)
for *met(C)
and *men(3,3)
for met(O.)
(three subdivisions of the breve and three for the semibreve).
When compiling the kern2mens filter, should the met(c) be converted into met(C)?