Add volume slider & mute audio settings

This commit is contained in:
wheremyfoodat 2024-11-28 19:01:55 +02:00
parent b251f84ab1
commit 3b6190b69a
7 changed files with 70 additions and 12 deletions

View file

@ -3,6 +3,7 @@
#include <string>
#include <vector>
#include "config.hpp"
#include "helpers.hpp"
#include "miniaudio.h"
#include "ring_buffer.hpp"
@ -12,12 +13,14 @@ class MiniAudioDevice {
static constexpr ma_uint32 sampleRate = 32768; // 3DS sample rate
static constexpr ma_uint32 channelCount = 2; // Audio output is stereo
ma_device device;
ma_context context;
ma_device_config deviceConfig;
ma_device device;
ma_resampler resampler;
Samples* samples = nullptr;
AudioDeviceConfig& audioSettings;
bool initialized = false;
bool running = false;
@ -26,7 +29,8 @@ class MiniAudioDevice {
std::vector<std::string> audioDevices;
public:
MiniAudioDevice();
MiniAudioDevice(AudioDeviceConfig& audioSettings);
// If safe is on, we create a null audio device
void init(Samples& samples, bool safe = false);
void close();

View file

@ -4,6 +4,19 @@
#include "audio/dsp_core.hpp"
#include "renderer.hpp"
struct AudioDeviceConfig {
float volumeRaw = 1.0f;
bool muteAudio = false;
float getVolume() const {
if (muteAudio) {
return 0.0f;
}
return volumeRaw;
}
};
// Remember to initialize every field here to its default value otherwise bad things will happen
struct EmulatorConfig {
// Only enable the shader JIT by default on platforms where it's completely tested
@ -71,6 +84,7 @@ struct EmulatorConfig {
};
WindowSettings windowSettings;
AudioDeviceConfig audioDeviceConfig;
EmulatorConfig(const std::filesystem::path& path);
void load();