Exemplo n.º 1
0
  public int processAudio(AudioBuffer ab) {

    int dstBuffSize = ab.getSampleCount();
    int NN;
    FIRFilter ff;
    // grab filter and NN
    synchronized (lock) {
      ff = filt;
      NN = N;
    }

    if (chunk == null || overBuffSize != dstBuffSize * NN) {
      overBuffSize = dstBuffSize * NN;
      chunk = new AudioBuffer("oversampled", 1, overBuffSize, ab.getSampleRate() * NN);
    }
    chunk.makeSilence();
    src.processAudio(chunk);
    ff.processAudio(chunk);

    float upa[] = chunk.getChannel(0);

    for (int chn = 0; chn < ab.getChannelCount(); chn++) {
      float a[] = ab.getChannel(chn);

      for (int i = 0; i < dstBuffSize; i++) {
        a[i] = upa[NN * i];
      }
    }
    return AUDIO_OK;
  }
Exemplo n.º 2
0
  void createFilter(int n, float coeffs[]) {
    //        float alpha = 5;
    //        int order = 50;
    //        float bandwidth = 00;
    //        FIRFilterDesign d = new FIRFilterDesign(alpha, sampRate * n, sampRate / 2.4f,
    // FIRFilterDesign.LPF, order,
    //                FIRFilterDesign.KAISER, bandwidth);
    //        float coeffs[] = d.getCoefficients();
    FIRFilter filt1 = new FIRFilter();
    filt1.setCoeffs(coeffs);

    // there is a miniscule chance that concurrency problems might happen here.
    synchronized (lock) {
      filt = filt1;
      N = n;
    }
  }