サンプルデータ primavera.pmx の冒頭部分を見てみましょう。
「PMX を始めよう!」と思い立った方の第一関門が、このセットアップデータなのではないでしょうか?
PDF:primavera.pdf
画像:ページ 1、2、3、4、5、6、7、8
パート譜:Violino principale、Violino I、Violino II、Viola、Basso
などと照らし合わせながら、順に見ていきましょう。
行の頭に %
がある行はコメントです。
コメント行の特殊な使い方は、「総譜からパート譜を作る」を見て下さい。
コメント行は無視されるので、上記のソースは、
と書いても同じなのですが、それだと各パラメータの意味がとてもわかりにくくなってしまうので、通常はサンプルデータをコピーして修正する方がいいでしょう。
nv
nv
(number of staves)は、スタッフ(staff:五線の 1行;複数形は staves)の数です。
12 以下の整数を指定します。
1つのスタッフには 1つまたは 2つのヴォイス(voice)が属します。
noinst
noinst
(number of instruments)は、インストゥルメント(instrument:楽器)の数です。
nv
以下の整数を指定します。
各インストゥルメントは、1つの名前を持ちます。
1つのインストゥルメントに 2つ以上のスタッフが割り当てられている場合(例えばピアノなど)、括弧(ブレイス)で括られます。
noinst
= nv
なら、各インストゥルメントに各スタッフが割り当てられます。
noinst
< nv
なら、余ったスタッフすべてが一番下の(つまり、一番最初に記述する)インストゥルメントに割り当てられます。
次の例は、nv
= 3
、noinst
= 2
です。
途中のインストゥルメントに複数のスタッフを割り当てるには、noinst
にマイナスの数値を指定して、続けて各インストゥルメントのスタッフ数をスペースで区切って記述します。
次の例は、nv
= 5
、noinst
= -4 1 2 1 1
です。
この説明図のソース
当然ながら、この例で言えば 5
、-4
、1 2 1 1
の関係が不整合だと、怖いことになります。
mtrnuml
mtrdenl
mtrnuml
(logical numerator of the meter)と mtrdenl
(logical denominator of the meter)は、拍子の分子と分母です。
例えば、8分の6拍子なら、mtrnuml
= 6
、mtrdenl
= 8
です。
いずれも、整数を指定します。
mtrdenl
が 2 か 3 の倍数なら符尾の連桁が自動的に行われますが、それ以外の場合は、[...]
で明示的に連桁を指定する必要があります。
mtrnump
mtrdenp
mtrnump
(printed numerator of the meter)と mtrdenp
(printed denominator of the meter)は、表示上の拍子の分子と分母です。
いずれも、整数を指定します。
mtrnuml
と mtrdenl
で指定した実際の拍子と関係なく、mtrnump
と mtrdenp
で 4/4 を指定してやれば、譜面上には 4/4 が表示されます。
ここで指定された拍子は、譜面上に表示されますが、内部での拍子整合性のチェックには影響しません。
mtrnump
にマイナスの数値を指定すると、拍子に縦棒が引かれます。
次の例は、mtrnump
= -2
、mtrdenp
= 3
です。
mtrnump
= 0
の場合,mtrdenp
の指定によって次のように表示されます。
0
: Blind
1
:
2
:
3
:
4
:
5
: Cut time(alla breve)
6
: Common time
7
:
xmtrnum0
xmtrnum0
は、弱起の拍数です。
弱起がない場合には 0
を指定します。
この説明図のソース
4/4 拍子で弱起が 1拍の場合には、1
を指定します。
この場合、1小節目で m4/4/0/0
を指定して、本来の拍子に戻してやる必要があります。
この説明図のソース
xmtrnum0
には小数も指定できます。
次の例は、xmtrnum0
= .5
です。
この説明図のソース
isig
isig
は、調性です。
正でシャープ、負でフラットの数を指定します。
isig
= 0
isig
= 1
〜 isig
= 7
isig
= -1
〜 isig
= -7
npages
nsyst
npages
(number of pages)は、楽譜の総ページ数です。
0
か 20以下の正の整数を指定します。
nsyst
(total number of systems)は、システム(system;スタッフの集まりである楽譜の一段)の段数です。
125以下の正の整数を指定します。
primavera.pmx では、全体の楽譜を 24段に分けて、8ページにしているので、npages
= 8
、nsyst
= 24
です。
当然ながら、この 2つのパラメータに無茶な設定をすると、えらいことになります。
npages
を 0
にすると、nsyst
は一段当たりの平均の小節数として解釈されます。
これは、楽譜を少しずつ打ち込んでいく際に有用です。
npages
= 0
、nsyst
= 4
あたりでがしがしと楽譜を打ち込んでいって、最後にその出力結果を参考に npages
と nsyst
を調整しましょう。
musicsize
musicsize
は、楽譜の高さ(単位はポイント)です。
16
、20
と、(マニュアルには記載されていませんが)24
、29
が指定できます。
musicsize
= 16
:
musicsize
= 20
:
musicsize
= 24
:
musicsize
= 29
:
fracindent
fracindent
は、最初のシステム(段)にインストゥルメント(楽器)名を表示するための左インデントを指定します。
楽譜の横幅に対する割合を 0 〜 1 の小数で指定します。
fracindent
= 0
:
fracindent
= .2
:
fracindent
= .4
:
fracindent
の指定の後で改行します。
続いて、各インストゥルメントの名前を、noinst
の数だけ、1行に 1つずつ、楽譜上で一番下になるインストゥルメントから順に記述していきます。
インストゥルメント名を表示する必要がなくても、noinst
分の空行が必要です。
インストゥルメント名以下のセットアップデータの残りの部分は、上記のパラメータ指定や大部分のコマンドと違って、行指向の記述になります。
次の行に、各スタッフの音部記号を、ひとつ 1文字ずつ、一番下のスタッフから順に記述していきます。
b
、r
、n
、a
、m
、s
、t
、f
或いは 0
〜 7
を指定します。
t
、0
: treble
s
、1
: soprano
m
、2
: mezzo-soprano
a
、3
: alto
n
、4
: tenor
r
、5
: baritone
b
、6
: bass
f
、7
: French violin
セットアップデータの最後の行には、PMX が TEX ファイルを出力するディレクトリのパスを記述します。
primavera.pmx では ./
となっていて、これはカレントディレクトリを意味します。
通常はこのままでいいでしょう。
このパス指定の最後は、/
か \
でなければなりません。
セットアップデータの次の行から、音符などのコマンドを入力していくボディの部分になります。
(ほとんどの)PMX コマンドは、1文字のコマンド文字とそれに続くオプション文字列で構成されます。
各コマンドの間は、1つ以上のスペースか改行で区切られます。
コマンドは、(単数または複数の)小節単位で打ち込まなければなりません。
コマンドの音価の合計が小節線からはみ出したり足りなかったりすると、エラーになります。
このコマンドのまとまりのことをインプットブロック(または単にブロック)といいます。
この例では、最後の行が 1つのインプットブロックになります。
ここでは、2小節分を 1つのインプットブロックとして入力しています。
と縦棒(|)を入れると、小節線の位置がわかりやすくなるだけでなく、小節毎の音価の不整合をチェックしてくれます。
次は、複数スタッフの楽譜を打ち込む例です。
この例では、最後の 2行で 1つのインプットブロックとなります。
複数スタッフの楽譜を入力する場合には、楽譜上で下になるスタッフから入力していき、スタッフの終わりで /
を入力して改行します。
これが nv
分だけ繰り返された時点でインプットブロックが終了します。
次の例は、上とまったく同じ楽譜を出力しますが、意味的には異なるものです
nv
= 2
なので、上の 2行で 1つのインプットブロック、下の 2行で 1つのインプットブロックを形成します。
つまり、この例では、1つのインプットブロックで 1小節を記述していることになります。
PMX コマンドの中には、インプットブロックの最初に記述しないとエラーになるものがあります。
拍子の変更など、システム全体に影響を及ぼすものがその典型です。
わかりやすいように、コメントで小節番号を明記しておきましょう。
その際に、%
と小節番号の間にスペース(か他の何か)を挟むことを忘れないようにしましょう(理由は、コメントの特殊な使い方を参照)。
次は、1つのスタッフに 2つのヴォイスを入力する例です。
//
〔改行〕で区切ると、同じスタッフに 2つのヴォイスを記述できます。
としても、同じ結果が得られます。
Last-modified: 2009/12/30