この章では、音の長さ(音価)の指定方法について説明します。これは、テンポに基づいて秒時間に変換される前の楽譜上での音の長さを意味しています。
開始時には基準となる音価 (基準音価)は、4分音符の長さに設定されています。これにより、特に音価指定のない音符は、4分音符になります。
音符の後に * を付けると、付けるごとにその音符の音価が2倍になります(したがって、2つ付けると4倍になります)。/ を付けると、付けるごとに音価が 1/2倍になります (つまり、/ は五線譜における音符の符尾のような働きをします)。付点は . で表し、1つ付けると 1.5倍、2つ付けると 1.75倍の長さになります。下の表に、基準音価が4分音符である場合の、代表的な音価の表記法を示します。ティック数は4分音符を480としたときの音の長さを示しています。これらの音価指定は基準音価に対する相対的なものなので、例えば基準音価が8分音符なら全体がこの表の値の半分の長さになります。
| MML | 意味 | 五線譜 | ティック数 | MML | 意味 | 五線譜 | ティック数 | |
|---|---|---|---|---|---|---|---|---|
c*** |
二全音符 | ![]() |
3840 | c*. |
付点2分音符 | ![]() |
1440 | |
c** |
全音符 | ![]() |
1920 | c. |
付点4分音符 | ![]() |
720 | |
c* |
2分音符 | ![]() |
960 | c/. |
付点8分音符 | ![]() |
360 | |
c |
4分音符 | ![]() |
480 | c.. |
複付点4分音符 | ![]() |
840 | |
c/ |
8分音符 | ![]() |
240 | c/.. |
複付点8分音符 | ![]() |
420 | |
c// |
16分音符 | ![]() |
120 | |||||
c/// |
32分音符 | ![]() |
60 |
複数の音符に対してまとめて指定したいときは、{ と } で音符群を囲み、その後に音価指定の記号を書きます。
{cc}/ {cccc}// {c{cc}/}/ {c.c/}/

上の例で、例えば最後の音符が16分音符になるのは、{ と }/ で囲まれた中の基準音価が半分になっていて、音符直後の / がそれを更に半分にするからです。なお、連桁 (beam) によるつながり方は五線譜生成のシステムによって自動的に決まるもので、MMLでの波括弧の囲み方とは関係ありません (したがって、最初を2音を c/c/ と書いても、それを理由に連桁が外れることはありません)。
上の表に示したような音価指定の記号列 (4分音符の場合は、空の記号列と考える) は、~ で結合して、その和の長さを表すことができます。これは五線譜におけるタイに相当します。例えば、c~ と書くと、空記号列と空記号列を連結したとみなされて、4分音符2つ分の長さ、つまり2分音符と同等になります。下にその他の利用例を示します。
c~~ c~/ c/~~/ c/~

Pytaktではどのような書き方で音価を指定してもティック数が同じであれば同等なものとして扱われます。例えば上の譜例を、下のように、基準音価を8分音符にしておいて(L8)、すべてタイでだけ表現しても同等です。
L8 c~~~~~c~~c~~~c~~
このような書き方は「ストトン表記」として知られていて、頭の中でイメージしたリズムをそのままMMLで打ち込む場合に適しています(本来、ストトン表記は仮名文字と長音記号を使って書く記述法のことですが、上のようなものも含めてストトン表記と呼ばれているようです)。
/3 のように / の直後に正の整数 n を伴ったものは、それを音符や } に付加することで、音価を (それが無い場合と比べて)n 分の1にすることができます。これを利用して下の例のようにさまざまな連符を表現できます。
{ccc}/3 {ccc}*/3 {ccccc}/5 {ccc~cc}/3 {ccccc{ccc}*/3}*/7 {cccc}*./4

基準音価を変えるには大文字の L にすぐ続けて1, 2, 4, 8, 16, 32, 64, 128 のいずれかを書き、例えば L16 は基準音価を16分音符の長さに変更します。付点音符にしたいときは DOT、複付点音符にしたいときは DOTDOT をさらに加えます(例えば、L8DOT は基準音価を付点8分音符にする)。基準音価は曲の途中でも変えられます。
L8 cde* L16 gabagfed L1 c

波括弧内で基準音価を変えた場合、その波括弧内だけで有効な指定となり、波括弧を出たときは元の基準音価に戻ります。また、音符の後に (L4) のように丸括弧で囲んで基準音価変更を指示すると、その音符だけについて音価が変更されます。このような指定は、それまでの基準音価に影響されない絶対的な音価指定として利用できます。
L8 cd(L4)f {L16 gaba} ge

数式を使って基準音価を指定することもできます。この場合は、L= に続けて、上で説明した L16 などの音価名、数値、もしくはそれらを +, -, *, / で結合したものを書きます。例えば、L=L4/3 は4分音符を3等分した長さ、L=L2+L8 は2分音符と8分音符を合わせた長さ、L=100 は100ティックの長さ(つまり4分音符の100/480の長さ) をそれぞれ基準音価とします。c(L=100) のようにして丸括弧の中で使うこともできます。数式を使う場合は、c(L=L4/3) や {L=L2+L8 cdef} のように必ず L= を置く必要があり、c(L4/3) や {L2+L8 cdef} はエラーになりますので注意してください。
これまで説明した機能を使って曲を記述した例を下に示します。各行先頭の L8 は、最初の行を除いて省略可能ですが、あったほうが音価が明確になって良いと思います。
F. シューベルト作曲「野ばら」 (ハ長調に移調) IMSLPのページ
L8 eeee {gffe}/d~ ddef g~^cr
L8 eeee {gf+f+e}/d~ gga.g/ {f+gab}/g~ {gbagf+ed+e}/ ^c.f+/ g~
L8 ddef g{ab}/^c~ a^cfac{ed}/c~
H. ヴェルナー作曲「野ばら」 (ハ長調に移調) IMSLPのページ
L8 e~eg.f/e d~dd~~ e~efga a~~g~~
L8 g~fe~e e~dc~~ c~ccde f~ed~~ e~eg.f/e e~~d~~
L8 e~ga~a gab^c~~ ^c~ag~e d.e/dc~~
F. シューベルト作曲「セレナーデ」IMSLPのページ(4曲目)
L8 {ab-a}*/3^d~~a {gag}*/3^d~gr a~~g{gfe}*/3 f~~~rr rrrrrr rrrrrr
L8 {ab-a}*/3^f~~a {gag}*/3^e~~^d ^c~~b-{b-ag}*/3 a~~~rr rrrrrr rrrrrr
L8 a.^c+/^f~~^e ^d.a/f~~d {b-ab-}*/3^d~~b- a~~~~~
L8 {gf+g}*/3b-~~g f~~~~~
L8 a.^c+/^f~~^e ^d.a/f+~~d {ba+b}*/3^d~~b a~~~~~
L8 ^{ed+e}*/3^g~~^c+ ^d~~~~~
L8 a.a/^c+.^c+/^e.^e/ ^d~^c+~rr a~~^c+^e.^d/ ^c+~~~rr
L8 ^f+~~^e^{edc+}*/3 b.^c+/^d~br rrrrrr rrrrrr
L8 {ba+b}*/3^d~~b a~~~~~ ^{ed+e}*/3^g~~^c+ ^d~~~~~ ~~ rr ^d~
L8 b-~~~~~ a~~~~~ f+~~~rr r(L=L2DOT*6)
もし基準音価が4分音符ならば冒頭部分は
{ab-a}/3^d.a/となりますが、上のように基準音価を8分音符にした方が付点のリズムが分かりやすいと思います。{}*/3は本来音符2つのところに3つ入れるための常套句と覚えておくと良いでしょう。
同じ曲を2章で説明した2番目のスタイルで記述すると下のようになります。
L8 {A Bb A}*/3 ^D~~ A {G A G}*/3 ^D~ G r A~~ G {G F E}*/3 F~~~rr rrrrrr rrrrrr
L8 {A Bb A}*/3 ^F~~ A {G A G}*/3 ^E~~ ^D ^C~~ Bb {Bb A G}*/3 A~~~rr rrrrrr rrrrrr
L8 A. ^C#/ ^F~~ ^E ^D. A/ F~~ D {Bb A Bb}*/3 ^D~~ Bb A~~~~~
L8 {G F# G}*/3 Bb~~ G F~~~~~
L8 A. ^C#/ ^F~~ ^E ^D. A/ F#~~ D {B A# B}*/3 ^D~~ B A~~~~~
L8 ^{E D# E}*/3 ^G~~ ^C# ^D~~~~~
L8 A. A/ ^C#. ^C#/ ^E. ^E/ ^D~ ^C#~rr A~~ ^C# ^E. ^D/ ^C#~~~rr
L8 ^F#~~ ^E ^{E D C#}*/3 B. ^C#/ ^D~ B r rrrrrr rrrrrr
L8 {B A# B}*/3 ^D~~ B A~~~~~ ^{E D# E}*/3 ^G~~ ^C# ^D~~~~~ ~~ rr ^D~
L8 Bb~~~~~ A~~~~~ F#~~~rr r(L=L2DOT*6)