Я пытаюсь построить эквалайзер для каждого процесса в C#, используя библиотеку CSCore. Так что в основном это расширенный микшер громкости. Моя проблема в том, что я не могу найти способ получить аудиопоток. Я могу получить IWaveSource на основе процесса, но не фактического вывода.
Вот мой текущий код:
private Equalizer eq;
private ISoundOut soundOut;
private IWaveSource waveSource;
private void Test()
{
using (var enumerator = new MMDeviceEnumerator())
{
foreach (MMDevice device in enumerator.EnumAudioEndpoints(DataFlow.All, DeviceState.Active))
{
Console.WriteLine(device.FriendlyName);
using (var sessionManager = AudioSessionManager2.FromMMDevice(device))
{
using (var sessionEnumerator = sessionManager.GetSessionEnumerator())
{
foreach (var session in sessionEnumerator)
{
using (var audioMeterInformation = session.QueryInterface<AudioMeterInformation>())
using (var session2 = session.QueryInterface<AudioSessionControl2>())
{
Console.WriteLine("Peak:" + audioMeterInformation.GetPeakValue());
Console.WriteLine(session2.ProcessID);
Console.WriteLine(session2.Process.ProcessName);
try
{
Console.WriteLine(session2.Process.MainWindowTitle);
waveSource = CodecFactory.Instance.GetCodec(session2.Process.MainModule.FileName);
if (session2.Process.ProcessName == "Spotify")
{
eq = Equalizer.Create10BandEqualizer(waveSource.ToSampleSource());
foreach (EqualizerFilter filter in eq.SampleFilters)
{
filter.AverageGainDB = 10;
}
soundOut = new DirectSoundOut(1000);
soundOut.Initialize(eq.ToWaveSource(16));
soundOut.Volume = 1.0f;
soundOut.Play();
}
}
catch
{
}
}
}
}
}
}
}
}
Это в основном весь код программы. Как только я начал заниматься программированием, это все, что у меня есть, кроме конструктора.
Сначала я хотел проверить, смогу ли я получить базовое c аудио воспроизведение Spotify, но это тот момент, когда я получил застрял.
Если вы знаете надлежащую документацию для библиотеки CSCore, я был бы благодарен, если бы вы поделились ссылкой на нее. В противном случае заранее спасибо.