2015-02-23 3 views
0

У меня есть проект формы C# c следующим кодом C#, который использует класс BiQuadFilter библиотеки NAudio для реализации фильтра нижних частот. Проблема, с которой я сталкиваюсь, заключается в том, что интенсивность звука также падает вместе с частотой, при этом объем едва слышен. Как я могу это исправить?Нежелательная интенсивность аудиоинтенсивности

Мой код:

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

Это, как я использую его:

waveOut.Init(new MyFilter(new AudioFileReader(path + "\\Audio_Tracks\\" + topic + "\\" + currentTrack + ".wav"), 750)); 

    waveOut.Play(); 
+0

Где вы называете открытый int? Читайте? – DonP

ответ

0

Ну я не знаю, что ваш исходный материал, а фильтр нижних частот с частотой среза всего 750 Гц, вероятно, будет сильно сокращать ваш исходный сигнал. Вообще говоря, фильтр сделает вещи более спокойными. После этого усилите звук (например, умножьте каждый образец на коэффициент усиления после его преобразования).

+0

коэффициент усиления? – Chuker

Смежные вопросы