Simplified IT pan law and surround calculation

This commit is contained in:
Chris Moeller 2013-11-07 18:18:57 -08:00
parent aa4d1223e3
commit f07374ecfe

View file

@ -3993,14 +3993,15 @@ static void playing_volume_setup(DUMB_IT_SIGRENDERER * sigrenderer, IT_PLAYING *
pan = apply_pan_envelope(playing); pan = apply_pan_envelope(playing);
if ((sigrenderer->n_channels >= 2) && (sigdata->flags & IT_STEREO) && (sigrenderer->n_channels != 3 || !IT_IS_SURROUND_SHIFTED(pan))) { if ((sigrenderer->n_channels >= 2) && (sigdata->flags & IT_STEREO) && (sigrenderer->n_channels != 3 || !IT_IS_SURROUND_SHIFTED(pan))) {
if (!IT_IS_SURROUND_SHIFTED(pan)) {
span = (pan - (32<<8)) * sigdata->pan_separation * (1.0f / ((32<<8) * 128)); span = (pan - (32<<8)) * sigdata->pan_separation * (1.0f / ((32<<8) * 128));
vol = 0.5f; vol = 0.5f * (1.0f - span);
if (!IT_IS_SURROUND_SHIFTED(pan)) vol *= 1.0f - span;
else vol = -vol;
playing->float_volume[0] = vol; playing->float_volume[0] = vol;
vol = -vol; playing->float_volume[1] = 1.0f - vol;
if (!IT_IS_SURROUND_SHIFTED(pan)) vol += 1.0f; } else {
playing->float_volume[1] = vol; playing->float_volume[0] = -0.5f;
playing->float_volume[1] = 0.5f;
}
} else { } else {
playing->float_volume[0] = 1.0f; playing->float_volume[0] = 1.0f;
playing->float_volume[1] = 1.0f; playing->float_volume[1] = 1.0f;