在我的应用程序中,我使用Midi-dot-net获取NoteON消息,使用NAudio播放音频样本/注释。在NAudio,我使用ASIO实现以降低延迟,并且它运行良好。但我控制音量有问题。 在我使用ASIO引擎之前,我能够以这种方式控制音量(代码的某些部分):
private void...()
{
int NewVolume = ((ushort.MaxValue / 50) * trackWave.Value);
uint NewVolumeAllChannels = (((uint)NewVolume & 0x0000ffff) | ((uint)NewVolume << 16));
waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels);
volumeN.Text = trackWave.Value.ToString();
}
当我在NAudio中使用ASIO实现它无法正常工作时,我只能将声音静音,但无法改变音量。
您是否知道如何通过使用放置在外部Midi控制器中的音量滑块来控制音量?不知何故,当我用ASIO驱动程序测试Steinberg或Synthogy或其他音频软件生产商时,它会起作用。
感谢您的帮助。
答案 0 :(得分:1)
使用ASIO,您可以通过修改发送到设备的样本级别来更改音量。没有设备量的概念。因此,请在信号链中添加VolumeSampleProvider
或类似内容,并在该