MusiXTeX 再び

ツェルニー練習曲100番の楽譜を手に入れようとしていただけなのに,何故か「楽譜がみつからない」→「MusiXTeXで自分で書いてしまえ」→「MIDIデータもない」→「仕方ないからソナタ悲愴でテスト」→「PMXの動作が不満」→「MusiXTeXのソースから書いてしまえ」とか,無謀なことになってます.2小節だけ書くのに鬼のように苦労していたり.

MusiXTeX でピアノソナタ悲愴(1)

MusiXTeX を使うと,前述の通りかなり綺麗な楽譜を書くことができます.6時間くらいかかって書いた,悲愴ソナタの一部を画像で貼って見ました.実際にはこの二倍のサイズがあるのですが,そのまま貼ると大きすぎるので縮小してあります.


しかし,これを表示させるには次のようなソースを書く必要があります.はっきりいって呪文ですわな.自分で最初から書いているのに,だんだん訳分からなくなります.


\input musixtex
\input musixsty
% page style
\hsize=195mm % 譜面の横幅
% def
% Sonata 'Pathetique' No.8 Op.13 by L.v.Beethoven
% Local Macro
% title (for musixsty.tex)
\fulltitle{Sonata `Path\'{e}tique'}
\subtitle{Op.13}
\author{\medtype L.v.Beethoven}
\shorttitle{Allegro}
%\shortauthor{Typeset by Kitanura K. 1997.8.}
\maketitle
%
\def\nbinstruments{1}% % パート数 1
\setstaffs 1{2}% パート1の段数 2
\setclef{1}{60}% % ト音記号(右手パート)
\generalsignature{-3}% % 調号=ハ短調
\generalmeter{\allabreve}% % 拍子はC(2分の2拍子)
%\nostartrule % 左端の線なし
\nobarnumbers % 小節番号なし
%
\startmuflex
\startpiece % 楽譜スタート
\qspace\nspace
%
%1 どーみ
\leftrepeat % 右向きリピート記号
\Notes \ccharnote B{\PED}\ibu0I0\qb0{CJC}\tbu0\qb0J%
\ibu0I0\qb0{CJ}\ccharnote B{\DEP}\qb0{C}\tbu0\qb0J|%
\uptext{\medtype\bf Allegro di molto e con brio.}% 速度・演奏指示
\lcharnote L{\p}% 強弱表示
\hup c\sk\sk\sk\sk\sk
\lpz b\lfl b\zq b\qu{=e}\en
\bar
%2 ふぁそらし
\NOtes\ibu0G8\hb0{C}\tbu0\hb0J\ibu0G8\hb0{C}\tbu0\hb0J|%
\lpz a\zq a\qu f\lpz e\zq{=e}\qu g\lpz f\zq f\qu h\lpz d\zq d\qu{=i}\en
\bar
%3 どどーみ
\NOtes\ibu0G8\hb0{C}\ccharnote B{\PED}\tbu0\hb0J\ibu0G8\hb0{C}\ccharnote B{\DEP}\tbu0\hb0J|%
\lpz e\zq {_e}\qu j\ccharnote N{\sF}\zh{=e}\hu j\sk\upz l\lfl i\zq i\ql{=l}\en
\bar
%4 ふぁそらし
\NOtes\ibu0G8\hb0{C}\tbu0\hb0J\ibu0G8\hb0{C}\tbu0\hb0J|%
\upz m\zq h\ql m\upz n\zq{=l}\ql n\upz o\zq m\ql o\upz p\zq k\ql{=p}\en
\Endpiece % 太い二重線で終える
\end

MusiXTeX でピアノソナタ悲愴(2)

MusiXTeX を使うには,プログラムをインストールする必要があります.わたしは個人的に Windows 2000FreeBSD, Linux, SunOS などで動かしたことがありますので,少なくともそれらの OS では使えるはずです.MacOS でも一応動くそうですから,ほとんどのコンピュータで使えるということですね.


  • MusiXTeX のインストールについて

インストール方法については前に挙げた「MusiXTeX入門」の中で詳しく説明されています.ファイルをとってきて実行ファイルを実行したら,すんなりインストールされるという楽なものではありません.しかし,根気強く書かれている通りに忠実に実行していけば,ちゃんとインストールできます.


手順どおりにインストールすると,コマンドプロンプトから ptex, musixflx, dviout というコマンドが使えるようになるはずです.ptex は楽譜のソースファイル(例えばsonata8a.tex)をコンパイルして sonata8a.dvi というファイルを作ります.musixflx というコマンドは,楽譜の音符の配置を紙面にあうように,音符間の間隔を調整するプログラムです.そして dviout というコマンドは,できあがった dvi ファイルを画面に表示させるプログラムです.この他に dvipdfmx というコマンドがあり,これを使うと dvi ファイルから pdf ファイルを作ることができます.pdf ファイルにすると多くの人が見ることができるので,作った楽譜を配布するときは pdf ファイルにしておきます.なお,試作の楽譜の pdf ファイルはこちら(sonata8a.pdf)です.

手順をまとめると,次のようになります.

  1. xxxx.tex ファイルを書く.
  2. ptex xxxx.tex を実行する.(xxxx.mx1, xxxx.log, xxxx.dvi ができる)
  3. musixflx xxxx.tex を実行する.mx1 ファイルを読み込み,音符の間隔が調整される.調整結果は mx2 に書き込まれる.
  4. ptex xxxx.tex を再実行する.← 重要.これを実行することで,mx2 ファイルが読み込まれて音符の位置が調整された状態で dvi が作り直される.
  5. dviout xxxx.dvi として画面に表示する.ただし .dvi が更新されると dviout は自動的にファイルを再度読み込むので,dviout は起動したままでよい.
  6. del xxxx.mx1 xxxx.mx2 としておく.これをしないと楽譜を書き換えても,結果に反映されないことがあります.← 重要
  7. dvipdfmx xxxx.dvi を実行して xxxx.pdf を作る.これは必要に応じて,最後に一度実行すればよい.

実際に手順の 2〜4をコマンドライン上で実行している様子を示します.

ptex を実行したときに出力されるログは xxxx.log に出力されます.見てもあんまり参考にはなりませんが….表示される内容は,実行している環境によって変わるので,必ずしもこの通りになるとは限りません.もしも上に挙げたソースがこの手順でちゃんと表示されないとすれば,インストールの手順に何か問題があるかもしれません.

MusiXTeX でピアノソナタ悲愴(3)

MusixTeX のソースの書き方については,やはり「MusiXTeX入門」でかなり詳しくかかれています.また英語の MusiXTeX and Related Software を元に作られた日本語のMusiXTeXマニュアルを作られている方がいて,これらに詳しい説明があります.ですので,ここではわたしがソースファイルを書いていく上でつまずいたことを中心に,要点だけ書いていきます.

前述の通り.楽譜を作るには .tex という拡張子(サフィックス)を持つファイルを書く必要があります.このファイルの内容は,普通のテキストエディタで書けます.また,ファイルの内部の構成は大まかに次のようになっています.


\input musixtex % musixtex を使うという宣言(必須)
% このあたりに,パート数,パート名,調などを書く.
\startmuflex % ここから先に musixflx が調整すべき音符を書くという宣言.
\startpiece % 楽譜がここから始まることを宣言
% ここに楽譜を書く.
\end % ファイルの終わりを示す(必須)

上の囲みの中の '%' という文字は,その文字から後ろの部分は「注釈」として扱われることを意味します.つまり上のファイルは,ptex コマンドにとっては次のようにかかれているのと同じです.


\input musixtex
\startmuflex
\startpiece
\end

実際,これだけの内容を書いたファイルを作ってコンパイルすると,次のような空っぽの楽譜ができます(サイズは半分にしてあります).

この状態ではただの五線譜ですね.実際に譜面を書く場合には,次のような情報を書き込みます.


  • パート数(各パートの段数),パート名
  • 各パートの調,音部記号

ピアノ譜に限れば,パート数は1(1楽器で1パートと数える),段数は2(通常のソロピアノ譜の場合)なので,次のようになります.


\input musixtex % musixtex を使うという宣言(必須)
% ----------------------------------
\def\nbinstruments{1} % パート数 1
\setstaffs 1{2} % パート1の段数 2
\setclef{1}{60} % パート1の格段の音部記号(6=ヘ音記号,0=ト音記号
\generalsignature{-3} % 調号=ハ短調
\generalmeter{\meterC} % 拍子はC(4分の4拍子)
% ----------------------------------
\startmuflex % ここから先に musixflx が調整すべき音符を書くという宣言.
\startpiece % 楽譜がここから始まることを宣言
% ここに楽譜を書く.
\end % ファイルの終わりを示す(必須)

音部記号は 0 がト音記号,1〜4がハ音記号,5,6がヘ音記号です.音部記号は下段のパートから順番に指定します(上の例では先に書かれた6が左手側のヘ音記号に対応し,あとの0が右手パートのト音記号になります).調号は 0 ならハ長調(またはイ短調),プラスの数字でシャープの数を,マイナスの数字でフラットの数を指定します.ピアノソナタ悲愴の場合はハ短調でフラットが3つなので,-3 を指定しています.拍は 4/4 の場合は \meterC と,2/2 なら \allabreve,それ以外の n/m なら \generalmeter{n}{m} と書きます.3/8 拍子なら \generalmeter{3}{8} という感じです.