Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Audio-Peak von Anwendungen auslesen (Code inside) - Frage
Joey2020
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Joey2020
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

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...:-(
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Joey2020
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers