diff --git a/stepmania/src/arch/Sound/ALSA9Helpers.cpp b/stepmania/src/arch/Sound/ALSA9Helpers.cpp index 086c59cfed..624798ea49 100644 --- a/stepmania/src/arch/Sound/ALSA9Helpers.cpp +++ b/stepmania/src/arch/Sound/ALSA9Helpers.cpp @@ -15,6 +15,9 @@ * samplerate to use instead. */ unsigned Alsa9Buf::FindSampleRate( unsigned rate ) { + if( rate == 0 ) + rate = 44100; + snd_pcm_hw_params_t *testhw; dsnd_pcm_hw_params_alloca( &testhw ); dsnd_pcm_hw_params_any( pcm, testhw ); diff --git a/stepmania/src/arch/Sound/RageSoundDriver_AU.cpp b/stepmania/src/arch/Sound/RageSoundDriver_AU.cpp index 03b4a2fea5..5df75dfddb 100644 --- a/stepmania/src/arch/Sound/RageSoundDriver_AU.cpp +++ b/stepmania/src/arch/Sound/RageSoundDriver_AU.cpp @@ -88,6 +88,8 @@ RString RageSound_AU::Init() AudioStreamBasicDescription streamFormat; streamFormat.mSampleRate = PREFSMAN->m_iSoundPreferredSampleRate; + if( streamFormat.mSampleRate == 0 ) + streamFormat.mSampleRate = 44100; streamFormat.mFormatID = kAudioFormatLinearPCM; streamFormat.mFormatFlags = kFormatFlags; streamFormat.mBytesPerPacket = kBytesPerPacket; diff --git a/stepmania/src/arch/Sound/RageSoundDriver_CA.cpp b/stepmania/src/arch/Sound/RageSoundDriver_CA.cpp index 26ddd6326d..0f6ced741f 100644 --- a/stepmania/src/arch/Sound/RageSoundDriver_CA.cpp +++ b/stepmania/src/arch/Sound/RageSoundDriver_CA.cpp @@ -160,6 +160,8 @@ RString RageSound_CA::Init() UInt32 iFirstChannel = min( channels[0], channels[1] ); m_iSampleRate = PREFSMAN->m_iSoundPreferredSampleRate; + if( m_iSampleRate == 0 ) + m_iSampleRate = 44100; Float64 nominalSampleRate = m_iSampleRate; Float64 actualSampleRate; diff --git a/stepmania/src/arch/Sound/RageSoundDriver_DSound_Software.cpp b/stepmania/src/arch/Sound/RageSoundDriver_DSound_Software.cpp index 7031566255..e876be8c83 100644 --- a/stepmania/src/arch/Sound/RageSoundDriver_DSound_Software.cpp +++ b/stepmania/src/arch/Sound/RageSoundDriver_DSound_Software.cpp @@ -95,6 +95,8 @@ RString RageSound_DSound_Software::Init() /* Create a DirectSound stream, but don't force it into hardware. */ m_pPCM = new DSoundBuf; m_iSampleRate = PREFSMAN->m_iSoundPreferredSampleRate; + if( m_iSampleRate == 0 ) + m_iSampleRate = 44100; sError = m_pPCM->Init( ds, DSoundBuf::HW_DONT_CARE, channels, m_iSampleRate, 16, g_iMaxWriteahead ); if( sError != "" ) return sError; diff --git a/stepmania/src/arch/Sound/RageSoundDriver_Null.cpp b/stepmania/src/arch/Sound/RageSoundDriver_Null.cpp index b70f5a8085..785657b502 100644 --- a/stepmania/src/arch/Sound/RageSoundDriver_Null.cpp +++ b/stepmania/src/arch/Sound/RageSoundDriver_Null.cpp @@ -29,6 +29,8 @@ int64_t RageSound_Null::GetPosition( const RageSoundBase *snd ) const RageSound_Null::RageSound_Null() { m_iSampleRate = PREFSMAN->m_iSoundPreferredSampleRate; + if( m_iSampleRate == 0 ) + m_iSampleRate = 44100; m_iLastCursorPos = GetPosition( NULL ); StartDecodeThread(); } diff --git a/stepmania/src/arch/Sound/RageSoundDriver_WaveOut.cpp b/stepmania/src/arch/Sound/RageSoundDriver_WaveOut.cpp index 745826a42e..96ebde7a68 100644 --- a/stepmania/src/arch/Sound/RageSoundDriver_WaveOut.cpp +++ b/stepmania/src/arch/Sound/RageSoundDriver_WaveOut.cpp @@ -111,11 +111,14 @@ RageSound_WaveOut::RageSound_WaveOut() RString RageSound_WaveOut::Init() { + m_iSampleRate = PREFSMAN->m_iSoundPreferredSampleRate; + if( m_iSampleRate == 0 ) + m_iSampleRate = 44100; + WAVEFORMATEX fmt; fmt.wFormatTag = WAVE_FORMAT_PCM; fmt.nChannels = channels; fmt.cbSize = 0; - m_iSampleRate = PREFSMAN->m_iSoundPreferredSampleRate; fmt.nSamplesPerSec = m_iSampleRate; fmt.wBitsPerSample = 16; fmt.nBlockAlign = fmt.nChannels * fmt.wBitsPerSample / 8; diff --git a/stepmania/src/arch/Sound/RageSoundDriver_Win32KernelStreaming.cpp b/stepmania/src/arch/Sound/RageSoundDriver_Win32KernelStreaming.cpp index 738fabfa6f..03f3833017 100644 --- a/stepmania/src/arch/Sound/RageSoundDriver_Win32KernelStreaming.cpp +++ b/stepmania/src/arch/Sound/RageSoundDriver_Win32KernelStreaming.cpp @@ -710,7 +710,8 @@ WinWdmPin *WinWdmFilter::InstantiateRenderPin( } } - aSampleRates.push_back( iPreferredSampleRate ); + if( iPreferredSampleRate != 0 ) + aSampleRates.push_back( iPreferredSampleRate ); aSampleRates.push_back( 48000 ); aSampleRates.push_back( 44100 ); @@ -720,7 +721,8 @@ WinWdmPin *WinWdmFilter::InstantiateRenderPin( MoveToBeginning( aSampleRates, 44100 ); MoveToBeginning( aSampleRates, 48000 ); - MoveToBeginning( aSampleRates, iPreferredSampleRate ); + if( iPreferredSampleRate != 0 ) + MoveToBeginning( aSampleRates, iPreferredSampleRate ); } /* Try WAVE_FORMAT_EXTENSIBLE, then WAVE_FORMAT_PCM. */