AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

equalizer mit der bass.dll

Ein Thema von Dr.No · begonnen am 20. Jul 2005 · letzter Beitrag vom 28. Sep 2005
 
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: equalizer mit der bass.dll

  Alt 20. Sep 2005, 09:43
Oszilloskop hätte ich gern, Spectrum klappt ja bereits einwandfrei mit FFTData.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  OpenDialog1.Filter := BassDLLPlayerFileFilter;

  bkBitmap := TBitmap.Create;
  bkBitmap.Width := 30;
  bkBitmap.Height := 30;
  bkBitmap.Canvas.Brush.Color := clBlack;
  bkBitmap.Canvas.FillRect(Rect(0, 0, 30, 30));
  BitmapRect := Rect(0, 0, bkBitmap.Width, bkBitmap.Height);

end;



procedure TForm1.Button1Click(Sender: TObject);
begin // Open File & Play
  if Opendialog1.Execute then
  begin
    if BassdllPlayer1.LoadFromFile(Opendialog1.FileName) then
    begin
      BassdllPlayer1.Play;
  end;
end;


(* um nur eine "Probe zu holen" *)
procedure TForm1.Button2Click(Sender: TObject);
var Data1: Twavedata;
    i: integer;
begin
    data1 := BassdllPlayer1.GetwaveData;

      Paintbox1.Canvas.CopyRect(Paintbox1.ClientRect, bkBitmap.Canvas, BitmapRect);

      Paintbox1.Canvas.MoveTo(0, Paintbox1.height div 2);
      for i := 0 to 2048 do begin
        Paintbox1.Canvas.pen.color := RGB(255 - i, i, 0);
        if i mod 2 = 0 then
          Paintbox1.Canvas.LineTo(i,Paintbox1.height div 2 - Data1[i] div trackbar3.position);

// test für rechten Kanal
// Paintbox1.Canvas.pen.color := clyellow;
// if i mod 2 = 1 then
// Paintbox1.Canvas.LineTo(i,Paintbox1.height div 2 - Data1[i] div trackbar3.position);
      end;

end;
Das war´s, erst mal auf´s wesentliche runtergebrochen.


hier das für´s Spectrum, was wiegesagt aber schon funzt...
Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject); // Draw Vis.
var
  data: TFFTData;
  i: integer;
  tmpBitmap: TBitmap;
begin
    data := BassdllPlayer1.GetfftData;

    for i := 0 to 255 do
      Data[i] := Data[i] * ln(i + 1) * Trackbar1.Position * Paintbox1.ClientHeight;

    Paintbox1.Canvas.CopyRect(Paintbox1.ClientRect, bkBitmap.Canvas, BitmapRect);

    Paintbox1.Canvas.MoveTo(0, Paintbox1.height div 2);
    for i := 0 to 255 do begin
      Paintbox1.Canvas.pen.color := RGB(255 - i, i, 0);
      Paintbox1.Canvas.LineTo(i, Paintbox1.height div 2 - round(Data[i]));
    end;
end;
PS: Also um´s auf den Punkt zu bringen:
Die Frequenz des Lieder wird richtig dargestellt, nur die Spannungshöhe/ der Pegel ist irgendwie falsch,
da es wiegesagt mehr an eine Pulsweitenmodulation ausschaut, aber irgendwie gar nicht wie Musik eben.
  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 06:53 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