AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi FFT Berechnung fails
Thema durchsuchen
Ansicht
Themen-Optionen

FFT Berechnung fails

Ein Thema von venice2 · begonnen am 15. Jul 2021 · letzter Beitrag vom 4. Okt 2021
Antwort Antwort
venice2
(Gast)

n/a Beiträge
 
#1

AW: FFT Berechnung fails

  Alt 15. Jul 2021, 14:48
Zitat:
Spectrum : array[0..1, 0..255] of byte;
Zitat:
Das stand im ersten Post nicht, also nicht logisch.
Nein?
Also ich kann im ersten Post lesen das für den rechten und linken Kanal 2 werte eingelesen werden und zwar jeweils 256 Samples.
Würde das Array also so nicht definiert sein.. Ja dann wäre es unlogisch.
Normalerweise sollte man das doch so voraussetzen oder?

Zitat:
Also poste doch bitte mal Delphi-Code hier so rein,
dass man damit was anfangen kann.
Der Code der für das Problem relevant ist habe ich gepostet.

Zitat:
Was ist denn konkret (in Delphi-Worten) dein Problem?
Die Frage die da wäre warum wird aber nur ein viertel der FFT gezeichnet?

Nun wie ich schon sagte es ist kein eigentliches Problem denn ich habe es so gelöst.

Ich hole ich mir jetzt über Bass_ChannelGetdata BASS_DATA_FFT2048 Samples und übergebe
CopyMemory(@gSOP.FFT, @FFFTdata, 2048);

Jetzt werden alle 8 Balken der Visualisierung gerendert so wie es sein soll!

Also nochmal die Frage warum muß ich ein 4 Faches an Samples übergeben obwohl doch nur 512 davon ausgewertet werden.
Das ist das Unverständnis das ich habe.

Ich hoffe du verstehst warum es mir geht.
Ich verstehe nicht warum BASS_DATA_FFT1024 Samples nicht ausreichend sind um ein Array von 512 Samples auszuwerten. (letztendlich nur 256 Samples pro Kanal)

Geändert von venice2 (16. Jul 2021 um 12:47 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.071 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: FFT Berechnung fails

  Alt 15. Jul 2021, 16:02
Ich hätte ja testhalber einfach mal meine Zwischen-Datenquelle mit Testdaten gefüllt und dann geschaut, ob meine Malroutine richtig ist.
Bspw. so hier:

Delphi-Quellcode:
        for I := 0 to 255 do
        begin
          VisData.Spectrum[0, I] := I;

          VisData.Spectrum[1, I] := 255 - I;
        end;
Da müssten dann ja zwei Rampen bei raus kommen.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#3

AW: FFT Berechnung fails

  Alt 15. Jul 2021, 16:07
Ich hätte ja testhalber einfach mal meine Zwischen-Datenquelle mit Testdaten gefüllt und dann geschaut, ob meine Malroutine richtig ist.
Bspw. so hier:

Delphi-Quellcode:
        for I := 0 to 255 do
        begin
          VisData.Spectrum[0, I] := I;

          VisData.Spectrum[1, I] := 255 - I;
        end;
Da müssten dann ja zwei Rampen bei raus kommen.
Es geht um die Frage warum ich ein 4 Faches an Samples (2048) einlesen muß um das Spektrum korrekt zu füllen obwohl es nur eine Größe von 256 Einträgen hat.
Das ist was mir unverständlich ist.

Ansonsten funktioniert es ja.
Wie man an den Bildern erkennen kann alle 8 Balken sind gefüllt.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.071 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: FFT Berechnung fails

  Alt 15. Jul 2021, 16:15
Es fehlt uns allen hier wieder essentielle Informationen über dein Programm und vollständiger Quelltext und die Bitte um ein kompaktes Demoprojekt sind wie immer vergebens (Starrsinn gepaart mit Unfähigkeit Probleme zu abstrahieren und auf das Wesentliche zu reduzieren), daher können wir nur raten.
Übrigens: Außer dir programmieren hier ganz ganz ganz wenige Leute Visualisierungen für Musikabspielsoftware, von daher kannst du nicht erwarten, dass wir immer so im Thema drinstecken.

Glaskugel sagt:
1024 Samples / 256 = nur 4 Balken (linke/untere vier)
2048 Samples / 256 = alle 8 Balken
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.071 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: FFT Berechnung fails

  Alt 15. Jul 2021, 16:18
(Englische) Doku (nicht) lesen ist auch noch so ein Punkt, der dir oft auf die Füße fällt:

http://www.un4seen.com/doc/#bass/BAS...elGetData.html

Zitat:
BASS_DATA_FFT1024 1024 sample FFT (returns 512 values).
BASS_DATA_FFT2048 2048 sample FFT (returns 1024 values).
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#6

AW: FFT Berechnung fails

  Alt 15. Jul 2021, 16:31
Zitat:
BASS_DATA_FFT1024 1024 sample FFT (returns 512 values).
BASS_DATA_FFT2048 2048 sample FFT (returns 1024 values).
Und warum funktioniert es dann nicht bei einem Array von 256 Einträgen?
512 sollten doch reichen oder nicht?
Für jeden Kanal die Hälfte.

Er rendert dann zumindest nur 4 Balken.
Erst mit BASS_DATA_FFT2048 (1024 Samples) und das ist nun mal ein vierfaches von 256.
Unverständlich.

Zitat:
1024 Samples / 256 = nur 4 Balken (linke/untere vier)
2048 Samples / 256 = alle 8 Balken
Ok hatte das nicht gelesen.
Hat sich dann erledigt. Danke

Geändert von venice2 (15. Jul 2021 um 19:44 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#7

AW: FFT Berechnung fails

  Alt 15. Jul 2021, 17:13
Vor längerer Zeit hat mal hier bei der Konkurenz jemand was dazu gepostet, die dort verlinkte ZIP-Datei mit den Quellen ist noch verfügbar.

Habe das vor Jahren mal für meinen Player genutzt. Eventuell kannst Du den Quellen ja entnehmen, wie der Umgang mit FFT dort realisiert wurde und das eine oder andere für Dich entsprechend adaptieren.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz