![]() |
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 |
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. |
Re: Sound Visualisierung
Danke für die Antwort.
Ich habe da nur noch ein kleines Problem. Wie muss ich die 1. Zeile einbauen ? |
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 |
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 |
Re: Sound Visualisierung
Hast du vor dem Abspielen ein einmaliges
Delphi-Quellcode:
oder was vergleichbares? Und hast du max bei den Progressbars auf nen vernünftigen Wert (32768) eingestellt?
Bass_init(-1,44100,0,handle,0);
Denn dann funktioniert das bei mir. |
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 ? |
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?
|
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. |
Re: Sound Visualisierung
ich dachte, das wäre bei mir ein Copy&Paste-Fehler gewesen: Die eine Zeile muss so heißen:
Delphi-Quellcode:
und schau dir mal an, wie man
BASS_ChannelPlay(Play_Channel, true);
Delphi-Quellcode:
unter Umständen so anpassen kann, dass die im Quellcode zu findende Prozedur Get_VULevel aufgerufen wird...
VULevel(L,R);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 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