Hat sich erledigt habe es neu geschrieben..
Es gibt noch 6 andere Farben..
PS:
Es wäre nett wenn mal jemand meinen FFT gegenprüfen würde, habe ab und an einen Gleitkomma überlauf. @Michael II ??
Delphi-Quellcode:
procedure TBassPlayer.XFFT(FR, FI:
array of single; Sign, Sample, SampleCount: Integer);
// Wave Daten glätten
var
Q, J, M, L, le, le1,
ip: integer;
tr, ti, s, ur, ur1, ui, wr, wi: single;
begin
J := 1;
for Q := Sample
to SampleCount
do
begin
if Q < J
then
begin
s := FR[Q];
FR[Q] := FR[J];
FR[J] := s;
s := FI[Q];
FI[Q] := FI[J];
FI[J] := s;
end;
M := ((SampleCount + 1)
div 2);
while M < J
do
begin
J := J - M;
M := M
div 2;
end;
J := J + M;
end;
for L := 1
to 8
do
begin
le := trunc(Power(2, L));
le1 := le
div 2;
ur := 1;
ui := 0;
wr := Cos(PI / le1);
wi := Sign * Sin(PI / le1);
for J := 1
to le1
do
begin
Q := J;
while Q <= (SampleCount + 1)
do
begin
ip := Q + le1;
tr := FR[
ip] * ur - FI[
ip] * ui;
ti := FR[
ip] * ui + FI[
ip] * ur;
FR[
ip] := FR[Q] - tr;
FI[
ip] := FI[Q] - ti;
FR[Q] := FR[Q] + tr;
FI[Q] := FI[Q] + ti;
Q := Q + le;
end;
ur1 := ur * wr - ui * wi;
ui := ur * wi + ui * wr;
ur := ur1;
end;
end;
for Q := Sample
to (SampleCount + 1)
do
begin
FR[Q] := FR[Q] * DivN;
FI[Q] := FI[Q] * DivN;
end;
end;
Wenn nötig stelle ich dafür den Quelltext des Projekts zur Verfügung.
gruss