目次 - SDL 3.0 API(機能別) - 再生と録音 - SDL_MixAudio

SDL_MixAudio

オーディオデータをミックスする

ヘッダ

SDL3/SDL_audio.h

構文

bool SDL_MixAudio(Uint8 *dst, const Uint8 *src, SDL_AudioFormat format, Uint32 len, float volume);

引数

Uint8 *dstミックスされたオーディオデータの書き込み先
const Uint8 *srcミックスする元オーディオデータ
SDL_AudioFormatformatオーディオデータの形式を表すSDL_AudioFormat
Uint32lenオーディオバッファの長さ
intvolume0.0~1.0のボリューム. 1.0のとき最大

戻り値

(bool) 成功のとき真, 失敗のとき偽を戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

受け取った形式formatのバイト長lenのオーディオバッファsrcを, ボリュームの調整とオーバーフローのクリップを行い, ミキシングしてdstに書き込む. dstバッファも, バイト長lenで形式formatの必要がある.

この関数は簡便さのために提供されている -- 自身でオーディオデータをミキシングすることもできる.

この関数を3つ以上のサンプルデータのストリームをミキシングするために使うべきではない. この関数を繰り返し使うと, 出力はクリップによって劣化する. 入力よりも広い範囲に増幅することはないためである(これを行うのは非効率である).

この関数は, コールバック関数の中で出力ストリームにオーディオデータを書き込むために必要だとよく誤解される. それも可能だが, SDL_MixAudio()は1つのオーディオストリームのボリュームを調整してミキシングする場合のみ必要である.

スレッドセーフ

この関数はどのスレッドからも安全に呼べる.

バージョン

SDL 3.2.0以降

SDL Wikiへのリンク

SDL_MixAudio - SDL Wiki