Loading .WAV at runtime to a USoundWave

void USbinTTSComponent::ReadWaveForPC(FString path, TArray<uint8> &RawSamples, USoundWave *&SoundWave)
{
TArray<uint8> FileSamples;
if (!FFileHelper::LoadFileToArray(FileSamples, *path))
{
UE_LOG(LogTemp, Warning, TEXT(“—LoadFileToArray Error—”));
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT(“LoadFileToArray Error”));
return;
}

FWaveModInfo WaveInfo;
FString ErrorMessage;
if (WaveInfo.ReadWaveInfo(FileSamples.GetData(), FileSamples.Num(), &ErrorMessage))
{
    USoundWave* Sound = NewObject&lt;USoundWave&gt;(USoundWave::StaticClass());

    // Compressed data is now out of date.
    Sound-&gt;InvalidateCompressedData();

    // If we're a multi-channel file, we're going to spoof the behavior of the SoundSurroundFactory
    int32 ChannelCount = (int32)*WaveInfo.pChannels;
    check(ChannelCount &gt; 0);

    int32 SizeOfSample = (*WaveInfo.pBitsPerSample) / 8;

    int32 NumSamples = WaveInfo.SampleDataSize / SizeOfSample;
    int32 NumFrames = NumSamples / ChannelCount;


    Sound-&gt;RawData.Lock(LOCK_READ_WRITE);
    void *LockedData = Sound-&gt;RawData.Realloc(FileSamples.Num() );
    FMemory::Memcpy(LockedData, FileSamples.GetData(), FileSamples.Num());
    Sound-&gt;RawData.Unlock();


    Sound-&gt;Duration = (float)NumFrames / *WaveInfo.pSamplesPerSec;
    Sound-&gt;SetSampleRate(*WaveInfo.pSamplesPerSec);
    Sound-&gt;NumChannels = ChannelCount;
    Sound-&gt;TotalSamples = *WaveInfo.pSamplesPerSec * Sound-&gt;Duration;

    SoundWave = Sound;

    RawSamples = FileSamples;    

}
else
{
    SoundWave = nullptr;
    GEngine-&gt;AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("--- ReadWaveInfo Error ---"));
    UE_LOG(LogTemp, Warning, TEXT("--- ReadWaveInfo Error:&gt;&gt; %s"), *ErrorMessage);
}

}

// This is my code , How to fill another buffer?