Изменить
После модификации исходного кода NAudio и небольшой отладки я обнаружил, что функция mixerSetControlDetails
, которая вызывается при установке свойства Value
, возвращает MMSYSERR_ERROR
.
Есть ли способ получить дополнительную информацию о том, почему mixerSetControlDetails
не удалось?
Я также открыт для других способов сделать то же самое на C#.
Исходный
У меня есть код, который вычисляет энергию голоса и устанавливает уровень усиления микрофона в соответствии с этим вычисленным значением с помощью NAudio. У меня нет проблем с чтением аудиосэмплов, но когда я пытаюсь установить усиление микрофона, программа зависает.
Я проверил проблему на Windows 7, 8 и 8.1. Проблема возникает только на Windows 8.1. Интересно, что когда я запускаю программу на виртуальной машине с Windows 8.1, она работает как положено. Может ли это быть проблемой разрешения?
Вот код для установки значения повышения
foreach (MixerControl mixerControl in MixerLine.Controls)
{
if (mixerControl.ControlType == MixerControlType.Volume)
{
UnsignedMixerControl volumeControl = (UnsignedMixerControl)mixerControl;
volumeControl.Value = (uint) value;
}
}
Где MixerLine создается заранее с помощью этого кода.
MixerLine = new MixerLine((IntPtr) deviceID, 0, MixerFlags.WaveIn);