VB 4/6- und VBA-Forum - Beitragsübersicht -
ThemaVB6: Mit VB6 den Audio Output Level unter Win7 prüfen/überwachen
Von Mike
Datum 15. Dezember 2016 um 16:13:22
Frage Guten Abend,

wie kann man denn mit VB6 einfach nur die Gesamtlautstärke (Volume Meter?) unter Win7 abfragen/überwachen?
Für .NET und Co. findet man im Netz sehr viel, aber für VB6 in Verbindung mit Windows 7 x64 scheint es nichts zu geben.

Ich hätte gerne so eine Art VU-Pegel-Meter (Gesamtausgang vom System).
Da ich eine kleine Anwendung schreibe, die auf den BEAT reagieren soll, benötige ich so etwas.

Gibt es da keinen einfachen Ein- oder Zweizeiler a la "GetSystemMasterVolumeOutput" oder so?

Ich habe da so eine nette Progressbar und würde den Value der Lautstärke darüber optisch anzeigen lassen.
Geht die Systemlautstärke auch von 0-100 oder gelten da andere Werte?

Danke

Mike
Antwort:
Von Mike
Datum 26. Dezember 2016 um 09:32:44
Antwort Guten Tag und Euch einen schönen 2. Weihnachtsfeiertag,

im Netz habe ich nun eine "AudioEndpointVolume.cls" gefunden
und konnte damit schon ein paar Erfolge erzielen.
Leider begrenzen sich die Erfolge auf "muten", "unmuten"
und das Auslesen des aktuellen Status des Lautstärkereglers in dB (-46,5 bis 0).

Mein Wunsch war es ja, den Level des Ausgabesignals einzulesen => VU oder so.

Nun habe ich herausgefunden, dass ich dafür wohl die "GetVolumeRange"-Methode brauche:
[url=""]https://msdn.microsoft.com/en-us/library/windows/desktop/dd368039(v=vs.85).aspx[/url]

Das Beispiel bei MSDN ist leider wieder in englisch und auch nur für C++.

Aufrufen kann ich es zwar, aber bekomme keine Werte rein.


Beim Link steht ja Folgendes geschrieben:

Zitat:
...The GetVolumeRange method gets the volume range, in decibels, of the audio stream that enters or leaves the audio endpoint device....


Das ist doch genau das, was ich suche, richtig?
Also kann ich darüber das Output vom System überwachen?

Ich habe nun diesen Code benutzt, aber es geht nicht:
SystemVolume1.Text = Volume.GetVolumeRange()
Sobald ich das "(" eingebe, erscheint ja ein Hinweis, dass da noch 3 Parameter erwartet werden. Nur, diese weiß ich ja (noch) nicht.
Bei der MSDN steht ja auch diesbezüglich geschrieben:
Zitat:
HRESULT GetVolumeRange(
[out] float *pfLevelMinDB,
[out] float *pfLevelMaxDB,
[out] float *pfVolumeIncrementDB
);


Durch Einlesen habe ich herausgefunden, dass
-der minimale DB Level -46,5 dB ist
-der maximale DB Level 0 dB ist
-dazwischen stets mit 0,00001 abgesenkt oder angehoben wird.
Infolgedessen müsste doch der increment (steigende Wert) 0,0001 sein, richtig?

Nun habe ich geschlussfolgert und dies einfach einmal in den Code gehaut,
da ich das so verstanden habe:
SystemVolume1.Text = Volume.GetVolumeRange(-46.5, 0, 0.00001)
Tja, es geht nicht.

Habe ich es denn richtig verstanden, dass damit der Lautstärkebereich,
der aktuell abgespielt wird und sich stets verändert, abgerufen werden kann?


Mir ging es ja nur um ein LEVEL-Meter.

Danke

[ Antwort schreiben | Zurück zum VB 4/6- und VBA-Forum | Forum-Hilfe ]
Antworten
VB6: Mit VB6 den Audio Output Level unter Win7 prüfen/überwachen - Mike 15. Dezember 2016 um 16:13:22
Lösung gefunden, aber funktioniert nicht richtig. Hilfe? - Mike 26. Dezember 2016 um 09:32:44

Ihre Antwort
(Nick-)Name   Wichtige Informationen zur Namensangabe
E-Mail (opt.)  Wichtige Informationen zur Angabe einer eMail-Adresse
Thema   Wichtige Informationen zur Angabe eines Themas
Betrifft (IDE)  Visual Basic 6 (*.exe)
Ihre Antwort
Smilies
Mehr...
FettKursivUnterstrichen   Übersicht der Tipp-KürzelÜbersicht der Projekt-KürzelÜbersicht der Bücher-Kürzel 
Homepage
Titel
Root-Smilies              
             
             
[ Zurück zum VB 4/6- und VBA-Forum | Forum-Archiv | Forum-Hilfe | Chat ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB.Net | .Net-Forum | DirectX | DirectX-Forum | Chat | Ausschreibungen | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 13. Dezember 2015