クロスフェード再生

サンプルのディレクトリ

/cri/pc/samples/criatomex/crossfade_playback

サンプルの解説

AtomExプレーヤーに対し「フェーダー」をアタッチする(取り付ける)ことで、フェードインやフェードアウト、 クロスフェードといった時系列のボリューム制御を自動化することが可能です。
フェードイン手順

音声をフェードインする(ミュート状態で再生を開始後、徐々にボリュームを上げる)場合、 処理手順は以下のようになります。
  1. criAtomExPlayer_Create 関数で、AtomExプレーヤーを作成する。
  2. criAtomExPlayer_AttachFader 関数で、AtomExプレーヤーにフェーダーをアタッチする。
  3. criAtomExPlayer_SetFadeInTime 関数でフェードインにかける時間を指定する。
  4. criAtomExPlayer_SetCueId 関数等で、AtomExプレーヤーにフェードイン再生する音声データをセットする。
  5. criAtomExPlayer_Start 関数で再生を開始する。

以上の操作を行うことで、 criAtomExPlayer_Start 関数で再生した音声が、 criAtomExPlayer_SetFadeInTime 関数で指定した時間で最大ボリュームになるよう、 自動的にボリューム制御されます。
フェードアウト手順

再生中の音声をフェードアウトする(ボリュームを徐々に落とし、ミュート状態になった時点で再生を停止する)場合、 処理手順は以下のようになります。
  1. criAtomExPlayer_SetFadeOutTime 関数でフェードアウトにかける時間を指定する。
  2. criAtomExPlayer_Stop 関数で再生を停止する。

以上の操作を行うことで、再生中の音声が criAtomExPlayer_SetFadeOutTime 関数で指定した時間でミュートされるよう、 自動的にボリューム制御されます。
クロスフェード手順

criAtomExPlayer_SetFadeInTime 関数と criAtomExPlayer_SetFadeOutTime 関数でフェードイン/アウトの時間を指定した状態で、 criAtomExPlayer_Start 関数を繰り返し実行すると、 criAtomExPlayer_Start 関数実行毎に再生中の音声がフェードアウトし、 新たな音声がフェードインします。
/* プレーヤーの作成 */
    app_obj->player = criAtomExPlayer_Create(NULL, NULL, 0);

    /* フェーダーのアタッチ */
    criAtomExPlayer_AttachFader(app_obj->player, NULL, NULL, 0);

    /* フェード時間の初期化 */
    /* 備考)3秒でクロスフェードするよう設定。 */
    app_obj->fade_time_ms = 3000;
    criAtomExPlayer_SetFadeInTime(app_obj->player, app_obj->fade_time_ms);
    criAtomExPlayer_SetFadeOutTime(app_obj->player, app_obj->fade_time_ms);
        :

        :
    /* 再生の開始 */
    /* 備考)再生毎に前回再生した音声がフェードアウトされ、新たに音声がフェードインされる。 */
    criAtomExPlayer_Start(app_obj->player);
        :
 
[備考]
デフォルト設定ではフェードインとフェードアウトは同じタイミングで開始されますが、 criAtomExPlayer_SetFadeInStartOffset 関数を使用することで、 フェードインとフェードアウトのタイミングをズラすことも可能です。
再生中の音声がフェードアウトしきってから次の音をフェードインさせたい場合や、 音声がフェードインしきってから前の音をフェードアウトさせたい場合等、 フェードインとフェードアウトのタイミングをズラしたい場合には、 criAtomExPlayer_SetFadeInStartOffset 関数を併用してください。

CRI Middleware logo Copyright (c) 2006-2018 CRI Middleware Co., Ltd.