AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi BASS_ChannelGetData und einzelne Frequenzen bestimmen ?
Thema durchsuchen
Ansicht
Themen-Optionen

BASS_ChannelGetData und einzelne Frequenzen bestimmen ?

Ein Thema von Ronny81 · begonnen am 14. Jan 2008 · letzter Beitrag vom 29. Jan 2008
 
Ronny81

Registriert seit: 7. Jan 2007
7 Beiträge
 
#1

BASS_ChannelGetData und einzelne Frequenzen bestimmen ?

  Alt 14. Jan 2008, 20:04
Hallo zusammen,

ich hätte da mal eine Frage
Aber nicht gleich sauer sein, wenn ich mich vielleicht zu blöd anstelle.
Ich suche mir jetzt schon seid zwei Tagen die Finger wund aber ich finde nichts.
So jetzt zu meinem Problem:

Ich habe eine Wav-Stream den ich über die Bass.dll vom Wave-out meiner Soundkarte auslese.
Über "RecordingCallback" hole ich mir "BASS_ChannelGetData(Handle, @fft, BASS_DATA_FFT1024)".
Ich habe mir auch schon ein kleines Programm geschrieben dass mir in eine "PaintBox" ein
Oszilloskop zeichnet, aber ich will und brauche einen "Spektrumanalyzer".
Wie muss ich mit "FFT" umgehen um einen "Spektrumanalyzer" zu bekommen?
Am besten wäre es wenn ich die einzelnen Frquenzbereiche noch schön einstellen könnte.
Es soll aussehen wie auf dem Bild im Anhang. Muss nicht farbig sein oder so.
Auf einer Seite geht es mit den hohen Frequenzen los bis auf der anderen dann die
tiefen Frequenzen kommen.
Aber wie mach ich das ???

Bis jetzt verwende ich diesen Code

Delphi-Quellcode:
var
  Form1: TForm1;
  WaveHdr: WAVHDR; // WAV header
  rchan: HRECORD;   // recording channel
  chan: HSTREAM;   // playback channel
  fft: array[0..256] of single;

implementation

{$R *.dfm}


(* This is called while recording audio *)
function RecordingCallback(Handle: HRECORD; buffer: Pointer; length, user: DWord): boolean; stdcall;
var i: integer;
begin
   Form1.WaveStream.Write(buffer^, length);
   Result := True;
//--------------------------------------------------------------------------
BASS_ChannelGetData(Handle, @fft, BASS_DATA_FFT1024);
  form1.PaintBox1.Canvas.Rectangle(0,0,form1.PaintBox1.Width,form1.PaintBox1.Height);
  for i:= 1 to 256 do
  Begin
    form1.PaintBox1.Canvas.MoveTo(i,form1.PaintBox1.height);
    form1.PaintBox1.Canvas.LineTo(i,form1.PaintBox1.height-round(fft[i]*(form1.PaintBox1.height)*i));
  end;
  form1.PaintBox1.Canvas.Unlock;
   Result := True;
//--------------------------------------------------------------------------
end;
Wer kann mir helfen?
Vielen Dank schon mal.

P.S. ich bin noch nicht so der Profi in Delphi

Gruß Ronny
Angehängte Grafiken
Dateityp: jpg analyzer_196.jpg (61,1 KB, 54x aufgerufen)
  Mit Zitat antworten Zitat
 


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 18:24 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-2025 by Thomas Breitkreuz