musixuad - 超多パートの曲、多数の要素の組版を実現する (e-TeXの応用)

[2011/04/23] MusiXTeX T.115(今後、1.15と表記される予定)において、musixuadの内容が若干の改良の上で本体に完全にマージされ、100パートまでの組版が可能になりました。これをもってmusixuadは、めでたくその役割を終えました。

過渡期の既成楽譜で、「musixuadが見つからない」などというメッセージが出る場合は、その行を削除し必要な要素数を \setmax... マクロ群で手動で指定すれば組版できます。やりかたはT.115付属のmusixmad.texを参考にしてください。

以下は古い記述です。


version 0.04 [2008/03/22] English page

[2008/05/29] musixuadはこれまで、海外のMusiXTeXユーザから多く寄せられるパート数増加需要に応えてきましたが、あくまで実験的な拡張で、公式のものではありません。Don Simons氏でPMX側のパート数拡張が始まったことと、pTeXにe-TeX拡張が取り込まれたことを契機として、musixuadに基づく新しいレジスタ割り当て方式を、次のMusiXTeX公式バージョンで本体に統合する(本体の一部コードを書き換える)プロジェクトを始めました(2010.06.24 公開ベータテストに移行)。これにはDon Simons氏の一定の理解と協力を得ています。近い将来にこのプロジェクトが完了した時点で、musixuadは廃棄されるとお考えください。


はじめに

MusiXTeXは標準で6本のスラーを同時に描くことができます。しかしスラーはmusixadd.tex 使用時に9本、musixmad.tex も追加すると12本まで拡張できるものの、たとえばピアノつき混声四部合唱などではどうしても不足しがちです。同様に、パート数、連桁、トリル、オクターブ移動表記などにも、全く同様の制限があります。この理由は、普通のTeX(ASCII pTeXなどの派生物も含む)では使用可能なレジスタが256個という制限があることによります。

一方、TeXの拡張版であるe-TeX (extended TeX) は32768個のレジスタを扱うことができます。そこで、e-TeXを用いることを前提に、大部分の要素(スラー、パート数、連桁、トリル、オクターブ移動表記)の使用数制限を緩和するためのパッケージを作りました。これまで、パート数の多さからMusiXTeXで組版できなかった、ピアノ協奏曲やオーケストラ曲のフルスコアも、組版可能になるはずです。

パッケージ配布物

機能

こういうことができます。

標準の musixmad.tex とこのパッケージ (musixuad.tex) との違い
要素 musixmad.tex で使える数 musixuad.tex で使える数
instruments 12 24
chor groups 4 24
slurs 12 100
trills 6 24
octave lines 6 24
beams [8th -- 64th] 12,
[128th] 6,
[256th] 0(default) / 6(musixbbm.tex)
[all] 24

各要素の追加数はもっと増やすことも可能です。柔軟に変更できるようにしています。

注意点など

実用上は、PMXやM-Txで12を超えるパートがサポートされていないことの方が、ハードルになるでしょう。

TeXエンジン本体

e-TeXベースのものが必要です。従来のTeXでは使えないので、エンジン種別を検出して途中でエラーメッセージを出して終了するようにしています。

なお、pTeXのe-TeX版(peTeX, e-pTeX)でも動作を確認しました。(2008/01/01, 2008/01/21)

対応するMusiXTeXのバージョン

MusiXTeX バージョンT.109以降で使用できます(が、T.109〜T.111にはバグがあるため実質上はT.112以降で使うことになります)。バージョンT.108やそれ以前のものでの確認はしていませんが、T.99以降なら動作する可能性はあります(未確認)。

256個を超えるレジスタの定義

実は、オフィシャルな etex フォーマット ($TEXMF\tex\plain\config\etex.ini, $TEXMF\tex\plain\etex\etex.src) および LaTeX2e etex package ($TEXMF\tex\latex\etex\etex.sty) では \newinsert の実装がスマートでありません( (254-既に確保された\insertの数)以上の \count, \dimen, \skip を \new... で確保すると、それ以降 \newinsert がエラーになる)。このままでは簡単に insert が枯渇してしまうので、この拡張では \reserveinserts マクロにより、読み込んだときに残っている254以下の \count, \dimen, \skip を全部 \newinsert のために予約するようにしています。

互換性問題

以下のMusiXTeX拡張パッケージとは、内部定義が衝突するため併用できません。

  1. Postscript Slur Package Type-K →Werner Icking Music Archive
  2. 汎用拡張マクロパッケージ MusiXExp →http://www.mab.jpn.org/musictex/musixtex_j.html

衝突箇所は、スラーの最大同時使用数の扱いの変更に伴う部分のみです。上記各パッケージは(1)スラー用も含めていろいろな用途のレジスタを用途変更し混ぜこぜに使うという設計が悪い、(2)スラーと同じレジスタや内部コードに他の記号の処理を混ぜるのはいささか無理がある、という見方も今となってはあるのですが、これらの拡張マクロ(さらに言うとこれら拡張マクロの元になったMusiXTeX内部ルーチン)が作られた当時にはe-TeXが無かったためレジスタがすぐ枯渇し、要素毎に実装を分離するという発想も無く、苦肉の策としてレジスタの流用・兼用が行われていたという歴史的背景があります。また、PMXの作者Don Simons氏がType-Kに傾注しすぎているという事情があります。


日本のMusiXTeXユーザーとして 〜日本語とe-TeX、そしてe-pTeX〜

オリジナルのe-TeXは日本語(というよりもマルチバイト文字)を扱えません。派生バージョンであるXeTeXやalephでは日本語文字を置くことが不可能ではないのですが、pTeXのように高度な欧文・和文フォントの使い分けや縦書き歌詞などの高度な組版は絶望的でした。

2007/12/30に、W32TeXのpTeX+e-TeX対応がアナウンスされました。これでpTeX最大のボトルネックが解消されます。早速試してみると、32767個のレジスタはちゃんと確保でき、このパッケージも問題なく動作しました。(次のe-pTeXの登場に伴いpeTeXは廃棄となりました)

2008/01/08に、北川さんによるe-pTeX(現在の公式ページ)アナウンスされました。こちらでも問題なく動作することを確認しました。

実用上は、このmusixuadパッケージが必要とされる管弦楽曲・ピアノ協奏曲のフルスコア等の用途で日本語が必要とされる場面はまず皆無でしょうが、pTeXという素晴らしいベースシステムの高度な日本語組版とmusixuadの共存が可能になり、MusiXTeXでの楽譜作成に本格的に応用できるようになった点は、大変有意義と思います。角藤さん、北川さんをはじめとするご関係の皆様に感謝します。


トップページ / MusiXTeXによる楽譜の組版 / musixuad
このサイトについて・著者連絡先