如何使用 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# 使声音更大?的主要内容,如果未能解决你的问题,请参考以下文章