*楽譜 [#z503491d]

綺麗な楽譜を作成する方法を説明します.
このページには,TeX を用いて実装された MusiXTeX と,かつて TeX を直接用いていた LilyPond の解説があります.

----
#contents
----

*[[MusiXTeX:https://ctan.org/pkg/musixtex]] [#l0a501fd]

-[[WIMA: Werner Icking Music Archive:http://icking-music-archive.org/]] 総本山。
--[[MusiXTeX and Related Software:http://icking-music-archive.org/software/htdocs/index.html]]
-https://ctan.org/pkg/musixtex

**MusiXTeX とは [#r3b8c608]
TeXで楽譜を書くための拡張マクロパッケージです。ASCII表記での綴りはMusiXTeXです(Xは大文字が正しい)。

歴史的には、MusicTeXをベースにして、音符の横幅の割付方法を改良した(TeX内部で計算できる内容には限度があるので、処理を外部実行ファイル musixflx に任せて細かい処理を行えるようにした)のがMusiXTeXです。(&color(red){Musi};cTeX + MusicFle&color(red){x}; = MusiXTeX)

ライセンスは(ver.T.104以降)GNU GPL v.2 or laterです。

公式ドキュメント(英語)は
[[Werner Icking Music Archive の MusiXTeX and Related Software(PDF ファイルへの直接リンク):http://icking-music-archive.org/software/musixtex/musixdoc.pdf]] 
にあります。

日本語のドキュメントは、かなり古いバージョンT.98相当ですが、[[MusiXTeX (MusicTeX) による楽譜ライブラリ:http://www.mab.jpn.org/musictex/]]
(M.A.B.) の [[MusiXTeXの日本語版マニュアル:http://www.mab.jpn.org/musictex/musixtex_j.html#MusiXJdc]] が存在しています。記述文法等、基本的な内容解説の多くは現在でも有用です。


**履歴 [#y424375c]

公式最新バージョンは 1.37 (2023-10-07) です。([[Werner Icking Music Archive の MusiXTeX and Related Software:http://icking-music-archive.org/software/htdocs/index.html]])

主著者である故 Daniel Taupin 氏自身が最後にまとめたバージョンはT.112です。その後、バグ修正やwell-known拡張パッケージの同梱(T.113・T.114)、e-TeX拡張への対応(T.115→1.15)、フォント取扱の現代化その他(1.16)等の活動が、TeX-music Maliling List のコミュニティによって続けられています。

2021年5月末から6月初頭にかけて、MusiXTeX の Type 1 フォントのグリフに埋め込まれている情報の誤りが dvipdfmx に影響を与えて PDF 変換結果がおかしくなる場合がある事象について報告があり、原因が Type 1 フォント側にあったことが判明したため修正版フォントが掲載されました。[[MusiXTeX and Related Software:http://icking-music-archive.org/software/htdocs/index.html]] を参照してください。


**インストール [#zdd8bb18]

TeX Live には最初から MusiXTeX がインストールされています.

//手動でのインストール(ここでは、総本山からgetしたT.115を用いて説明します)は,おおむね以下のようにします。
//+書庫を適当な一時ディレクトリに展開します。多数のサブディレクトリができます。その最上位にできる musixdoc.pdf がマニュアル(英語)です。なお、2008/01/01現在CTANにある書庫は musixdoc.pdf のPDF化手段と書庫内位置の違いだけで、他の全ファイルやこれ以下のインストール手順は同一です。
//+doc ディレクトリの中身はドキュメントとそのソースファイルです。これらは適当な場所にコピーします。
//+tex ディレクトリ内の全ファイルを $TEXMF/tex/generic/musixtex/ に入れます。(ディレクトリがない場合は新規作成、以下同様)
//+fonts/mf ディレクトリ内の METAFONT ソースを $TEXMF/fonts/source/public/musixtex/ (W32TeX の場合) または $TEXMF/fonts/source/public/musixtex-fonts/ (TeX Live の場合) に入れます。
//+fonts/tfm ディレクトリ内の tfm ファイルを $TEXMF/fonts/tfm/public/musixtex/ (W32TeX の場合) または $TEXMF/fonts/tfm/public/musixtex-fonts/ (TeX Live の場合) に入れます。
//+fonts/type1 ディレクトリ内の Type1 PSフォントを $TEXMF/fonts/type1/public/musixtex/ (W32TeX の場合) または $TEXMF/fonts/type1/public/musixtex-fonts/ (TeX Live の場合) に入れます。
//+dvips ディレクトリ内の musix.map を $TEXMF/fonts/map/dvips/musixtex/ (W32TeX の場合) または $TEXMF/fonts/map/dvips/musixtex-fonts/ (TeX Live の場合) にコピーし(これは必ず $TEXMF 配下にする)、コマンドラインから updmap --add musix.map(或いは、updmap-sys --enable Map=musix.map)を実行します。
//+dvips ディレクトリ内の psslurs.pro を $TEXMF/dvips/musixtex にコピーします。
//+(W32TeX, TeX Live 以外の場合)systems ディレクトリ内から適切な musixflx の実行ファイルを選ぶか、必要により musixflx.c を自分で再コンパイル(gccなら gcc -O2 musixflx.c -o musixflx, MSVCなら cl /MD musixflx.c )し、PATH の通ったディレクトリにコピーします。(W32TeX, TeX Live には musixflx.exe が含まれているので何もしなくてOK.W32TeX には musixflx.exe が web2c-w32.tar.xz に含まれています.)
//+システムによっては必要により texhash ないし mktexlsr を実行します。
//
//これにより、MusiXTeX本体、Type1フォント、歌詞をサポートするmusixlyrパッケージ、dvips依存命令でスラーをPS化するmusixpsパッケージが導入されます。
//
//上記で$TEXMFのかわりに$TEXMFLOCALにインストールしても良いですが、/fonts/map/dvips/musixtex/musix.map (W32TeX の場合) または /fonts/map/dvips/musixtex-fonts/musix.map (TeX Live の場合) は updmap との関係上、必ず$TEXMFにコピーする必要があります。


**組版処理(3パス処理) [#i798ae1f]

MusiXTeXは楽譜を作成するのに3パスの処理を必要とします。また,LaTeX文章中に楽譜の例を引用する場合を除いて,LaTeXではなくplain TeXを使います。
例えばfoo.texがあるとすれば
+ euptex foo
+ musixflx foo
+ euptex foo

のように実行します。

和文フォントを適切に追加定義して (e-)(u)pTeX を用いることで、日本語文字の記述もできます。定義がない場合、和文フォントがdviドライバのデフォルト(通常10pt明朝体)で置換され欧文フォントに比べて小さくなったり、抜け落ちたりしてしまいます。必要な定義の入手はリンク欄を参照ください。

// ドキュメント入手に関する記述を、インストール から はじめに へ移動(2019-03-30)
// 奥村先生の三重大サイトがリンク切れのため、下記記述を削除(2019-03-30)
// ドキュメントの PDF 版(バージョン T.102)を
// &ref(https://okumuralab.org/~okumura/texfaq/musixdoc.pdf,ここ);
// &ref(https://web.archive.org/web/20151106121412/https://oku.edu.mie-u.ac.jp/~okumura/texfaq/musixdoc.pdf,ここ);
// に置いておきます(約 700 KiB)。

***Lua スクリプト musixtex.lua の注意 [#n8b7bc54]
お仕着せの Lua スクリプト musixtex.lua は米欧文版の TeX (etex, latex, pdfetex, pdflatex)しかサポートしませんので、日本語を含む楽譜には使えません。上記の通り手動で (e-)(u)p(La)TeX を用いることになります。

***dvipsを使用する時の注意 [#n7247b19]
dvips (dvipsk) で dvi を PS や PDF に変換するにあたり、手動で dvips を起動する場合には、通常の一般文書(学術論文や書籍など)の組版と異なり、次のようにオプション -e0 を指定してください。

 dvips [通常必要な各種オプション] -e0 hoge.dvi

dvips には individual characters to ‘drift’ from their correctly rounded positions by a few pixels という機能がデフォルトで内在しています(詳細は https://www.tug.org/texinfohtml/dvips.html を参照)。楽譜の組版にはこれが弊害となります。具体的には、音符の頭の位置、縦線類の位置・長さ、フォントパッチワーク実装による連桁・スラー(MusicTeX 時代に由来する実装で現在もデフォルトはこれ)などが、本来 MusiXTeX の意図する位置から自動移動されてしまい、おかしな出力が得られてしまいます((dvips のこの機能は通常一般的なフォントメトリック情報を期待しているであろうと推測されるのに対して、MusiXTeX のフォントはフォントメトリック情報が幅・高さともゼロのものがあるなど特殊な構成であることが、理由の一つとして推察されます。なお、オプション -D8000(あるいは -Ppdf)等として dpi 値を高めても、-e0 を指定しない限り自動ドリフト処置が施されることには変わりありません。これは出力された PS ファイル内の要素座標指定数値で確認できます。一見目立たなくても ghostscript に指定するレンダリング dpi 値や Adobe Acrobat Reader の表示拡大倍率の設定如何によってはこの自動ドリフト処置に起因する齟齬が顕在化することがあります(-D8000 等であっても)。))。~
オプション -e に引数 0 を指定することで、この自動位置調整ピクセル許容数をゼロにする(=機能を無効化する)必要があります。お仕着せ Lua スクリプト musixtex.lua (米欧文専用)には 2015-02-13 以降この対策が入っています。

dvipdfmx および dviout にはこの問題はありませんので通常通りの操作で大丈夫です。pdfTeX およびその各種派生物も通常通りの操作で問題ない模様です。


**[[PMX:https://ctan.org/pkg/pmx]], [[M-Tx:https://ctan.org/pkg/m-tx]] [#w4e7f46d]

PMX は MusiXTeX のプリプロセッサです。
[[Werner Icking Music Archive:http://icking-music-archive.org/]]
の [[MusiXTeX and Related Software /software/pmx:http://icking-music-archive.org/software/pmx/]]
が現在の一次配布元です。
これは MML に似た文法で記述するので,MusiXTeX そのままの文法で記述するよりはるかに効率良く楽譜を作成できます。[[MIDI:https://okumuralab.org/~okumura/midi/]] も生成できます(ただし同一パートの複数のタイが処理できない等の制限有り,専らデバッグ用の機能)。
ver.2.6以降の系列は、24パートまでの組版に対応するかわりにMusiXTeX T.115以降とe-TeX拡張を含むTeXが必須となっています。


M-Tx は PMX のさらなるプリプロセッサで,歌詞の取り扱いを容易にします。
バージョン0.63から、一次配布元が [[GitHub:https://github.com/dlaurie/M-Tx]] に変わりました((0.62までは [[Werner Icking Music Archive:http://icking-music-archive.org/]] の [[MusiXTeX and Related Software /software/mtx:http://icking-music-archive.org/software/mtx/]] が一次配布元でした。なお 0.63 もWerner Icking Music Archive や CTAN に転載されています。))。
なお、M-Txの24パート拡張版は残念ながら存在せず、PMX ver.2.6以降との組み合わせでも12パートまでの対応となります。


Windowsの場合、PMX、M-Txとも、TeX Live に含まれています。
//Linux に PMX をインストールするには、PMXを展開し、Makefile を適宜修正(GCC の場合には、Makefile の先頭あたりに
// FC = gfortran
//を追記)して
// make
// su
// make install
//します。


PMX、M-Tx とも ANSI 実装のプログラムです。歌詞などにおける和文文字の取り扱いは、M-Tx は原則として問題ありませんが、PMX はいわゆる Shift JIS backslash (0x5c) 問題があります(インラインで記述された TeX 命令をそのまま透過させる inline literal TeX string 機能において、入力ストリームのパースを byte 単位で行っているため)。
入力を Shift JIS encode のままでいくならば、M-Tx 段階での歌詞記述で「ソ」は「{ソ}」、「ソ{}」などと記述する必要があります。現在では UTF-8 で記述し (e-)upTeX を使うのが回避方法のひとつとなりますが、PMX には入力ファイルの1行が 127 bytes 以下でなければならない制約があるため、あまり長い和文文字列を記載することはできません。

PMX 使用時に、何か独自定義のマクロなどを追加したい場合(和文フォント定義などもこれに該当)は、PMX が出力するファイル(仮に foobar.tex とする)と同じディレクトリに foobar.mod というファイルを別途作成し、その中に独自定義マクロや \input を記述しておけば、foobar.tex をタイプセットするときに foobar.mod が \input されて自動反映されます。
ただし、この foobar.mod というファイル名は foobar.pmx を処理するときに PMX が foobar.tex 内にハードコードしてしまうため、例えば PMX が出した foobar.tex を手作業編集して '''foobarbaz'''.tex として保存した場合には当該の \input の行を \input '''\jobname.mod''' のように手動で書き換えたうえで '''foobarbaz'''.mod を作成するほうが混乱しなくてよいです。


// 以下はソフトウェアの説明では無く動作サンプルのため、subsubsectionとして独立させました。
*** PMX事始めサンプル [#be2b0a4c]
では、[[結城さんのページ:http://www.hyuki.com/dig/music.html]]にあるサンプルをコンパイルしてみましょう。私はきらきら星のソースをmozart.mtxと名づけてテストしました。(日本語の歌詞も扱えるのですね!)

 del mozart.mx2
 prepmx mozart
 pmxab mozart
 euptex mozart
 musixflx mozart
 ptex2pdf -e -u mozart

最初のmozart.mx2の削除については、初めてコンパイルしたのであれば行う必要がありません。ただし、修正後の再コンパイル時には絶対に行ってください。

TeXとは関係ありませんが、MIDIも作ってみましょう。先ほど作ったM-Txソースの一行目(プリアンブル部であればどこでも良い)に、次のように書いておきます。

 PMX: I

Iの後ろにオプションをつけることで、音色などを変更することが出来ます。(詳細はマニュアルをご覧ください。)楽譜作成の流れと同様にprepmxコマンドで処理します。

 prepmx mozart
 pmxab mozart

を実行することで、mozart.midが生成されます。

// 以下、わざわざPMXでMIDIを作らずともフリーのMIDIシーケンサーがあるわけですし、TeXと携帯着メロはあまりにも無関係すぎるので、コメント化しました。
//出来上がったMIDIファイルを携帯電話の着メロにしてみるのも楽しいかもしれません。VodafoneやAUの方は[[SMF to SMAFコンバータ:http://smaf-yamaha.com/jp/tools/downloads.html]]、DoCoMoの方は[[着メロコンバータ:http://red.kakiko.com/kana/]], [[MIDIToMLD [Internet Archive]:http://web.archive.org/web/20090225231737/http://tokyo.cool.ne.jp/ittake/java/java.html]]をお使いください。


**関連リンク [#e3c7a328]
*** 本体・使い方関係 [#k8684b0a]
-[[MusiXTeX - Wikipedia>Wikipedia.ja:MusiXTeX]]
-[[竜棲まう図書館:音楽室:http://ryusuma.web.fc2.com/music_room/]]
-[[MusiXTeX (MusicTeX) による楽譜ライブラリ:http://www.mab.jpn.org/musictex/]]
(M.A.B.) [[MusiXTeXの日本語版マニュアル:http://www.mab.jpn.org/musictex/musixtex_j.html#MusiXJdc]] があります。
-[[MusiXTeXによる楽譜の組版:http://kuuku.no.coocan.jp/pub/musixtex/index.html]] 日本語フォントの定義(upTeXの場合は [[和文の仕組み]] および [[PMX/MusiXTeXで日本語を使えるようにした:http://ynomura.pgw.jp/archives/2020/11/pmxmusixtex.html]] も併せて参照のこと),Yet Another スラーのPS化,各種Tipsなど
-[[MusiXTeX: ひよぴよの日々:http://hiyohiyo.asablo.jp/blog/cat/musixtex/]]
-[[score:http://tonomu.la.coocan.jp/score/score.html]]
-[[備忘のための MusiXTeX ノート:http://maucamedus.net/musixtex.html]] (まうかめ堂)
-[[MusiXTex日記>http://egf.air-nifty.com/forest/musixtex/]] (Ever Green Forest -- blog)
-[[MusiXTeXによる楽譜ライブラリ:http://idoido.jpn.org/strings/musixtex.html]] (Idogawa さん)
-[[MusiXTeX入門 [Internet Archive]:http://web.archive.org/web/20050305192737/http://yoneda-www.cs.titech.ac.jp/~kota/mxt/mxt_a01.html]] (Kitamura Kota さん)
-[[TeX、MusiXTeX、PMX導入記:http://www3.ocn.ne.jp/~yes.sato/dounyu.htm]]
-[[PMX 事始め:http://pt2k.xii.jp/doc/pmx/]] 入門編
-[[PMXで楽譜作成:http://ynomura.dip.jp/archives/2009/11/pmx.html]]

*** WYSIWYGエディタ関係 [#t1f8f370]
-[[Canorus:https://github.com/canorusmusic/canorus/wiki]] 開発が終了した NoteEdit の後継プロジェクト。Windows/macOS/Linux で動作する。MusiXTeX の出力もできるようである。(下記 LilyPond やその他の形式出力も多数サポート)


*** MusiXTeX以外のTeXベース楽譜組版システム [#t1acb611]
-[[The Gregorio project:http://gregorio-project.github.io/]] グレゴリオ聖歌の組版。LuaTeXまたはOmegaを応用して1パスの組版を可能にしているとのこと。
-[[OpusTeX:http://www.muri-gries.ch/OpusTeX/]] MusiXTeX の弟分ともいえる存在で、MusiXTeX の副著者 Andreas Egler 氏が、MusiXTeX の機能拡張方針やライセンス条項を巡って故 Daniel Taupin 氏と何らかの対立をし、開発ブランチを分岐させたもの。ライセンス制約が強い。旧 MusicTeX に対する上位互換性を意図的に断ち、グレゴリオ聖歌組版の改善等の独自新機能を組み込むことを意図していたが、バグを多く残したまま1998年(ver.0.84)以降長年にわたり開発停止状態にある。頭記リンク先(2015/04/04現在)にはベータ版ver.0.93が存在するものの、Egler氏は関与を打ち切った模様である。
なお、本家MusiXTeX T.113 以降に同梱されるようになった PostScript Slurs (Type K) は、元々は OpusTeX 用に作られたものである。
-[[GuitarTeX:https://sourceforge.net/projects/guitartex/]] (ギターに特化したもの)


*[[LilyPond:http://www.lilypond.org/]] [#k98806cb]

[[LilyPond:http://www.lilypond.org/]] はオープンソースでクロスプラットフォームの楽譜作成ソフトウェアです。
当初はバックエンドにTeXを用いて楽譜の組版をしていましたが、2005年頃からPDF/PostScript直接出力となり、楽譜を作成するだけであればTeXと直接関係のない(([[Requirements for running LilyPond:http://www.lilypond.org/doc/v2.19/Documentation/contributor/requirements-for-running-lilypond]] なお、フォントは当初METAFONTで書かれたものが現在でも使われており、ドキュメントはTexinfoでの記述である等、開発者レベルではTeXとの関係が今でもあります。これは、LilyPondの前身がMusiXTeX用プリプロセッサMPPであったことにも由来しています。))システムとなっています。
LaTeXやTexinfoのソース内に楽譜のソースを埋め込んでおき、TeXを利用して楽譜を含んだドキュメントを作成することのできる、lilypond-bookというスクリプトが付属しています。

**License [#zbae2148]

GPLv3

**ChangeLog [#pfdb8ffc]

http://git.savannah.gnu.org/gitweb/?p=lilypond.git

**関連リンク [#z66be199]
-[[Ubuntu Weekly Recipe:第245回 Ubuntuで楽譜の作成と出力をする|gihyo.jp … 技術評論社:http://gihyo.jp/admin/serial/01/ubuntu-recipe/0245]]
-[[Rosegarden:http://www.rosegardenmusic.com]] WYSIWYM(ean)タイプのエディタ兼シーケンサ。Linux系限定。出力はLilyPond。
-[http://ansuz.sooke.bc.ca/entry/285 lilypond-bookとLaTeXで音楽の植字]
-[http://www.mutopiaproject.org/ Mutopia Project フリーの楽譜(LilyPond ソース)集]


**楽譜エディタ [#z6ca9dda]
WYSIWYGあるいはWYSIWYMeanタイプの楽譜エディタ。TeXとは無関係のものも含みます。
[[LilyPond – みんなの楽譜作成: より簡単な編集手段:http://www.lilypond.org/easier-editing.ja.html]] も参照。

-[[MuseScore:https://musescore.org/]] 独自WYSIWYGのみ
-[[Denemo:http://denemo.org/]]
-[[Frescobaldi:http://www.frescobaldi.org/]]
-[[Canorus:https://github.com/canorusmusic/canorus/wiki]] LilyPond, MusiXTeXのexport可。
-[[TuxGuitar:http://www.tuxguitar.com.ar/]]
-[[LyX]]
--[[Support for LilyPond-Book:http://wiki.lyx.org/LyX/NewInLyX20#lb]]
-[[TeXShop]]
--[[LilyPond Engines for TeXShop:https://users.dimi.uniud.it/~nicola.vitacolonna/home/software/lilypond-texshop/]]
-[[Emacs]]
--[[テキスト エディタ サポート:http://www.lilypond.org/doc/v2.18/Documentation/usage/text-editor-support]]
-[[Vim]]
--[[テキスト エディタ サポート:http://www.lilypond.org/doc/v2.18/Documentation/usage/text-editor-support]]
-[[Visual Studio Code]]
--[[VSLilyPond:https://marketplace.visualstudio.com/items?itemName=lhl2617.VSLilyPond]]

*abc notation [#b68ebbea]
-[[abc notation:http://abcnotation.com/]] アスキー文字を並べて譜面を表現できるように考案された記法
-[[abcjs:https://github.com/paulrosen/abcjs]]
-[[ABC記譜法で書かれたテキストを楽譜にしてくれるJavaScript『abcjs』:http://www.ideaxidea.com/archives/2011/04/abcjs.html]]




*コメント [#xfedecca]
- MusiXTeXのインストールの手順ですが、dvipdfmxを使うためにはmusix.mapを適当なディレクトリーにコピーして、$TEXMF/dvipdfmx/config/dvipdfmx.cfgに f musix.map という行を追加する必要があるのではないでしょうか。 -- .. &new{2008-02-27 (水) 05:29:52};
- METAFONTファイルがあればmapファイルやType1フォントは不要ではないでしょうか.
- dvipdfmxはTFMと同名のType1フォントがあれば,マップファイルがなくてもType1フォントを使います. -- uchiyama &new{2008-02-27 (水) 12:03:35};
- 出力デバイスに依存しないPDFやPostScriptファイルを作成するためにはType1フォントが必要です. -- uchiyama &new{2008-02-27 (水) 12:04:38};
- XeLaTeX でもコンパイルできます。この場合、フォントは自由に使えます。 -- [[iwase]] &new{2023-04-24 (月) 15:30:33};

#comment