musicxml(4r) 形式について
DESCRIPTION
MusicXML(4R) 形式について. 2006 年 6 月 2 日. 野池賢二. 目次. MusicXML と MusicXML(4R) の違い 表情情報つきの MusicXML の作り方 Rencon キットについて. MusicXML とは. MusicXML とは, XML というデータ表現形式を用いた「楽譜を記述するための記述仕様」である.主に,西洋音楽の五線譜やタブ譜を記述することを目的としている http://www.recordare.com/ - PowerPoint PPT PresentationTRANSCRIPT
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
• に書かれている
<note> <pitch> <step>C</step> <octave>4</octave> </pitch> <duration>4</duration> <type>whole</type> </note> </measure> </part></score-partwise>
<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>
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>
(” Hello World” in MusicXML, MusicXML 1.1 Tutorial,http://www.recordare.com/xml/musicxml-tutorial.pdf, pp.11-14, 2006. から引用,加筆)
音符ひとつ分の情報
パートひとつ分の情報
パート構成の情報
小節ひとつ分の情報
拍子記号の分子
拍子記号の分母
調号の #(+), b(-) の数
四分音符あたりの時間分解能
表情情報の記述形式• 表情情報は,音符や休符の属性値として記述する
属性 attack演奏打鍵時刻の楽譜打鍵時刻からのずれをデルタタイムで記述
属性 release演奏離鍵時刻の楽譜離鍵時刻からのずれをデルタタイムで記述
属性 dynamicsNote-On Velocity 値をそのまま記述 (MusicXML(4R) 仕様 )
属性 end-dynamicsNote-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 127 Vel →↑ 元の値
Vel = 65
Dyn から得た値↑
Vel = 64
MusicXML では曖昧な属性 release の定義の明確化
時刻
音強
+48 遅れて打鍵する
( attack=“+48” )
MusicXML:
release=“+48” なのか release=“0” なのか DTD の記述からは曖昧
MusicXML(4R):
release=“+48”
音符の duration は元のまま
release は, +48 か 0 か ?
MusicXML(4R) 記述例
<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>
dyna
mic
s +30
-46
112
(a)
(b)
t
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 は?
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”
四分音符