Skip to content

Notes, rests, and octaves

ThaiMusicXML uses Thai scale degrees as note names. There are seven degrees, each with three valid spellings:

Degree Numeric Romanized Thai
1 1 D
2 2 R
3 3 M
4 4 F
5 5 S
6 6 L
7 7 T

All three spellings name the same note. pitch="1", pitch="D", and pitch="ด" produce identical output. A file picks one spelling convention and keeps to it.

The romanized letters are case-insensitive: d and D are the same degree. Numeric and Thai spellings each have only one form.

The seven degrees cover one octave. To reach higher or lower octaves, Thai notation uses two modifiers:

Modifier Thai Effect Example
นิคหิต Raises one octave ดํ is ด one octave up
พินทุ Lowers one octave ทฺ is ท one octave down

The modifiers attach to any of the three spellings: 1ํ, Dํ, and ดํ all mean the same note, one octave higher than ด. They can stack: ดํํ is two octaves up, though in practice most music stays within two octaves in either direction.

The default octave (no modifier) is the middle register. นิคหิต raises from there; พินทุ lowers.

When music reaches registers that the Thai modifiers cannot express cleanly, the octave attribute gives an explicit number:

<note pitch="" octave="2"/>
<note pitch="D" octave="-2"/>

octave="0" is the default middle register. Positive numbers go up, negative go down. The attribute works with any spelling.

A <rest> takes one beat, the same as a <note>. It means the instrument strikes nothing new on that beat. As page 3 explained, Thai instruments have no notated sustain: a rest is not silence, it is an absence of attack. A note left ringing under a rest is the instrument behaving normally.

<rest/>

A rest is self-closing with no attributes. Every beat in a measure is either a <note>, a <rest>, or a <group>.

Some instruments, like the ฉิ่ง (small cymbals), do not play pitched notes. Setting type="unpitched" on a <part> means its notes use sound instead of pitch:

<rest/><rest/><rest/><note sound="ฉิ่ง"/>

The sound attribute takes any string. The values are local to the part, so an <annotation> inside the <section-ref> is the usual place to document them.

From the tutorial file, the ฉิ่ง part in สองชั้น:

<line number="1">
<measure number="1"><rest/><rest/><rest/><note sound="ฉิ่ง"/></measure>
<measure number="2"><rest/><rest/><rest/><note sound="ฉับ"/></measure>
</line>

In สองชั้น the ฉิ่ง plays one stroke per measure, alternating ฉิ่ง and ฉับ every measure. In ชั้นเดียว the cycle completes within a single measure: rest, ฉิ่ง, rest, ฉับ.

The file public/corpus/valid/pitch-spellings.txml exercises all three spellings and both modifiers on a single line:

<part-data part="P1">
<section-ref section="s1">
<line number="1">
<measure number="1">
<note pitch="1"/><note pitch="2"/><note pitch="3"/><note pitch="4"/>
</measure>
<measure number="2">
<note pitch="S"/><note pitch="L"/><note pitch="t"/><note pitch="d"/>
</measure>
<measure number="3">
<note pitch=""/><note pitch=""/><note pitch=""/><note pitch=""/>
</measure>
<measure number="4">
<note pitch="ดํ"/><note pitch="ทฺ"/><note pitch="" octave="2"/><note pitch="D" octave="-2"/>
</measure>
</line>
</section-ref>
</part-data>

Measure 1 uses numeric, measure 2 romanized, measure 3 Thai. Measure 4 shows the modifiers: นิคหิต (ดํ), พินทุ (ทฺ), and the octave attribute.


Next, see Beats and subdivision for the <group> element, which splits a beat into equal parts.

Try it in the Playground