bool AC2LPC::process(Ports<InputBuffer*>& inp, Ports<OutputBuffer*>& outp)
{
	assert(inp.size()==1);
	InputBuffer* in = inp[0].data;
	assert(outp.size()==1);
	OutputBuffer* out = outp[0].data;

    assert(out->info().size==m_nbCoeffs);
    assert(in->info().size>m_nbCoeffs);
    while (!in->empty())
    {
        ac2lpc(in->readToken(),out->writeToken(),m_nbCoeffs);
        in->consumeToken();
    }
    return true;
}
Exemple #2
0
  bool Cepstrum::process(Ports<InputBuffer*>& inp, Ports<OutputBuffer*>& outp)
  {
    assert(inp.size()==1);
    InputBuffer* in = inp[0].data;
    if (in->empty())
      return false;
    assert(outp.size()==1);
    OutputBuffer* out = outp[0].data;

    safeLogOp<double> slop;
    VectorXd outDct;
    while (!in->empty())
    {
      Map<VectorXd> inData(in->readToken(),in->info().size);
      outDct.noalias() = m_dctPlan * inData.unaryExpr(slop);
      memcpy(out->writeToken(),outDct.data() + m_ignoreFirst, out->info().size*sizeof(double));
      in->consumeToken();
    }
    return true;
  }
Exemple #3
0
  bool SpecificLoudness::process(Ports<InputBuffer*>& inp, Ports<OutputBuffer*>& outp)
  {
    assert(inp.size()==1);
    InputBuffer* in = inp[0].data;
    if (in->empty()) return false;
    assert(outp.size()==1);
    OutputBuffer* out = outp[0].data;

    const int N = in->info().size;
    const int M = out->info().size;
    while (!in->empty())
    {
      Map<VectorXd> inData(in->readToken(),N);
      double* outData = out->writeToken();
      for (int i=0;i<NB_BARK_BANDS;i++)
        outData[i] = pow(inData.segment(m_bkBdLimits[i],m_bkBdLimits[i+1]-m_bkBdLimits[i]).sum(),0.23);
      in->consumeToken();
    }

    return true;
  }