Was ich jetzt mache, ist nur noch "Spekulatius"
Out[p].r := (((Dat[i]) + Dat[i + 1]) / 65536) * Window_[p];
Dat = SmallInt -> -32768..32767
Dat[i] + Dat[i + 1] = maximal 65536.
Wenn also Dat[i] und Dat[i + 1] irgendwo zwischen 0 und 32767 liegen, kommt irgendwas zwischen 0 und 65536 bei der Addition heraus. Dividieren wir nun durch 65536, liegt das Ergebnis irgendwo zwischen 0 und 1.
Window_[*] wird in InitHamming befüllt.
Delphi-Quellcode:
for n := 0 to FFFTSize - 1 do
Window_[n] := 0.53836 - 0.46164 * Cos(6.28318530717959 * n / (FFFTSize {- 1}));
Code:
For n = 0 To mFFTSize - 1
Window(n) = 0.53836 - 0.46164 * Cos(6.28318530717959 * n / (mFFTSize - 1))
In der Delphiquelle ist das -1 auskommentiert. Kann mir zwar nicht vorstellen, dass das jetzt sehr gravierende Auswirkungen hat, aber wirklich weiß ich das nicht.
Könntest Du mal den Inhalt von Window_ jeweils ausgeben und die Werte dadrin miteinander vergleichen?
Wenn hier inhaltlich irgendwelche Unterschiede sein sollten, so kann das gravierende Auswirkungen auf die weiteren Berechnungen haben.