# HG changeset patch # User Carl Bussey # Date 1412090371 -3600 # Node ID c7cc649dc9b68ffe5537b97faaa918970f4478e4 # Parent 45ba1627d80292be511d5075eaa05aabf3d84cc8 * I had made further changes to previous revisions accidentally. Now should wor. diff -r 45ba1627d802 -r c7cc649dc9b6 TempogramPlugin.cpp --- a/TempogramPlugin.cpp Tue Sep 30 15:00:23 2014 +0100 +++ b/TempogramPlugin.cpp Tue Sep 30 16:19:31 2014 +0100 @@ -239,6 +239,18 @@ d8.isQuantized = true; d8.quantizeStep = 1; list.push_back(d8); + + ParameterDescriptor d9; + d8.identifier = "refBPM"; + d8.name = "Cyclic Tempogram Reference Tempo"; + d8.description = "The reference tempo used when calculating the Cyclic Tempogram parameter \'s\'."; + d8.unit = ""; + d8.minValue = 5; + d8.maxValue = 60; + d8.defaultValue = 30; + d8.isQuantized = true; + d8.quantizeStep = 1; + list.push_back(d8); return list; } @@ -270,6 +282,9 @@ else if (identifier == "octDiv"){ return m_cyclicTempogramOctaveDivider; } + else if (identifier == "refBPM"){ + return m_cyclicTempogramReferenceBPM; + } return 0; } @@ -302,6 +317,9 @@ else if (identifier == "octDiv"){ m_cyclicTempogramOctaveDivider = value; } + else if (identifier == "refBPM"){ + m_cyclicTempogramReferenceBPM = value; + } } @@ -349,6 +367,18 @@ d1.sampleType = OutputDescriptor::FixedSampleRate; d_sampleRate = tempogramInputSampleRate/m_tempogramHopSize; d1.sampleRate = d_sampleRate > 0.0 && !isnan(d_sampleRate) ? d_sampleRate : 0; + vector< vector > logBins = calculateTempogramNearestNeighbourLogBins(); + if (!logBins.empty()){ + float scale = pow(2,floor(60/logBins[0][0])); + + cerr << m_cyclicTempogramOctaveDivider << endl; + for(int i = 0; i < m_cyclicTempogramNumberOfOctaves; i++){ + float s = fmod(binToBPM(logBins[0][i]), m_cyclicTempogramReferenceBPM)*scale; + d1.binNames.push_back(floatToString(s)); + cerr << i << endl; + //cerr << m_cyclicTempogramOctaveDivider << " " << s << endl; + } + } d1.hasDuration = false; list.push_back(d1);