Muse(V6.4)において、連符内連符の表現が可能となった。その開発において、Museコンパイラの内容が刷新され、 従来からの表記で文法上曖昧だった定義も明確化された。その結果、V6.3以前のデータとの非互換性がいくつか生じる事となった。 いずれも軽微なものであるが、音楽的な表現には微細な部分ほど重要である場合も多いため、 非互換部分を明らかにする事は大切であると考える。以下にその非互換仕様の内容を記載する。

<連結関係>

	]族仔發離魁璽匹力結
	∀族仔睿符の連結


<アルペジオ関係>

	O族仔發離▲襯撻献
	は符内和音のアルペジオ


<ゼロ音長関係>

	ゥ璽躄残垢離魁璽匹魘瓦鵑析結
	Ε璽躄残垢鮓戮哀▲セント
	Д璽躄残肱符内の属性指定


<LilyPond関係>

	┷脳記譜音長のデフォルト値変更
	楽譜タイトル出力の方式変更
	楽譜構造指定の予約文字変更


<その他>

	括弧交錯のエラーガード強化
	コマンドパラメータの不正文字の扱い
	テンポ遅延の連符内スケーリング
	フィンガー宣言によるアクセント指定の継承性


(注)各項目の末尾に非互換検出したデータ曲数を明示したが、これは開発者が保有する 既存データ(8,300曲強)が母数となっている。
★2013.4.11現在、8,333曲中、1つ以上の非互換箇所を有するデータは312曲であった。



]族仔發離魁璽匹力結


 以下の記述をした場合、従来はドミソの和音が2つ目の和音と連結していなかった。

	[ dms 'F>' ]  &  [ dms ]


 これは、ほとんどバグに近い。新仕様ではきちんと連結する。

 ちなみに、以下の記述では新旧共に連結する。

	[ 'F' dms   ] & [dms]
	[ 'C' c<rf> ] & [dms]


 →●非互換検出データ:バグと解釈し検出を未実施

∀族仔睿符の連結


 以下の記述をした場合、従来は和音内の2つの連符の内&に近い方のみが連結対象であった。

	[ (dms) <(dms)> ]1 & [ s<s> ]1


 新仕様では、両連符ともソの音が連結する。

 →●非互換検出データ:11曲

O族仔發離▲襯撻献


 和音内コードにおいて、従来は内側に記述されたアルペジオは無視されていたが、
 新仕様ではそれを解釈するようにした。つまり部分的なアルペジオが可能となる。
 例えばピアノの左右手で独立アルペジオが記譜されていた際、[ [dms]:i60 [<dms>]:i60 ] が可能。

 なお、和音の中のアルペジオは、基本的に外側の和音の音頭が起点となる。
 また、アルペジオの付いた和音内のコード表記は、そのコード自体にアルペジオのコロン(:)があるか否かで仕様が異なる。
 もしコロンがある場合は、和音内の他の音と独立して、和音の頭から指定されたアルペジオが掛かる。
 これは、和音内の連符や和音と同じ扱いであり、こちらが基本形である。

	[ >dms< 'C':8 ]1:16


 もしアルペジオが無い場合は、和音内の他の音と一体化して全体のアルペジオが掛かる。
 これは、コード表記のみの特殊な仕様である。

	[ >dms< 'C'   ]1:16


 基本形のタイプでコードにのみアルペジオを掛けたくない場合は、(:0)を明示すればよい。

	[ >dms< 'C':0 ]1:16


 なお、従前の仕様では和音に逆アルペジオ(-)を付けてもコード部分にしか反映しなかった。
 今回の新仕様では全体で一体化した形で逆アルペジオが掛かる。

 もちろん、コード表記の無い単純な和音でも逆アルペジオが掛かる。再現表記でも利用できる。

	[dms]:16 ,:- ,: ,:- ,: ,:-


 →●非互換検出データ:該当なし

は符内和音のアルペジオ


 従来のアルペジオ音長の省略は、連符に突入した時点でゼロリセットし連符内を先読みサーチし、
 初めて明示されているアルペジオ音長があれば、それを新たにアルペジオの省略音長として採用していた。
 しかしこの仕様は極めて把握しにくく、例えば後方で指定されたアルペジオ音長が前方の省略部分に採用されるなど
 違和感の多いものであった。今回の新しい仕様は、省略音長とまったく同様の継承プロセスを導入した。
 連符内のアルペジオ音長のデフォルトは、その連符に掛かっているアルペジオ音長が採用され、
 連符内で新たにセットしたアルペジオ音長は、その外に出ることは無い。
 (この仕様は和音内和音のアルペジオでも同様である)

	[dm]4:i7 ( [dm]4: [dm]8:i5 )4
	[df]2:8 ( [df]8: [df]4:i7 )1

 →●非互換検出データ:2曲

 なお、連符内でのアルペジオ音長は連符による比率変換を実施せず、
 常に記述された音長そのもので音のずらしが行われる仕様に変更した。
 アルペジオは和音のニュアンスを決定するものであり、他の遅延とは性格が異なる。
 よって、連符比率変換によって音長が変化しない方がMusingしやすいと判断した。
 特に、連符内連符など複雑な構造になると、絶対音長の方が把握しやすいはずである。
 ただし、この連符比率変換をしないという変更により、かなりの非互換データを検出してしまった。
 演奏ニュアンスにも多分に影響を与えるため本件の非互換は大変恐縮なのだが、
 今後のMusingにおいて連符内のアルペジオ音長を調整する際の容易性確保、
 そしてMuse進化のためと、お許しいただきたい。

 →●非互換検出データ:212曲

ゥ璽躄残垢離魁璽匹魘瓦鵑析結


 以下の記述をした場合、従来は連結する場合と連結しない場合が入り乱れており、単音と連符のみ連結し、コードと和音およびその再現表記は連結していなかった。

	d4    d0 & d4	;連結していた
	d4    _0 & d4	;連結していた
	d4  (_)0 & d4	;連結していた
	d4   ()0 & d4	;連結していた
	d4  'C'0 & d4	;連結していなかった
	d4  [_]0 & d4	;連結していなかった
	d4   []0 & d4	;連結していなかった
	d4    ,0 & d4	;連結していなかった


 新仕様では「すべて連結しない」

 一方、連結を前方音符の直後に記述した場合はあらゆるタイプで連結する。これは従来仕様と等しい。

	d4 &  d0   d4 _2 など


 これにて、ゼロ音長のタイプによらず連結の記述位置でその挙動が決まるというシンプルな仕様となった。
 また、&は基本的に音符の後ろに付与することで、その音符にスラー効果を与え、かつ続く音符と音程が等しい場合にタイとして連結する、という考え方が導入できる。
 この規則により、ゼロ音長の後ろに&を与えた場合は、そこに作用は起こらないと解釈するのが自然であり妥当だと考えた。

 →●非互換検出データ:18曲

Ε璽躄残垢鮓戮哀▲セント


 以下の記述をした場合、従来は音符とコードの場合のみアクセント指定が透過してドの音にアクセントが付き、
 それ以外は、アクセントが無効になっていた。

	w    d0 d4	;透過していた
	w    _0 d4	;キャンセルされていた
	w  (_)0 d4	;キャンセルされていた
	w   ()0 d4	;キャンセルされていた
	w  'C'0 d4	;透過していた
	w  [_]0 d4	;キャンセルされていた
	w   []0 d4	;キャンセルされていた
	w    ,0 d4	;キャンセルされていた


 統一感が無いので、新仕様ではすべてキャンセルすることとした。
 つまり、アクセント指定はゼロ音長を透過する事はできない。

 →●非互換検出データ:該当なし

Д璽躄残肱符内の属性指定


 音長ゼロの連符内に記載された各種属性(例えばV100 とか R=64.50 など)は、従来はその位置で実行されていたが、
 新仕様では実行しない様にした。ただし和音の方は、新旧ともゼロ音長であっても音は演奏され属性も実行される。

 従来の連符のゼロ音長は、音は演奏されずに属性のみ実行される状態であった。
 仕様に一貫性と対称性を与えるため「ゼロ音長の連符」は音も属性も実行せず「ゼロ音長の和音」は音も属性も実行することにした。

 所詮、従来の様にゼロ音長連符の属性が実行されたとしても、全体の音長がゼロであるため、その実行位置は
 括弧開始ポイントに位置づけられてしまう。したがって、この機構はゼロ音長の和音と同一の働きしかしないのである。

 基本的に連符内の音長値は連符比率で変換する必要があるが、ゼロ音長ではその変換が不可能である。
 そのため従来は遅延音長部分を変換せずに出力していたが、これは理解に苦しむ例外的仕様である。
 論理的に音長演算ができないのであるから、遅延の有無によらず実行しないとする方が明快であると判断した。

 過去のデータでも、()0の部分は再現表記の定義元として記載しており、その場での実行を期待していないようだ。
 その昔、繰返し{ } でゼロ指定が無かった頃の工夫と思われる。

 →●非互換検出データ:15曲

┷脳記譜音長


 従来は、(8,16,32,64)の4種類であったが、(8,16,32,64,128)と5種類に拡大し、デフォルト値を16から32に変更した。
 また端数の出にくい処理シーケンスに改良したため、従来行っていた曲尾端数譜刻を廃止した。

 →●非互換検出データ:該当なし

楽譜タイトル出力の方式変更


 *LILY"1〜9"のコマンドは、"..."出力ではなく、\markup{...}に改変。
 これに伴い、# や \ などをダイレクトに記述していた場合にエラーとなる。

 しかし、この変更により \char##xE9 などのアクセント文字を譜刻することが可能となった。

 →●非互換検出データ:該当なし

楽譜構造指定の予約文字変更


 *LILY"0"のコマンドに、符尾の向きを制御するフィンガー接続詞を加えるにあたり、
 従来の(+)文字が担っていた機能を(*)文字に割り当て、新たに加える機能の文字を(+)とした。

 互換を崩してまで記号の意味を変更したのは、強い接続と弱い接続の関係を常識的な算術式センスと一致させるためである。

 →●非互換検出データ:該当なし

括弧交錯のエラーガード強化


 従来は強引に解釈していたが、新仕様では、和音や連符の括弧と、マクロの括弧が交錯する場合は文法エラーとした。

	{ ( d } m )  


 これを許すと連符や和音を多階層に展開する場合、
 プログラム上、対となる開閉括弧のポインタが一意に決まらなくなるというのが主な理由である。

 極めてトリッキーな技術として利用しているデータもあったが、
 可読性がひどく悪いため、その意味でも今回からエラーとしてはじくこととした。

 →●非互換検出データ:2曲

コマンドパラメータの不正文字


 コマンドのパラメータ内の文字で、全角の2バイト目がトレイルコードで無い場合、
 従来はそのまま出力していたが、新仕様では1バイト目のリードバイトに上書きして不正なリード文字を潰す様にした。
 従来仕様は文字化けしたデータをテキストエリアに表示してしまっていたため、一種の仕様不備とも捉えられる。

 →●非互換検出データ:3曲

テンポ遅延の連符内スケーリング


 従来、テンポの遅延記述(すなわちリタルダンドやアッチェレランド)を記述した際、
 その遅延音長は連符内の音長比率で換算されず、記述された絶対音長を採用し演奏していた。
 しかし、他の遅延音長と同様、例えば11連符内の3音目から5音目に掛けてテンポを変化させたい
 といった要請を簡便にMusingするためには、やはり連符内でのスケーリングが必要である。
 今回の新しい仕様では、スケーリングを実施することにした。

 →●非互換検出データ:98曲

フィンガー宣言によるアクセント指定の継承性


 従来、アクセント指定は、フィンガー宣言(#)を跨いで生き続け、次の音にアクセントを与えていた。つまり、以下の様に書くと、ドの音にアクセントが付いた。

	#A0 w+20  
	#A0 d r m  


新しい仕様では、アクセントの指定はフィンガー宣言(#)を跨がない。
ただし、アクセント値のセットは実施される。
これにより、それぞれのフィンガーに対して、データ冒頭で初期値としてのアクセント値を設定しやすくなった。

 →●非互換検出データ:4曲


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-04-14 (日) 00:42:41 (2198d)
Google