Erstmal freut mich das große Interesse an der Bibliothek :).
Mangels Zeitgründen, kann ich dir das heute jedoch nicht mehr alles beantworten. Werde dir aber morgen gerne alle gestellten Fragen beantworten. Aber vorab mal soviel: Es ist alles möglich (oder zumindest etwas eingeschränkt möglich).
Die restlichen Fragen kommen dann morgen :).
Mangels Zeitgründen, kann ich dir das heute jedoch nicht mehr alles beantworten. Werde dir aber morgen gerne alle gestellten Fragen beantworten. Aber vorab mal soviel: Es ist alles möglich (oder zumindest etwas eingeschränkt möglich).
- Was genau verstehst du unter einer DeviceID? Je nach dem welche API du verwendest, hat DeviceID eine andere Bedeutung. Bei WaveIn ist das einfach ein Index der bei 0 beginnt. Bei Wasapi ist das ein Guid den kein Mensch lesen kann ;). Jedoch wird durch die ISoundIn Schnittstelle, das so abstrahiert, dass diese eine WaveFormat Eigenschaft hat (wird nach dem Initialisieren verfügbar), welche wiederum eine Channels Eigenschaft hat. Dort kannst du dann die Anzahl der Kanäle auslesen.
- Unter "tatsächlich" verstehst du (nehme ich mal an) sicherlich den Peak. Auch das ist möglich. Jedoch nicht direkt am SoundOut sondern durch eine Source. Das kommt jedoch auf exakt das gleiche raus. Ich hatte mal so eine Source, die das unterstützt hatte. Diese war jedoch veraltet und ich habe sie entfernt und bis jetzt nicht ersetzt (kann das aber morgen machen, da das so gut wie keine Arbeit ist).
- Dafür gibt es die die PanSource-Klasse: cscore.codeplex.com/SourceCont…Core/Streams/PanSource.cs. Dort einfach die Pan Eigenschaft verändern. 1 = nur links, -1 = nur rechts und 0 ist ausgeglichen. Dies funktioniert jedoch nur für Stereo-Streams. Falls du komplexere Streams hast mit 3 und mehr Kanälen, dann könnte man den DmoChannelResampler verwenden, welcher sowohl als Resampler dient als auch eine ChannelMatrix verwenden kann.
- Du startest ganz normal eine Aufnahme (jedoch ohne Eventhandler auf das DataAvailable-Event) sondern verwendest die SoundInSource. Dort gibst du beim Konstruktor die SoundIn-Schnittstelle der Aufnahme an (also z.B. die WasapiCapture- oder die WaveIn-Instanz) und diese SoundInSource, kannst du dann wiederum bei einem SoundOut wiedergeben.
soundOut.Initialize(new SoundInSource(soundIn));
vereinfacht ausgedrückt. soundOut und soundIn müssen jeweils initialisiert und gestartet werden. Jedoch MUSS das soundIn initialisiert werden bevor eine SoundInSource Instanz damit erzeugt wird. - Gab vor längerer Zeit mal einen Thread über dieses Thema: [VB.NET] Systemlautstärke auslesen und ändern
Die restlichen Fragen kommen dann morgen :).