Wiki Page Content


Use this function to mix audio data in a specified format.


void SDL_MixAudioFormat(Uint8*          dst,
                        const Uint8*    src,
                        SDL_AudioFormat format,
                        Uint32          len,
                        int             volume)

Function Parameters


the destination for the mixed audio


the source audio buffer to be mixed


the SDL_AudioFormat structure representing the desired audio format


the length of the audio buffer in bytes


ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME for full audio volume

Code Examples

void MyAudioCallback(void *udata, Uint8 *stream, int len)
    extern SDL_AudioFormat deviceFormat;
    extern const Uint8 *mixData;
    SDL_memset(stream, 0, len);  // make sure this is silence.
    // mix our audio against the silence, at 50% volume.
    SDL_MixAudioFormat(stream, mixData, deviceFormat, len, SDL_MIX_MAXVOLUME / 2);


This takes an audio buffer src of len bytes of format data and mixes it into dst, performing addition, volume adjustment, and overflow clipping. The buffer pointed to by dst must also be len bytes of format data.

This is provided for convenience -- you can mix your own audio data.

Do not use this function for mixing together more than two streams of sample data. The output from repeated application of this function may be distorted by clipping, because there is no accumulator with greater range than the input (not to mention this being an inefficient way of doing it). Use mixing functions from SDL_mixer, OpenAL, or write your own mixer instead.

It is a common misconception that this function is required to write audio data to an output stream in an audio callback. While you can do that, SDL_MixAudioFormat() is really only needed when you're mixing a single audio stream with a volume adjustment.

CategoryAPI, CategoryAudio

None: SDL_MixAudioFormat (last edited 2015-01-02 21:15:47 by PhilippWiesemann)

Please include your contact information if you'd like to receive a reply.