trigger #3 (#4?): might relate to switching contexts while considering parts of fft apis and fourier data, don't quite remember. might relate to amount of time spent coding something while holding a goal, not sure. import numpy as np signal_bufsize = 1024 * 1024 recording_bufsize = signal_bufsize original_signal = np.random.random(signal_bufsize) recording = np.empty(recording_bufsize) period_length = len(clear_signal) // recording_bufsize ** 0.5 * np.random.random() for out_idx in range(recording_bufsize): # using a loop because i am confused in_idx = int(out_idx * signal_bufsize / period_length) % signal_bufsize recording[out_idx] = original_signal[in_idx] # now take fft with np.fft.rfft # then select only upper portion of 1 + bandwidth equal to period_length # then reconstruct using irfft [curious: is this complex output? what do the angles look like?] # then downsample original_signal to the bandwidth using averaging # then compare real values # NOTE: failure is expected AT FIRST. then, identify the mistake, and improve it.