Laden...

Audio-Peak von Anwendungen auslesen (Code inside) - Frage

Erstellt von Joey2020 vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.263 Views
J
Joey2020 Themenstarter:in
10 Beiträge seit 2020
vor 3 Jahren
Audio-Peak von Anwendungen auslesen (Code inside) - Frage

Hallo Leute,

ich nutzte NAudio zum Auslesen des Soundpeaks meiner Soundkarte...

Das klappt perfekt...

Ich möchte aber den Soundpeak einer Anwendung (zB Firefox) einzeln auslesen...

Diesen Code nutzte ich im Moment:


NAudio.CoreAudioApi.MMDeviceEnumerator enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();
var adevice = enumerator.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All,  Audio.CoreAudioApi.DeviceState.Active);
cbDevice.Items.AddRange(adevice.ToArray());

cdDevice ist eine DropDown-Liste wo alle Devices reingeschrieben werden...

Nun kann ich das Device auswählen und lese dann den Peak mit einem Timer aus:


var adevice = (NAudio.CoreAudioApi.MMDevice) cbDevice.SelectedItem;
txtPeakLevel.Text = adevice.AudioMeterInformation.MasterPeakValue.ToString();

txtPeakLevel ist eine Textbox...

So habe ich natürlich mehrere Anwendungen laufen:
Firefox
Amazon Music
Discord

Und alle Anwendungen machen Sound...

Ich möchte aber nur den Sound von Discord "messen"...
Ich hab mich blöd gesucht, ich finde keine Möglichkeit nur die Anwendung abzufragen.
Immer wird das komplette Device (in meinem Fall eine Realtek-Soundkarte) abgefragt...

Hat jemand ein Codebeispiel wie das gehen soll?!?

Vielen Dank schonmal!
Grüße,
Joerg

5.657 Beiträge seit 2006
vor 3 Jahren

Das heißt Audio Session und dafür gibt es die WASAPI-Schnittstelle: Session Volume Controls

Weeks of programming can save you hours of planning

J
Joey2020 Themenstarter:in
10 Beiträge seit 2020
vor 3 Jahren

Danke, ich hab das schon gesehen - aber es hilft mir nicht weiter da ich es nicht verstehe bzw. nicht verstehe wie es zu programmieren ist... ich bin Anfänger und versuche anhand von Beispielen zu verstehen wie sowas aussehen muss...

Das Peak-Meter für die Soundkarte habe ich ja hinbekommen.

Aber das Peakmeter für eine einzelne Anwendung auf der Soundkarte - das ist das Problem...:-(

5.657 Beiträge seit 2006
vor 3 Jahren

Es gibt keine "einzelne Anwendung auf der Soundkarte". Die Soundkarte gibt nur Audio-Signale aus. Die Signale von den einzelnen Anwendungen werden im Betriebssystem gemischt, und dann auf der Soundkarte ausgegeben. Wenn du die Lautstärke einer bestimmten Anwendung messen willst, mußt du die Signale vor der Mischung abgreifen. Und dazu gibt es die genannte Schnittstelle.

Es gibt für die API eine Dokumentation und Quellcode-Beispiele. Sicherlich nicht für dein spezielles Problem, aber mit ein bißchen Anstrengung findest du dafür die Lösung.

Weeks of programming can save you hours of planning

J
Joey2020 Themenstarter:in
10 Beiträge seit 2020
vor 3 Jahren

Ok, danke.

Ich habs nun 9 Stunden versucht, ich hab alles gelesen und nix verstanden.
Ich denke ich bekomms nicht hin, selbst zum lesen der Doku fehlt mir zuviel Wissen...
Ich lass es jetzt, bringt ja nix jetzt nach 9 Stunden noch weiter nach einem (wahrscheinlich) 10 Zeiler zu "suchen"...:-)

Trotzdem Danke!