[76-1]
N505iのループのことで
グリフォン
2003/11/13(木)17:57
|
|
ループポイント指定『 』 ループエンド手前に音色やボリューム情報等を残してスタートに戻る(通称-最後っ屁) この方法で2順目以降を別音色で演奏させる事はできるでしょうか?
例えば 【@57v48o4c4『o4cde………@31v28』】
このようにMMLを組んだ場合、 1順目は@57v48で、2順目は@31v28で『 』内を演奏、 というような動作をしますでしょうか? |
[76-2]
ちょっと長くなりますが…
がうがう
2003/11/15(土)04:56
|
|
ループポイント自体はそこまで演奏した@やv情報を引き継いでループします。
しかし、@,v,y,%といったコマンドは、後続のノート情報が出現して初めて有効になることに注意が必要です。 上記の記述だと"@31v28"の後にノート情報がないので、"@31v28"は無効となります。 (試しに"@31v28"を削除してもデータ量は変わりません) 従って、グリフォンさんの記述ではループ時に"@31v28"は反映されません。
"@31v28"に後続のノート情報がある場合、例えば、 @57v48o4c4『o4cde………@31v28c』 とすれば"@31v28"は有効ですので2ループ目のo4cdeは"@31v28"で演奏されます。
以上のことをふまえると、グリフォンさんが期待する演奏をさせるには、 @57v48o4c4o4c『de………@31v28o4c』 とすればいいわけです。
また、ループポイントを使う際の注意点として、MLDC16の最適化があります。 例えば、イントロは@1、ループの途中で@2にして、2ループ目以降も1ループ目と同じように演奏させたい場合は、 @1cde『@1fg………@2cdef』 と記述すれば良いように思えますが、MLDC16の最適化によりループ先頭の@1は削除されてしまいます。 (OPTIMIZE=0にしても最適化されます)
そこで、前述の例と同じように @1cdef『g………@2cdef@1f』 とする必要があります。
また、バイナリ挿入なら最適化で消えることはないので、@1をバイナリで表現して、 @1cde『{00FFE10600FFE000}fg………@2cdef』(※トラック1の場合) とするのも有効です。
個人的には後者の方がすっきりしているのでお勧めです。
ちなみに、グリフォンさんの記述のループエンドにある"@31v28"は、 バイナリで表現しても後続にノート情報がないので無効になります。
もしバイナリ表現に関して分からないことがあれば、また質問してみて下さい。 |
[76-3]
謝々!
グリフォン
2003/11/15(土)09:17
|
|
がうがさん、大変詳細な解説頂き、感謝しております。
確認してみたところ、確かにMIDI出力でも、ノートがない場合は プログラムチェンジ,コントロール情報の類いは出力されていませんね。
最適化は、直前のコントロール情報と同じ情報が記述されている場合、後着のものがカットされてしまうんですね。
最適化の効能を考えれば、非常に効率の良い方法で変換を行うMLDCは優秀ですが、ループに際しては想定外の弊害が出てしまうようですね。(^^;ゞ
で、少し試してみたのですが、 例えばループ末尾が 『……c1』のような情報だった場合、 『……c*191 @31v28c*1』 のように記述すると、(MIDIで確認した限りでは) コントロール情報を出力しています。 (『……c*191 @31v28r*1』では出力しません)
この場合、「*1」分のノートが一瞬発音されてしまいますので、リリースの長い音色では着信演奏時以外の挙動に向きませんが、がうがうさんの提案される方法で修正が困難な場合、最後の悪あがきとして有効ではないでしょうか・・・。(^^;a
またもうひとつ質問で申しわけないのですが、 o4c4&『c*15 c*33……d4』 のようにした場合、ループ区間前の「&」は有効になるのでしょうか? |
[76-4]
追伸
グリフォン
2003/11/15(土)09:33
|
|
更に試してみました。
『……@31v28q1c*1』 のようにすると、発音時間0のノート情報が出力されます。 この方法でリリースを回避できる・・・かな?(汗 |
[76-5]
えーと
がうがう
2003/11/15(土)22:59
|
|
順番に答えますね。
(1)@31v28c*1,@31v28r*1の場合 休符もノート情報の1つですので、 "c*1"でも"r*1"でも"@31v28"は有効です。 ただし、MLDC16ではOPTIMIZE=1とすると休符の最適化が行われるので、"r*1"では"@31v28"は無効になります。 逆に言うと、OPTIMIZE=0とすれば"r*1"でも良いわけです。
(2)ループ直前のタイ こちらは問題なくタイになります。 (ループ前の"c4&"は、発音長=48+1のデータとして書き出されるため)
(3)@31v28q1c*1の場合 これはなかなか鋭い手法ですね。 しかし、MLDC16ではq1c*1としても発音時間は1となります。 (QnC*mの発音時間はn≧mだと1固定) 従って、実際には耳障りな音が鳴ってしまいます。
そこで、 @31v28q1c*1,1,0 としてベロシティを0にしましょう。 これならcの音は全く鳴りません。 ただしベロシティを有効にするため、NOTEMODE=1が必要です。
ちなみに、"c*1,0"とすれば発音時間=0なのですが、これは休符として取り扱われるので、最適化の対象になってしまいます。
(4)結局… OPTIMIZE=0としてr*1とするか、NOTEMODE=1としてc*1,1,0とするかのどちらかになると思います。 この絶対音長1の隙間がどうしても気になる場合には、音色変更後、音の切りがよい小節までループの中に含めてしまうのが良いでしょう。 |
[76-6]
なるほど…
グリフォン
2003/11/16(日)02:11
|
|
ベロシティ・・・普段使わないので盲点でした。(^.^; アドバイス大変感謝致します。
気を付けなければいけないのは、 @1cde『@1fg………@2cdef』 や @1v48p16y68cy128de『@1v48p16y68fy128g………@2v24p8y64cy128def』 等の場合ですかね。 これはわかっていてもうっかりやってしまいそうです。
まぁこれはこれでおもしろい効果が出そうですが(笑
ところで、バイナリの記述についてなのですが、 もしよろしければご教授頂けませんでしょうか? #既出のバイナリによる曲中ベンドレンジ変更技は、有り難く活用させて頂いております。(^^ゞ |
[76-7]
バイナリ解析
がうがう
2003/11/16(日)21:36
|
|
MLDのバイナリ解析が以下のサイトにまとめられています。 http://www.ne.jp/asahi/phs/phs/ezpmd.html
これを見れば、各コマンドに対応するバイナリが分かります。 大変役に立つ情報なので、是非参照してみて下さい。 (私も大いに活用させてもらっています。情報提供者様に感謝!)
この情報を元に、各コマンドに対応するバイナリを算出するexcelシートを作りましたので、アップしておきます。ご活用下さい。 http://members.jcom.home.ne.jp/gau2/temp/command_binary.xls
ところで、ちょっと注意点。 ベンド解除コマンド"Y128"だけは特別で、ベンド値を128するという意味ではなく、「以降、ノート情報毎にベンド情報を付随させない」というMLDC16の内部的なフラグでしかありません。ですから、バイナリで表現されるものではありません。 また、YコマンドはMLDCで最適化の対象にはなっていません。ですから、 @1v48p16y68cy128de『@1v48p16y68fy128g………@2v24p8y64cy128def』 のループに入って最初のy68は有効なので、わざわざバイナリにする必要はありません。 最適化対象は私の調べた限り、@,v,p,%の4つです。 |
[76-8]
補足
がうがう
2003/11/28(金)23:05
|
|
先に紹介したバイナリを算出するexcelシートですが、 「バイナリ」の列のセルに正しい結果が出ていない("#VALUE!"など)場合、
「ツール」→「アドイン」→「分析ツール」にチェック
を実行してからセルを更新して下さい。 ("DEC2HEX"を使用しているため) |
[76-9]
ループポイント繰り返し設定
がうがう
2004/01/18(日)00:22
|
|
いまさらな情報ですが、一応。 MLDC16のヘルプでは、ループポイント 『…』[n] の繰り返し回数nは最大15とありますが、実際は16まで設定できます。 ちなみにn≧17とすると、n mod 16 を設定した時と同じになります。 また、n=1とすると無限ループになります。 |
|