I was hoping to use [bang~] to tell me when a 1024 sample FFT was finished so I could process the results ASAP, but it often bangs after only 64 samples when DSP is first turned on. Here's my test patch after one such run:
And here's what's inside the reblocked subpatch:
bang~runsAtTheEndOfEachDSPblock2.pd
After the first run it consistently reports 1024 as expected, but that first run usually shows 64, and only occasionally 1024. I saw 128 once, but haven't been able to reproduce it. I tried connecting the signal inlets and outlets in various ways but it didn't seem to matter. Am I overlooking something?
Update: I get similar results using [switch~]:
And the switched subpatch:
switch~ vs bang~.pd
Update #2: I added another test to the switch test and it contradicts the other two tests
When viewed from inside [pd switchedSubPatch2], [bang~] happens at the right time, But if I run the original test immediately afterward, it still shows 64. There must be something about reblocking I don't understand.
switchedSubPatch2:
switch~ vs bang~.pd

I got this result by starting dsp after clicking on the bang button and checking both toggles. The array1 inside the subpatch clearly shows only the last 64 samples populated by the [tabsend~], yet the outlet still passes 1023, meaning the phasor~ did count 1024 samples from 0. If I start dsp before clicking/checking, then array1 is completely filled but always has a discontinuity at some 64 sample boundary. For an FFT, there wouldn't be a discontinuity as long as I was inputting a static periodic signal of some harmonic frequency.
switched1024FFT:

switched1024subPatch: