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> <part-list> パート構成の情報 <score-part id="P1"> <part-name>Music</part-name> </score-part> </part-list> パートひとつ分の情報 <part id="P1"> <measure number="1"> 小節ひとつ分の情報 <attributes> 四分音符あたりの <divisions>1</divisions> 時間分解能 <key> <fifths>0</fifths> 調号の #(+), b(-) の数 </key> <time> 拍子記号の分子 <beats>4</beats> <beat-type>4</beat-type> 拍子記号の分母 </time> <clef> <sign>G</sign> <line>2</line> </clef> </attributes> <note> 音符ひとつ分の情報 <pitch> <step>C</step> <octave>4</octave> </pitch> <duration>4</duration> <type>whole</type> </note> </measure> </part> </score-partwise> (”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 異なった だけで,意図と異なる音波形が使われる可能性がある • ↓ • エントリ者の音源と聴き比べ用音源とで,意図の異なる音に なる 弱い音用の音波形 1 強い音用の音波形 Dyn から得た値↑ ↑元の値 Vel = 64 Vel = 65 127 Vel → MusicXML では曖昧な 属性 release の定義の明確化 音 強 音符の duration は元のまま +48 遅れて打鍵する release は,+48 か 0 か? (attack=“+48”) 時刻 MusicXML: release=“+48” なのか release=“0” なのか DTD の記述からは曖昧 MusicXML(4R): release=“+48” MusicXML(4R)記述例 (a) dynamics (b) +30 -46 112 t <note dynamics="112" attack="+30" release="-46"> <pitch> <step>E</step> <octave>4</octave> Note-Off Velocity 情報がないときは, </pitch> end-dynamics 属性を書かなくてもよい <duration>960</duration> <voice>1</voice> <type>half</type> <stem>up</stem> </note> 演奏速度(テンポ)の記述形式 演奏速度は,要素 <sound tempo=“QBPM”>で記述 する (QBPM: Quarter note Beat / Minute,(例)♩=120) いつ,どのように記述するのかは,MusicXML(4R) でも未定義 候補1:曲頭で 1 度だけ記述できるようにする 候補2:小節ごとに記述できるようにする どちらでも,お互いに,完全に変換可能 実際の使いやすさについては,Kagurame-II が実装して 評価してくださると思われる 表情情報つきの MusicXML の作り方 • 表情情報の編集,演奏,出力ができる既存のソフト ウェアがない(なさそう) • 既存のソフトウェアやツールで表情情報なしの MusicXML を出力しておき,それに対して自作の ツールで表情情報を付加する方法が簡単 MusicXML を 出力できる ソフトウェア (例:Dolet for Finale) 表情情報なし MusicXML MusicXML を入力とし, それに表情情報を 付加するソフトウェア (例:4Ru) 表情情報つき 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” 時刻
© Copyright 2024 ExpyDoc