Chris@39: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@39: Chris@42: /* Chris@42: Tipic Chris@42: Chris@42: Centre for Digital Music, Queen Mary, University of London. Chris@42: Chris@42: This program is free software; you can redistribute it and/or Chris@42: modify it under the terms of the GNU General Public License as Chris@42: published by the Free Software Foundation; either version 2 of the Chris@42: License, or (at your option) any later version. See the file Chris@42: COPYING included with this distribution for more information. Chris@42: */ Chris@42: Chris@39: #include "CENS.h" Chris@39: Chris@42: #include "maths/MathUtilities.h" Chris@39: #include "OctaveFold.h" Chris@39: #include "Resize.h" Chris@39: Chris@39: #include Chris@39: #include Chris@39: Chris@39: using namespace std; Chris@39: Chris@39: static Quantize::Parameters Chris@39: qparams(CENS::Parameters params) Chris@39: { Chris@39: Quantize::Parameters qp; Chris@39: qp.steps = params.quantSteps; Chris@39: qp.weights = params.quantWeights; Chris@39: return qp; Chris@39: } Chris@39: Chris@39: CENS::CENS(Parameters params) : Chris@39: m_params(params), Chris@39: m_quantize(qparams(params)) Chris@39: { Chris@39: } Chris@39: Chris@39: CENS::~CENS() Chris@39: { Chris@39: } Chris@39: Chris@39: RealBlock Chris@39: CENS::process(const RealBlock &in) Chris@39: { Chris@39: if (in.empty()) { Chris@39: return in; Chris@39: } Chris@39: Chris@39: RealBlock out; Chris@39: Chris@39: for (RealColumn col: in) { Chris@39: Chris@39: out.push_back(m_quantize.process Chris@42: (MathUtilities::normaliseLp Chris@39: (OctaveFold::process Chris@39: (Resize::process(col)), Chris@39: m_params.normP, m_params.normThresh))); Chris@39: } Chris@39: Chris@39: return out; Chris@39: } Chris@39: