Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不必要的音频强度降低_C#_Winforms_Naudio - Fatal编程技术网

C# 不必要的音频强度降低

C# 不必要的音频强度降低,c#,winforms,naudio,C#,Winforms,Naudio,我有一个c#windows窗体项目,其中包含以下c#代码,它使用NAudio库的BiQuadFilter类来实现低通滤波器。我面临的问题是,声音的强度也随着频率而下降,因此音量几乎听不见。我怎样才能解决这个问题 我的代码: private ISampleProvider sourceProvider; private BiQuadFilter[] filters; private int channels,cutOffFreq; //Constructor

我有一个c#windows窗体项目,其中包含以下c#代码,它使用NAudio库的BiQuadFilter类来实现低通滤波器。我面临的问题是,声音的强度也随着频率而下降,因此音量几乎听不见。我怎样才能解决这个问题

我的代码:

    private ISampleProvider sourceProvider;
    private BiQuadFilter[] filters;
    private int channels,cutOffFreq;

    //Constructor
    public MyFilter(ISampleProvider sourceProvider,int cutOffFreq)
    {
        this.sourceProvider = sourceProvider;
        this.cutOffFreq = cutOffFreq;

        channels = sourceProvider.WaveFormat.Channels;
        filters = new BiQuadFilter[channels];
        CreateFilters();
    }

    private void CreateFilters()
    {
        for (int n = 0; n < channels; n++)
            if (filters[n] == null)
                filters[n] = BiQuadFilter.LowPassFilter(44100, cutOffFreq, 1);
            else
                filters[n].SetLowPassFilter(44100, cutOffFreq, 1);
    }

    public WaveFormat WaveFormat { get { return sourceProvider.WaveFormat; } }

    public int Read(float[] buffer, int offset, int count)
    {
        int samplesRead = sourceProvider.Read(buffer, offset, count);

        for (int i = 0; i < samplesRead; i++)
            buffer[offset + i] = filters[(i % channels)].Transform(buffer[offset + i]);

        return samplesRead;
    }

我不知道你的原始材料是什么,但是一个截止频率只有750Hz的低通滤波器可能会从你的原始信号中去除很多。一般来说,过滤器会使事情变得更安静。随后放大声音(例如,变换后将每个样本乘以一个增益因子)。

在哪里称为公共整数读取?
    waveOut.Init(new MyFilter(new AudioFileReader(path + "\\Audio_Tracks\\" + topic + "\\" + currentTrack + ".wav"), 750));

    waveOut.Play();