我试图在我的代码中增加声波的幅度。我有一个缓冲区,其中包含制作波所需的所有字节。

这是我的音频播放代码:

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();
 }

最佳答案

您可以转换为 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 并没有提供开箱即用的效果。

关于c# - 如何使用 Naudio c# 使声音更响亮?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49067902/

10-15 22:16