Ren’Pyでイントロ、アウトロ付きループをテストする

 Ren’Pyはループ情報つきのオーディオファイルには対応していませんが、現在再生中の音声が終了後に再生するファイルを指定でき、再生開始、終了位置を指定しての再生もできます。今回は後者を使用してイントロ、アウトロ付きのループが可能かをテストします。

 方法

 音声ファイルをゼロクロスオーバーとなる点を用いてイントロ、ループ部分、アウトロの3つに分割します。これを以下のコードで再生してみます。


    "テスト開始"
    play music "audio/bgm/all.wav"
    "この音声をループ再生します。"
    play music 'audio/bgm/intro.wav'
    queue music 'audio/bgm/loop.wav' loop
    "イントロからループにうつります。\nplay music 'audio/bgm/intro.wav'\nqueue music 'audio/bgm/loop.wav' loop"
    queue music "audio/bgm/outro.wav" noloop
    "エンド\nqueue music 'audio/bgm/outro.wav' noloop"

1回目でループ部分がちゃんとループされていることが確認できます。ちゃんとしたループ音源を使用すれば自然にループ出来るでしょう

2回目はループ開始からすぐ次の行に移ってループ部分を1回のみ再生しています。全体を収録した1つのファイルを再生したときと同じように再生できています。

 注意しなければならないのは3回目の場合です。イントロ開始からすぐ次の行に移動すると1度もループ部分が再生されずイントロからアウトロまで跳んでしまいます。この部分はそのうち最低再生回数を指定できるコードを追加したいです。また、 音声を 複数ファイルにわけているため、MusicRoomでの再生記録判定も注意してください。ループ部分でセーブしたデータをロードするとループの開始位置から曲を再生してしまうので、回避用のコードをafter_load ラベルに書く必要もあります。

20/10/20 追記 よくよく調べるともっと便利なイントロ付きループ再生方法がありました。 
Ren’Pyでイントロ、アウトロ付きループを使う

 Ren’Pyは今のところループ情報付きのオーディオファイルに対応していませんが、上記の方法で代用は可能です。単に1つの曲をイントロ付きループさせる他にもたくさんのシームレスに繋げられる音声ファイルを用意すればシーンと同期してシームレスに曲を展開可能です。

 例えば以下のようにリスト単位でのループもキューでき、次の音声またはリストをキューすると、現在再生中の音声終了後そちらに移行できます。なので数小節の細かいパーツに分ければシーンの変化にすぐに曲の変化がついていくディズニー映画みたいなことがユーザーがいつどう動くか分からないノベルゲームでも可能になります。


    queue music ["audio/bgm/intro.wav", "audio/bgm/loop.wav", "audio/bgm/outro.wav"] loop

 この辺はゲームBGMとかループとかで検索すると色々解説しているサイトがあるので調べてみると面白いでしょう。

https://note.com/geekdrums/n/n035a57e23a8a

PS どなたかループポイントでファイルを自動分割するようなソフトがあったら教えてください。