it might help to think of the overlap at some point wavidx == N, the recording indices restart meanwhile, there are 4 frequencies, that are repeatedly and continuously restarting. at wavidx == N, we might want all those frequencies to align, so that they restart and match the same points. but wavidx == N is never actually sampled, so it could go a different way. one could also add more modelling to the system, and decide the waveform is made of specific underlying sinusoids. -- maybe it could be helpful to consider sample 1 at sample 1, when sampling, a bunch of frequencies are scaled by 1 and a multiplier. sample 1 breaks into those N frequencies, multiplied by a sampling multiplier meanwhile, when reconstructing, sample 1 comes from N frequencies, which are all multiplied by index 1 ...? things actually happen a litle more complexly there are 4 passes of frequencies and indices. first, the fft in the sampling, then, the loop in the sampling, for every sample then the microft then the microift . so "sample 1" is repeatedly spread everywhere, and reconsolidated again, or vice versa. the waveform is projected in a modular way through the recording, then back through the microfts. the sampling and the microft use two different sets of frequencies to transform the data. in the sampling, the waveform is considered a sum of even frequencies. in the microft, the recording is considered a sum of denser frequencies. is it sufficient for these even frequencies to equate to the same portions of the waveform that the denser frequencies do? it seems at least a step. if they are the same frequencies in the waveform, then they simply need to be combined with the same indices in the waveform. so it _should eventually work_. because when sampling the waveform into the recording, these can be the same waveform indices as when reconstructing it. so how do we have frequencies in the recording, that equate to the same regions of the waveform? it sounds confusing, but it's highpass, so we just need to use the same actual frequencies, and scale them down to the scaling of the waveform . i think! it's real-valued data, so the negative frequencies in np.fft.fftfreq can be ignored. the micro_*fts , however, may want to process these negative frequencies, a quick approach could be two exp calls