如何使用 Nadio c# 使声音更大?

Posted

技术标签:

【中文标题】如何使用 Nadio c# 使声音更大?【英文标题】:How can i make the sound louder with Naudio c#? 【发布时间】:2018-03-02 11:08:03 【问题描述】:

我正在尝试增加代码中声波的幅度。我有一个缓冲区,其中包含产生波浪所需的所有字节。

这是我的音频播放代码:

public void AddSamples(byte[] buffer)

   //somehow adjust the buffer to make the sound louder 

    bufferedWaveProvider.AddSamples(buffer, 0, buffer.Length);
    WaveOut waveout = new WaveOut();
    waveout.Init(bufferedWaveProvider);
    waveout.Play();

    //to make the program more memory efficient
    bufferedWaveProvider.ClearBuffer();
 

【问题讨论】:

你看过这些例子吗?至少 AudioPlaybackDemo 有一个音量滑块:github.com/naudio/NAudio/blob/master/NAudioDemo/… 为我工作。 【参考方案1】:

您可以转换为ISampleProvider,然后尝试通过增益> 1.0 的VolumeSampleProvider 来放大信号。但是,如果任何样本超过 0,您最终可能会遇到硬剪辑。

WaveOut waveout = new WaveOut();
var volumeSampleProvider = new VolumeSampleProvider(bufferedWaveProvider.ToSampleProvider());
volumeSampleProvider.Volume = 2.0f; // double the amplitude of every sample - may go above 0dB
waveout.Init(volumeSampleProvider);
waveout.Play();

更好的解决方案是使用动态范围压缩器效果,但 NAudio 并没有开箱即用。

【讨论】:

感谢您的帮助。很抱歉无法添加到您的代表中,但我自己还没有 15 个 :(。 @pabolo12,你现在有这么多代表了。【参考方案2】:

我也有类似的问题。但可以通过此链接完成:

http://mark-dot-net.blogspot.hu/2009/10/playback-of-sine-wave-in-naudio.html

如果您了解有关您声音的所有详细信息,我认为这会有所帮助

【讨论】:

以上是关于如何使用 Nadio c# 使声音更大?的主要内容,如果未能解决你的问题,请参考以下文章

Nadio - 多声音设备播放和录音问题

使用 Nadio 创建 Clapper 软件

如何使用 Nadio 获取 midi 事件的实时时间

如何使整数“更大”? [关闭]

C# winform,如何使轨迹栏与声音文件一起移动(增加其值)?

如何使用流体合成器从 C# 中的声音字体生成声音