Browse Source

Fix fluidsynth volume and balance controls

tags/1.9.4
falkTX 12 years ago
parent
commit
0fb2db626d
1 changed files with 12 additions and 8 deletions
  1. +12
    -8
      source/backend/plugin/FluidSynthPlugin.cpp

+ 12
- 8
source/backend/plugin/FluidSynthPlugin.cpp View File

@@ -731,8 +731,12 @@ public:

fHints |= PLUGIN_IS_SYNTH;
fHints |= PLUGIN_CAN_VOLUME;
fHints |= PLUGIN_CAN_BALANCE;
fHints |= PLUGIN_CAN_FORCE_STEREO;

if (! kUses16Outs)
{
fHints |= PLUGIN_CAN_BALANCE;
fHints |= PLUGIN_CAN_FORCE_STEREO;
}

// plugin options
kData->availOptions &= ~(PLUGIN_OPTION_FIXED_BUFFER | PLUGIN_OPTION_SELF_AUTOMATION | PLUGIN_OPTION_SEND_ALL_SOUND_OFF | PLUGIN_OPTION_SEND_NOTE_AFTERTOUCH | PLUGIN_OPTION_SEND_PITCHBEND);
@@ -1253,7 +1257,7 @@ public:
if (doBalance)
{
if (i % 2 == 0)
carla_copyFloat(oldBufLeft, outBuffer[i], frames);
carla_copyFloat(oldBufLeft, outBuffer[i]+timeOffset, frames);

float balRangeL = (kData->postProc.balanceLeft + 1.0f)/2.0f;
float balRangeR = (kData->postProc.balanceRight + 1.0f)/2.0f;
@@ -1263,14 +1267,14 @@ public:
if (i % 2 == 0)
{
// left
outBuffer[i][k] = oldBufLeft[k] * (1.0f - balRangeL);
outBuffer[i][k] += outBuffer[i+1][k] * (1.0f - balRangeR);
outBuffer[i][k+timeOffset] = oldBufLeft[k] * (1.0f - balRangeL);
outBuffer[i][k+timeOffset] += outBuffer[i+1][k+timeOffset] * (1.0f - balRangeR);
}
else
{
// right
outBuffer[i][k] = outBuffer[i][k] * balRangeR;
outBuffer[i][k] += oldBufLeft[k] * balRangeL;
outBuffer[i][k+timeOffset] = outBuffer[i][k+timeOffset] * balRangeR;
outBuffer[i][k+timeOffset] += oldBufLeft[k] * balRangeL;
}
}
}
@@ -1284,7 +1288,7 @@ public:
else if (doVolume)
{
for (k=0; k < frames; k++)
outBuffer[i][k] *= kData->postProc.volume;
outBuffer[i][k+timeOffset] *= kData->postProc.volume;
}
}



Loading…
Cancel
Save