summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
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
commitd285f15c31bc963a61531f667020a69baf383f74 (patch)
tree5c0af507dd8c86ba01a70da9c1f3737c9e702f89 /src/emu
parent324e79adc92ea6bb3e0a4f5c5ded99188d13ece2 (diff)
Revert "stupid_git"
This reverts commit c2b6d57e5c966c1d5b986507e599d9919c0e2de7.
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/sound.cpp34
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;