diff options
| author | sl1nk3.s <sl1nk3.s@gmail.com> | 2009-05-18 19:24:46 +0000 |
|---|---|---|
| committer | sl1nk3.s <sl1nk3.s@gmail.com> | 2009-05-18 19:24:46 +0000 |
| commit | fa86f37fc3d096575af78e43a0f63449c1eb5a15 (patch) | |
| tree | c7b7f50791ea9bbccaeed8dbe7bbe4735951107a /Source/Core/AudioCommon | |
| parent | 19face94b1c73a3f51f7808182926ca419b6d6d5 (diff) | |
Added sound volume slider to HLE sound plugin, currently DSound only, unless someone wants to add it to OpenAL :p
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3262 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/AudioCommon')
| -rw-r--r-- | Source/Core/AudioCommon/Src/AudioCommonConfig.cpp | 84 | ||||
| -rw-r--r-- | Source/Core/AudioCommon/Src/AudioCommonConfig.h | 82 | ||||
| -rw-r--r-- | Source/Core/AudioCommon/Src/DSoundStream.cpp | 15 | ||||
| -rw-r--r-- | Source/Core/AudioCommon/Src/DSoundStream.h | 2 | ||||
| -rw-r--r-- | Source/Core/AudioCommon/Src/SoundStream.h | 1 |
5 files changed, 119 insertions, 65 deletions
diff --git a/Source/Core/AudioCommon/Src/AudioCommonConfig.cpp b/Source/Core/AudioCommon/Src/AudioCommonConfig.cpp index c46a1edfbe..777fdbab95 100644 --- a/Source/Core/AudioCommon/Src/AudioCommonConfig.cpp +++ b/Source/Core/AudioCommon/Src/AudioCommonConfig.cpp @@ -1,32 +1,52 @@ -#include "AudioCommon.h" -AudioCommonConfig ac_Config; - -// Load from given file -void AudioCommonConfig::Load(IniFile &file) { - file.Get("Config", "EnableDTKMusic", &m_EnableDTKMusic, true); - file.Get("Config", "EnableThrottle", &m_EnableThrottle, true); -#ifdef _WIN32 - file.Get("Config", "Backend", &sBackend, "DSound"); -#elif defined(__APPLE__) - std::string temp; - file.Get("Config", "Backend", &temp, "AOSound"); - strncpy(sBackend, temp.c_str(), 128); -#else - file.Get("Config", "Backend", &sBackend, "AOSound"); -#endif -} - -// Set the values for the file -void AudioCommonConfig::Set(IniFile &file) { - file.Set("Config", "EnableDTKMusic", m_EnableDTKMusic); - file.Set("Config", "EnableThrottle", m_EnableThrottle); - file.Set("Config", "Backend", sBackend); -} - -// Update according to the values (stream/mixer) -void AudioCommonConfig::Update() { - if (soundStream) { - soundStream->GetMixer()->SetThrottle(m_EnableThrottle); - soundStream->GetMixer()->SetDTKMusic(m_EnableDTKMusic); - } -} +// Copyright (C) 2003-2009 Dolphin Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official SVN repository and contact information can be found at
+// http://code.google.com/p/dolphin-emu/
+
+#include "AudioCommon.h"
+AudioCommonConfig ac_Config;
+
+// Load from given file
+void AudioCommonConfig::Load(IniFile &file) {
+ file.Get("Config", "EnableDTKMusic", &m_EnableDTKMusic, true);
+ file.Get("Config", "EnableThrottle", &m_EnableThrottle, true);
+ file.Get("Config", "Volume", &m_Volume, 0);
+#ifdef _WIN32
+ file.Get("Config", "Backend", &sBackend, "DSound");
+#elif defined(__APPLE__)
+ std::string temp;
+ file.Get("Config", "Backend", &temp, "AOSound");
+ strncpy(sBackend, temp.c_str(), 128);
+#else
+ file.Get("Config", "Backend", &sBackend, "AOSound");
+#endif
+}
+
+// Set the values for the file
+void AudioCommonConfig::Set(IniFile &file) {
+ file.Set("Config", "EnableDTKMusic", m_EnableDTKMusic);
+ file.Set("Config", "EnableThrottle", m_EnableThrottle);
+ file.Set("Config", "Backend", sBackend);
+ file.Set("Config", "Volume", m_Volume);
+}
+
+// Update according to the values (stream/mixer)
+void AudioCommonConfig::Update() {
+ if (soundStream) {
+ soundStream->GetMixer()->SetThrottle(m_EnableThrottle);
+ soundStream->GetMixer()->SetDTKMusic(m_EnableDTKMusic);
+ soundStream->SetVolume(m_Volume);
+ }
+}
diff --git a/Source/Core/AudioCommon/Src/AudioCommonConfig.h b/Source/Core/AudioCommon/Src/AudioCommonConfig.h index 19b0db90ef..53507325f9 100644 --- a/Source/Core/AudioCommon/Src/AudioCommonConfig.h +++ b/Source/Core/AudioCommon/Src/AudioCommonConfig.h @@ -1,32 +1,50 @@ -#ifndef _AUDIO_COMMON_CONFIG_H_ -#define _AUDIO_COMMON_CONFIG_H_ - -#include <string> -#include "IniFile.h" - -// Backend Types -#define BACKEND_DIRECTSOUND "DSound" -#define BACKEND_AOSOUND "AOSound" -#define BACKEND_OPENAL "OpenAL" -#define BACKEND_NULL "NullSound" -struct AudioCommonConfig -{ - bool m_EnableDTKMusic; - bool m_EnableThrottle; -#ifdef __APPLE__ - char sBackend[128]; -#else - std::string sBackend; -#endif - - // Load from given file - void Load(IniFile &file); - - // Set the values for the file - void Set(IniFile &file); - - // Update according to the values (stream/mixer) - void Update(); -}; - -#endif //AUDIO_COMMON_CONFIG +// Copyright (C) 2003-2009 Dolphin Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official SVN repository and contact information can be found at
+// http://code.google.com/p/dolphin-emu/
+
+#ifndef _AUDIO_COMMON_CONFIG_H_
+#define _AUDIO_COMMON_CONFIG_H_
+
+#include <string>
+#include "IniFile.h"
+
+// Backend Types
+#define BACKEND_DIRECTSOUND "DSound"
+#define BACKEND_AOSOUND "AOSound"
+#define BACKEND_OPENAL "OpenAL"
+#define BACKEND_NULL "NullSound"
+struct AudioCommonConfig
+{
+ bool m_EnableDTKMusic;
+ bool m_EnableThrottle;
+ int m_Volume;
+#ifdef __APPLE__
+ char sBackend[128];
+#else
+ std::string sBackend;
+#endif
+
+ // Load from given file
+ void Load(IniFile &file);
+
+ // Set the values for the file
+ void Set(IniFile &file);
+
+ // Update according to the values (stream/mixer)
+ void Update();
+};
+
+#endif //AUDIO_COMMON_CONFIG
diff --git a/Source/Core/AudioCommon/Src/DSoundStream.cpp b/Source/Core/AudioCommon/Src/DSoundStream.cpp index 9ed4d592f4..94a26bd81b 100644 --- a/Source/Core/AudioCommon/Src/DSoundStream.cpp +++ b/Source/Core/AudioCommon/Src/DSoundStream.cpp @@ -16,6 +16,7 @@ // http://code.google.com/p/dolphin-emu/ #include <windows.h> +#include <cmath> #include <dxerr.h> #include "DSoundStream.h" @@ -40,7 +41,7 @@ bool DSound::CreateBuffer() // Fill out DSound buffer description. dsbdesc.dwSize = sizeof(DSBUFFERDESC); - dsbdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_STICKYFOCUS; + dsbdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_STICKYFOCUS | DSBCAPS_CTRLVOLUME; dsbdesc.dwBufferBytes = bufferSize = BUFSIZE; dsbdesc.lpwfxFormat = (WAVEFORMATEX *)&pcmwf; dsbdesc.guid3DAlgorithm = DS3DALG_DEFAULT; @@ -49,6 +50,7 @@ bool DSound::CreateBuffer() if (SUCCEEDED(res)) { dsBuffer->SetCurrentPosition(0); + dsBuffer->SetVolume(m_volume); return true; } else @@ -152,6 +154,17 @@ bool DSound::Start() return true; } +void DSound::SetVolume(int volume) +{ + // This is in "dBA attenuation" from 0 to -10000, logarithmic + m_volume = (int)floor(log10((float)volume) * 5000.0f) - 10000; + + soundCriticalSection.Enter(); + if (ds != NULL) + dsBuffer->SetVolume(m_volume); + soundCriticalSection.Leave(); +} + void DSound::Update() { soundSyncEvent.Set(); diff --git a/Source/Core/AudioCommon/Src/DSoundStream.h b/Source/Core/AudioCommon/Src/DSoundStream.h index b4668a9995..17f91d27d3 100644 --- a/Source/Core/AudioCommon/Src/DSoundStream.h +++ b/Source/Core/AudioCommon/Src/DSoundStream.h @@ -42,6 +42,7 @@ class DSound : public SoundStream int bufferSize; //i bytes int totalRenderedBytes; + int m_volume; // playback position int currentPos; @@ -73,6 +74,7 @@ public: virtual bool Start(); virtual void SoundLoop(); + virtual void SetVolume(int volume); virtual void Stop(); static bool isValid() { return true; } virtual bool usesMixer() const { return true; } diff --git a/Source/Core/AudioCommon/Src/SoundStream.h b/Source/Core/AudioCommon/Src/SoundStream.h index 5c642936bc..b0864e2aff 100644 --- a/Source/Core/AudioCommon/Src/SoundStream.h +++ b/Source/Core/AudioCommon/Src/SoundStream.h @@ -40,6 +40,7 @@ public: static bool isValid() { return false; } virtual CMixer *GetMixer() const { return m_mixer; } virtual bool Start() { return false; } + virtual void SetVolume(int) {} virtual void SoundLoop() {} virtual void Stop() {} virtual void Update() {} |
