220 likes | 331 Views
MusicXML(4R) 形式について. 2006 年 6 月 2 日. 野池賢二. 目次. MusicXML と MusicXML(4R) の違い 表情情報つきの MusicXML の作り方 Rencon キットについて. MusicXML とは. MusicXML とは, XML というデータ表現形式を用いた「楽譜を記述するための記述仕様」である.主に,西洋音楽の五線譜やタブ譜を記述することを目的としている http://www.recordare.com/
E N D
MusicXML(4R) 形式について 2006年6月2日 野池賢二
目次 • MusicXML と MusicXML(4R) の違い • 表情情報つきの MusicXML の作り方 • Rencon キットについて
MusicXML とは • MusicXML とは,XML というデータ表現形式を用いた「楽譜を記述するための記述仕様」である.主に,西洋音楽の五線譜やタブ譜を記述することを目的としている • http://www.recordare.com/ • MusicXML のチュートリアル(入門書)は,http://www.recordare.com/xml/musicxml-tutorial.pdfである.楽譜の記述方法についての基本的な事項が解説されている • MusicXML の全仕様は,MusicXML の DTD にコメントとして書かれている • http://www.recordare.com/downloads.html#DTD
MusicXML(4R) とは • MusicXML(4R) とは,MusicXML の仕様のうち,表情情報の記述方式を MIDI 指向に変更した仕様のこと • MusicXML の表情情報の記述形式は,チュートリアルではなく,DTD にだけ書かれている.(note.dtd) • MusicXML(4R) の表情情報の記述形式は, • Keiji Hirata, Kenzi Noike, and Haruhiro Katayose: • Proposal for a Performance Data Format, • IJCAI-03 Rencon Workshop, 2003. • http://www.brl.ntt.co.jp/people/hirata/Papers/ijcai03-rencon-xml.pdf • に書かれている
MusicXML の基本構造 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd"> <score-partwise> </score-partwise> パート構成の情報 <part-list> <score-part id="P1"> <part-name>Music</part-name> </score-part> </part-list> <note> <pitch> <step>C</step> <octave>4</octave> </pitch> <duration>4</duration> <type>whole</type> </note> </measure> </part> 音符ひとつ分の情報 パートひとつ分の情報 <part id="P1"> <measure number="1"> <attributes> <divisions>1</divisions> <key> <fifths>0</fifths> </key> <time> <beats>4</beats> <beat-type>4</beat-type> </time> <clef> <sign>G</sign> <line>2</line> </clef> </attributes> 小節ひとつ分の情報 四分音符あたりの時間分解能 調号の #(+), b(-) の数 拍子記号の分子 拍子記号の分母 (”Hello World” in MusicXML, MusicXML 1.1 Tutorial,http://www.recordare.com/xml/musicxml-tutorial.pdf, pp.11-14, 2006. から引用,加筆)
表情情報の記述形式 • 表情情報は,音符や休符の属性値として記述する • 属性 attack 演奏打鍵時刻の楽譜打鍵時刻からのずれをデルタタイムで記述 • 属性 release 演奏離鍵時刻の楽譜離鍵時刻からのずれをデルタタイムで記述 • 属性 dynamics Note-On Velocity 値をそのまま記述 (MusicXML(4R) 仕様) • 属性 end-dynamics Note-Off Velocity 値をそのまま記述 (MusicXML(4R) 仕様) • dynamics, end-dynamics には,Rencon の現在の聴き比べ用音源である MIDI 音源に適した表現を用いる • (オリジナルの MusicXML の dynamics, end-dynamics は,Velocity 値 90 に対する比を記述する (dyn=100/90×Vel)) • デルタタイムの基準値は,要素 <divisions> で定義された四分音符あたりの分解能値
オリジナルの記述形式を修正した理由 • Velocity 値 90 が,dynamics=“100” • dynamics 値 Dyn と,Velocity 値 Vel の関係は, • Dyn = 100/90 × Vel • Dyn から Vel を逆算したときに,計算誤差によって,もとの Vel とは異なる可能性がある • ↓ • 演奏音源が MIDI 音源である場合,Vel の値が 1 異なっただけで,意図と異なる音波形が使われる可能性がある • ↓ • エントリ者の音源と聴き比べ用音源とで,意図の異なる音になる 弱い音用の音波形 強い音用の音波形 ↑元の値 Vel = 65 1 127 Dyn から得た値↑ Vel = 64 Vel →
MusicXML では曖昧な属性 release の定義の明確化 音強 音符の duration は元のまま +48 遅れて打鍵する (attack=“+48”) release は,+48 か 0 か? 時刻 MusicXML: release=“+48” なのか release=“0” なのか DTD の記述からは曖昧 MusicXML(4R): release=“+48”
MusicXML(4R)記述例 (a) (b) +30 dynamics -46 112 t <note dynamics="112"attack="+30"release="-46"> <pitch> <step>E</step> <octave>4</octave> </pitch> <duration>960</duration> <voice>1</voice> <type>half</type> <stem>up</stem> </note> Note-Off Velocity 情報がないときは,end-dynamics 属性を書かなくてもよい
演奏速度(テンポ)の記述形式 • 演奏速度は,要素 <sound tempo=“QBPM”>で記述する • (QBPM: Quarter note Beat / Minute,(例)♩=120) • いつ,どのように記述するのかは,MusicXML(4R) でも未定義 • 候補1:曲頭で 1 度だけ記述できるようにする • 候補2:小節ごとに記述できるようにする • どちらでも,お互いに,完全に変換可能 • 実際の使いやすさについては,Kagurame-II が実装して評価してくださると思われる
表情情報つきの MusicXML の作り方 • 表情情報の編集,演奏,出力ができる既存のソフトウェアがない(なさそう) • 既存のソフトウェアやツールで表情情報なしの MusicXML を出力しておき,それに対して自作のツールで表情情報を付加する方法が簡単 MusicXML を 出力できる ソフトウェア (例:Dolet for Finale) MusicXML を入力とし, それに表情情報を 付加するソフトウェア (例:4Ru) 表情情報なし MusicXML 表情情報つき MusicXML
2006年5月26現在での既存の MusicXML 対応ソフトウェア 読み書き 書き出しだけ 読み込みだけ http://www.recordare.com/software.html
既存のソフトウェアの評価(独断) • Finale • Sibelius • 読み書き対応 • GUI • Recordare がプラグインソフト作成に力を入れている • ユーザが多く,よく使われているようだ • abc ツール群 • 読み込みだけ? • abc と呼ばれる MML を使ったツール群.コマンドラインツールが多い • 京大奥乃研ではよく使っているらしい? • SCOREMAKER • 書き出しだけ対応(岡さんに確認済み) • 河合楽器の楽譜認識ソフト.GUI. • Igor Engraver • LilyPond • Rosegarden • シェアウェア.GUI. • 入力(読み込み)だけ対応
MusicXML(4R) に対応した研究ツール • 4Ru • http://noike.info/~kenzi/research/4Ru/4Ru.html • 入力,表示,演奏,簡易編集 • 既存の MusicXML に表情情報を付加することはできる • 新規に MusicXML を生成することは(まだ)できない • xml2mp3 • http://noike.info/~kenzi/cgi-bin/xml2mp3/ • SMF, MP3 に変換 • Kagurame-II • 芝浦工大の清水 厚志さん,対応作業中 • Ha-Hi-Hun • 関西学院大学の伊藤洋介さん,対応作業中? • COPER (対応予定?) • Yutaka (対応予定?)
MusicXML(4R) 処理プログラミング • 規模の小さな加工,変換 • XSLT • SAXによるプログラミング • 通常の読み書き • DOM によるプログラミング • Xerces • Java, C++, Perl など • libxml2 • C
Rencon キットについて • 表情付けコンテスト Rencon のための共通学習データ,共通評価データのセット • MusicXML(4R) 形式にて配布予定 • 片寄研 演奏 Deviation DB を変換予定 • 収録曲目未定(ショパン? ドビュッシー?) • ライブラリ,ツール? • ピアノロール表示 Java Applet • ???
直近での Rencon 開催が可能な機会 • 8 月 SIG-MUS の若手デモセッション • 10 月 CrestMuse デモ • MusicXML(4R) に対応した演奏表情付けシステムが複数あれば,同じ楽譜データに対する表情付けコンテストが試行できる • Kagurame-II は,境界情報 XML を手書き追加すれば,可能になるらしい • Ha-Hi-Hun は? • COPER は? • Yutaka は?
おわりに • Rencon キットの記述形式である MusicXML(4R) の仕様を,MusicXML との違いという観点で述べた
XML 仕様差異図 オリジナルの MusicXML 表情情報の dynamics, end-dynamics 属性に,MIDI Velocity 90 を 100(%) としたときの比の値を書く. Dolet for Finale (MusicXML Plug-in) MusicXML 仕様のサブセットが読み書きできる(一部のタグや属性に見対応). 表情情報の編集,表示,それを反映した演奏ができない MusicXML(4R) 表情情報の dynamics, end-dynamics 属性に MIDI Velocity 値をそのまま書く. release 属性の仕様を厳密に定めてある.
dynamics, end-dynamics 音強 四分音符 MIDI Velocity 64 時刻 MusicXML: dynamics=“71” dyn = 100/90 × Vel = 71.111… ≒ 71 MusicXML(4R): dynamics=“64”
attack, release メトロノーム速度 ♩=120 (♩=500msec.) で division = 480 とすると, 音強 四分音符 500msec 100msec MusicXML: attack=“+48” release=“+48” なのか release=“0” なのか曖昧 (「flow of duration に基づく音符の stop time」に対して 複数通りの解釈が可能) MusicXML(4R): attack=“+48” release=“+48” 時刻