- changed status to open
MIDファイルがリピートされない
Issue #1097
resolved
BGM変更コンテントで再生させた特定のMIDファイルが、ループ回数0設定でもリピートされません。(1回は流れ切ります。)
ファイルの長さやサイズに制約はあるでしょうか?他考えられる原因があれば教えてください。なお問題となっているファイルの長さは4分19秒、サイズは165KBです。
Comments (7)
-
repo owner -
reporter ご回答ありがとうございます。
.sliファイルを試してみましたがループされませんでした。別の要因のようです。 -
Pyのみで再現されるのでしょうか?
170kb程度のファイルで、楽譜の末尾に1パートだけゴミが付いていて次のループまでに無音時間が数分かかるようになっているMIDI素材を見たことがあります。そういう場合でもsliのループ情報を適切な位置にセットすればループされるはずですが、他エンジンでもループさせたい場合はファイルをMIDIシーケンサー(編集ソフト)で直接改変する必要があります(改変が許可されている場合のみ)。
-
repo owner すいません、誤情報を流しました。ループ位置を冒頭に戻すには
Link{From=-1;To=-1;}
ではなくLink{From=-1;To=0;}
でなければなりません。Fromは再生がジャンプする位置、Toはジャンプ先です。ジャンプ先が末尾に設定されていて再生が停止するタイプのファイルであれば、ジャンプ先を曲の冒頭にすればループすると思います。
-
reporter Link{From=-1;To=0;}
こちらでリピートされました。ありがとうございました! -
@k4nagatsuki
本件、報告者による動作確認が行われており、クローズ可能です。 -
repo owner - changed status to resolved
ありがとうございます。ご指摘いただいたぶんクローズしていきます。
- Log in to comment
RPGツクール向けのMIDIファイルのなかにはCC111という信号を設定してループ位置を指定しているものがあるのですが、エンディング用などの特殊な目的でその位置を末尾に指定して再生が一度きりになるようにしているファイルを見たことがあります。そうしたケースではないでしょうか。
製作者の意図に反する事になりますが、一応回避する方法は存在します。ループ位置を上書きするためにループ情報ファイルを作成してください。
.sli
を追加したテキストファイルを作成し(a.mid
ならa.mid.sli
)、対象ファイルと同じフォルダに入れます。*.sli
ファイルの内容をLink{From=-1;To=-1;}
にします。ここには本来ループ位置をサンプリング数という単位で書くのですが、-1
という無効値を設定する事でループ設定を無効化します。