Delphi-PRAXiS

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)

nabbl 5. Feb 2006 20:11


Visualisierung des "Output-Streams"
 
Hi! Ich habe mal ne Frage:
Wie kann ich den "Ouput-Stream" visualisieren?
ich denke da an sowas wie winamp.

Habe mir die bass.dll angeguckt - allerdings glaube ich, dass die Visualisierung nur bei der wiedergabe von mediendateien mit der bass.dll funktioniert? :gruebel:

n bissl aufklärung wäre supi ;)

EDIT: Ich dachte da an sowas:
http://www.delphipraxis.net/internal...visualisierung

die Orangenen balken da - halt nur für jeden sound, der kommt =)

omata 5. Feb 2006 23:19

Re: Visualisierung des "Output-Streams"
 
Moin,

schau dir doch mal bei den Beispielen von der bass.dll das custloop-Beispiel an.

In meiner BassPlayerEx-Komponente habe ich auch einige Visualisierungen eingebaut (die funktionieren allerdings nur beim Abspielen).

MfG
Thorsten

nabbl 6. Feb 2006 15:22

Re: Visualisierung des "Output-Streams"
 
habe mir das mal angeschaut - es entspricht aber nicht so ganz meinen vorstellungen
ich dachte da an etwas wie in der SampleVis-Demo zu sehenden Balken (richtig umschrieben :gruebel:)

Nur, dass ich nicht eine bestimmte mp3-datei ausgeben lassen will, sondern generell alles, was über die soundkarte den weg zu meinen boxen findet =)

[edit=Luckie]Push-Posting gelöcht. Bitte erst nach 24 Stunden pushen. Mfg, Luckie[/edit]

Luckie 6. Feb 2006 19:05

Re: Visualisierung des "Output-Streams"
 
Zitat:

Zitat von nabbl
habe mir das mal angeschaut - es entspricht aber nicht so ganz meinen vorstellungen

Dann schreib es doch entsprechen um und füge deine Visualisierung hinzu. Wie es geht solltets du ja an dem Demo sehen.

arbu man 6. Feb 2006 19:33

Re: Visualisierung des "Output-Streams"
 
Vielleicht hilft dir das hier

Wishmaster 6. Feb 2006 23:22

Re: Visualisierung des "Output-Streams"
 
Hi

Du kannst das mit der BASS.dll machen. Kreiere dir en Rec. Channel

Delphi-Quellcode:
Var

FFT  : array[0..1024] of float;
Rec_Ch : HRECORD


procedure TForm1.FormCreate(Sender: TObject);
begin
BASS_RecordInit(0);
Rec_Ch := BASS_RecordStart(44100, BASS_SAMPLE_MONO, nil, 0);

End


procedure TForm1.FormDestroy(Sender: TObject);
begin
  BASS_RecordFree();
  Bass_Free;
end;
mit Timer
Delphi-Quellcode:
Bass_ChannelGetData(Rec_Ch, @FFT, BASS_DATA_FFT2048); // Get the data


Der Rest ist das selbe wie in “SampleVis“. Und Schau dir mal die bass Hilfe an.

nabbl 7. Feb 2006 15:35

Re: Visualisierung des "Output-Streams"
 
vielen dank! werde es mir mal anguggn =)

nabbl 10. Feb 2006 16:29

Re: Visualisierung des "Output-Streams"
 
Zitat:

Zitat von arbu man
Vielleicht hilft dir das hier

sieht ja schonmal vielversprechend aus - aber: ich bekomme die audioio-kompo nicht installiert :( fehler:

Delphi-Quellcode:
      Property WaveDevice : Integer Read FWaveDevice Write FWaveDevice Default WAVE_MAPPER;
Inkombatible Datentypen: 'Cardinal' und 'Integer'.

nabbl 13. Feb 2006 14:46

Re: Visualisierung des "Output-Streams"
 
*push*

nabbl 15. Feb 2006 15:27

Re: Visualisierung des "Output-Streams"
 
*nochmal push*

weiss niemand rat?

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...

Michel86 25. Apr 2006 15:37

Re: Visualisierung des "Output-Streams"
 
He Danke das hat mir weiter geholfen!

holle 25. Apr 2006 17:22

Re: Visualisierung des "Output-Streams"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank, hat mir sehr geholfen.

Ich wollte jetzt das Programm von Wishmaster nach meinem Geschmack abändern. Das eingangssignal soll in 10 Balken dargestellt werden. Es Funktioniert soweit auch alles ganz gut, es werden jedoch nur 2 Balken immer richtig dargestellt. Bei den restlichen bewegt sich nichts :/
Wisst ihr vielleicht wodran das liegen kann? Ich habe mein Programm mal angehangen.

Thanx holle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:17 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