Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Sound Visualisierung (https://www.delphipraxis.net/83427-sound-visualisierung.html)

ebber 2. Jan 2007 16:41


Sound Visualisierung
 
Hallo,

ich möchte 2 ProgressBars, die einen umso größeren Fortschritt haben umso Lauter der momentane Sound ist. Eine für Links und eine für Rechts.
Ich habe das mal mit der bass.dll probiert aber ich habs nicht hinbekommen.

Pls help

MfG

Wishmaster 4. Jan 2007 01:58

Re: Sound Visualisierung
 
Hi

Es ist sehr einfach wen du die bass.dll benutzt.

Delphi-Quellcode:

Play_Channel:= BASS_StreamCreateFile(false, PChar(Filename), 0, 0, BASS_STREAM_AUTOFREE) ;

{----------------------------------- Get VU -----------------------------------}

Procedure Get_VULevel(var L, R : Integer);
var VUCH : DWORD; L_VU, R_VU : integer;
begin
  VUCH := BASS_ChannelGetLevel(Play_Channel);  //from 0 (silent) to 32768 (max)
   L_VU := LOWORD(VUCH);
   R_VU := HIWORD(VUCH);
  if (BASS_ChannelIsActive(Play_Channel) = BASS_ACTIVE_PLAYING) then
   begin
    L:= L_VU;
    R:= R_VU;
   end else
  begin
    L:= 0;
    R:= 0;
  end;
end;



//dann mit nem teimer

var L, R : integer
begin
 VULevel(L,R);

  ProgressBars_L.Position:=  R;
  ProgressBars_R.Position := L;
End.

ebber 5. Jan 2007 10:41

Re: Sound Visualisierung
 
Danke für die Antwort.

Ich habe da nur noch ein kleines Problem.
Wie muss ich die 1. Zeile einbauen ?

Wishmaster 6. Jan 2007 04:02

Re: Sound Visualisierung
 
Delphi-Quellcode:
var Play_Channel : DWORD;


Procedure PlayFile(Filename : String);
begin
  BASS_StreamFree(Play_Channel);  
  Play_Channel:= BASS_StreamCreateFile(false, PChar(Filename), 0, 0, BASS_STREAM_AUTOFREE) ;
  BASS_ChannelPlay(Play_Channel l, true);
End

ebber 6. Jan 2007 12:49

Re: Sound Visualisierung
 
Vielleicht bin ich einfach nur zu blöd, aber ich bekomms immer noch nicht hin.

Ich hab das jetzt so :
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Bass, ExtCtrls, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    ProgressBars_L: TProgressBar;
    ProgressBars_R: TProgressBar;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Play_Channel : DWORD;


implementation

{$R *.dfm}




Procedure PlayFile(Filename : String);
begin
  BASS_StreamFree(Play_Channel);
  Play_Channel:= BASS_StreamCreateFile(false, PChar(Filename), 0, 0, BASS_STREAM_AUTOFREE) ;
  BASS_ChannelPlay(Play_Channel l, true);
End;


Procedure Get_VULevel(var L, R : Integer);
var VUCH : DWORD; L_VU, R_VU : integer;
begin
  VUCH := BASS_ChannelGetLevel(Play_Channel);  //from 0 (silent) to 32768 (max)
   L_VU := LOWORD(VUCH);
   R_VU := HIWORD(VUCH);
  if (BASS_ChannelIsActive(Play_Channel) = BASS_ACTIVE_PLAYING) then
   begin
    L:= L_VU;
    R:= R_VU;
   end else
  begin
    L:= 0;
    R:= 0;
  end;
end;



procedure TForm1.Timer1Timer(Sender: TObject);
var L, R : integer;
begin
VULevel(L,R);

  ProgressBars_L.Position:=  R;
  ProgressBars_R.Position := L;

end;

end.

Kann mir pls jemand sagen was das falsch ist und wie es richtig geht.

MfG

Gausi 6. Jan 2007 13:16

Re: Sound Visualisierung
 
Hast du vor dem Abspielen ein einmaliges
Delphi-Quellcode:
Bass_init(-1,44100,0,handle,0);
oder was vergleichbares? Und hast du max bei den Progressbars auf nen vernünftigen Wert (32768) eingestellt?

Denn dann funktioniert das bei mir.

ebber 6. Jan 2007 13:39

Re: Sound Visualisierung
 
Die Progessbar hatte ich auf 32768, aber das andere nicht.
Kannst du vielleicht mal den ganzen Code von der Unit reinschreiben pls ?

Gausi 6. Jan 2007 13:44

Re: Sound Visualisierung
 
Pack meine Zeile einfach ins OnCreate der Form rein, dann gehts. Die sorgt dafür, dass die bass.dll initialisiert wird. Ohne dem spielt die nämlich gar nichts ab. Oder hörst du schon was bei deinem Programm?

ebber 6. Jan 2007 13:54

Re: Sound Visualisierung
 
Die Zeile hab ich da rein getan gehabt, nur kommen noch 2 Fehler,
die leider meine Kentnisse überfordern.



BASS_ChannelPlay(Play_Channel l, true); Expexted ) but received an identifier

VULevel(L,R); undeclared identifier


Und falls meine Frage unverständlich gestellt war: Mein Programm soll nichts abspielen sondern, die Progressbars sollen den Sound anzeigen der gerade aus den Lautsprechern kommt.

Gausi 6. Jan 2007 14:56

Re: Sound Visualisierung
 
ich dachte, das wäre bei mir ein Copy&Paste-Fehler gewesen: Die eine Zeile muss so heißen:
Delphi-Quellcode:
BASS_ChannelPlay(Play_Channel, true);
und schau dir mal an, wie man
Delphi-Quellcode:
VULevel(L,R);
unter Umständen so anpassen kann, dass die im Quellcode zu findende Prozedur Get_VULevel aufgerufen wird...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 Uhr.
Seite 1 von 2  1 2      

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