summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/sound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/sound.cpp')
-rw-r--r--src/emu/sound.cpp34
1 files changed, 13 insertions, 21 deletions
diff --git a/src/emu/sound.cpp b/src/emu/sound.cpp
index a4cb5041d8f..2c2087b7583 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)
+ if (lscale != m_compressor_scale && m_compressor_enabled)
printf("scale=%.5f\n", m_compressor_scale);
#endif
@@ -1541,35 +1541,27 @@ 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)
- lsamp = lprev;
+ {
+ if (lscale != m_compressor_scale && sample != m_finalmix_leftover)
+ lscale = adjust_toward_compressor_scale(lscale, lprev, lsamp);
+ lprev = lsamp *= lscale;
+ }
// clamp the left side
- if (lsamp > 1.0)
- lsamp = 1.0;
- else if (lsamp < -1.0)
- lsamp = -1.0;
- finalmix[finalmix_offset++] = s16(lsamp * 32767.0);
+ finalmix[finalmix_offset++] = s16(std::clamp<stream_buffer::sample_t>(lsamp, -1.0, 1.0) * 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)
- rsamp = rprev;
+ {
+ if (rscale != m_compressor_scale && sample != m_finalmix_leftover)
+ rscale = adjust_toward_compressor_scale(rscale, rprev, rsamp);
+ rprev = rsamp *= rscale;
+ }
// clamp the right side
- if (rsamp > 1.0)
- rsamp = 1.0;
- else if (rsamp < -1.0)
- rsamp = -1.0;
- finalmix[finalmix_offset++] = s16(rsamp * 32767.0);
+ finalmix[finalmix_offset++] = s16(std::clamp<stream_buffer::sample_t>(rsamp, -1.0, 1.0) * 32767.0);
}
m_finalmix_leftover = sample - m_samples_this_update * 1000;