diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2022-06-04 16:33:52 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2022-06-04 16:33:52 -0400 |
commit | d285f15c31bc963a61531f667020a69baf383f74 (patch) | |
tree | 5c0af507dd8c86ba01a70da9c1f3737c9e702f89 /src/emu | |
parent | 324e79adc92ea6bb3e0a4f5c5ded99188d13ece2 (diff) |
Revert "stupid_git"
This reverts commit c2b6d57e5c966c1d5b986507e599d9919c0e2de7.
Diffstat (limited to 'src/emu')
-rw-r--r-- | src/emu/sound.cpp | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/emu/sound.cpp b/src/emu/sound.cpp index 90fc32ba4b3..88cdade710d 100644 --- a/src/emu/sound.cpp +++ b/src/emu/sound.cpp @@ -1523,7 +1523,7 @@ void sound_manager::update(int param) } #if (SOUND_DEBUG) - if (lscale != m_compressor_scale && m_compressor_enabled) + if (lscale != m_compressor_scale) printf("scale=%.5f\n", m_compressor_scale); #endif @@ -1541,27 +1541,35 @@ void sound_manager::update(int param) // ensure that changing the compression won't reverse direction to reduce "pops" stream_buffer::sample_t lsamp = m_leftmix[sampindex]; + if (lscale != m_compressor_scale && sample != m_finalmix_leftover) + lscale = adjust_toward_compressor_scale(lscale, lprev, lsamp); + + lprev = lsamp * lscale; if (m_compressor_enabled) - { - if (lscale != m_compressor_scale && sample != m_finalmix_leftover) - lscale = adjust_toward_compressor_scale(lscale, lprev, lsamp); - lprev = lsamp *= lscale; - } + lsamp = lprev; // clamp the left side - finalmix[finalmix_offset++] = s16(std::clamp<stream_buffer::sample_t>(lsamp, -1.0, 1.0) * 32767.0); + if (lsamp > 1.0) + lsamp = 1.0; + else if (lsamp < -1.0) + lsamp = -1.0; + finalmix[finalmix_offset++] = s16(lsamp * 32767.0); // ensure that changing the compression won't reverse direction to reduce "pops" stream_buffer::sample_t rsamp = m_rightmix[sampindex]; + if (rscale != m_compressor_scale && sample != m_finalmix_leftover) + rscale = adjust_toward_compressor_scale(rscale, rprev, rsamp); + + rprev = rsamp * rscale; if (m_compressor_enabled) - { - if (rscale != m_compressor_scale && sample != m_finalmix_leftover) - rscale = adjust_toward_compressor_scale(rscale, rprev, rsamp); - rprev = rsamp *= rscale; - } + rsamp = rprev; // clamp the right side - finalmix[finalmix_offset++] = s16(std::clamp<stream_buffer::sample_t>(rsamp, -1.0, 1.0) * 32767.0); + if (rsamp > 1.0) + rsamp = 1.0; + else if (rsamp < -1.0) + rsamp = -1.0; + finalmix[finalmix_offset++] = s16(rsamp * 32767.0); } m_finalmix_leftover = sample - m_samples_this_update * 1000; |