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

Posted

技术标签:

【中文标题】C# - 使用外部 Midi 控制器更改音量【英文标题】:C# - Change volume using external Midi controller 【发布时间】:2016-05-09 10:04:35 【问题描述】:

在我的应用程序中,我使用 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 驱动程序控制音量的问题 :) 【参考方案1】:

使用 ASIO,您可以通过修改发送到设备的样本级别来更改音量。没有设备体积的概念。因此,在您的信号链中包含 VolumeSampleProvider 或类似名称,并在其上设置音量

【讨论】:

以上是关于C# - 使用外部 Midi 控制器更改音量的主要内容,如果未能解决你的问题,请参考以下文章

用 C# 制作 Spotify 控制器

C# / nAudio - 向控制器发送 MIDI 消息

Windows Vista/7 上的 SDL_Mixer MIDI 音量问题

从 PHP 或 Web UI 控制 Windows 音量

从 C# 控制台应用程序枚举 UWP MIDI API 设备?

如何在 MIDI 文件中嵌入控制更改命令