Use miniaudio's built-in volume control.

This commit is contained in:
David Reid 2020-02-04 21:44:59 +10:00
parent 5c2d5fa011
commit 0f9bb8867f

View File

@ -281,7 +281,6 @@ typedef struct AudioData {
ma_device device; // miniaudio device ma_device device; // miniaudio device
ma_mutex lock; // miniaudio mutex lock ma_mutex lock; // miniaudio mutex lock
bool isReady; // Check if audio device is ready bool isReady; // Check if audio device is ready
float masterVolume; // Master volume (multiplied on output mixing)
} System; } System;
struct { struct {
AudioBuffer *first; // Pointer to first AudioBuffer in the list AudioBuffer *first; // Pointer to first AudioBuffer in the list
@ -351,7 +350,6 @@ void UntrackAudioBuffer(AudioBuffer *buffer);
void InitAudioDevice(void) void InitAudioDevice(void)
{ {
// TODO: Load AUDIO context memory dynamically? // TODO: Load AUDIO context memory dynamically?
AUDIO.System.masterVolume = 1.0f;
// Init audio context // Init audio context
ma_context_config ctxConfig = ma_context_config_init(); ma_context_config ctxConfig = ma_context_config_init();
@ -444,10 +442,7 @@ bool IsAudioDeviceReady(void)
// Set master volume (listener) // Set master volume (listener)
void SetMasterVolume(float volume) void SetMasterVolume(float volume)
{ {
if (volume < 0.0f) volume = 0.0f; ma_device_set_master_volume(&AUDIO.System.device, volume);
else if (volume > 1.0f) volume = 1.0f;
AUDIO.System.masterVolume = volume;
} }
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
@ -1793,7 +1788,7 @@ static void MixAudioFrames(float *framesOut, const float *framesIn, ma_uint32 fr
float *frameOut = framesOut + (iFrame*AUDIO.System.device.playback.channels); float *frameOut = framesOut + (iFrame*AUDIO.System.device.playback.channels);
const float *frameIn = framesIn + (iFrame*AUDIO.System.device.playback.channels); const float *frameIn = framesIn + (iFrame*AUDIO.System.device.playback.channels);
frameOut[iChannel] += (frameIn[iChannel]*AUDIO.System.masterVolume*localVolume); frameOut[iChannel] += (frameIn[iChannel]*localVolume);
} }
} }
} }