Closed craigsapp closed 7 years ago
I'm curious about why you want to do this.
Specifically it is for a student doing an independent study project with me where he is loading MIDI data and displaying it as notation. Since MIDI does not always use a quantized score-based organization, he only wants to display the pitches and not the rhythms. So he would like to display as a headless black note, which does not otherwise imply a duration.
A secondary application would be to notate a music examples such as this:
This is a Schoenberg piece sample, showing the tonerow underneath. This example is similar to the first case in that the noteheads are black stemless notes, implying that they have no rhythm (From SCORE notation homework for Music 253 at Stanford: http://wiki.ccarh.org/wiki/SCORE_parameter_exercises#Example_9)
Related to this, @lpugin: why are note elements with no @dur
displayed as breves in verovio? One thought would be to have them as stemless black noteheads, although I find breves useful when debugging, since they are easy to see.
Also, dropping the @oct
puts notes very low, and dropping the @pname
sets the pitch to F? The last one is the most dangerous because it implies that the default pitch of a note is "F". Is there an "x" notehead shape in verovio yet? That would be better than displaying the last F in this example as a regular notehead, since it would imply something funny about the @pname
in the MEI data.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://music-encoding.org/schema/3.0.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://music-encoding.org/schema/3.0.0/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="3.0.0">
<meiHead>
<fileDesc>
<titleStmt>
<title />
</titleStmt>
<pubStmt>
<date>2016-12-01 19:07:08</date>
</pubStmt>
</fileDesc>
<encodingDesc>
<projectDesc>
<p>Transcoded from Humdrum with Verovio version 0.9.13-dev-bf3f7d9</p>
</projectDesc>
</encodingDesc>
</meiHead>
<music>
<body>
<mdiv>
<score>
<scoreDef xml:id="scoredef-0000000741884229">
<staffGrp xml:id="m-0000000757845173">
<staffDef xml:id="staffdef-0000000541800855" clef.shape="G" clef.line="2" meter.count="3" meter.unit="4" n="1" lines="5" />
</staffGrp>
</scoreDef>
<section xml:id="section-0000001050666048">
<measure xml:id="measure-L4" n="1" right="end">
<staff xml:id="staff-L4F1" n="1">
<layer xml:id="layer-L4F1" n="1">
<note xml:id="note-L5F1" oct="4" pname="c" accid.ges="n" />
<note xml:id="note-L6F1" dur="4" pname="c" accid.ges="n" />
<note xml:id="note-L7F1" dur="4" oct="4" accid.ges="n" />
</layer>
</staff>
</measure>
</section>
</score>
</mdiv>
</body>
</music>
</mei>
Also, for a real composition exemplar, here is a composition by Don Knuth:
http://www-cs-faculty.stanford.edu/~knuth/fant.html
In Chapter 16, mm 107-108, he writes stemless black notes as a form of glissando (again the black noteheads imply a non-specific duration):
http://www-cs-faculty.stanford.edu/~knuth/ch16%20-%202016-11-19.pdf
And in the following two measures with a similar variant:
Verovio supports @stem.len="0"
for ommitting stems, like in here: 02d630e
Great! I will have to update my version (I presume this is in the develop branch?).
Yes. You can also use @dur.ges
with it when the gestural duration is not a quarter note.
Nightingale allows specifying a note's logical duration as "unknown", in which case it displays a solid notehead without a stem. Doesn't MEI have something like that? It strikes me that this is what's really needed; saying a note is a quarter note with stem length = 0 doesn't capture Knuth's intent, or the meaning of the tone row.
Yes! I think in a few cases the MEI Guidelines will have to state definitely what to expect to see when rendered. So when a <note>
doesn't carry a duration, this is what I expect, I guess: a simple note head that looks like a quater without a stem.
What about encoding it like this? <note head.shape="quarter"/>
? If all you want to say that there is a note, and it has a certain head, I believe this is sufficient and appropriate. I definitely prefer it over a default duration of a quarter (and that's a risk I see – when people learn that they get the same result no matter if they add @dur="4"
or not, we may end up with pretty weird stuff… If we follow the @head.shape
proposal, Verovio will complain when neither duration nor headshape is specified – and I believe this is a good thing…Â
This means that a note with a @head.shape
has no stem?
Well, MEI lacks a way to explicitly state that there is no stem (afaik). My interpretation of this situation always was that if I don't have a duration to decide what I need (which head, a stem, how many flags…), I have to rely on @head.shape
and, when applicable, @stem.dir
(as the simplest of all stem-related attributes). The absence of @stem.dir
(or any other information about the stem) then means that there simply is no stem. Not a very clear siutation, but that's how I explained the world to myself. Maybe @pe-ro can shed more light on this?
Yes, this was the problem when I decide to implement this.
@donbyrd : how do you align notes with unknown durations in Nightingale? (e.g., the Schoenberg example)
This means that a note with a
@head.shape
has no stem?
Not exactly.
MEI lacks a way to explicitly state that there is no stem (afaik).
Also, not exactly.
MEI has a way to explicitly state that the stem length is 0, which is nearly the same thing. :-)
But, Jo and Don are right to say that when a note cannot be said to be a "real" quarter note, then marking it as <note dur="4" stem.len="0"/>
isn't meaningful. It would be better to say that the note has no duration (as in the Knuth example) using <note head.shape="quarter" stem.len="0"/>
. That is, one slips from encoding the "logical" sense of the note into describing its visual qualities. In the case of <note head.shape="quarter"/>
(that is, no statement is made about the note's duration or stem), then a zero-length stem seems appropriate. Since the duration is indeterminate/unknown, the renderer must decide what to do based on @dur.ges
or its own default behavior. Of course, it this point we're out of the realm in which these things can be enforced by the schema -- they have to be dealt with via Schematron or simply by convention.
But it's not completely accurate to say that a note with @head.shape
has no stem -- it depends on the presence of "logical" info. In the case <note dur="4" head.shape="+"/>
the head.shape attribute carries data that supplements the duration information. The lack of a statement about the stem doesn't mean there's no stem. Here a stem is implied based on the usual behavior of quarter notes.
This makes sense. Then I think I would expect @dur.ges
to be given if no @dur
is provided, which follows the idea that the gestural domain needs to be provided when it is different from the visual one.
it depends on the presence of "logical" info.
That's what I failed to say with "if I don't have a duration". Of course, when @dur
is present, it should be considered. However, I'm not sure if one can always expect @dur.ges
if @dur
isn't there. The whole point of the tone row (for instance) is that these notes don't have the quality of a duration – and they don't need one. I see the problem of aligning them, and, if that is requested, I think it's fair to expect @dur.ges
in that case. If, however, the sole purpose is to render pitch information using familiar symbols (i.e. notes), I guess these notes could live without a duration, which is meaningless for them. In order to render that, I'd just put them on some kind of raster, no matter "how long they look". If one wanted them to be spaced according to their notehead, he could provide a duration either through @dur
or @dur.ges
…Â
However, I'm not sure if one can always expect @dur.ges if @dur isn't there.
I assume we agree we need a value for aligning them when displaying / playing. And since we do not want to have default values, then we leave this up to the tools. We can do this in Verovio but I think I would prefer it not to be able to render this because something is missing.
I totally agree. I only wanted to point out that there's a difference between a tone row (which has no alignment, but is just a row of tones) and the Knuth examples above… But I'm flexible ;-)
To answer your question, @lpugin, I don't remember how Nightingale aligns unknown durations, and a quick look at the code didn't help.
So mes 107 of Knuth's example would be something like this?
<measure n="107">
<staff n="1">
<layer n="1">
<tuplet numbase="1" num="3" bracket.visible="false" num.visible="false">
<note dur.ges="4" oct="4" pname="c" head.shape="quarter"/>
<note dur.ges="4" oct="4" pname="d" head.shape="quarter"/>
<note dur.ges="4" oct="4" pname="e" head.shape="quarter"/>
<note dur.ges="4" oct="4" pname="f" head.shape="quarter"/>
<note dur.ges="4" oct="4" pname="g" head.shape="quarter"/>
<note dur.ges="4" oct="4" pname="a" head.shape="quarter"/>
<note dur.ges="4" oct="4" pname="b" head.shape="quarter"/>
<note dur.ges="4" oct="5" pname="c" head.shape="quarter"/>
<note dur.ges="4" oct="5" pname="d" head.shape="quarter"/>
<note dur.ges="4" oct="5" pname="e" head.shape="quarter"/>
<note dur.ges="4" oct="5" pname="f" head.shape="quarter"/>
<note dur.ges="4" oct="5" pname="g" head.shape="quarter"/>
</tuplet>
</layer>
</staff>
<staff n="2">
<layer n="1">
<rest dur="4"/>
<chord dur="4" tie="i">
<note oct="3" pname="c"/>
<note oct="2" pname="c"/>
</chord>
<chord dur="2" tie="t">
<note oct="3" pname="c"/>
<note oct="2" pname="c"/>
</chord>
</layer>
</staff>
</measure>
It might be good for the @dur.ges
values to sum up to the duration of the whole measure since the rest of the measures surrounding these are metrical.
This could also be thought of as the visual duration which is distinct from the performance duration since this duration value would be needed to do automatic layout of the notes horizontally on the staff. The guidelines seem to indicate that ".ges" is related to performance. For example "accid.ges" is the performed or sounding accidental, and @dur.get
likewise. From the element documentaion for <note>
:
@dur.ges (optional) Records performed duration information that differs from the written duration. Its value may be expressed in several forms; that is, ppq (MIDI clicks and MusicXML 'divisions'), Humdrum **recip values, beats, seconds, or mensural duration values. Value conforms to data.DURATION.gestural . att.duration.performed
Perhaps a good idea would be to wrap these notes in something similar to a beam, tuplet, or chord group. The container element would be assigned a @dur
indicating the total duration of the non-durational notes inside of it. Then for layout, the default assumption is that they are all equally splitting the @dur
of the container unless otherwise spelled out with @dur.ges
. The important thing is that the external container is aligned with the other staff, but internally the layout is independent (although the longest independent component would stretch the layout for the shorter components). This would probably be a useful feature for modern repertories.
For example in the Schoenberg example:
I set the duration of each tonerow note to "4", except for the E5 at then end of P-0, which was set to "2". This added a half-note space to increase the distance between the prime and retrograde inversion forms. In SCORE, I then applied layout to the bottom staff independently from the top two staves. In a system such as verovio, giving a container for the tone row notes with the duration of "2m" (two measures) would allow similar functionality. The container would have the duration of a breve which would align with the upper staff, then internally in the container, the @dur.ges
values of "4" and "2" would allow for the nearly even spacing except for the gap between the two tone rows.
How would @head.shape
determine that there is no stem? In other words, supposed that I want a quarter note to have the shape of an "X". I would want the notehead to look like an "X", but keep the stem (attached to one of the corners of the "X").
Would lack of @dur
cause the lack of stem?
So this would be stemless:
<note dur.ges="4" oct="5" pname="g" head.shape="quarter"/>
But this would not:
<note dur="2" oct="5" pname="g" head.shape="quarter"/>
How should dur="4" dots="1"
be represented as @dur.ges
, as there is no @dots.ges
?
@dur.ges
can be expressed in Humdrum **recip
values, which represent the fraction of a whole note the duration represents (plus augmentation dots), so dur="4" dots="1"
could be expressed as dur.ges="4.r"
. An alternate extended **recip
representation would be dur.ges="8%3r"
which means that a dotted quarter notes is equal to 3/8th of a whole note (this is more for cases such as dur.ges="3%2"
meaning 2/3rds of a whole note, i.e., a triplet whole-note.
<note>
is also a member of att.xy
, so absolute page-placement values; that is, @x
and @y
attributes, could be used if @dur.ges
is missing. This might not work so well for automated layout, however.
We have yet to add a method of specifying offsets from some other object.
is also a member of `att.xy`, so absolute page-placement values; that is, @x and @y attributes, could be used if @dur.ges is missing. This might not work so well for automated layout, however.
That is what I was thinking, although att.xy
would be handy for conversions from SCORE to MEI which preserve the original layout spacing.
@craigsapp : the Schoenberg example mixes two different issues. That is aligning stem/duration less notes within a measure and aligning measured and un-measured staves. We should look at the later one separately.
Using att.xy
whould indeed not be helpful for automatic layout. This idea of a duration container is what a tuplet does. Alternatively, we could have @num
and @numbase
directly on each note.
I see your point with the problem of using @dur.ges
for actually specifying visual layout, so this leaves me unconvinced with the idea that a note without @dur
is assumed to be stemless. Using @stem.len="0"
is actually in that sense much clearer and unambiguous, but maybe we can have another attribute of directly directly specifying that there is no stem (@stemless
?)
Another idea which is maybe a good way to avoid many issues is to use @tstamp
. It is available on note
and could actually do the trick. What about this? I would still have an unambiguous way to encode the presence or the absence of a stem because we can very well imagine using @tstamp
on notes with stems, and having both @dur
and @tstamp
would create contradictions.
Something like this
<measure n="107">
<staff n="1">
<layer n="1">
<note tstamp="1.0" stemless="true" oct="4" pname="c" head.shape="quarter"/>
<note tstamp="1.33" stemless="true" oct="4" pname="d" head.shape="quarter"/>
<note tstamp="1.67" stemless="true" oct="4" pname="e" head.shape="quarter"/>
<note tstamp="2.0" stemless="true" oct="4" pname="f" head.shape="quarter"/>
<note tstamp="2.33" stemless="true" oct="4" pname="g" head.shape="quarter"/>
<note tstamp="2.67" stemless="true" oct="4" pname="a" head.shape="quarter"/>
<note tstamp="3.0" stemless="true" oct="4" pname="b" head.shape="quarter"/>
<note tstamp="3.33" stemless="true" oct="5" pname="c" head.shape="quarter"/>
<note tstamp="3.67" stemless="true" oct="5" pname="d" head.shape="quarter"/>
<note tstamp="4.0" stemless="true" oct="5" pname="e" head.shape="quarter"/>
<note tstamp="4.33" stemless="true" oct="5" pname="f" head.shape="quarter"/>
<note tstamp="4.67" stemless="true" oct="5" pname="g" head.shape="quarter"/>
</layer>
</staff>
<staff n="2">
<layer n="1">
<rest dur="4"/>
<chord dur="4" tie="i">
<note oct="3" pname="c"/>
<note oct="2" pname="c"/>
</chord>
<chord dur="2" tie="t">
<note oct="3" pname="c"/>
<note oct="2" pname="c"/>
</chord>
</layer>
</staff>
</measure>
@lpugin: Isn't @stemless
just a different syntax for @stem.len="0"
?
I like the idea of <tuplet>
as a "container with a duration". For the Schoenberg example, the lower staff could be encoded as 12 stemless quarter notes in the time of 1 whole note. This skirts around the issue of duration for each of the quarter notes.
@lpugin: Isn't @stemless just a different syntax for @stem.len="0"?
Yes, indeed. I am OK with it, but others seem to think it is not good.
Since it has the same meaning, adding @stemless
would just add confusion.
OK. What about the @tstamp
use?
There's nothing wrong with using @tstamp
as you did in your example, if @stemless
is replaced with @stem.len="0"
. But what I like about using <tuplet>
is that @tstamp
isn't necessary on the individual events contained within it. It resolves the alignment issue without getting us "into the weeds" about the interaction of @dur
(or lack thereof) and @stem.len
. @stem.len
can remain simply a visual characteristic, independent of semantic qualities.
I think a container would raise all sorts of new issues, which does not mean it cannot be useful. For example, if I understand correctly, it is assumed that the spacing should be even regardless of what is happening elsewhere. Now in Schoenberg example it is evenly spaced according to the note position, but since some notes have a sharp or flat, the space between the notes is not even. This is fine but we need to make sure we agree on this. Then what would you expect to happen if there is less than the required space at the top? The notes with a flat or a sharp "need" more space. Would you expect the notes to be all spaced evenly, or to have only the ones with a sharp or a flat occupying more space? Both can be valid. I imagine the container would need some attributes to specify this. Also, for me this is quite different from a tuplet and I would use another element for this.
Since it has the same meaning, adding @stemless would just add confusion.
Having a separate concept for stem length and stem visibility does have a possible use. In SCORE, these are two separate concepts: you can change the length of a stem or you can make it "invisible".
Invisible stems are used on secondary chord notes which borrow the stem of the main chord note. Here is an example from SCORE where I pull away secondary notes from their shared stem which is attached only to the bottom note of the chord (or top if the stem is down):
Here is an example of changing the stem length:
A possible application is that if you have an invisible stem, then the beams can be placed on the ends of the invisible stems. If the stem length were set to 0 to make them invisible, then the beams would have nowhere to attach (I don't know a repertory that does this, but some modern composer will want to do it just to do it, perhaps to imply a quasi-rhythm):
Stemless beams are used in Asian repertories, but not in the exact same way (there are no noteheads, but rather numerals indicating scale degrees or string numbers):
https://en.wikipedia.org/wiki/Numbered_musical_notation
Here is a westernized version of a Yamada school score for koto music where digits mean which string to play (the original uses Chinese numerals instead of Arabic ones, but otherwise fairly faithful to the original):
The horizontal lines under the digits indicate the rhythm (i.e., they are beams). A single underline means an eighth note, two lines mean a sixteenth note, and so on. Rests are "0" , and half notes are digits followed by a dash. The dot as in "8. 7" is an augmentation dot.
It seems to me that Asian notation is an entirely different thing that requires a different renderer (or at least a different approach to rendering, possibly controlled by some kind of switch). Its "beams" (scare quotes added because they're not the same as CMN beams) can be rendered based on the beaming of the events without reference to stems. Any/all indication of stems can simply be ignored.
Your "modern-composer[s]-will-want-to-do-it-just-to-do-it" argument is more compelling. But will adding @stem.visible
(with values of "true" and "false") while keeping @stem.len
(where "0" is a legit value) be clarifying or complicating? I don't mind the complexity, but would like to hear what others think.
Its "beams" (scare quotes added because they're not the same as CMN beams) can be rendered based on the beaming of the events without reference to stems.
I view them as actual CMN beams, as they have the same graphical sytax as CMN beams. The example I gave was generated with a special-purpose notation renderer that wrote for koto music, but someone could implement it in theory via a CMN renderer as a special case of CMN, using the digits as noteheads and the beams as regular beams, either positioned via invisible stems or a system which places the beams independently.
Here is example of tabla bol notation that I generated directly in SCORE, with the lines over the syllables being SCORE beams:
(this is not a standard bol notation, but rather I adopted the Yamada school system of rhythm representation. Placing the beams above the notes seemed to be easier to read in this case, and it has a similar aesthetic to Sanskrit letters, where there is a baseline from which the main form of the letter hangs down)
Returning to the "notes without stems" issue, here's another example in real music, also Schoenberg. In the solo part of his Violin Concerto, Op. 36, he writes artificial harmonics in the usual way, showing the touched and stopped notes, but also shows the sounding pitch as a small solid notehead in parentheses, just to the right of the relevant stem, and often with an 8va sign over it. He even has a few double-stopped harmonics notated this way. He does something similar for natural harmonics. I'm almost certain I'm seen this elsewhere, but anyway there's one example.
@donbyrd: Can you provide a graphic please?
Here is a sample which I found on youtube:
Thanks, Craig.
@donbyrd: While these certainly are stemless notes, they should handled in a semantic fashion, not a graphical one. By that I mean they can be encoded using @pname.ges
and @oct.ges
. The presence of @artic
containing the string "harm" can serve as a "trigger" for rendering them in a stylistically appropriate way.
Alternatively, they can be treated as directives, i.e., text instructions. The fact that they contain graphical symbols that look like notes doesn't mean they're not directives. 😀
Getting the legerlines would be tricky as a directive.
Yeah.
Here is the sample typeset in SCORE:
For the harmonic-realization notes, I treat them as chord notes with a horizontal offset from the chord/note stem (plus make them cue-sized and put parentheses around them). If the music is re-layedout, then they will maintain their relation to the parent chord (with the fixed distance from the stem).
I agree, it's better to handle them "in a semantic fashion". I was just providing another data point for this discussion, not arguing for or against any treatment of them in MEI.
@craigsapp: I assume the same process could be applied by Verovio to notes with the @pname.ges
, @oct.ges
, and @artic="harm"
attribute combination.
Good point, Craig, about the difficulty of getting ledgerlines. And, as I said, some of these have 8va's over them. I think directives are out of the running.
A-ha, the next measures have an ottava on the realized harmonic note:
Typeset in SCORE:
Here are thoughts about the semantical aspects of harmonics (at least for stringed instruments):
A harmonic articulation contains two necessary pieces of information: (1) what pitch position to press firmly (2) what higher pitch position on the same string to press lightly
These two pieces of information will fully determine the resulting sounding pitch according to the interval between these two notes:
octave == sounding one octave below the bottom note. fifth == sounding an octave above the top note fourth == sounding two octaves above the bottom note major third == sounding two octaves about the top note. (these are the most common, but higher harmonics are possible with smaller intervals).
Note that the lower pitch is a regular shaped note, and the upper one is a diamond shape. Note the special case of the octave harmonic: the diamond-shaped note for the second note is never specified, since that is the default interval for a harmonic. Strictly speaking, the sounding note is not written. Schoenberg writes since he has a lot of them and does not want the violinist to make a mistake (and the violinist would probably write them in if he did not). So there is no definitive way to display them. How he does them is good, since they will decrease readability of the music if they are placed vertically above the other notes of the harmonic. Notice in measure 222 that he does not repeat the sounding note when it is repeated. So the sounding note is functioning as a courtesy accidental does.
Alternatively, you could describe the harmonic by: (1) the bottom pitch position (2) the interval to the top position
Or even: (1) the bottom pitch position (2) the sounding harmonic
This (quasi-)MEI encoding:
<note pname="c" oct="4" artic="harm">
would mean that the bottom pitch is C4, and the top pitch is C5, with the sounding harmonic being C5. The @artic="harm"
attribute would force the display of a circle symbol. The top note would be implied to be C5, and the sounding note would be implied to be C5 (as they are in music notation). This should be rendered as number 1 in the figure below:
Cases 2 and 3 would be for displaying the sounding note. Maybe there would be an attribute to vertically align with the fingered note or offset to the right (never offset to the left). The default would probably be offset to the right rather than centered. Case 3 might be encoded as:
<note pname="c" oct="4" artic="harm">
<harmonic interval="p8">
</note>
And case 2:
<note pname="c" oct="4" artic="harm">
<harmonic interval="p8" position="centered">
</note>
(these are quasi-MEI encodings, not literal element/attribute name suggestions)
Case 4 shows the position of the second note. This could also be described as an interval above the bottom note, or as the pitch above the the bottom note. Using an interval would simplify changing the pitch of the harmonic as only the outer <note>
pitch would need to be changed.
<note pname="c" oct="4" artic="harm">
<touch interval="p8">
</note>
Case 5 would include the sounding note:
<note pname="c" oct="4" artic="harm">
<touch interval="p8">
<harmonic interval="p8">
</note>
Since the interval can be determined by the <touch>
interval, it could also be done as:
<note pname="c" oct="4" artic="harm">
<touch interval="p8">
<harmonic>
</note>
Since @interval="p8"
would be redundant and a bit nonsensical if it were any other value.
Case 6 shows what the harmonic would look like without the circle articulation. Since a diamond note is visible, the ring articulation is redundant, so dropping it could be:
<note pname="c" oct="4">
<touch interval="p8">
</note>
Case 7:
<note pname="c" oct="4">
<touch interval="p8">
<harmonic>
</note>
The above 7 cases would cover most harmonic note syntax.
An addendum for the ottava marking is that it should be an attribute of the <harmonic>
element:
<note pname="c" oct="4">
<touch interval="p8">
<harmonic ottava="true">
</note>
Again these are not literal suggestions, as you can normalize the names to other pieces of MEI.
Of course in this case that would display a non-sensical sounding note on the same staff line as the bottom note (since it would be sounding an octave higher), but this would mostly be for 2nd, 3rd, 4th harmonics than for octave harmonics. There might be other attributes on the sounding note element such as to display parentheses or not, to change the shape/size of the notehead, etc.
=======================
One special case occurs when playing a harmonic on an open string. These are called natural harmonics. In this case you don't press the lower pitch position with a finger, just lightly on the second pitch position. The case where you have to press the bottom pitch position are called "artificial harmonics".
The first note in measure 221 is an open-string harmonic:
This falls outside of the above harmonic syntax, so how to express this would have to be considered.
The violinist would play this on the top open string, partially touching one octave higher. The black parenthesised note is the sounding note which should be heard. In this case it is implied to touch the string lightly an octave higher (not on the E5, but on the E6). Using a diamond shaped note on the bottom note of the octave is implying an open-string harmonic, and since you never notate the touch point for an octave harmonic, the touch symbol was put on the bottom note.
Compare this to the first note on the line in the previous example, which is contextually implied to be an artificial harmonic:
In this case, the harmonic requires two fingers: one to hold down the E5 pitch (on the A4 string), and the other the press lightly on the E6 point on the A5 string. This interpretation is implied by the fact that the E5 note is a regular shape, as well as the following F# needing not able to be played on the A4 string. Since there is no diamond notehead, it is also implied that the other finger should touch an octave higher.
I don't understand the notation for the first three notes in measure 223. There are diamond notes on B4 and a sounding note in F#6. So this must mean that the fingered note is B4, and the touching note is F#5. This also happens on the third note of measure 219 and the third beat of measure 220.
Whew! Harmonics are a complex subject; thanks for the very detailed commentary, Craig. This subject is germane to my own interests at the moment because I'm finishing a violin concerto and trying to decide how to notate artificial harmonics! (Premiere is scheduled for Feb. 12 at 2 PM, here in Bloomington. All are invited.) I wish I had time to comment at length, but a few random observations:
The decision I'm trying to make is whether to leave the artificial harmonics notated as just the sounding pitch with a circle above it, or to spell out the pressed and touched notes. Performers I've talked to recently generally prefer the latter -- for one thing, it makes sight-reading easier -- but the former is acceptable (and a great deal simpler, of course).
I strongly recommend saying artificial harmonic if that's what you mean. Natural harmonics aren't really a special case; they're extremely common.
Schoenberg's notation for natural harmonics is somewhat unusual; standard is to write a regular notehead with a circle above it. (Of course that's identical to the simpler notation of artificial harmonics I mentioned under no. 1, so the performer has to decide which kind of harmonic it is.)
The classic Piston orchestration textbook says notating the sounding pitch of artificial harmonics is pretty common. That sounds right to me, though I still can't think of any other examples.
In scores I've looked at, by far the most common interval between stopped and touched is a fourth. Piston agrees, and says it's the most reliable.
I've seen natural harmonics for flute (in Le Sacre du Printemps, e.g.) and guitar, but not artificial harmonics. But surely harmonics are used on other instruments.
I strongly recommend saying artificial harmonic if that's what you mean. Natural harmonics aren't really a special case; they're extremely common.
That is true. But I was saying "special case" in that the notation Schoenberg used for the natural harmonic did not quite fit the graphical system I was defining, so more thought would be needed on how to map the semantics to the graphical symbols in the notation.
"natural harmonic" means that the performer only has to press lightly on the top pitch position in order to generate the sounding harmonic.
"artificial harmonic" means that the perform has to press firmly on the bottom note position, and also press lightly on the top note position.
In terms of semantics, there is not a great difference between the two, just that natural harmonics only requires one finger and artificial harmonics require two.
Schoenberg's notation for natural harmonics is somewhat unusual; standard is to write a regular notehead with a circle above it. (Of course that's identical to the simpler notation of artificial harmonics I mentioned under no. 1, so the performer has to decide which kind of harmonic it is.)
The classic Piston orchestration textbook says notating the sounding pitch of artificial harmonics is pretty common. That sounds right to me, though I still can't think of any other examples.
In scores I've looked at, by far the most common interval between stopped and touched is a fourth. Piston agrees, and says it's the most reliable.
As a pianist, I usually do not have to worry about harmonics (but I have played some John Cage and Henry Cowell pieces which require performing harmonics).
I will have to look at the Piston description. This looks like he is notating the sounding pitch of the harmonic as a regular note, and then putting a circle articulation above it to indicate that it is a harmonic. And the realization of that harmonic is left up to the performer. There are multiple ways to realize the harmonic, and in that case the composer does not care how the performer does it, as long as they produce the correctly notated pitch as a harmonic. Schoenberg is being more explicit and telling the performer how to realize the harmonic.
Here is an illustration of what I am saying (using Schoenberg's system), but regularizing the first case:
And here is Piston's system for the same music:
All harmonics look the same, since it is up to the performer to decide how to generate the sounding harmonic.
In Schoenberg's system, the circle articulation is redundant since the diamond noteheads indicate the presence of a harmonic.
A good semantic system would allow for conversion between these two graphical systems...
I've seen natural harmonics for flute (in Le Sacre du Printemps, e.g.) and guitar, but not artificial harmonics. But surely harmonics are used on other instruments.
What is a flute harmonic? (meaning what does it look like on paper, and how it is realized?). I presume this means to overblow a note (to excite the pitch an octave higher). This starts to get close to multiphonics, which are related to string harmonics but more a woodwind context. Woodwind registers above the bottom one can be thought of as harmonics: the second register of a flute (C5 to C6) is played on the second harmonic of the bottom register notes by overblowing and adjusting some keys to suppress the fundamental, so technically most notes a flautist plays are harmonics.
Artificial vs Natural harmonic don't make sense in a woodwind context. Technically they are all natural harmonics, and the performer is controlling the length of the "string" by opening and closing holes, as well as massaging the nodes on that string to control which harmonic is being played as well as overblowing to select a particular harmonic.
Guitars would behave similarly to violins. A natural harmonic would be where the open string is used, and the artificial harmonic would be where the string is pressed firmly at one fret, and touched lightly at another fret.
Brass instrument pitches are almost entirely played as harmonics (but written as regular pitches). Is there a case where brass instruments have notated harmonics? Circle articulations in French Horn music does not count as this means "open" rather than "harmonic".
For the Rite of Spring example, is the harmonic notated at the sounding pitch or an octave below the sounding pitch (which is different from my interpretation of the Piston system)? Maybe Stravinsky did not have piccolo players, which are supposed to be used for such situations... He also obviously did not have a piccolo bassoonist :-)
https://jasontaurins.files.wordpress.com/2015/05/irlpiccassoon.png
Summarizing --
There are 2 kinds of stemless notes:
There are also 2 kinds of harmonics:
The first kind of stemless note can be indicated using --
<note pname="c" oct="4" dur="4" stem.len="0"/>
although I'm leaning toward adding @stem.visible
in order to separate the length of the stem from whether it is displayed. Doing so may complicate matters in the short term, but it's a more expressive option. For example,
<note pname="c" oct="4" dur="4" stem.len="7" stem.visible="false"/>
allows for the positioning of beams even when the stem is invisible. We should also consider adding a Schematron rule that requires @stem.len
> 0 when @stem.len
and @stem.visible
are both present and @stem.visible
is false. In other words, there has to be a stem (its length either explicitly stated or implied) for it to be invisible.
For visual alignment purposes, it's possible to place stemless notes inside a so-called "duration container". For example, in the illustration of Schoenberg's tone-row usage the headless notes can be wrapped with a <tuplet>
, which I believe fits the definition of "duration container" --
<tuplet dur="1" num.visible="false" bracket.visible="false">
<note head.shape="quarter" stem.len="0"/>
<note head.shape="quarter" stem.len="0"/>
<!-- plus 10 more -->
</tuplet>
I don't think that this use of <tuplet>
implies spacing different from any other use, but I'm willing to be convinced otherwise.
Turning to harmonics, following the so-called Piston system (although he was certainly describing an already-existing practice), all harmonics can be indicated by --
<note pname="c" oct="5" dur="2" artic="harm"/>
that is, the sounding pitch (which is also the notated pitch) is encoded and the articulation indication added. It's left up to the performer to figure out exactly how to achieve the notated result.
Using the so-called Schoenberg system (again, he was probably describing existing practice), a distinction is (sometimes) made between natural and artificial harmonics. Natural harmonics are similar to the Piston system --
<note pname="c" oct="4" dur="2" artic="harm"/>
the difference being that what's encoded is the written pitch, not the sounded one. So, in order to capture the sounding pitch we can add an attribute or two --
<note pname="c" oct="4" dur="2" artic="harm" oct.ges="5"/> (since the pitch name is the same)
or
<note pname="c" oct="4" dur="2" artic="harm" pname.ges="c" oct.ges="5"/> (to be absolutely clear)
The Schoenberg approach treats artificial harmonics differently. In this case the stopped pitch is notated with an oval notehead, while the harmonic node is written with a diamond-shaped notehead. In MEI this is captured as a chord --
<chord>
<note pname="c" oct="4" dur="2" pname.ges="c" oct.ges="5"/>
<note pname="f" oct="4" dur="2" head.shape="diamond"/>
</chord>
Note the use of @pname.ges
and @oct.ges
to indicate the sounding pitch (as usual) and the lack of @artic
. What's also lacking is any indication that the F4 isn't supposed to be sounded/rendered (in MIDI, for example). But, rather than add more attributes or more values for existing attributes, it makes more sense to me to provide "as written" and "as sounded" options --
<choice>
<orig>
<chord>
<note pname="c" oct="4" dur="2"/>
<note pname="f" oct="4" dur="2" head.shape="diamond"/>
</chord>
</orig>
<reg>
<note pname="c" oct="5" dur="2"/>
</reg>
</choice>
We haven't addressed this before, but such examples suggest that adding <written>
and <sounded>
as options within <choice>
might be a good idea. Here's the same example with these elements --
<choice>
<written>
<chord>
<note pname="c" oct="4" dur="2"/>
<note pname="f" oct="4" dur="2" head.shape="diamond"/>
</chord>
</written>
<sounded>
<note pname="c" oct="5" dur="2"/>
</sounded>
</choice>
These elements can be thought of as syntactic sugar for <orig type="written">
and <reg type="sounded">
, but with the value of @type
tightly constrained and, therefore, more exchangeable/interoperable.
It happens I'm an ex-flutist. What @craigsapp says about flute harmonics is pretty much correct, though I'm not sure the adjusting of keys while overblowing for normal (non-harmonic) notes is solely or even primarily to suppress the fundamental. Anyway, to produce harmonics, you simply don't adjust the keys! The difference in timbre is quite minor, IMHO, and they're very rarely used; in fact offhand I can't think of any examples other than in The Rite of Spring. The notation there is the same as the standard notation for natural harmonics on strings, viz., the sounding pitch is notated with a little circle over it.
Of course @craigsapp is right about guitar harmonics, my oversight; and Gould, in Behind Bars, discusses guitar harmonics at length. She also discusses harmonics for strings (of course), harp, and piano -- but no other instruments, including flute (more evidence of how unimportant flute harmonics are).
Is there a way to draw a note without a stem, such as a quarter note?
I don't see how to do this in the MEI guidlines. The only values for
@stem.dir
areup
anddown
, so maybe the information can be put there. There is also a@stem.len
. And verovio does not process that attribute yet anyway.Another idea is: there is a
@head.visible
, so a@stem.visible
would be a nice parallel to add to the MEI spec to hide stems for note elements.