Waveform data is not contiguous. It is a snapshot of the waveform at a given instant in time. The time for each frame varies with the frame rate setting and system load. You'll need to use the time value to determine the exact time for the waveform data. That will allow you to determine if the data overlaps or skips. At 60fps without any slowdown, a 44100Hz sampling rate will have a significant overlap, which you can adjust for using the time value to get contiguous data. At 20fps, a 192000Hz sampling rate will skip and contiguous data will not be available.

Essentially you'd save the time value from the previous Draw call and compare it to the new time value to see how much time has passed between calls. From that you can determine exactly how many new samples have been added to the end of the waveform buffer (if no skipping occurred).