C# - 使用外部Midi控制器更改音量

时间:2016-05-09 10:04:35

标签: c# midi naudio

在我的应用程序中,我使用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或其他音频软件生产商时,它会起作用。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

使用ASIO,您可以通过修改发送到设备的样本级别来更改音量。没有设备量的概念。因此,请在信号链中添加VolumeSampleProvider或类似内容,并在该

上设置音量