Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Soundspektrum des Systemsounds ohne "Input" (https://www.delphipraxis.net/176580-soundspektrum-des-systemsounds-ohne-input.html)

Delphi-Narr 14. Sep 2013 22:15

Soundspektrum des Systemsounds ohne "Input"
 
Hallo,
ich habe ein eigenständiges Programm geschrieben, über welches ich andere Programme steuern kann, Daten auslesen und darstellen kann.
Unter anderem ist auch eine Steuerung für einen Musikplayer integriert - neben den allgemeinen Titelinformationen soll auch eine Art Visualisierung erfolgen.
Da diese über eine Konstruktion von Arduino Uno, Transistoren etc. auf einer RGB LED Kette ausgegeben wird, soll die Visualisierung sich nur auf Farben beschränken.
Bisher analysiert das Programm nur den aktuellen Peak der Lautsprecher und berechnet dann je nach Modus eine Farbe.
Damit das Ganze aber etwas besser an die Musik angepasst wird, möchte ich nun das Spektrum analysieren und Peaks für die einzelnen Frequenzbereiche erhalten.
Die Bass.dll kann das ja generell, doch muss sie entweder selbst der Player sein oder ein Input durch ein Mikrofon bekommen. Bei Wiedergabe über die Realtec Soundkarte ist das dank Stereomix
zwar möglich, wird die Musik jedoch über eine andere Soundkarte (USB - Logitech G930) ausgegeben, steht diese Option nicht zur Verfügung.
Gibt es sonst noch eine andere DLL oder generell eine Möglichkeit, das Spektrum zu erhalten? (Color Factory schafft es auch beim G930, das Spektrum zu erhalten).

Viele Grüße!

Medium 15. Sep 2013 03:12

AW: Soundspektrum des Systemsounds ohne "Input"
 
Es ist ein wenig unklar, wie und in welcher Form du deine Daten bekommst. Aber wenn du den Level für jedes einzelne Sample hast, sollte das ja in Summe die gesamte Audiodatei sein. In dem Fall wäre es dann das einfachste, wenn du "schlicht" deine eigene FFT über einen kleinen Buffer jagst. Die FFT kann man nun selber implementieren (Code dazu spuckt Google in erschreckenden Mengen aus), es gibt aber auch DLLs die das mit recht pfiffigen und schnellen Methoden machen. (Auch diese lassen sich finden.) Das Ergebnis der FFT ist genau was du suchst: Das Frequenzspektrum (genauer: die Ausschläge der jeweiligen Frequenzen) des dort hineingesteckten Buffers (in deinem Fall mit Zeit-Amplituden-Signal).

BenjaminH 15. Sep 2013 10:40

AW: Soundspektrum des Systemsounds ohne "Input"
 
Hi,
mit der bass.dll kann man ab Windows 7 direkt den Audioausgang abgreifen, also das was Stereo-Mix macht, nur, ohne dass es Stereo-Mix explizit gibt.
Hier wird erklärt, wie das geht: http://www.un4seen.com/forum/?topic=8816

Viele Grüße,
Benjamin

Delphi-Narr 15. Sep 2013 10:52

AW: Soundspektrum des Systemsounds ohne "Input"
 
Also dass man den Audioausgang direkt abgreifen kann, klingt schonmal gut! Da werde ich mich dann mal einlesen und das Ganze testen.

@Medium:
Die "Daten" bestanden bisher daraus, dass ich mit der TAudioVolume Komponente einfach immer den Peak des Wiedergabegerätes abgefragt habe.
Damit lässt sich zwar schon einiges anfangen, aber die LEDs im Rhythmus pulsieren zu lassen, gestaltet sich hiermit etwas schwer (klappt zwar einigermaßen, ist aber fehlerbehaftet)

lbccaleb 15. Sep 2013 11:19

AW: Soundspektrum des Systemsounds ohne "Input"
 
Du hast auch die Möglichkeit die Sound-Daten direkt vom System abzugreifen. Dazu brauchst du das DSPack und die DSP-Worx Komponenten.
Auf der DSP-Worx Seite findest du Bsp. wie sowas funktioniert. Und dann brauchst du auch keine externen Bibliotheken...

http://dsp-worx.de/

EWeiss 15. Sep 2013 12:50

AW: Soundspektrum des Systemsounds ohne "Input"
 
Sorry aber..

DSPack und DSP-Worx Komponenten sind um ein weiteres schlimmer als
Bibliotheken dafür zu verwenden.

Warum also riesen Komponenten in ein Projekt einbinden wenn man das gleiche mit einer 1MB Lib erledigen kann.

Meine Meinung.

gruss

Delphi-Narr 18. Sep 2013 17:20

AW: Soundspektrum des Systemsounds ohne "Input"
 
Danke für die vielen Hinweise!
Ich habe jetzt mit einigen Problemen das DS-Pack installiert und probiere jetzt ein bisschen damit rum.
Die TDCSpectrum Komponente hört sich von der Kurzbeschreibung auf der Seite ja nicht schlecht an:
"Designed to retrieve some Values to do Visual drawing of a Spectrum. Output has always the same scaling on every Buffertype."

Jetzt fehlt mir nur irgendwie die Dokumentation dazu - was muss ich da jetzt machen, damit ich das Spektrum bekomme?

Viele Grüße!

lbccaleb 18. Sep 2013 22:03

AW: Soundspektrum des Systemsounds ohne "Input"
 
Schau dir mal die beigefügten Beispiel-Anwendungen der DSP-Worx Komponenten an. Dort kannst du dir das abschauen, wie das funktioniert. Leider sind die Komponenten nicht großartig Kommentiert. Hilft also nur learning bei doing ;)

Ist aber eigentlich nicht so schwer...

Delphi-Narr 19. Sep 2013 17:14

AW: Soundspektrum des Systemsounds ohne "Input"
 
Leider gibt es nur eine Beispielanwendung, in der alle Funktionen zusammengewürfelt sind.
Wie ich die Spectrum-Komponente anspreche, hab ich jetzt (glaube ich zumindest) herausgefunden, doch im Beispiel geht die Analyse
nur über eine abgespielte Datei, nicht über die Soundkarte...
Hat keiner schon Erfahrungen damit gemacht, wie das ohne abzuspielende Datei geht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz