ADX2で連結再生

「ADX2で連結再生」の編集履歴(バックアップ)一覧に戻る
ADX2で連結再生」を以下のとおり復元します。
ADX2で波形を連結して連続再生する方法をいくつか紹介。

あるフレーズとあるフレーズをきれいに繋いで再生したい時があります。
この時、どれくらいの精度で繋ぐかにより、ゲームの限られたリソースでは選択が迫られます。

奇麗に繋がるレベルは3種類あります。
- サンプルレベル
波形連結、ループ再生に強い。サンプルレベルで行うため処理負荷が高くなりがち。(ADX、HCAコーデックのループ、連結再生はコーデックのデコードと同時に行うので重くはならない)
- オーディオサーバーレベル
MIDIレベルの同期。サンプルレベルではないが、処理負荷がサンプルレベルと比べ軽い。
- ビートレベル
音楽的なビート感のあるフレーズの連続再生時はビートに同期しているか否かが重要になる。(ADAMSやビート同期はこれにあたる)

ギャップがあるもの、無いもの、それに伴うトレードオフ(制限事項)などがある。
一般に【サンプルレベル】での連結はシンプルな構成のもの同士、複雑な処理の場合は【オーディオサーバーレベル】での同期となります。

複数トラックを持つものを同期させるといった事は通常困難であるため、データ側を工夫する必要がある。
→AISACなどで、複数無音再生し続け切り替える。(ボリュームコントロールなどで、無音再生し続けるなど)(低スペック機では苦しい、組み合わせが固定など)

サンプル同期で切り替えるのみで、なるべくリソースを少なくする場合、
条件が合えば、【ミュージックトランジション機能(PROのみ)】を使うと、
制限(ループのサンプル数が同じ)であれば、トランジション時のオーバーラップ分のみで最小リソースで切り替えが可能といったものもある。

ADX2では様々な方法が用意されています。
演出とデータの作り方にかかるコスト、プログラムにかかるコストなどから選択します。

*目次
#contents()

*シームレス連結再生
**プログラムで
キューの中に波形が一つだけの時に【サンプルレベル】で連結再生する。ボイスリソースも1つだけで済む(オーバーラップ分なし)

*ブロック再生
**データで
ブロックでキューをいくつか分けておく。
初期状態のブロックリピート数を指定できるので、3回ループして次へといった事も可能
ただしキューの中でブロックは完結している必要がある。
ブロック間を【オーディオサーバー間隔】で連結再生する。

**プログラムで
ブロックデータのindexを指定する。

*シーク再生
**プログラムで
msec単位で再生スタート位置を指定する。
ストリームなどは【再生開始までにギャップ】がある場合があるので、Prepスタート再生(プレーヤーをポーズ状態にして、セット、スタート→ポーズ解除)すると軽減する。
ADXコーデック、HCA-MXコーデックではノイズがのる場合があるので、HCAコーデックを使うと良い。
ボイスリソースは1つだけで済む。

*ループ回数指定再生
**プログラムで
波形がループだった場合に、ループ数を指定して再生することが可能
【サンプルレベル】でループ再生する。リソースも1つだけで済む(オーバーラップ分なし)

*シーケンスループ
**データで
シーケンスマーカのループを使う事で、1~無限まで指定可能。
【オーディオサーバー間隔】でのループが可能。
ボイスリソースはオーバーラップ分増える。(ループ波形が混ざっているとループ区間分増幅するので注意)

*ウェーブフォームで自動繰り返し指定
**データで
ウェーブフォームやリンクキューなどトラックに配置できるもので、1Shotの波形を「自動繰り返し回数」を指定し、「自動繰り返し間隔」を指定する。
【オーディオサーバー間隔】での繰り返しが可能。
ボイスリソースはオーバーラップ分増える。(ループ波形が混ざっているとループ区間分増幅するので注意)

*アクションとビート同期で
**データで
ビート同期を設定する。BPMと同期ポイントを指定する。
プレーヤー1つだけの再生にし、再生を行うと、次の曲に遷移するタイミングがビート同期ポイントまで遅延(同期)する。
同期精度は【オーディオサーバー間隔】。
ボイスリソースはオーバーラップ分増える。(ループ波形が混ざっているとループ区間分増幅するので注意)

**プログラムで
ビート同期のあるデータを再生(Set,Start)すると自動で遅延(同期)する。
ビート同期がある場合、アクションも遅延する。(ビートに合わせて変化する)
これを利用して、アクションでトラックのSolo/Muteを変化させたり、VolumeやAISACを操作することも可能。

*ミュージックトランジションで
**データで
ミュージックトランジションキューを作成し、
トラックに切り替え用のオーディオを用意する。(ループ区間などは同じサンプル数)
ビート同期も指定する事で、ビートに合わせて切り替えも可能。
キューにセレクタを設定し、トラックにセレクタラベルを設定する。

**プログラムで
ミュージックトランジションキューを再生し、(通常のキューの再生と変わらない)
セレクタのラベルを変更するだけで、自動で切り替わる。

復元してよろしいですか?