VU-Meter Anzeigeprobleme mit CSCore

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Pat Rick.

    VU-Meter Anzeigeprobleme mit CSCore

    Guten Tag und schönen Ostersonntag werte Foren-Mitglieder!

    Ich habe ein Problem mit der Anzeige des Mikrofonpegels bei Verwendung von CSCore.
    Im Programm ist eine Combobox(Combobox3), eine Progressbars und ein Timer.

    Deklarationen am Anfang des Progrmmes:

    VB.NET-Quellcode

    1. Private recordMeter As AudioMeterInformationPrivate recdevices As MMDeviceCollection


    Im Form1.Load Event werden die Vorhandenen Devices in der Combobox3 angegeben.

    VB.NET-Quellcode

    1. Using recenumerator As New MMDeviceEnumerator()
    2. recdevices = recenumerator.EnumAudioEndpoints(DataFlow.Capture, DeviceState.Active)
    3. For i As Integer = 0 To recdevices.Count - 1
    4. ComboBox3.Items.Add(recdevices(i))
    5. Next
    6. End Using


    Beim Combobox3.SelectedIndexChanged Event wird das zu verwendende Device ausgewählt:

    VB.NET-Quellcode

    1. recordMeter = AudioMeterInformation.FromDevice(recdevices(ComboBox3.SelectedIndex))


    Und der Timer zeigt mir den Pegel in einer Progressbar an:

    VB.NET-Quellcode

    1. If recordMeter Is Nothing Then
    2. Else
    3. Dim valuerecord = recordMeter.GetChannelsPeakValues()
    4. Mikrofon.Value = CInt(valuerecord(0) * 100)
    5. End If


    Der Code an sich funktioniert ja nur mit einem haken:
    Sobald ich die Aufnahmegeräte im Soundmanager öffne wird mir der aktuelle Pegel angeueigt.
    Sobald ich das Windows-Fenster schließe ist der Wert in der Progressbar 0 und schlägt auch nicht mehr aus.
    PS: Mit der Ausgabe (RenderDevice), also die Anzeige der Lautsprecher, funktioniert alles so wie gewollt.

    Als Anhang noch ein Bild, wie der VU-Meter funktioniert, falls ich mich unklar ausgedrückt habe.
    Bei weiteren Fragen bitte stellen.

    Ich bitte um eure Mithilfe und sage schon vielen Dank im Voraus.
    LG Patrick
    Bilder
    • Anzeige mit Soundmanager.png

      22,03 kB, 532×521, 68 mal angesehen
    @Pat Rick Ist hier zwar anders herum, aber vielleicht hilft es:
    Mini-Audio-Manager - System-Sound bedienen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke @RodFromGermany für den link. Leider bringt mich das aber nicht weiter, da ich ja einen Eingang anzeigen lassen will, der Ausgang funktioniert tadellos.
    Wie bereits oben geschrieben funktioniert der Code für den Mikrofoneingang ja, aber nur wenn der Soundmanager von Windows im Hintergrund läuft (und da nur wenn der Tab Aufnahmegeräte aufgerufen ist).
    Wenn ich den besagten Code jedoch als Ausgabedevice einstelle funktioniert alles ohne den Soundmanager.
    Ich hab jetzt aber in einem alten Projekt etwas ähnliches mit der bass.dll wieder gefunden (Schande, dass ich da nicht früher daran gedacht habe), vielleicht kann ich da was für meine Bedürfnisse umschreiben bzw. verwenden.
    Falls ich was erreicht habe, werde ich mich nochmals hier melden.
    LG Patrick