トラック単位のボリューム制御

サンプルのディレクトリ

/cri/pc/samples/criatomex/control_track_volume

サンプルの解説

Atomライブラリには、マルチチャンネル音声データを、 マルチトラックの音声データとして扱う仕組みがあります。
例えば、6chの音声データを再生した場合、その音声データはデフォルト状態では5.1chの音声データ (各チャンネルが L, R, C, LFE, Ls, Rs に対応したデータ)として扱われます。
しかし、 criAtomExPlayer_SetTrackInfo 関数を使用することで、6chの音声データをモノラル6トラックの音声データや、 ステレオ3トラックの音声データとして制御することが可能となります。
/* トラック当たりのチャンネル数を定義 */
    /* 備考)本サンプルでは、8chの音声データを2チャンネル×4トラックとして扱う。 */
    const CriSint32 channels_per_track[4] = { 2, 2, 2, 2 };
        :
    /* 8ch HCAデータが再生可能なボイスプールを作成 */
    criAtomExVoicePool_SetDefaultConfigForHcaVoicePool(&voice_pool_config);
    voice_pool_config.player_config.max_channels = 8;
    app_obj->voice_pool
        = criAtomExVoicePool_AllocateHcaVoicePool(&voice_pool_config, NULL, 0);

    /* プレーヤーの作成 */
    app_obj->player = criAtomExPlayer_Create(NULL, NULL, 0);

    /* 再生する音声データのフォーマット情報を設定 */
    /* 備考)再生するデータは2チャンネル×4トラック=8なので、          */
    /*    criAtomExPlayer_SetNumChannels関数には8を指定する。        */
    criAtomExPlayer_SetFormat(app_obj->player, CRIATOMEX_FORMAT_HCA);
    criAtomExPlayer_SetNumChannels(app_obj->player, 8);
    criAtomExPlayer_SetSamplingRate(app_obj->player, 48000);

    /* 音声データのトラック情報を指定 */
    /* 備考)下記コードでは2チャンネル×4トラックを指定。 */
    criAtomExPlayer_SetTrackInfo(app_obj->player, NUM_TRACKS, channels_per_track);

    /* 音声データをセット */
    criAtomExPlayer_SetFile(app_obj->player, NULL, PATH FILE);

    /* 再生の開始 */
    criAtomExPlayer_Start(app_obj->player);
        :
以上の設定を行うと、AtomExプレーヤーは8chの音声データをステレオ×4トラックの音声データとして再生します。
各トラックのボリュームについては、 criAtomExPlayer_SetTrackVolume 関数で個別に制御が可能です。
/* トラック2以外の音声ミュート */
    criAtomExPlayer_SetTrackVolume(app_obj->player, 0, 0.0f);
    criAtomExPlayer_SetTrackVolume(app_obj->player, 1, 0.0f);
    criAtomExPlayer_SetTrackVolume(app_obj->player, 2, 1.0f);
    criAtomExPlayer_SetTrackVolume(app_obj->player, 3, 0.0f);
    criAtomExPlayer_UpdateAll(app_obj->player);
        :

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