新年からピアノで

なんだか,TVのチャンネル回しながら日記を貼り付けていたら日付が変わってました.そもそもはオンラインで楽譜を探すだけのつもりだったのに,なぜか MusiXTeX で譜面をソースから書く羽目に.しかしそれもしんどくなってきたので,今度は VisualStudio .Net でも使ってソース入力支援ツールでも書こうかという話になりつつ….PMX 使えばいいという話もありますが,PMX で書いた楽譜は手直しをかなりしたくなってしまって,結果的に最初から MusiXTeX で書くのとあまり手間が変わらないという事態になってしまいました.もちろん,そんなにこだわった譜面を書かなければ PMX で十分だと思いますけどね.って,どんどんピアノと離れているのは気のせいということで.

MusiXTeX でピアノソナタ悲愴(4) 音符の入力

前回のところまででは音符が入力されていなくて,まったく楽譜らしくありませんでした.そこで今回はピアノソナタ悲愴の冒頭の少しだけ,音符を入力してみました.



\input musixtex
\def\nbinstruments{1}% % パート数 1
\setstaffs 1{2}% パート1の段数 2
\setclef{1}{60}% % ト音記号(右手パート)
\generalsignature{-3}% % 調号=ハ短調
\generalmeter{\meterC}% % 拍子はC(4分の4拍子)
%
\startmuflex
\startpiece % 楽譜スタート
%
% 第一小節
% 左手の段
\notes % 16分音符の間隔で譜面開始
\qu J\ccup J\cccu J\ccup K\cccu L\ql M\cl N\ds%

% 段の区切り記号

% 右手の段
\uptext{\medtype\bf Grave.}% 速度・演奏指示
\qu c\ccup c\cccu c\ccup d\cccu e\qu e\cu d\ds\en
\stoppiece
\end

\startpiece と \stoppiece で挟まれた部分が音符のデータになります.\stoppiece はなくてもエラーにはなりませんが,書くほうがいいでしょう(省いてしまうと終端部分に小節線がかかれません).このファイルをコンパイルすると以下のようになります.音符数が少ないときに musixflx を通すと,無理やり横幅いっぱいに音符を広げようとしておかしくなるので,ここでは musixflx を通さずに処理してます.

この楽譜は,左手パートと右手パートの一番上の音だけ入力してあります.タイやスラーなども入っておらず,オリジナルの楽譜とは似ても似つかぬ感じですね.


  • 音符データの入力方法

MusiXTeX では五線譜上に書き込む音符や記号は \notes (または \Notes, \\NOtes, NOTes, \NOTEs) と \enotes (または \en) の間に書くというルールがあります.\notes と \Notes などの違いは,音符のあとに開けるスペースの大きさの違いです.スペースのコントロールはかなり難しいので,ここではとりあえず \notes だけ使っていくことにします.なお \enotes と \en に違いはありません.

音符列は,パートが1つで段数が1なら \notes 音符列 \en と書きます.この曲は二段あるので,その場合は \notes 下段の音符列 | 上段の音符列 \en というように書きます.上の例では少し分かりにくくなっていますが,\notes のあとに音符列があって '|' が途中にあり,その後にまた音符列が続いて最後に \en があります.\notes と \en の間に音符をいくついれてもかまいません.ただし,見た目に分かりにくくなるので1小節程度ごとに \notes .... \en のブロックを作るのがよいようです.

\notes ... \en の間に改行や空白,注釈が含まれていても構いません.ただし,空白については,空ける場所によって意味が微妙に変わってきます.出力された譜面に妙なスペースを感じたら,おそらくそれは空白が入っているせいです.このスペーシング関係はややこしいのでここでは説明しませんが,できるだけ空白は入れないほうがいいでしょう.

また改行を入れると譜面を「改行する」という意味になって,出力が変わります.そのため,行末には「%」を入れて改行そのものを「注釈」にしてしまうことで,これを回避することができます.他にも,見やすくするために改行を入れたいときもあります.こういうときは '%' 一文字だけの文を作れば,それは空行と認識されずにすみます.

なお,この \notes ... \en の間には p や ff などの強弱記号や "Allegro" などのテキストも書き込みます.ここが少し戸惑う&間違うところなんですよね.

  • 音符データの書式

音符データは,およそ「音符に付く記号」「\」「音の長さ」「音符に付く棒の向き」「付点の有無」「音程」という順序でかかれます.全部の音符について,どの情報も基本的には省略できません.省略できないというよりは.省略すると思うとおりの譜面が出てこなくて結局書くことになるといったほうが適切でしょう.ここでは,ひとまず「音符に付く記号」は複雑なのであとにまわして,残りの三つについて簡単に説明します.

  • 音の長さ

音の長さは,全音符=w,二分音符=h,四分音符=q,八分音符=c,16分音符=cc,32分音符=ccc,64分音符=cccc で表します.

  • 音符に付く棒の向き

上付きの棒は u,下付きの棒は l,向きを MusiXTeX にゆだねたければ a を指定します.全音符には棒がないので特別に h を指定します.全音符以外には h を指定できません.棒を表示したくない場合は z を指定する方法もあります.これについては和音の入力のところで触れることにします.

  • 付点の有無

付点を付けたいときは p を指定します.付点がいらなければ,何も書きません.付点を2個つけたければ pp と書きます.

  • 音程

ピアノの中心の「ド」を c として,「レ」が d,「ミ」が e というようにして,以下 efghijk... と一音ずつ上がっていきます.c の下の「シ」は大文字で P です.以下 ONML... と下がっていき,2オクターブ下のドの音が C です.c の1オクターブ上のドは j になりますが,j と表記するかわりに 'c と書く方法もあります.2オクターブ上なら ''c です.これらの対応表をしたに載せておきます.1オクターブ下は `c です( ' とは向きが違う文字なので注意).



フラットやシャープなどは「音符に付く記号」に含まれます(後述します).なお,8va などの記号は自動的にはつけてくれず,使いたければ自分で記号を書き込むように指示する必要があります.

  • 休符

全休符は \pause,半休符は \hpause,四分休符は \qp,8分休符は \ds,16分休符は \qs,32分休符は \qqs です.付点をつけるときは p を末尾につけます.付点全休符なら \pausep です.ただし,四分休符より短い休符に付点をつけるときは \pt というコマンドで別途付点を打つ必要があります(\dsp のようなコマンドはないということです).




  • テキストの表示

五線譜の上にテキストを書くときは \uptext{....} を使います.この .... の部分に書きたいテキストを書きます.この \uptext{} が書かれた,その場所の五線譜の上のところにテキストがかかれます.ですので \notes ... \en のブロックの中で使う必要があります.また音符の下に書きたいときは \ccharnote. \lcharnote, \rcharnote を使います.\ccharnote{音程}{テキスト} のように使い,指定した音程の真下にテキストを書き込みます.\lcharnote は少し左にずらして表示,\rcharnote は少し右にずらして表示します.

  • 音符データの実際

先に挙げた譜面を例にとって説明します.


\notes % 16分音符の間隔で譜面開始
\qu J\ccup J\cccu L\ccup K\cccu J\ql M\cl N\ds%

% 段の区切り記号

% 右手の段
\uptext{\medtype\bf Grave.}% 速度・演奏指示
\qu c\ccup c\cccu c\ccup d\cccu e\qu e\cu d\ds\en

  1. 最初の行は \notes があり,最後の行の末尾に \en があるので,この間が譜面になります.この譜面は2段あるので,ここの直後に書かれる音符は左手パート(下段)とみなされます.
  2. \qu J は「四分音符=q・上付きの棒=u,J=(中央のドから見て)1オクターブ下のド」という意味です.\quJ とくっつけて書いてもエラーになりませんが,見にくいのでここでは空白をあけてあります.ただしスペースがあけられるのは音程の直前だけで,例えば q と u の間を空けるとエラーになるようです.
  3. \ccup J は「16分音符=cc,上付きの棒=u,付点=p,音程=J」の意味です.以下同様に \cl N まで続いています.\ds は八分音符です.
  4. '|' で段を切り替えています.ここから先には右手パート(上段)を書きます.
  5. 冒頭の \uptext{Grave.} は上段パートの上に Grave. と表示させるためのものです.
  6. \qu c は「四分音符=q・上付きの棒=u,c=中央のド」,以下同様です.
  7. \en で音符列は終わりです.

MusiXTeX は1小節の音符の長さの合計が,拍とあっているかをチェックしません.その他,楽譜が「音楽的に正しいか」というような整合性に関するチェックは全くしません.ですから,譜面があっているかどうかは自分で出来上がりをみてチェックする必要があります(これがまた大変ではありますが).

MusiXTeX でピアノソナタ悲愴(5) 連桁の入力

前の楽譜では,八分音符や16分音符がバラバラの状態になっていました.こういう楽譜の場合,普通は拍の分母にあわせて(この部分の場合は四部音符)音符を連桁でまとめることが普通です.そこで,その部分をまとめてみました.なお,ファイルが少し大きくなってきたので二つにわけました.曲の概略が書かれた sonata8.tex と音符列が書かれた sonata8note.tex の二つのファイルを用意して,sonata8.tex のほうをコンパイルします..


sonata8.tex


\input musixtex
\def\nbinstruments{1}% % パート数 1
\setstaffs 1{2}% パート1の段数 2
\setclef{1}{60}% % ト音記号(右手パート)
\generalsignature{-3}% % 調号=ハ短調
\generalmeter{\meterC}% % 拍子はC(4分の4拍子)
%\nostartrule % 左端の線なし
\nobarnumbers % 小節番号なし
%
\startmuflex
\startpiece % 楽譜スタート
%
% 第一小節
% 左段
\input sonata8note.tex % sonata8note.tex をここに読み込ませる.
\stoppiece
\end

sonata8note.tex


\notes % 16分音符の間隔で譜面開始
\qu J%
\ibbu0J0\qbp0J\tbbbu0\qb0L\qbp0K\tbbbu0\tbu0\qb0J%
\ql M\cl N\ds |%
\uptext{\medtype\bf Grave.}% 速度・演奏指示
\qu c%
\ibbu0c2\qbp0c\tbbbu0\qb0c\qbp0d\tbbbu0\tbu0\qb0e%
\qu e\cu d\ds\en

コンパイルして表示させると以下のようになります.


  • 連桁の入力

連桁は [桁の開始宣言][桁の中の音符][桁の中の音符]..[桁の終了宣言] という形で書きます.開始宣言は [i][桁数(bの数で指示)][棒の向き(u,l,aのいずれか)][桁の識別番号][桁を表示する音程][桁の傾き(-9〜9の間)] のように書きます.終了宣言は [t][桁数(bの数で指示)][棒の向き(u,l,aのいずれか)][桁の識別番号] です.桁の途中の音符は,[音符の種類(w,h,qのいずれか)][b][桁識別番号][音程] と書きます.わかりにくいので例を挙げます.


sample3.tex


\input musixtex
\startmuflex
\startpiece
% --------------------
\notes%
\ibu0c0%
% i ... 桁の開始
% b ... 桁数は1(八部音符)
% u ... 棒の向きは上
% 0 ... 桁を識別する番号(通常は0でよい)
% c ... この音程の三線分上に桁を表示する
% 0 ... 桁の傾き.0 は水平を意味する.
% この記述だけでは,音符は表示されない.
\qb0c%
% q ... 四分音符の玉で表示
% b ... 桁中の音符の意味
% u ... 棒の向きは上
% 0 ... 0 番の桁にくっつける
% c ... 中央の「ド」の音符を表示
\qb0c%
\qb0c%
\tbu0%
% t ... 桁の終了
% b ... 桁数1以上の桁を終了させる.
% u ... 棒の向きは上
% 0 ... 0 番の桁を終了させる
\qb0c%
\en
\bar% 小節線
% --------------------
\notes%
\ibbu0c0% bb とすると桁数は2
\qb0c\qb0P\qb0d%
\tbu0% tbbu では桁二本目以上しか終了しない.tbu とする.
\qb0c%
\en
\bar% 小節線
% ----------------------
\notes%
\ibbbl0j2%
% ibbb とすると桁数は3.
% 'l' で棒は下に付く.
% j で中央から1オクターブ上のドの三線分下から桁を書く.
\qb0j\qb0j\qb0k%
\tbl0% tbbbl では桁三本目以上しか終了しない.tbl を指定する.
\qb0k%
\en
\bar% 小節線
% ----------------------
\notes%
\ibbu0c2% bb とすると桁数は3
\qb0c\qb0c%
\qbp0d% 'p' を指定すると付点音符になる.
\tbbbu0% ibb に対して tbbb を書くと,半分だけ32分音符の桁が出る.
\tbu0% ibb を終了させる.
\qb0d%
\en
% --------------------
\stoppiece
\end

このサンプル sample3.texコンパイルすると下のような譜面になります.

桁を途中で増やしたり減らしたりすることもできます.このときは i を n に替えたコマンドを使いますが,ここでは説明を省略します.また,桁の傾きを右下がりにするときは \ibu0c{-1}のように中括弧で -1 をくくらないとエラーになります.

わたしが誤解していたのが,\ibbu で始めた桁は \tbbu で終わると思っていたところです.\tbbu は「2本目以上の桁を終わらせる」という意味になるので,これだと桁の1本目が表示されず変なことになります.\ibbu や \ibbbu で始めても \tbu で終わらせる必要があります.桁途中に付点音符を入れたり,半分だけの桁を入れたりもできます.これらの方法を駆使(?)して,sonata8note.tex を書きました.

それから,不用意に改行や空行を入れると,桁がずれたり間隔があいたりします.各行の末尾に % をつけたり,バックスラッシュ(または円記号) '\' で始まるコマンドの直前にはスペースを空けないようにしたほうがいいでしょう.