-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Export of @trans.diat/@trans.semi not correct? #194
Comments
This is interesting. It looks like the actual values for |
Yes, exactly, only the Glockenspiel converts a little more strangely. |
Glockenspiel has a two octave transposition down for the written score. Often the transposition is wrong in Sibelius unless the person explicitly added a glockenspiel instrument, since octave transpositions are easy to overlook. I suspect that there is a separate attribute in Sibelius for transposing by octave, or there is an additional octave adjustment for the transposition. For example, a B-flat bass clarinet should be written up a major 9th (octave + a major 2nd), so that would be a good test instrument to see which of the two cases is happening. |
Related:
|
I'm trying to remember this -- I think what happens is that you have to choose between the encoding being correct (e.g., the notes are encoded in the correct octave) but visually incorrect (leger lines) OR the visual appearance as correct, but without the correct octave. Your MusicXML export may look correct, but it's incorrect in its encoding -- As @craigsapp says, the glockenspiel plays in the 7th octave, not the 5th. It also loses any indication that it's a transposing instrument in the staffdef of the MusicXML file. How are you rendering the MEI file? Is it possible that Verovio doesn't understand the trans.diat and trans.semi attributes? If it did, it could automatically adjust the rendering of the notes to have the correct visual display while still keeping the correct encoding. |
@ahankinson thanks for clarifying. So, the Glockenspiel in the sib-->musicXml-->MEI file lacks <transpose>
<diatonic>0</diatonic>
<chromatic>0</chromatic>
<octave-change>2</octave-change>
</transpose> This should be imported by Verovio. I will raise an issue there.
No, it does understand them. When exporting the MEI to MIDI, the sounded pitches are adapted using the |
I'm still not sure how you are rendering the first example (the one with the Glockenspiel on the ledger lines). Sibelius doesn't do MEI import, so it must be Verovio? Or am I missing something? |
@wergo At least according to the Reference Book, |
Yes, I am using Verovio for both renderings. The first one from sibMEI export; the second one through musicXML. |
Yes, Verovio correctly imports |
We have nothing directly comparable in MEI for |
But the main issue here is with SibMEI, isn't it? |
Yes, absolutely. |
So what should the value of |
Sibmei exports sounding pitch(*). Sibelius is distinguishing between "sounding (concert) pitch" and "transposed pitch". But "sounding pitch" or "non-transposing" is not fitting terminology here because both modes are in fact transposing – as is the case for the default Glockenspiel: Written middle C would have to sound as C4 to be truly non-transposing. In lack of a better term, let me use the slightly less non-fitting term "concert pitch". What would be the right things to do IMO:
(*)At least mostly. When there are |
|
... or |
The argument being that the note is, independent of sounding or written, functionally in the 7th octave (as in, any other note written in the 6th octave in another voice, the note sounds in the octave above, rather than in the octave below). |
That's not how I read the specification of Also, |
Yes, what @th-we said. MEI usually encodes written pitch (for transposing scores) and then transposes the data when creating MIDI (or to create a sounding score). Humdrum usually encodes the sounding pitch, and then transposition is applied to get the written pitch. Here is an example where there are four instruments that have the same written pitch, but different sounding pitches: Notation generated with verovio: Click to view MEI translation of the Humdrum score<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/dev/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="5.0.0-dev">
<meiHead>
<fileDesc>
<titleStmt>
<title />
</titleStmt>
<pubStmt />
</fileDesc>
<encodingDesc>
<appInfo>
<application isodate="2022-03-22T08:08:39" version="3.10.0-dev-fe12a79-dirty">
<name>Verovio</name>
<p>Transcoded from Humdrum</p>
</application>
</appInfo>
</encodingDesc>
<workList>
<work>
<title />
</work>
</workList>
</meiHead>
<music>
<body>
<mdiv xml:id="mstyh00">
<score xml:id="s2joi6o">
<scoreDef xml:id="spxm7rt" midi.bpm="400.000000">
<staffGrp xml:id="sthqxdc" symbol="bracket">
<staffDef xml:id="sfnmos5" n="1" lines="5" trans.diat="14.000000" trans.semi="24.000000">
<label xml:id="label-L2F4">Glockenspiel</label>
<clef xml:id="ccx9j9c" shape="G" line="2" />
</staffDef>
<staffDef xml:id="sboimly" n="2" lines="5" trans.diat="7.000000" trans.semi="12.000000">
<label xml:id="label-L2F3">Piccolo</label>
<clef xml:id="czfolgn" shape="G" line="2" />
</staffDef>
<staffDef xml:id="s4yvymz" n="3" lines="5">
<label xml:id="label-L2F2">Cello</label>
<clef xml:id="c2wzprk" shape="G" line="2" />
</staffDef>
<staffDef xml:id="sah313b" n="4" lines="5" trans.diat="-7.000000" trans.semi="-12.000000">
<label xml:id="label-L2F1">Contrabass</label>
<clef xml:id="cx6n2x8" shape="F" line="4" />
</staffDef>
</staffGrp>
</scoreDef>
<section xml:id="section-L1F1">
<measure xml:id="measure-L1">
<staff xml:id="sq32bxj" n="1">
<layer xml:id="layer-L1F4N1" n="1">
<note xml:id="note-L5F4" dur="1" oct="4" pname="c" accid.ges="n" />
</layer>
</staff>
<staff xml:id="sdfoorw" n="2">
<layer xml:id="layer-L1F3N1" n="1">
<note xml:id="note-L5F3" dur="1" oct="4" pname="c" accid.ges="n" />
</layer>
</staff>
<staff xml:id="sl7qv9r" n="3">
<layer xml:id="layer-L1F2N1" n="1">
<note xml:id="note-L5F2" dur="1" oct="4" pname="c" accid.ges="n" />
</layer>
</staff>
<staff xml:id="s9hkwy2" n="4">
<layer xml:id="layer-L1F1N1" n="1">
<note xml:id="note-L5F1" dur="1" oct="4" pname="c" accid.ges="n" />
</layer>
</staff>
</measure>
</section>
</score>
</mdiv>
</body>
</music>
</mei> Preferably MEI would not implement a separate attribute for But one thing in favor of preserving |
NB: The Dolet plugin does a lot for calculating the written pitch. We could use their code as a guide: |
When exporting a little orchestral score from Sibelius (2019 on Mac) with SibMEI (4.0.0), the pitches of the transposing instruments are kept original (i.e., sounding), but the @trans.diat, @trans.semi attributes are in staffDef as if the instruments were notated as transposed.
However, when exporting to MusicXML, it works as expected.
Test Sibelius file (testorchester.sib):
https://drive.google.com/file/d/1zXBOo-tY3s2jVD28olrt4KQX658gt9_c/view?usp=sharing
With SibMEI (Sibelius set to show transposing score):
MEI export through SibMEI:
When exporting to MusicXML, it looks great:
Imported MEI via MusicXML:
The text was updated successfully, but these errors were encountered: