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
Antwort Antwort
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
Miniaturansicht angehängter Grafiken
analyzer_196.jpg  
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Spektrumanalyzer aus BASS_ChannelGetData?

  Alt 14. Jan 2008, 21:49
BASSVIS-Plugin benutzen und das entsprechende Plugin für Winamp...feddich
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Ronny81

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

Re: Spektrumanalyzer aus BASS_ChannelGetData?

  Alt 15. Jan 2008, 11:14
Hallo Ghostwalker,

ja das wäre natürlich eine Lösung, aber mir geht es weniger um die Visualisierung als
um die einzelnen Frequenzen die ich dann an den Analyzer sende.
Ich brauche eigentlich nur ein paar VU-Meter für bestimmte Frequenzen.
Aber danke für den Tip.

Gruß Ronny
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#4

Re: BASS_ChannelGetData und einzelne Frequenzen bestimmen ?

  Alt 15. Jan 2008, 11:45
http://www.delphipraxis.net/internal...ct.php?t=30232
Marcel
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#5

Re: BASS_ChannelGetData und einzelne Frequenzen bestimmen ?

  Alt 15. Jan 2008, 12:35
Schau dir mal die Beispiele an die bei der bass.dll dabei sind, da wird sowas auch gemacht.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Ronny81

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

Re: BASS_ChannelGetData und einzelne Frequenzen bestimmen ?

  Alt 29. Jan 2008, 07:55
Hallo zusammen,

sorry für die verspätete Antwort.
Erst mal danke für eure Tips.
Haben mir zwar alle nicht so richtig weiter geholfen
-Plugin für Winamp: Will ich nicht, da ich nur die Frequenzen brauche und nicht die Visu.
-er Link von "Gehstock": Das ist leider mehr ein Qazi als ein Spaktrumanalyzer.
-Beispiele der Bass.dll: ja da wird sowas schon gemacht aber leider nur mit Spezialkomandos der dll,
Ich brauche ja wirklich nur die einzelnen Frequenzen.

Aber trozdem, vielen vielen Danke für eure Hilfe.
Ich habe mitlerweile genau das gefunden was ich suche. Meine Analyzer läuft top.
Ich werde in den nächsten Tagen mal den Quelltext posten. Dann könnt ihr euch ansehen
was ich gesucht habe .


Gruß Ronny
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: BASS_ChannelGetData und einzelne Frequenzen bestimmen ?

  Alt 29. Jan 2008, 15:39
Du hast eine DFT bzw. FFT gesucht. In dem verlinkten Thread ist keines der beiden erstellt worden, nicht mal "quasi". Da gibts ne Unit mit der du die Waveform aus .wav Dateien einlesen kannst, und ist genau das andere als das, was du brauchtest.
Die Bass.dll kann man dafür missbrauchen, es gibt aber auch ein paar ganz gute fertige Libs zur FFT (sogar hier im Forum) - und das wäre die erste Wahl, wenn man nicht auch abspielen möchte, bzw. man sich schon für eine andere Methode dafür entschieden hat.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: BASS_ChannelGetData und einzelne Frequenzen bestimmen ?

  Alt 29. Jan 2008, 19:00
Vielleicht hilft dir ja das hier weiter.

Gruss
Thorsten
  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 16:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz