diff --git a/Source/Core/AudioCommon/AudioCommon.vcproj b/Source/Core/AudioCommon/AudioCommon.vcproj index ee39204101..05d33b9aee 100644 --- a/Source/Core/AudioCommon/AudioCommon.vcproj +++ b/Source/Core/AudioCommon/AudioCommon.vcproj @@ -453,6 +453,14 @@ RelativePath=".\Src\AudioCommon.h" > + + + + diff --git a/Source/Core/AudioCommon/Src/AudioCommon.cpp b/Source/Core/AudioCommon/Src/AudioCommon.cpp index 713d617e0f..8e25561a5d 100644 --- a/Source/Core/AudioCommon/Src/AudioCommon.cpp +++ b/Source/Core/AudioCommon/Src/AudioCommon.cpp @@ -24,19 +24,28 @@ namespace AudioCommon { - SoundStream *InitSoundStream(std::string backend, CMixer *mixer) + SoundStream *InitSoundStream(CMixer *mixer) { if (!mixer) mixer = new CMixer(); - + std::string backend = ac_Config.sBackend; if (backend == BACKEND_DIRECTSOUND && DSound::isValid()) soundStream = new DSound(mixer, g_dspInitialize.hWnd); if (backend == BACKEND_AOSOUND && AOSound::isValid()) soundStream = new AOSound(mixer); if (backend == BACKEND_OPENAL && OpenALStream::isValid()) soundStream = new OpenALStream(mixer); if (backend == BACKEND_NULL && NullSound::isValid()) soundStream = new NullSound(mixer); if (soundStream != NULL) { - if (soundStream->Start()) + ac_Config.Update(); + if (soundStream->Start()) { + // Start the sound recording + /* + if (ac_Config.record) { + soundStream->StartLogAudio(FULL_DUMP_DIR g_Config.recordFile); + } + */ + return soundStream; + } PanicAlert("Could not initialize backend %s, falling back to NULL", backend.c_str()); } @@ -45,7 +54,7 @@ namespace AudioCommon delete soundStream; soundStream = new NullSound(mixer); soundStream->Start(); - + return NULL; } diff --git a/Source/Core/AudioCommon/Src/AudioCommon.h b/Source/Core/AudioCommon/Src/AudioCommon.h index 10451a8743..ba0a1a7e87 100644 --- a/Source/Core/AudioCommon/Src/AudioCommon.h +++ b/Source/Core/AudioCommon/Src/AudioCommon.h @@ -19,25 +19,22 @@ #define _AUDIO_COMMON_H_ #include "Common.h" +#include "AudioCommonConfig.h" #include "../../../PluginSpecs/pluginspecs_dsp.h" #include "SoundStream.h" + class CMixer; extern DSPInitialize g_dspInitialize; extern SoundStream *soundStream; +extern AudioCommonConfig ac_Config; namespace AudioCommon { - SoundStream *InitSoundStream(std::string backend, CMixer *mixer = NULL); + SoundStream *InitSoundStream(CMixer *mixer = NULL); void ShutdownSoundStream(); std::vector GetSoundBackends(); - - // Backend Types - #define BACKEND_DIRECTSOUND "DSound" - #define BACKEND_AOSOUND "AOSound" - #define BACKEND_OPENAL "OpenAL" - #define BACKEND_NULL "NullSound" } #endif // _AUDIO_COMMON_H_ diff --git a/Source/Core/AudioCommon/Src/AudioCommonConfig.cpp b/Source/Core/AudioCommon/Src/AudioCommonConfig.cpp new file mode 100644 index 0000000000..476918771e --- /dev/null +++ b/Source/Core/AudioCommon/Src/AudioCommonConfig.cpp @@ -0,0 +1,29 @@ +#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"); +#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.c_str()); +} + +// Update according to the values (stream/mixer) +void AudioCommonConfig::Update() { + if (soundStream) { + soundStream->GetMixer()->SetThrottle(m_EnableThrottle); + soundStream->GetMixer()->SetDTKMusic(m_EnableDTKMusic); + } +} diff --git a/Source/Core/AudioCommon/Src/AudioCommonConfig.h b/Source/Core/AudioCommon/Src/AudioCommonConfig.h new file mode 100644 index 0000000000..aeceed2486 --- /dev/null +++ b/Source/Core/AudioCommon/Src/AudioCommonConfig.h @@ -0,0 +1,29 @@ +#ifndef _AUDIO_COMMON_CONFIG_H_ +#define _AUDIO_COMMON_CONFIG_H_ + +#include +#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; + std::string sBackend; + + // 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/Mixer.cpp b/Source/Core/AudioCommon/Src/Mixer.cpp index 3247e610a0..69bc4699fb 100644 --- a/Source/Core/AudioCommon/Src/Mixer.cpp +++ b/Source/Core/AudioCommon/Src/Mixer.cpp @@ -39,6 +39,11 @@ void CMixer::Mix(short *samples, int numSamples) return; } + // first get the DTK Music + if (m_EnableDTKMusic) { + g_dspInitialize.pGetAudioStreaming(samples, numSamples); + } + Premix(samples, numSamples); push_sync.Enter(); diff --git a/Source/Core/AudioCommon/Src/Mixer.h b/Source/Core/AudioCommon/Src/Mixer.h index 3d9c2cc31a..e2394da893 100644 --- a/Source/Core/AudioCommon/Src/Mixer.h +++ b/Source/Core/AudioCommon/Src/Mixer.h @@ -41,6 +41,7 @@ public: int GetSampleRate() {return m_sampleRate;} void SetThrottle(bool use) { m_throttle = use;} + void SetDTKMusic(bool use) { m_EnableDTKMusic = use;} // TODO: do we need this bool IsHLEReady() { return m_HLEready;} @@ -56,6 +57,7 @@ protected: bool m_HLEready; int m_queueSize; + bool m_EnableDTKMusic; bool m_throttle; private: Common::CriticalSection push_sync; diff --git a/Source/Core/AudioCommon/Src/SConscript b/Source/Core/AudioCommon/Src/SConscript index cfd1cbe6b7..2f64311a41 100644 --- a/Source/Core/AudioCommon/Src/SConscript +++ b/Source/Core/AudioCommon/Src/SConscript @@ -3,9 +3,10 @@ Import('env') files = [ - 'AOSoundStream.cpp', - 'OpenALStream.cpp', - 'WaveFile.cpp', + 'AOSoundStream.cpp', + 'AudioCommonConfig.cpp', + 'OpenALStream.cpp', + 'WaveFile.cpp', 'Mixer.cpp', 'AudioCommon.cpp', ] diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/Config.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/Config.cpp index 3d96992efc..914880cd56 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/Config.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/Config.cpp @@ -18,6 +18,7 @@ #include "Common.h" #include "IniFile.h" #include "Config.h" +#include "AudioCommon.h" CConfig g_Config; @@ -34,13 +35,7 @@ void CConfig::Load() IniFile file; file.Load(FULL_CONFIG_DIR "DSP.ini"); file.Get("Config", "EnableHLEAudio", &m_EnableHLEAudio, true); // Sound Settings - file.Get("Config", "EnableDTKMusic", &m_EnableDTKMusic, true); - file.Get("Config", "EnableThrottle", &m_EnableThrottle, true); -#ifdef _WIN32 - file.Get("Config", "Backend", &sBackend, "DSound"); -#else - file.Get("Config", "Backend", &sBackend, "AOSound"); -#endif + ac_Config.Load(file); } void CConfig::Save() @@ -48,9 +43,7 @@ void CConfig::Save() IniFile file; file.Load(FULL_CONFIG_DIR "DSP.ini"); file.Set("Config", "EnableHLEAudio", m_EnableHLEAudio); // Sound Settings - file.Set("Config", "EnableDTKMusic", m_EnableDTKMusic); - file.Set("Config", "EnableThrottle", m_EnableThrottle); - file.Set("Config", "Backend", sBackend.c_str()); - + ac_Config.Set(file); + file.Save(FULL_CONFIG_DIR "DSP.ini"); } diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/Config.h b/Source/Plugins/Plugin_DSP_HLE/Src/Config.h index a255b52c7d..eea67b29ea 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/Config.h +++ b/Source/Plugins/Plugin_DSP_HLE/Src/Config.h @@ -23,10 +23,7 @@ struct CConfig { bool m_EnableHLEAudio; - bool m_EnableDTKMusic; - bool m_EnableThrottle; - std::string sBackend; - + CConfig(); void Load(); diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.cpp index 8384a867d0..104679c4bb 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.cpp @@ -46,8 +46,8 @@ ConfigDialog::ConfigDialog(wxWindow *parent, wxWindowID id, const wxString &titl // Update values m_buttonEnableHLEAudio->SetValue(g_Config.m_EnableHLEAudio ? true : false); - m_buttonEnableDTKMusic->SetValue(g_Config.m_EnableDTKMusic ? true : false); - m_buttonEnableThrottle->SetValue(g_Config.m_EnableThrottle ? true : false); + m_buttonEnableDTKMusic->SetValue(ac_Config.m_EnableDTKMusic ? true : false); + m_buttonEnableThrottle->SetValue(ac_Config.m_EnableThrottle ? true : false); // Add tooltips m_buttonEnableHLEAudio->SetToolTip(wxT("This is the most common sound type")); @@ -81,7 +81,7 @@ void ConfigDialog::AddBackend(const char* backend) { m_BackendSelection->Append(wxString::FromAscii(backend)); // Update value - m_BackendSelection->SetValue(wxString::FromAscii(g_Config.sBackend.c_str())); + m_BackendSelection->SetValue(wxString::FromAscii(ac_Config.sBackend.c_str())); } ConfigDialog::~ConfigDialog() @@ -91,9 +91,9 @@ ConfigDialog::~ConfigDialog() void ConfigDialog::SettingsChanged(wxCommandEvent& event) { g_Config.m_EnableHLEAudio = m_buttonEnableHLEAudio->GetValue(); - g_Config.m_EnableDTKMusic = m_buttonEnableDTKMusic->GetValue(); - g_Config.m_EnableThrottle = m_buttonEnableThrottle->GetValue(); - g_Config.sBackend = m_BackendSelection->GetValue().mb_str(); + ac_Config.m_EnableDTKMusic = m_buttonEnableDTKMusic->GetValue(); + ac_Config.m_EnableThrottle = m_buttonEnableThrottle->GetValue(); + ac_Config.sBackend = m_BackendSelection->GetValue().mb_str(); g_Config.Save(); if (event.GetId() == wxID_OK) diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.h b/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.h index d0fe6e1466..9aa0da6021 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.h +++ b/Source/Plugins/Plugin_DSP_HLE/Src/ConfigDlg.h @@ -22,6 +22,7 @@ #include #include #include +#include "AudioCommon.h" class ConfigDialog : public wxDialog { diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/HLEMixer.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/HLEMixer.cpp index 5a14b9809f..e3efae0465 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/HLEMixer.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/HLEMixer.cpp @@ -15,9 +15,9 @@ void HLEMixer::MixUCode(short *samples, int numSamples) { void HLEMixer::Premix(short *samples, int numSamples) { // first get the DTK Music - if (g_Config.m_EnableDTKMusic) { - g_dspInitialize.pGetAudioStreaming(samples, numSamples); - } + // if (g_Config.m_EnableDTKMusic) { + // g_dspInitialize.pGetAudioStreaming(samples, numSamples); + // } MixUCode(samples, numSamples); } diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/main.cpp b/Source/Plugins/Plugin_DSP_HLE/Src/main.cpp index bccece2ec3..6c69ee06a5 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/main.cpp +++ b/Source/Plugins/Plugin_DSP_HLE/Src/main.cpp @@ -194,16 +194,8 @@ void Initialize(void *init) CDSPHandler::CreateInstance(); - soundStream = AudioCommon::InitSoundStream(g_Config.sBackend, - new HLEMixer()); - soundStream->GetMixer()->SetThrottle(g_Config.m_EnableThrottle); + soundStream = AudioCommon::InitSoundStream(new HLEMixer()); - // Start the sound recording - /* - if (g_Config.record) { - soundStream->StartLogAudio(FULL_DUMP_DIR g_Config.recordFile); - } - */ } void DSP_StopSoundStream() diff --git a/Source/Plugins/Plugin_DSP_LLE-testing/Src/Config.cpp b/Source/Plugins/Plugin_DSP_LLE-testing/Src/Config.cpp index f54f63a721..cce00ef958 100644 --- a/Source/Plugins/Plugin_DSP_LLE-testing/Src/Config.cpp +++ b/Source/Plugins/Plugin_DSP_LLE-testing/Src/Config.cpp @@ -18,6 +18,8 @@ #include "Common.h" #include "IniFile.h" #include "Config.h" +#include "AudioCommon.h" + #define LLE_CONFIG_FILE "DSPLLE.ini" CConfig g_Config; @@ -34,20 +36,14 @@ void CConfig::Load() IniFile file; file.Load(FULL_CONFIG_DIR LLE_CONFIG_FILE); - file.Get("Config", "EnableThrottle", &m_EnableThrottle, true); -#ifdef _WIN32 - file.Get("Config", "Backend", &sBackend, "DSound"); -#else - file.Get("Config", "Backend", &sBackend, "AOSound"); -#endif + ac_Config.Load(file); } void CConfig::Save() { IniFile file; file.Load(FULL_CONFIG_DIR LLE_CONFIG_FILE); - file.Set("Config", "EnableThrottle", m_EnableThrottle); - file.Set("Config", "Backend", sBackend.c_str()); - + ac_Config.Set(file); + file.Save(FULL_CONFIG_DIR LLE_CONFIG_FILE); } diff --git a/Source/Plugins/Plugin_DSP_LLE-testing/Src/Config.h b/Source/Plugins/Plugin_DSP_LLE-testing/Src/Config.h index a255b52c7d..07589b94c9 100644 --- a/Source/Plugins/Plugin_DSP_LLE-testing/Src/Config.h +++ b/Source/Plugins/Plugin_DSP_LLE-testing/Src/Config.h @@ -21,12 +21,7 @@ #include struct CConfig -{ - bool m_EnableHLEAudio; - bool m_EnableDTKMusic; - bool m_EnableThrottle; - std::string sBackend; - +{ CConfig(); void Load(); diff --git a/Source/Plugins/Plugin_DSP_LLE-testing/Src/DSPConfigDlgLLE.cpp b/Source/Plugins/Plugin_DSP_LLE-testing/Src/DSPConfigDlgLLE.cpp index 8b994def7d..b770377a08 100644 --- a/Source/Plugins/Plugin_DSP_LLE-testing/Src/DSPConfigDlgLLE.cpp +++ b/Source/Plugins/Plugin_DSP_LLE-testing/Src/DSPConfigDlgLLE.cpp @@ -21,6 +21,7 @@ BEGIN_EVENT_TABLE(DSPConfigDialogLLE, wxDialog) EVT_BUTTON(wxID_OK, DSPConfigDialogLLE::SettingsChanged) +EVT_CHECKBOX(ID_ENABLE_DTK_MUSIC, DSPConfigDialogLLE::SettingsChanged) EVT_CHECKBOX(ID_ENABLE_THROTTLE, DSPConfigDialogLLE::SettingsChanged) END_EVENT_TABLE() @@ -36,14 +37,17 @@ DSPConfigDialogLLE::DSPConfigDialogLLE(wxWindow *parent, wxWindowID id, const wx m_OK = new wxButton(this, wxID_OK, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); // Create items + m_buttonEnableDTKMusic = new wxCheckBox(this, ID_ENABLE_DTK_MUSIC, wxT("Enable DTK Music"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); m_buttonEnableThrottle = new wxCheckBox(this, ID_ENABLE_THROTTLE, wxT("Enable Other Audio (Throttle)"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxStaticText *BackendText = new wxStaticText(this, wxID_ANY, wxT("Audio Backend"), wxDefaultPosition, wxDefaultSize, 0); m_BackendSelection = new wxComboBox(this, ID_BACKEND, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxArrayBackends, wxCB_READONLY, wxDefaultValidator); // Update values - m_buttonEnableThrottle->SetValue(g_Config.m_EnableThrottle ? true : false); + m_buttonEnableDTKMusic->SetValue(ac_Config.m_EnableDTKMusic ? true : false); + m_buttonEnableThrottle->SetValue(ac_Config.m_EnableThrottle ? true : false); // Add tooltips + m_buttonEnableDTKMusic->SetToolTip(wxT("This is sometimes used to play music tracks from the disc")); m_buttonEnableThrottle->SetToolTip(wxT("This is sometimes used together with pre-rendered movies.\n" "Disabling this also disables the speed throttle which this causes,\n" "meaning that there will be no upper limit on your FPS.")); @@ -52,6 +56,7 @@ DSPConfigDialogLLE::DSPConfigDialogLLE(wxWindow *parent, wxWindowID id, const wx // Create sizer and add items to dialog wxBoxSizer *sMain = new wxBoxSizer(wxVERTICAL); wxStaticBoxSizer *sbSettings = new wxStaticBoxSizer(wxVERTICAL, this, wxT("Sound Settings")); + sbSettings->Add(m_buttonEnableDTKMusic, 0, wxALL, 5); sbSettings->Add(m_buttonEnableThrottle, 0, wxALL, 5); wxBoxSizer *sBackend = new wxBoxSizer(wxHORIZONTAL); sBackend->Add(BackendText, 0, wxALIGN_CENTRE_VERTICAL|wxALL, 5); @@ -71,7 +76,7 @@ void DSPConfigDialogLLE::AddBackend(const char* backend) { m_BackendSelection->Append(wxString::FromAscii(backend)); // Update value - m_BackendSelection->SetValue(wxString::FromAscii(g_Config.sBackend.c_str())); + m_BackendSelection->SetValue(wxString::FromAscii(ac_Config.sBackend.c_str())); } DSPConfigDialogLLE::~DSPConfigDialogLLE() @@ -80,9 +85,12 @@ DSPConfigDialogLLE::~DSPConfigDialogLLE() void DSPConfigDialogLLE::SettingsChanged(wxCommandEvent& event) { - g_Config.m_EnableThrottle = m_buttonEnableThrottle->GetValue(); - g_Config.sBackend = m_BackendSelection->GetValue().mb_str(); + ac_Config.m_EnableDTKMusic = m_buttonEnableDTKMusic->GetValue(); + ac_Config.m_EnableThrottle = m_buttonEnableThrottle->GetValue(); + ac_Config.sBackend = m_BackendSelection->GetValue().mb_str(); + ac_Config.Update(); g_Config.Save(); + if (event.GetId() == wxID_OK) EndModal(wxID_OK); diff --git a/Source/Plugins/Plugin_DSP_LLE-testing/Src/DSPConfigDlgLLE.h b/Source/Plugins/Plugin_DSP_LLE-testing/Src/DSPConfigDlgLLE.h index feb63022f1..2b43b1628f 100644 --- a/Source/Plugins/Plugin_DSP_LLE-testing/Src/DSPConfigDlgLLE.h +++ b/Source/Plugins/Plugin_DSP_LLE-testing/Src/DSPConfigDlgLLE.h @@ -22,6 +22,7 @@ #include #include #include +#include "AudioCommon.h" class DSPConfigDialogLLE : public wxDialog { @@ -39,6 +40,7 @@ private: DECLARE_EVENT_TABLE(); wxButton *m_OK; + wxCheckBox *m_buttonEnableDTKMusic; wxCheckBox *m_buttonEnableThrottle; wxArrayString wxArrayBackends; wxComboBox *m_BackendSelection; @@ -46,6 +48,7 @@ private: enum { wxID_OK, + ID_ENABLE_DTK_MUSIC, ID_ENABLE_THROTTLE, ID_BACKEND }; diff --git a/Source/Plugins/Plugin_DSP_LLE-testing/Src/main.cpp b/Source/Plugins/Plugin_DSP_LLE-testing/Src/main.cpp index d8f55c1ee8..dbda183f6f 100644 --- a/Source/Plugins/Plugin_DSP_LLE-testing/Src/main.cpp +++ b/Source/Plugins/Plugin_DSP_LLE-testing/Src/main.cpp @@ -201,6 +201,7 @@ void Initialize(void *init) bCanWork = true; g_dspInitialize = *(DSPInitialize*)init; + g_Config.Load(); gdsp_init(); g_dsp.step_counter = 0; g_dsp.cpu_ram = g_dspInitialize.pGetMemoryPointer(0); @@ -224,9 +225,7 @@ void Initialize(void *init) g_hDSPThread = new Common::Thread(dsp_thread, NULL); - soundStream = AudioCommon::InitSoundStream(g_Config.sBackend); - - soundStream->GetMixer()->SetThrottle(g_Config.m_EnableThrottle); + soundStream = AudioCommon::InitSoundStream(); } void DSP_StopSoundStream()