第 4 章 Cadential Retention の実装のため の提案手法
4.5 Time-spanXML におけるカデンツ構造の表現
exGTTM [9]から出力されるTime-spanXMLは,タイムスパン木の表現形式であるが,
TSRWFR3aで定義されたOrdinary Reduction,すなわち2つのピッチイベントを比較して その一方をヘッドとする簡約方法しか表現できない.本研究ではCadential Retentionによっ て2つのピッチイベントのペアをヘッドとすることや,そのペアに従属する枝にegg記号 を付加することをXML形式で適切に表現するために,Time-spanXML形式の拡張を行う.
まず,従来のTime-spanXML形式について解説する.Time-spanXMLで用いられる要素 を表4.4にまとめる.
表4.4: Time-spanXMLの要素
要素名 説明
ts
あるタイムスパンを表す.タイムスパンの両端の位置を表す
leftend属性とrightend属性,および長さを表すtimespan属性を持ち,
これらの値は四分音符の音価を1.0とする小数で表される.
head ts要素の子要素となり,タイムスパンのヘッドを表す.
chord
head要素の子要素となり,ヘッドを構成する音符のラッパーである.
ピッチイベントの長さを表すduration属性を持ち,
ts要素の各属性と同じく四分音符の音価を1.0とする小数で表される.
note chord要素の子要素となり,ヘッドを構成する音符を表す.
音符はid属性で表される.
primary
ts要素の子要素となり,ts要素で表されたタイムスパンT の 下位タイムスパンのうち,Tのヘッドが含まれる方を指す.
別のts要素を子要素に持つ.
secondary
ts要素の子要素となり,ts要素で表されたタイムスパンT の 下位タイムスパンのうち,Tのヘッドが含まれない方を指す.
別のts要素を子要素に持つ.
ここで,chord要素については,将来的に単音以外のピッチイベントを表現するために 設定されているものと思われる.現状では旋律として同時に1つのピッチしか存在しない もののみを考えているため,1つのchord要素に含まれるnote要素は1つだけである.
このTime-spanXMLによる簡単なタイムスパン木の表現の例を図4.11に示す.primary
要素やsecondary要素を子要素に持たないts要素は,タイムスパン木における葉に相当
する.
<ts leftend ="0.0" rightend ="4.0" timespan ="4.0" >
<head >< chord duration ="2.0" > < note id =" P1 -1 -1" / > </ chord > </ head >
<primary >
<ts leftend ="0.0" rightend ="2.0" timespan ="2.0" >
<head >< chord duration ="2.0" > < note id =" P1 -1 -1" / > </ chord > </ head >
</ts >
</ primary >
< secondary >
<ts leftend ="2.0" rightend ="4.0" timespan ="2.0" >
<head >< chord duration ="1.0" > < note id =" P1 -1 -3" / > </ chord > </ head >
<primary >
<ts leftend ="3.0" rightend ="4.0" timespan ="1.0" >
<head >< chord duration ="1.0" > < note id =" P1 -1 -3" / > </ chord > </ head >
</ts >
</ primary >
< secondary >
<ts leftend ="2.0" rightend ="3.0" timespan ="1.0" >
<head >< chord duration ="1.0" > < note id =" P1 -1 -2" / > </ chord > </ head >
</ts >
</ secondary >
</ts >
</ secondary >
</ts >
図4.11: Time-spanXMLの記述例
本研究では,このTime-spanXMLにおいて,2つのピッチイベントのペアをヘッドとす るタイムスパンを表すts要素の子要素に対して以下の拡張を行う.
• head要素にbound属性を付加し,その値には通常のカデンツであれば“non-local”,
局所的カデンツであれば“local”を設定する.
• head要素には子要素のchord要素を2つ持たせ,これらのchord要素にfunc属性を 付加し,その値はカデンツのfinalのピッチイベントを表す方に“final”,penultのピッ チイベントを表す方に“penult”をそれぞれ設定する.
• secondary要素にsymbol属性を付加し,その値には従属先のカデンツが完全終止ま
たは偽終止であれば“egg”,半終止であれば“half-egg”を設定する.
以上を基に,カデンツ構造を表現した例を図4.12に示す.
<ts leftend ="0.0" rightend ="4.0" timespan ="4.0" >
<head >< chord duration ="1.0" > < note id =" P1 -1 -5" / > </ chord > </ head >
<primary >
<ts leftend ="2.0" rightend ="4.0" timespan ="2.0" >
< head bound =" non - local ">
< chord duration ="1.0" func =" final ">< note id =" P1 -1 -5" / > </ chord >
< chord duration ="0.5" func =" penult ">< note id =" P1 -1 -4" / > </ chord >
</ head >
<primary >
<ts leftend ="2.5" rightend ="4.0" timespan ="1.5" >
< head bound =" non - local ">
< chord duration ="1.0" func =" final ">< note id =" P1 -1 -5" / > </ chord >
< chord duration ="0.5" func =" penult ">< note id =" P1 -1 -4" / > </ chord >
</ head >
<primary >
<ts leftend ="3.0" rightend ="4.0" timespan ="1.0" >
<head >< chord duration ="1.0" > < note id =" P1 -1 -5" / > </ chord > </ head >
</ts > </ primary >
< secondary >
<ts leftend ="2.5" rightend ="3.0" timespan ="0.5" >
<head >< chord duration ="0.5" > < note id =" P1 -1 -4" / > </ chord > </ head >
</ts > </ secondary > </ts > </ primary >
< secondary symbol =" egg ">
<ts leftend ="2.0" rightend ="2.5" timespan ="0.5" >
<head >< chord duration ="0.5" > < note id =" P1 -1 -3" / > </ chord > </ head >
</ts > </ secondary > </ts > </ primary >
< secondary >
<ts leftend ="0.0" rightend ="2.0" timespan ="2.0" >
<head >< chord duration ="1.0" > < note id =" P1 -1 -1" / > </ chord > </ head >
<primary >
<ts leftend ="0.0" rightend ="1.0" timespan ="1.0" >
<head >< chord duration ="1.0" > < note id =" P1 -1 -1" / > </ chord > </ head >
</ts > </ primary >
< secondary >
<ts leftend ="1.0" rightend ="2.0" timespan ="1.0" >
<head >< chord duration ="1.0" > < note id =" P1 -1 -2" / > </ chord > </ head >
</ts > </ secondary > </ts > </ secondary > </ts >
図4.12: Time-spanXMLにおけるカデンツ構造の表現