Esempio n. 1
0
void TCSGram::getTCSVector(int iPosition, TCSVector& rTCSVector) const
{
	if (iPosition < 0) 
		rTCSVector = TCSVector();
	else if (iPosition >= m_VectorList.size())
		rTCSVector = TCSVector();
	else
		rTCSVector = m_VectorList[iPosition].second;
}
Esempio n. 2
0
TCSGram::TCSGram() :
	m_uNumBins(6),
	m_dFrameDurationMS(0.0)
{
	for (size_t k = 0; k < m_VectorList.size(); ++k) {
		m_VectorList[k].first = 0;
		m_VectorList[k].second = TCSVector();
	}
}
Esempio n. 3
0
TonalChangeDetect::FeatureSet
TonalChangeDetect::process(const float *const *inputBuffers,
                           Vamp::RealTime timestamp)
{
    if (!m_chromagram) {
        cerr << "ERROR: TonalChangeDetect::process: "
             << "Chromagram has not been initialised"
             << endl;
        return FeatureSet();
    }

    if (!m_haveOrigin) m_origin = timestamp;

    // convert float* to double*
    double *tempBuffer = new double[m_block];
    for (size_t i = 0; i < m_block; ++i) {
        tempBuffer[i] = inputBuffers[0][i];
    }

    double *output = m_chromagram->process(tempBuffer);
    delete[] tempBuffer;

    for (size_t i = 0; i < 12; i++)
    {
        m_vaCurrentVector[i] = output[i];
    }


    FeatureSet returnFeatures;

    if (m_stepDelay == 0) {
        m_vaCurrentVector.normalizeL1();
        TCSVector tcsVector = m_TonalEstimator.transform2TCS(m_vaCurrentVector);
        m_TCSGram.addTCSVector(tcsVector);

        Feature feature;
        feature.hasTimestamp = false;
        for (int i = 0; i < 6; i++)
        {
            feature.values.push_back(static_cast<float>(tcsVector[i]));
        }
        feature.label = "";
        returnFeatures[0].push_back(feature);

        return returnFeatures;
    }

    if (m_pending.size() == m_stepDelay) {

        ChromaVector v = m_pending.front();
        v.normalizeL1();
        TCSVector tcsVector = m_TonalEstimator.transform2TCS(v);
        m_TCSGram.addTCSVector(tcsVector);

        Feature feature;
        feature.hasTimestamp = false;
        for (int i = 0; i < 6; i++)
        {
            feature.values.push_back(static_cast<float>(tcsVector[i]));
        }
        feature.label = "";
        returnFeatures[0].push_back(feature);
        m_pending.pop();

    } else {
        returnFeatures[0].push_back(Feature());
        m_TCSGram.addTCSVector(TCSVector());
    }

    m_pending.push(m_vaCurrentVector);


    return returnFeatures;
}