コード例 #1
0
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;
			}
		}
	}
}
コード例 #2
0
ファイル: FileGameSound.cpp プロジェクト: mariuz/haiku
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;
}
コード例 #3
0
ファイル: FileGameSound.cpp プロジェクト: mariuz/haiku
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;
}