CRI ADX  Last Updated: 2024-03-21 14:32 p
トラック単位のボリューム制御

サンプルのディレクトリ

/cri/pc/samples/criatomex/control_track_volume

サンプルで使用しているデータ

/cri/common/smpdata/criatomex/
  • InterleavedMultiTrack.hca

サンプルの解説

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データが再生可能なボイスプールを作成 */
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_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);
#define CRIATOMEX_FORMAT_HCA
Definition: cri_atom_ex.h:1932
void criAtomExPlayer_SetFile(CriAtomExPlayerHn player, CriFsBinderHn binder, const CriChar8 *path)
音声データのセット(ファイル名の指定)
void criAtomExPlayer_SetFormat(CriAtomExPlayerHn player, CriAtomExFormat format)
フォーマットの指定
CriAtomExPlaybackId criAtomExPlayer_Start(CriAtomExPlayerHn player)
再生の開始
CriAtomExPlayerHn criAtomExPlayer_Create(const CriAtomExPlayerConfig *config, void *work, CriSint32 work_size)
AtomExPlayerの作成
void criAtomExPlayer_SetNumChannels(CriAtomExPlayerHn player, CriSint32 num_channels)
チャンネル数の指定
void criAtomExPlayer_SetSamplingRate(CriAtomExPlayerHn player, CriSint32 sampling_rate)
サンプリングレートの指定
void criAtomExPlayer_SetTrackInfo(CriAtomExPlayerHn player, CriSint32 num_tracks, const CriSint32 *channels_per_track)
トラック情報の指定
#define criAtomExVoicePool_SetDefaultConfigForHcaVoicePool(p_config)
HCAボイスプール作成用コンフィグ構造体にデフォルト値をセット
Definition: cri_atom_ex.h:603
CriAtomExVoicePoolHn criAtomExVoicePool_AllocateHcaVoicePool(const CriAtomExHcaVoicePoolConfig *config, void *work, CriSint32 work_size)
HCAボイスプールの作成
以上の設定を行うと、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);
void criAtomExPlayer_UpdateAll(CriAtomExPlayerHn player)
再生パラメーターの更新(再生中の音全て)
void criAtomExPlayer_SetTrackVolume(CriAtomExPlayerHn player, CriSint32 track_no, CriFloat32 volume)
トラックのボリューム設定