C# - 使用外部 Midi 控制器更改音量
C# - Change volume using external Midi controller
在我的应用程序中,我使用 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 或其他音频软件制作人时,它以某种方式工作。
感谢您的帮助。
使用 ASIO,您可以通过修改发送到设备的样本电平来改变音量。没有设备体积的概念。因此,在您的信号链中包含一个 VolumeSampleProvider
或类似的,并在其上设置音量
在我的应用程序中,我使用 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 或其他音频软件制作人时,它以某种方式工作。
感谢您的帮助。
使用 ASIO,您可以通过修改发送到设备的样本电平来改变音量。没有设备体积的概念。因此,在您的信号链中包含一个 VolumeSampleProvider
或类似的,并在其上设置音量