@Minus_Kelvin This is a minor issue, but I did what you suggested above and put in a MaxSamples count for generation. When it stops playing, there is an audible ‘click’ at the end of the stream. My code (borrowing your sine wave :P) below:
void UExploreSoundWaveData::GenerateAudioData(USoundWaveProcedural * InWave, int32 SamplesNeeded) {
if (SamplesRemaining > 0) {
const int32 QueuedSamples = GetAvailableAudioByteCount() / sizeof(int16);
int32 SamplesRequired = SamplesNeeded - QueuedSamples;
if (SamplesRequired > SamplesRemaining) {
SamplesRequired = SamplesRemaining;
SamplesRemaining = 0;
}
SampleData.Reset(SamplesRequired);
for (int32 i = 0; i < SamplesRequired; ++i)
{
float SampleValueFloat = SineOsc.NextSample();
int16 SampleValue = (int16)(32767.0f * SampleValueFloat);
SampleData.Add(SampleValue);
}
SamplesRemaining -= SamplesRequired;
// Now call the audio queue to queue up some random data
InWave->QueueAudio((uint8*)SampleData.GetData(), SampleData.Num() * sizeof(int16));
}
}
I’ll be playing with the stream a lot more to see what I can do.