void GameSoundBuffer::UpdateMods() { // adjust the gain if needed if (fGainRamp) { if (ChangeRamp(fGainRamp)) { delete fGainRamp; fGainRamp = NULL; } } // adjust the ramp if needed if (fPanRamp) { if (ChangeRamp(fPanRamp)) { delete fPanRamp; fPanRamp = NULL; } else { if (fPan < 0.0) { fPanLeft = 1.0; fPanRight = 1.0 + fPan; } else { fPanRight = 1.0; fPanLeft = 1.0 - fPan; } } } }
bool FillBuffer(_gs_ramp * ramp, int16 * data, int16 * buffer, size_t * bytes) { int32 samples = *bytes / sizeof(int16); for (int32 byte = 0; byte < samples; byte++) { float gain = *ramp->value; data[byte] = int16(float(buffer[byte]) * gain); if (ChangeRamp(ramp)) { *bytes = byte * sizeof(int16); return true; } } return false; }
bool FillBuffer(_gs_ramp * ramp, float * data, float * buffer, size_t * bytes) { size_t byte = 0; bool bytesAreReady = (*bytes > 0); while (bytesAreReady) { float gain = *ramp->value; data[byte] = buffer[byte] * gain; if (ChangeRamp(ramp)) { *bytes = byte; return true; } byte++; bytesAreReady = (byte >= *bytes); } return false; }