備忘のための MusiXTeX ノート

まうかめ堂では、楽譜の作成を MusiXTeX + PMX + M-Tx という TeX のツール群でやっています。 何分にも TeX なので、だいぶ面倒なことになっています。 しかも、しばらくぶりに楽譜を作ったりすると、前に苦労して得たノウハウを忘れてたりします。 そこで、私自身の備忘のために、MusiXTeX + PMX + M-Tx に関するノートを作っておきます。

そういうわけなので、MusiXTeX + PMX + M-Tx の基本的なことについては一切書きません。そういったことに興味のある人は、例えばとのむ〜さんによる次のサイトを見られると良いでしょう。

WIDTH

あ、それから、以下の例で、「そんなことしなくても、もっと簡単にできるよ」ということがありましたら是非教えてください。

M-Tx編

三連符は、例えば c4x3 c c という風。(4x3 は四分音符を三つに分けるという意味。但し、これは PMX の命令。)

musix00
Style: Solo
Size: 20
Meter: 3/4
Bars/line: 5

 r2 a4 | c e2 | d4 [ e8 g ] [ f d ] |  d4x3 c d [ e8 b ] c4s | d2d |

ムジカ・フィクタの可能性を示すのに、音符の上に#, ♭を付けたいときは \uppersh x\, \upperfl x\ を入れる。(この段階で入れておくと心理的負担が軽減する。)

musix01
Style: Solo
Size: 20
Meter: 6/8
Bars/line: 5

f2 c+4 | \upperfl i\ b8 a4 f g8 | [ e c d1 e ] f8 e4 | f4d r4 c+8 | c2 a4  |

途中で拍子を変えるときは m3434, m4444 等のPMX の命令を使う。(ちなみに m3400 とやると中身は3/4拍子になるけど表示はされない。)

musix02
Trio: Voices S S S; Vocal; Clefs G G G
Style: Trio
Size: 20
Meter: 3/4
Bars/line: 7

r4 r c | [ e8 f ] g4 [ f8 e ] | m4444 g4 [ f8 d ] [ e f ] d4 | m3434 f4d e8 [ e d ] | e2d |
r4 r g | [ b8 c ]   d4 [ c8   b ] | m4444   d4   c   [ b8 c ]   a4 | m3434   c4d   b8 [ b a ] | b2d |
r4 r c | [ g8+ a ]   b4   a | m4444 g2   g4 [ f8   g ] | m3434   a4   g f | e2d |

PMX編

ひとつの例

pmx01

そのソース→alle.pmx

コードの冒頭部分

%
% Example of PMX file (Alle psalite cum luya)
%
% nv,noinst,mtrnuml,mtrdenl,mtrnump,mtrdenp,xmtrnum0,isig,
  3    3       6       8       6       8     0.00000   0 
%
% npages,nsyst,musicsize,fracindent
    0      7      20       0.12
{\twelvebf{Tenor}}
{\twelvebf{Duplum}}
{\twelvebf{Triplum}}
600
./
Tt
Alle psallite cum luya 
Tc
Montpellier Codex

nv = the number of staves
noinst = the number of instruments
mtrnuml = logical な拍子の分子
mtrdenl = logical な拍子の分母
mtrnump = 印刷される(printed)拍子の分子
mtrdenp = 印刷される(printed)拍子の分母

もし mtrnump = 0 なら、mtrdenp の値によって次が印刷される。
0なにも印刷されない
1,2,3,4一桁の数
5alla breve
6C
73に縦棒

xmtrnum0 = 最初の小節が半端な拍数のとき、その拍数。(小数可。)
isig = 調号(正なら#の数、負なら♭の数)
npages = ページ数
nsyst = the total number of systems
musicsize = 16 または 20 (pt を表す)
fracindent = 最初の段の左端からの indent を小数で表す

その後の三行がパートの名前。(下から上の順)

その次の 600 は、それぞれのパートの音部記号(clef)を表す。(これも下から上の順。) t,s,m,a,n,r,b または 0-7 の数が、それぞれ、treble, soprano, mezzo-soprano, alto, tenor, baritone, bass, French violin の clef を表す。

Tt はタイトル、Tc は composer.

途中で一段の instrument 数が変わる例

pmx02

そのソース→pmx-ex2.pmx

instrument数が変わるところのコード

%Bar 12
g2 r4 | /
g2 r4 | /

% Paragraph 5 line 28 bar 13
L4Mn3123ttt r4 r4 c44 | /
r4 r4 g4 | /
r4 r4 c4+ | /

L4 = 4段目の開始部
M = line break を置く
n3 = 新しい instrument 数は 3
123ttt = 1, 2, 3番目の instrument の clef はそれぞれ t, t, t (全部 treble clef)

最初から少ない instrument 数で始めるのは無理らしい。そういうときはダミーページを作り2ページ目から曲が始まるようにする。(他に良い方法はないでしょうか?)

Tt
This is a dummy page.
% Paragraph 3 line 22 bar 1
rp | /
rp | /
rp | /
Tt
Alleluya: A nywe werke 
Tc
The Selden Carol Book
L2P2Mn212tt r4 r4 g44 | /
r4 r4 g44 | /

ここで P2 は page break を表す。

アウフタクトの例。(参照するソース→congaudeant.pmx)

pmx03
%
%  Example of Auftakt
%
2 2 1 8 6 8  0.00000 0 0 4 20 0


60
./
% Paragraph 3 line 23 bar 1
%m1/8/0/0
fa83 | //
fa83 | /
[   fa14   ea1 ] | /

%Bar 2
m6/8/0/0
\\\advance\barno-1\
a4 ga8 f4 ea8 | //
d4 ea8 f4 ga8 | /
[   fa8   da8 ] [   da3 ca3 da3   ea3 ] f4 ca8 | /

まず、set up のところで拍子を 1 8 6 8 にする。Bar 2 で、m6/8/0/0 として logical な拍子を 6/8 に変える。\\\advance\barno-1\ は小節番号を一つもどす。(そうでないとアウフタクトの小節が1小節目とカウントされる。)

MusiXTeX 編

まず参考にするソース→bellebon.tex

よく忘れる octave clefの命令。

\setclefsymbol 1\treblelowoct
treblelowoct

一つのパートだけ拍子記号を変える極めて ad hoc な方法。(もちろん、こんなことしなくてもできますが、この方がレイアウト的に良い場合がある。)

% Bar count 44
\xbar
\pnotes{1.9}\tslur1{'F}\ql F&\hu{'a}&%
\roffset{0.8}{\lcharnote e{\meterfrac24}\ibbl3{'d}0\qb3d\ast{.24}\qb3e}%
\en%
musixtex02

\roffset{0.8}{...} は ... を音符 0.8 個分の長さだけ右にずらす。左にずらすときは\loffset。\lcharnote e{...} はその次の音符の左側の e の位置に ... を置く。 類似の命令に \rcharnote, \zcharnote などがある。

offset の命令は、ヘ音記号でB♭の調号をオクターブ上に置きたいときも使ったりする。(ほんとはマクロを作るべきなんでしょうけど…。)

\pnotes{4.00}\loffset{3.0}{\bigfl b}\hl{'G}\en%
\pnotes{2.83}\ql{'G}\en%
musixtex03

さて、次のような

musixtex04

を出すのにこんなことをしたことも…。

\pnotes{2.83}\beginmel{\tinynotesize\roffset{2.6}{\lpar{a}\zw a\rpar{a}}}\hl {N}
\sk\hl M\en%

パートごとに別の調号を用いるとき

musixtex05
\generalsignature{-1}%
\setsign2{0}%

musixlyr 編

長いメリスマ部分では、単語間に長いダッシュが入ってしまう。

musixyr01

これを抑止するには \minlyrrulelength を調整すれば良い。これは単語間のダッシュの最小の長さの指定なので、これを紙の大きさよりも大きくするとダッシュは全て消えます。

\minlyrrulelength=30cm
musixyr02

途中で歌詞が三段から二段に変わる場合。(bellebon.tex より。)

musixyr03
% Bar count 22
\stoppiece%
\setlyrics{Vous}{{\hskip -1.5mm}2.8.Vous}
\setlyrics{Qui}{6.Qui}
\vskip2.1\Interligne\eject%
\interstaff{17.0}\contpiece
\znotes&&\zcharnote{16}{\titles{4.8}{}{0}{}{0}{}{0}}\en%
\pnotes{2.83}\hlp{''A}\sk{\lcharnote A {\bigtype *}}&%
\hl{'e}\sk\isluru0c{\lcharnote {f} {\bigtype *}}%
\uppersh d\ql c&\ql{''a}\qp{\lcharnote a {\bigtype *}}\assignlyricshere{Vous,Qui}\ql a\en%
\setlyrics{11}{fait le don d'u-ne chan-son nou-vel-le}%
\setlyrics{12}{fa-me\lyrlink a-ves que chas-cun vous ap-pel-le:}%
\assignlyrics3{11,12}%

\assignlyricshere を用いるとそれなりにうまくいきます。

Last modified: 2006/3/21