« 2009年10月 | メイン | 2009年12月 »

2009年11月 アーカイブ

2009年11月22日

PMXで楽譜作成

PMXとは、

こういう楽譜を作るツールである。フリーウェアであること、出力される楽譜が綺麗であることもさることながら、入力データをテキストファイルで書けるのが魅力である。

表示されている楽譜の上にマウス操作で音符を乗せていくようなソフトは多数あるが、入力し易いものに出会ったことが無い。筆者が細かいマウス操作が苦手なこともあるが、五線譜の上から2番目と3番目の線の間に音符を持っていって、次の音符は2番目の線の上に乗せて…という作業は苦痛である。ドラッグしているその音符をあと半音上に動かす必要がある時、今マウスが止まってるので、マウスが反応するぎりぎりの速度を狙ってゆっくりとマウスを前に動かし、マウスが反応したらすぐ手を止めないといけない。手を止めるのが少し遅くて目的地より半音上に行ってしまったら、今度は同様に慎重にマウスをバックさせてカーソルが動いた瞬間に手を止めないといけない。そうこうしていると、ボタンを押す指が疲れて一瞬震え、上か下かに半音ずれた所で音符が確定しまう。それを思い出して文章にしてるだけでイライラしてくる。
昔、MSXの「MUE」(ハル研究所)という、マウスが無かったので当然(パソコンの)キーボードで音符を入力する作曲ソフトを買ったことがあるが、そっちの方がずっと入力し易かった。音符はキーボードで入力できる方が便利なのである。

そこでMusiXTeXである。TeXのマクロであり、当然入力はテキストファイルなので音符はキーボード操作で入力できる。そして、フリーソフトであるにも関わらず、出力される楽譜は出版物並みに綺麗である。
MusiXTeXの書式は大変難しいが、そのプリプロセッサであるPMXM-Txを使うと、かなり容易である。M-Txは楽譜無いに歌詞も書けるようにPMXを拡張したものだが、若干PMXと書式が異なる。M-Txを使うにはPMXの知識も必要になるので、歌詞が要らないならPMXだけで充分と思う。

上の楽譜は、次のソースファイルから生成されたものである。

2 1 3 4 3 4 1 0
0 8 20 0.0

bt
./

It144ipipi
Ap

r4 rp ( a82 e+ a ) r r4 ( e82 e+ gs ) r r4 ( a82 e+ a ) r r4 /
( e85 ds e ds e b dn c a4 ) r8 ( c- e a b4 ) r8 ( e- gs b c4 ) r2 /


"./"までの部分は、PMXファイルとして必須の、楽譜全体に関する設定(ヘッダ)であり、"r4"より下の部分が各小節のデータ(ブロックの集まり)である。最低それらが含まれていれば、PMXのソースファイルとして成立する。
このファイルをforelise.pmxとして保存し、PMXがインストールされている環境で
pmx forelise.pmx

または、
pmxab forelise
musixflx forelise
musixtex forelise

とすると、TeXでお馴染みのDVIファイルができる。dvipsでPSファイルに、dvipdfでPDFファイルに変換できる。上の楽譜画像は、DVIファイルをdvipsでPSファイルにしてImageMagickでPNGに変換したものである。
1つ目のpmxコマンド一発でコンパイルする方法だと、ソースファイルに"I"コマンドがあると、ついでにMIDIファイルもできる。

上のソースファイルを解説する。
●ヘッダーの先頭から12個の数字(必須)


通称上での値意味
nv2パートの数
noinst1楽器の数
mtrnuml3(小節の境目の判定に使う)何分の何拍子の分子
mtrdenl4(小節の境目の判定に使う)何分の何拍子の分母
mtrnump3(実際の表示に使う)何分の何拍子の分子
mtrdenp4(実際の表示に使う)何分の何拍子の分母
xmtrnum01弱起(最初の小節が不完全)の場合の最初の小節の拍子数
isig0五線譜の左端の調を決める#や♭の数(負だと♭)
npages0出力ページ数、0は自動
nsyst8五線譜の段数(全ページ分)npages=0の時は1段当たりの小節数
musicsize20音符のサイズ
fracindent0.0五線譜の1段目のインデント量

●ヘッダーのそれ以降の行(必須)

項目上での値内容
楽器名 (noinst)行分の、楽器名(ここでは空行)
音符記号bt各パートの、ト音記号(t)かヘ音記号(b)かの設定(下のパートから)
出力先./出力先ディレクトリ("./"はカレントディレクトリ)

●楽譜全体の設定
"I"で始まる行はMIDIファイル出力の設定
 "t144"はテンポ
 "i...."は(nv)個分の楽器("pi"はピアノ)
"Ap"はMusiXTeXの「Type Kスラー」(またはPostscriptスラー)という綺麗なスラーを使う設定(要インストール)
●楽譜本体
・下のパートから書く
・パートの切り替えは"/"
・音符と音符の間はスペースで区切る
・音符について
 cdefgabはドレミファソラシ、rは休符
 音符内の数字は、音の長さ(1,2,4,8,16,32分音符はそれぞれ0,2,4,8,1,3)とオクターブ(4がト音記号の普通の所)
  長さを省略すると1つ前の音と同じ長さ
  オクターブを省略すると1つ前の音に一番近い高さ(c b(ド、シ)ならシは1つ下のオクターブのシ)
 +/-はオクターブの上下移動
 "s"は#(♭なら"f")
・()はタイ/スラー
・rpは全休符
・小節の区切りは自動的に計算される


もう1つサンプルを作ってみた。解説は省略する。
csikospost.pmx(PMXソースファイル)
csikospost.pdf(できた楽譜)
csikospost.mid(できた音楽ファイル)

ついでにもう1つ公開する。
Nukenin1.pmx(PMXソースファイル)
Nukenin1.pdf(できた楽譜)
Nukenin1.mid(できた音楽ファイル)

参考資料:マニュアル(英語、PDF)

viやEmacsで楽譜を入力する。TeXで楽譜を作る。何とエレガントな響きであることか。

続きを読む "PMXで楽譜作成" »

2009年11月29日

余弦定理、正弦定理の導き方

今週、TVで「余弦定理」という言葉を耳にした。高校でそういう公式を習って名前だけは覚えていたが、中身は雰囲気すら思い出せなかった。
15年以上前にセンター試験を受けた時は完璧に暗記していたはずである。三角関数の加法定理は今でも身体が覚えていた。漢字と同じように書き順で覚えていて、右手が紙に書き始めると、何も考えなくても勝手に手が動いて、筆記体のような加法定理を書き終える。ちなみに我が筆記体では+とxは同じ形であった。
倍角の公式や和積・積和の公式や合成の公式(sinθ+cosθ=sin(θ+α)という変形)を加法定理から無事に導き出せて、正弦定理も何とか思い出すことができたのだが、余弦定理は影も形も思い出せなかった。
仕方なく、インターネットで調べた。

●余弦定理

三角形の3辺の長さをa,b,c、各辺の向かい側の角度をA,B,Cとすると、
a^2=b^2+c^2-2bc¥cos A
b^2=c^2+a^2-2ca¥cos B
c^2=a^2+b^2-2ab¥cos C
が成り立つ。

●正弦定理
同じく、
¥frac{a}{¥sin A}=¥frac{b}{¥sin B}=¥frac{c}{¥sin C}=2R
(Rは外接円の半径)が成り立つ。

そうそう、そういえばそんなのがあった。何でそういうのが成り立つのかがわからないまま、丸暗記した記憶がある。何でそうなるんだろう?と、何度も不思議に思った記憶もある。
これらを初めて教わってから20年、ついに導き方を理解した。

●余弦定理の導出

このようにaに垂線を引くと、
a=b¥cos C+c ¥cos B
の関係があることがわかる。これの両辺を2乗すると、
a^2=b^2¥cos^2 C+c^2¥cos^2 B+2bc¥cos B¥cos C
である。sin2+cos2=1やコサインの加法定理
¥cos(B+C)=¥cos B¥cos C-¥sin B¥sin C
を使って整理すると、

となる。A+B+C=π(180°)だから、
¥cos(B+C)=¥cos(¥pi-A)=-¥cos A
であり、b sinC = c sinB = aへの垂線の長さで末尾の2乗部分は0なので、余弦定理の式が求まる。

●正弦定理の導出

このように同じ外接円を持つ1辺がaの直角三角形を描くと、円周角の定理より、aの向かいの角の角度はやはりAである。また、同じく円周角の定理より、円周角が90°なら中心角が180°なので、斜辺は外接円の中心を通り、長さは直径=2Rに等しい。従って、2R sinA=aである。

続きを読む "余弦定理、正弦定理の導き方" »

About 2009年11月

2009年11月にブログ「Weblog on mebius.tokaichiba.jp」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2009年10月です。

次のアーカイブは2009年12月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35