音の高さ

MMLでは音符や休符をアルファベットの文字で表します。下のようにハ長調スケール上の音は cdefgab、そして休符は r で表します。

cdefgabr

大文字のアルファベットも使用可能で、意味は小文字と変わりません。

シャープは + または # (意味は同じ)、フラットは - または b (意味は同じ) で表わされ、音符の後にいずれかを2個まで指定できます。ただし、b は大文字アルファベットの音符の直後に指定したときのみフラット (2個の場合はダブルフラット) の意味になり、そうでないときはB音を表す音符として解釈されますので注意してください。

accidentals

五線譜にあるような、シャープ、フラットは小節の終わりまで同じ高さの音符に対して有効というルールはありません。そのような場合、1つ1つの音符にシャープ、フラットをつける必要があります。

スペース、タブ、改行は音符や休符の間に自由に挿入でき、例えば小節の区切りに挿入して記述を見やすくすることができます。また、; から行の終わりまではコメントと見なされます。

このようにPytakt MMLには大文字と小文字、シャープ/フラットの記号、およびスペースに関して記述の自由さがありますが、混乱 (特に上で述べた b についての混乱) を避けるため、次の2つのスタイルのどちらかに従うことを推奨しています。

       譜例accidentals

ceff+ gb-gr
C E F F#  G Bb G r

スタイル1は、キーボードからの打ちやすさやコンパクト性を重視したスタイルで、小規模の曲の記述や、コマンドラインあるいはPythonプログラム中にMMLを埋め込んで使うのに適しています。スタイル2は、読みやすさを重視したスタイルで、特にベロシティなど表情に関しての指示を追加するような場合に有利です。MMLをファイルに格納して大規模な曲を記述する場合は、スタイル2の方をおすすめします。

オクターブの指定

ある音符のオクターブを上げるには、その音符の前に ^ を付けます。逆に、下げるには _ を付けます。これらを複数付ければ2オクターブ以上、上下させることができます。(他に、LilyPond等で採用されている後置の', , も利用可能ですが、このチュートリアルでは使用していません。)

specifying octaves

複数の音符のオクターブをまとめて上下させるには、{} で音符群を囲み、その前に ^ または _ を置きます。

cdefgab^{cdefgab^cbagfedc}bagfedc

specifying octaves with braces

基準オクターブ (音符に ^_ が何もない場合のオクターブ) は、開始時に 4 (これは中央ハ音から始まるオクターブを意味します) に設定されていますが、変更可能です。上の ^{} も基準オクターブを暗黙的に変更していますが、直接的に指定することも可能です。たとえば、o=3 は基準オクターブを3に変更し、o+=1 は基準オクターブを1増やします。ただし、これらは各音符のオクターブを分かりにくくするので、多用は避けたほうが無難です。

o=3 gab^c o+=1 defg

specifying octaves with assignments

この他、各音符の後 (シャープ、フラットがある場合はその後) にオクターブを表す数字を置くことで、オクターブの直接指定ができます。このように指定した音符の音の高さは、^_ や基準オクターブの影響を一切受けません。

C4 C5 G3 C#2 Bbb3


    (参考: オクターブ、ピアノ鍵盤、五線譜、MIDIノート番号の関係)octaves and piano keys

調を指定して自動的にシャープ、フラットをつける

読みにくくなりやすいのであまり使用を奨励していませんが、調を指定して自動的にシャープ、フラットをつける機能があります。例えば、変二長調の曲の場合、次のような記述が可能です。

key=-5  A G% A ^C B Abb Abb Ab

specifying keys

key= の後には調号に含まれるシャープまたはフラットの数(フラットの場合は負の数)を指定します。% はナチュラルを表しています。最後の AbA でも同じ結果になります。key を使用しない場合の等価な記述は下の通りです。

Ab G Ab ^C Bb Abb Abb Ab


Last update: Apr 23 2026 16:41 JST     Copyright (C) 2026 Satoshi Nishimura Top Page