mirror of
https://github.com/jorio/Pomme.git
synced 2024-06-03 06:29:31 +00:00
SndDoImmediate: Fix NaN in volumeCmd pan
This commit is contained in:
parent
9031c6b869
commit
91f6390055
|
@ -609,9 +609,14 @@ OSErr SndDoImmediate(SndChannelPtr chan, const SndCommand* cmd)
|
||||||
{
|
{
|
||||||
uint16_t lvol = (cmd->param2 ) & 0xFFFF;
|
uint16_t lvol = (cmd->param2 ) & 0xFFFF;
|
||||||
uint16_t rvol = (cmd->param2 >> 16) & 0xFFFF;
|
uint16_t rvol = (cmd->param2 >> 16) & 0xFFFF;
|
||||||
|
uint32_t volsum = lvol + rvol;
|
||||||
|
|
||||||
double pan = (double)rvol / (rvol + lvol);
|
double pan = 0;
|
||||||
pan = (pan - 0.5) * 2.0; // Transpose pan from [0...1] to [-1...+1]
|
if (volsum != 0) // don't divide by zero
|
||||||
|
{
|
||||||
|
pan = (double)rvol / volsum;
|
||||||
|
pan = 2*pan - 1; // Transpose pan from [0...1] to [-1...+1]
|
||||||
|
}
|
||||||
|
|
||||||
impl.pan = pan;
|
impl.pan = pan;
|
||||||
impl.gain = std::max(lvol, rvol) / 256.0;
|
impl.gain = std::max(lvol, rvol) / 256.0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user