<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">@dis and @dis.place on <octave> capture the amount and direction of the shift.  The application of this to the note level may be accomplished in a couple of ways -- at "run time" by looking
 for the notes affected by the <octave> instruction and applying its parameters or at "encoding time" by transferring/reiterating the octave shift data on each <note> using @oct.ges.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">The same principle applies with regard to transposition: @trans.diat and @trans.semi capture the amount and direction of the transpositional shift and may be specified at the score, staff,
 and layer levels.  The actual sounding pitch of a <note> may be determined at "run time" by modifying the note's pitch (given by @pname, @oct, @accid) or at "encoding time" by storing the results of this calculation in the note's @pname.ges, @oct.ges, and
 @accid.ges attributes.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">I agree that scordatura isn't adequately addressed. I think what's required is @scord.diat and @scord.semi attributes that provide the amount and direction of the detuning.  These attributes
 must be provided at the note level.  The same process can be applied -- the results of the detuning can be calculated at "run time" or calculated and stored in the note's @pname.ges, @oct.ges, and @accid.ges attributes at "encoding time".<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">I think of this process as a formula:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-family:"Calibri","sans-serif"">@pname.ges = @pname + (@trans.diat and @trans.semi) + (@scord.diat and @scord.semi)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">How to address scordatura at a higher level than the note isn't clear to me yet.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">--<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif"">p.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> mei-l [mailto:mei-l-bounces@lists.uni-paderborn.de]
<b>On Behalf Of </b>Craig Sapp<br>
<b>Sent:</b> Monday, March 13, 2017 12:50 PM<br>
<b>To:</b> Music Encoding Initiative<br>
<b>Subject:</b> Re: [MEI-L] sounding vs. written pitch, <octave><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 13 March 2017 at 04:08, Thomas Weber <<a href="mailto:tw@notabit.eu">tw@notabit.eu</a>> wrote:<o:p></o:p></p>
<div id="gmail-:2wn">
<p class="MsoNormal">For <octave> transpositions, it seems to be the convention that the written pitches (ignoring the <octave> line) are encoded.  I suspect that this is not a conscious and well founded decision but "just happened" like that because all the
 exporters/importers (and scorewriters themselves) lazily treat ottava lines as if they were generic lines without pitch related meaning - similar to hairpins, pedal markings etc.<br>
<br>
I think the more useful way of encoding ottava situations would be to encode the actual logical pitch with @pname/@oct - that would be equivalent to the sounding pitch on non-transposing instruments.  In any case, the specs should not leave it open what encoding
 approach to take.<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><br>
Yes, notes encoded under an ottava mark (<octave>) use the written pitch (SCORE-style encoding). For use in verovio, I also give an optional @oct.ges to allow proper generation of MIDI files for the music:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">                <score><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                    <scoreDef xml:id="scoredef-311854"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        <staffGrp xml:id="staffgrp-352709"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                            <staffDef xml:id="staffdef-922725" clef.shape="G" clef.line="2" meter.count="4" meter.unit="4" n="1" lines="5" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        </staffGrp><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                    </scoreDef><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                    <section xml:id="section-0000001991177130"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        <measure xml:id="measure-L3" n="1"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                            <staff xml:id="staff-L3F1N1" n="1"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                <layer xml:id="layer-L3F1N1" n="1"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L4F1" dur="4" oct="5" pname="f" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L5F1" dur="4" oct="5" pname="a" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L6F1" dur="4" oct="5" pname="c" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L8F1" dur="4" oct.ges="6" oct="5" pname="e" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                </layer><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                            </staff><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                            <octave xml:id="octave-0000001759794455" staff="1" startid="#note-L8F1" endid="#note-L13F1" dis="8" dis.place="above" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        </measure><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        <measure xml:id="measure-L9"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                            <staff xml:id="staff-L9F1N1" n="1"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                <layer xml:id="layer-L9F1N1" n="1"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L10F1" dur="4" oct.ges="6" oct="5" pname="g" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L11F1" dur="4" oct.ges="7" oct="6" pname="c" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L12F1" dur="4" oct.ges="6" oct="5" pname="g" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L13F1" dur="4" oct.ges="6" oct="5" pname="e" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                </layer><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                            </staff><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        </measure><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        <measure xml:id="measure-L15" right="end"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                            <staff xml:id="staff-L15F1N1" n="1"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                <layer xml:id="layer-L15F1N1" n="1"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L16F1" dur="4" oct="6" pname="c" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L17F1" dur="4" oct="5" pname="a" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                    <note xml:id="note-L18F1" dur="4" oct="5" pname="f" accid.ges="n"/><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                </layer><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                            </staff><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        </measure><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                    </section><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                </score><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Here is the visual rendering (if images are allowed inline in the message):<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><img border="0" width="516" height="108" id="_x0000_i1025" src="cid:image002.png@01D29C13.EEDC4390" alt="Inline images 1"><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If I did not add @oct.ges to the notes, then the <octave> mark would have to be processed to calculate @oct.ges on the notes it applies to before the note's pitch could be converted to MIDI.  The current MDI conversion in verovio does not
 do that, so that is why I add them myself.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I haven't dealt with transposing instruments and ottavas yet, but I would expect @oct.ges (and @pname.ges/@accid.ges) to actually work in the logical written domain rather than the logical sounding domain: the @*.ges for a transposed part
 for a clarinet would reference the transposed pitch rather than the sounding pitch (if there was a transposing directive encoded in the MEI data for the part).  If the true sounding pitch were used in @*.ges, then <octave> and harmonics, then that would get
 messy when you want to change a part from one transposition to another (such as print a clarinet part in B-flat when the original data was in A).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Scordatura causes interesting problems.  This basically changes the instrument into a partially transposing instrument.  And to make it more complicated is that the same written pitch could be transposed or not transposed (depending on
 which string of a violin is playing the written note, for example).  For scordatura, there should be a local transposition attribute on the <note> level.  To get the sounding pitch of a note, and @*.ges information would be the logical pitch (tied to the written
 pitch) which then would be unpacked first by doing the scordatura transposition local on the note, and then the global transposition for the part.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Brass instrumental parts would add a minor complication (particularly French horn), since the transposition is not necessarily global for the <score> but rather for <section>s.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Humdrum **kern data takes the exact opposite approach, always encoding the sounding pitch.  Then modifiers can be added to the data to work backward to the written pitch.  Here is the Humdrum encoding of the same music:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">**kern<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">*M4/4<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">=1-<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4ff<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4aa<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4cc<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">*8va<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4eee<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">=2<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4ggg<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4cccc<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4ggg<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4eee<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">*X8va<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">=3<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4ccc<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4aa<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4ff<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">==<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">*-<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Where the *8va turns on an octave down transposition for the notes after it, until canceled by the *X8va mark. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">But mixing the Humdrum model (logical sounding pitch ) with the MEI model (logical written pitch) would probably be messy.  Creating MIDI files from Humdrum data is relatively easy and creating written scores is relatively hard, while for
 MEI it is the other way around.  Note that lilypond is closer to Humdrum in this respect. For semantic (transformational) processing of data, the Humdrum method is easier overall in my opinion.  I am not aware that MusicXML does any semantic treatment of scordatura.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I came across a scordatura example recently which I posted in the music-encoding issues on Github:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">     <a href="https://github.com/music-encoding/music-encoding/issues/415">https://github.com/music-encoding/music-encoding/issues/415</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">In this music any note above G3 is scordatura, except when there is a <dir> under the music such as "IIa" which means to play the notes on the second string (which is not scordatura).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Here is some discussion about representing harmonics in MEI which devolved from a different issue in verovio:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <a href="https://github.com/rism-ch/verovio/issues/375#issuecomment-265260544">
https://github.com/rism-ch/verovio/issues/375#issuecomment-265260544</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">-=+Craig<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>