Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Visualisierung des "Output-Streams" (https://www.delphipraxis.net/62515-visualisierung-des-output-streams.html)

Wishmaster 16. Feb 2006 12:56

Re: Visualisierung des "Output-Streams"
 
Hi

Klappt es nicht mit der bass.dll? bei Interesse kann ich dir auch ne Demo Basteln.

holle 6. Apr 2006 22:15

Re: Visualisierung des "Output-Streams"
 
Zitat:

Zitat von Wishmaster
Klappt es nicht mit der bass.dll? bei Interesse kann ich dir auch ne Demo Basteln.

Wenn du das mal machen könntest wäre das echt nett :)
mfg holle

Wishmaster 9. Apr 2006 03:08

Re: Visualisierung des "Output-Streams"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi

Sag bescheid wen noch was ist.

Michel86 13. Apr 2006 13:22

Re: Visualisierung des "Output-Streams"
 
@ Wishmaster

Hi, ich hab mir auch deine Datei als Vorlage genommen. Ich suche nur noch eine Funktion um auszulesen wie hoch der Pegel z.B. vom Mikrofoneingang ist. Damit, wenn ich etwas in das Mikrofon sage der Pegelwert steigt. Wäre nett wenn du mir da einen Tipp geben könntest wie ich darauf komme!

Danke schon mal!

Wishmaster 13. Apr 2006 20:40

Re: Visualisierung des "Output-Streams"
 
Hi

Kein Problem!

In der Bass Hilfe findest du ne Funktion (BASS_ChannelGetLevel) damit sollte es gehen! Ich habe diese Funktion auch im LiveTest Demo benutzt, such mal in der Unit1.pas nach ThresholdRecorder + BASS_RecordStart


Hier noch en Beispiel
Delphi-Quellcode:
procedure TAudioEngine.Get_VULevel(var L, R : Integer);
var VUCH : DWORD; L_VU, R_VU : integer;
begin
  //The level ranges linearly from 0 (silent) to 128 (max).
    VUCH := BASS_ChannelGetLevel(channel); // 0 (silent) to 32768 (max).
    L_VU := LOWORD(VUCH);
    R_VU := HIWORD(VUCH);
  if (BASS_ChannelIsActive(channel) = BASS_ACTIVE_PLAYING) then
   begin
    L:= round(L_VU / 128) div 2;
    R:= round(R_VU / 128) div 2;
   end else
  begin
    L:= 0;
    R:= 0;
  end;
end;


procedure TForm.Timer_VUTimer(Sender: TObject);
var L, R : integer;
begin
 with AudioPlayer do
  begin
    Get_VULevel(L, R);
    Level_L.Position:= L;
    Level_R.Position:= R;
 end;
end;

holle 19. Apr 2006 12:22

Re: Visualisierung des "Output-Streams"
 
danke Wishmaster!
nur noch eine frage: wie kann ich den pegel einer einzelnen frequenz, also eines einzelnen balken in der visualisierung ermitteln?

thanx holle.

holle 21. Apr 2006 16:49

Re: Visualisierung des "Output-Streams"
 
*** push ***
keiner ne idee????

mfg holle

Wishmaster 22. Apr 2006 21:50

Re: Visualisierung des "Output-Streams"
 
Hi

Zitat:

also eines einzelnen Balken in der Visualisierung ermitteln
ich wes ja nicht was du als (Visualisierung) nimmst? Aber normal müsste das mit ProgressBar1.Position gehen, oder du nimmst die werte direkt von BASS_ChannelGetLevel

wen es nicht das ist was du meintest dann erkläre einwenig genauer was du machen willst Bzw. was das bewirken soll.

Oder willst du die Position nach dB umrechnen dann müsste dir diese Funktion weiterhelfen.

Delphi-Quellcode:
function Vol2db(vol : integer) : string;
var
 ex,ex2 : extended;
begin
  DecimalSeparator := '.';
 if vol >0 then
  begin
   ex := RoundTo((20 * (log10(vol/100)) ),-1); // Ersetze die 100 durch Max wert
   ex2 := ex - Ceil(ex);
   if (ex2 = 0) then
     result := floattostr(ex) + '.0 dB'
   else
     result := floattostr(ex) + ' dB'
   end
  else
   result := '-oo dB';
end;

holle 23. Apr 2006 14:11

Re: Visualisierung des "Output-Streams"
 
danke, aber es geht mir jetzt nicht um die gesamtlautstärke des audiosignals...
du hast doch dieses beispielprogramm geschrieben, in dem das audiosignal in eine art spektrum analyse umgewandelt wird und durch mehrere balken dargestell wird. ich möchte jetzt z. b. wissen, wie hoch der pegel der frequenz 1000 hz ist. also den ausschlag eines einzelnen balkens.

thanx holle.

Gandalfus 23. Apr 2006 17:30

Re: Visualisierung des "Output-Streams"
 
Zitat:

As an example, if you request a 1024 sample FFT from a 44100hz stream, the values (bins) will be:

0: DC (you can ignore this)
1: 1 x (44100/1024) = 43hz
2: 2 x (44100/1024) = 86hz
3: 3 x (44100/1024) = 129hz
etc...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr.
Seite 2 von 3     12 3      

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