I hope I am not stating the obvious ... but time is only defined at the ADC sampling time, everything afterward is asynchronous and indexed with sample number.
So you have sampled the I+jQ stream x(n), n\in\mathbb{N} at sampling rate fs, and now want to FFT every 40 ms. The number of samples in 40 ms is P=fs*40e-3 and wisely selecting fs will make this integer as well. fft1=fft(x(1:Q)) with Q the number of samples in the FFT defined by the frequency resolution of the FFT bin fs/Q (related to the number of symbols in the FSK modulation, their frequency spacing and of course fs) fft2=fft(x(P+1:P+Q)) fft3=fft(x(2*P+1:2*P+Q)) fft4=fft(x(3*P+1:3*P+Q)) whill provide the FFT outputs separated with starting times every 40 ms. In a multithreaded environment such as GNU Radio (and unlike GNU/Octave), these FFT will all be running in parallel and provide the output "simultanously". The only "problem" left is accumulating enough samples in the work function of the OOT block to make sure all samples indexed from 3*P+1 to 3*P+Q exist, which is best handled by the GNU Radio scheduler. Best, JM > I am attempting to see if I can implement a particular communications > application called FT8 in GNU radio. > > FT8 uses FFTs in the manner I described to decode the data which > appears as 160 ms symbols encoded as 8 tones. If I understand the > protocol correctly, 4 FFTs run concurrently. When 160 ms has > completed, the 5th FFT is starting. > > My questions at this point boil down to how do you start and stop an > FFT? How do you implement a delay in starting the FFT? Is what I am > trying even feasible with GNU Radio? > > Jim > -- JM Friedt, FEMTO-ST Time & Frequency, 26 rue de l'Epitaphe, 25000 Besancon, France