.net - 如何使用 NAudio 更改 wav 资源的音量?

标签 .net vb.net winforms naudio wave

在我的应用程序中,我播放两个声音文件,它们是 Wave 文件,两个资源,一个用于“成功”操作,另一个用于发生“错误”操作。

所以为了玩它们,我这样做:

My.Computer.Audio.Play(My.Resources.Success, AudioPlayMode.Background)

现在我想在我的应用程序中添加一个选项来修改该波形文件的音量,我的意思是用比原始音量更小的音量来播放它们(如果用户想要这样做)。

我在 Google 上搜索了 Naudio 和其他像我一样的 StackOverFlow 问题,我注意到 NAudio 库可以完成这项工作,问题是所有示例都是用 C# 编写的,而且都是超专业编码的,所以我真的不明白我是如何做到的可以更改我的 wav 文件的音量。

我正在使用 VB.NET。

如果您需要其他信息,那么这里是 NAudio 库:http://naudio.codeplex.com/releases/view/96875

这是 NAudio 的 DemoApp 中有趣的部分,我认为这是音量如何增加或减少的......但我不确定:

        namespace NAudioDemo.AudioPlaybackDemo

        this.fileWaveStream = plugin.CreateWaveStream(fileName);
        var waveChannel =  new SampleChannel(this.fileWaveStream, true);
        this.setVolumeDelegate = (vol) => waveChannel.Volume = vol;
        waveChannel.PreVolumeMeter += OnPreVolumeMeter;

        var postVolumeMeter = new MeteringSampleProvider(waveChannel);
        postVolumeMeter.StreamVolume += OnPostVolumeMeter;

最佳答案

如果您可以将资源作为 Stream 获取,那么您可以使用 WaveFileReader 来加载它,然后将其传递到 SampleChannel 以允许您调节音量。不需要 MeteringSampleProvider

关于.net - 如何使用 NAudio 更改 wav 资源的音量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17575980/

相关文章:

c# - 未从项目中的 App.config 读取连接字符串

vb.net - 在按钮中定位图像和文本

.net - Amazon EC2 API 和 Windows 实例 - 有什么方法可以分配驱动器号?

.net - 如何从 Visual Studio 的工具箱中删除用户控件条目?

c# - 我可以使用 LINQ GroupBy 更干净地执行此操作吗?

c# - AppBar 焦点问题

.net - Msvcr71.dll Msvcp71.dll 丢失

c# - 是否可以将 web.config 中的位置授权节点设为外部?

vb.net - 后台 worker 不起作用... VB.Net

vb.net - 跨线程操作无效