Better structure

This commit is contained in:
Flamefire committed 2014-03-29 22:54:37 +01:00
1 parent 6ad9f6a1ef
commit 4c597cb4f8
15 files changed
+54 -44

No files matched your search

+2 -3
View File
@@ -1,5 +1,4 @@
#pragma once #pragma once
#include "pitch.hh"
#include "PitchWrapper.h" #include "PitchWrapper.h"
#include <stdlib.h> #include <stdlib.h>
#include <cmath> #include <cmath>
@@ -40,8 +39,8 @@ void freeDoubleArray(double* floats){
free(floats); free(floats);
} }
double ToneToNote(const Tone* tone){ double FreqToNote(double freq){
return 12.0 * std::log(tone->freq / 127.09) / std::log(2.0) + 27.5 - 16; // 16 = C2 return 12.0 * std::log(freq / 127.09) / std::log(2.0) + 27.5 - 16; // 16 = C2
} }
/* /*
-2
View File
@@ -1,2 +0,0 @@
Some code is taken from Performous: https://github.com/performous/performous/tree/master/game
From 25.03.2014
+7 -7
View File
@@ -168,21 +168,21 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="compatibility.cpp" /> <ClCompile Include="compatibility.cpp" />
<ClCompile Include="pitch.cc" /> <ClCompile Include="performous\pitch.cc" />
<ClCompile Include="pitchTracker.cpp" /> <ClCompile Include="pdaAKF.cpp" />
<ClCompile Include="PitchWrapper.cpp" /> <ClCompile Include="PitchWrapper.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="compatibility.h" /> <ClInclude Include="compatibility.h" />
<ClInclude Include="Helper.h" /> <ClInclude Include="Helper.h" />
<ClInclude Include="libda\fft.hpp" /> <ClInclude Include="performous\libda\fft.hpp" />
<ClInclude Include="libda\sample.hpp" /> <ClInclude Include="performous\libda\sample.hpp" />
<ClInclude Include="pitchTracker.h" /> <ClInclude Include="pdaAKF.h" />
<ClInclude Include="PitchWrapper.h" /> <ClInclude Include="PitchWrapper.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="pitch.hh" /> <None Include="performous\pitch.hh" />
<None Include="util.hh" /> <None Include="performous\util.hh" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
+28 -19
View File
@@ -13,47 +13,56 @@
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter> </Filter>
<Filter Include="Quelldateien\performous">
<UniqueIdentifier>{a47c9d33-78d2-453d-bb59-e5724cd85f67}</UniqueIdentifier>
</Filter>
<Filter Include="Headerdateien\performous">
<UniqueIdentifier>{4c72400a-ff2c-4842-8c20-54deb5df606d}</UniqueIdentifier>
</Filter>
<Filter Include="Headerdateien\performous\libda">
<UniqueIdentifier>{d71782a0-47fc-4fe1-8569-0a0ce8fe9b45}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="pitchTracker.cpp">
<Filter>Quelldateien</Filter>
</ClCompile>
<ClCompile Include="pitch.cc">
<Filter>Quelldateien</Filter>
</ClCompile>
<ClCompile Include="PitchWrapper.cpp"> <ClCompile Include="PitchWrapper.cpp">
<Filter>Quelldateien</Filter> <Filter>Quelldateien</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="compatibility.cpp"> <ClCompile Include="compatibility.cpp">
<Filter>Quelldateien</Filter> <Filter>Quelldateien</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="performous\pitch.cc">
<Filter>Quelldateien\performous</Filter>
</ClCompile>
<ClCompile Include="pdaAKF.cpp">
<Filter>Quelldateien</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="pitchTracker.h">
<Filter>Headerdateien</Filter>
</ClInclude>
<ClInclude Include="libda\fft.hpp">
<Filter>Headerdateien</Filter>
</ClInclude>
<ClInclude Include="compatibility.h"> <ClInclude Include="compatibility.h">
<Filter>Headerdateien</Filter> <Filter>Headerdateien</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="libda\sample.hpp">
<Filter>Headerdateien</Filter>
</ClInclude>
<ClInclude Include="PitchWrapper.h"> <ClInclude Include="PitchWrapper.h">
<Filter>Headerdateien</Filter> <Filter>Headerdateien</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Helper.h"> <ClInclude Include="Helper.h">
<Filter>Headerdateien</Filter> <Filter>Headerdateien</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="performous\libda\fft.hpp">
<Filter>Headerdateien\performous\libda</Filter>
</ClInclude>
<ClInclude Include="performous\libda\sample.hpp">
<Filter>Headerdateien\performous\libda</Filter>
</ClInclude>
<ClInclude Include="pdaAKF.h">
<Filter>Headerdateien</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="pitch.hh"> <None Include="performous\pitch.hh">
<Filter>Headerdateien</Filter> <Filter>Headerdateien\performous</Filter>
</None> </None>
<None Include="util.hh"> <None Include="performous\util.hh">
<Filter>Headerdateien</Filter> <Filter>Headerdateien\performous</Filter>
</None> </None>
</ItemGroup> </ItemGroup>
</Project> </Project>
+8 -8
View File
@@ -1,13 +1,13 @@
#include "PitchWrapper.h" #include "PitchWrapper.h"
#include "pitchTracker.h" #include "pdaAKF.h"
#include "Helper.h" #include "Helper.h"
AnalyzerExt::AnalyzerExt(double baseToneFrequency, int minHalfTone, int maxHalfTone, unsigned step): Analyzer(44100., "", step){ AnalyzerExt::AnalyzerExt(double baseToneFrequency, int minHalfTone, int maxHalfTone, unsigned step): Analyzer(44100., "", step){
PitchTracker::Init(baseToneFrequency, minHalfTone, maxHalfTone); PitchTrackerAKF::Init(baseToneFrequency, minHalfTone, maxHalfTone);
} }
AnalyzerExt::~AnalyzerExt(){ AnalyzerExt::~AnalyzerExt(){
PitchTracker::DeInit(); PitchTrackerAKF::DeInit();
} }
int AnalyzerExt::GetNoteFast(double* maxVolume, float* weights){ int AnalyzerExt::GetNoteFast(double* maxVolume, float* weights){
@@ -17,22 +17,22 @@ int AnalyzerExt::GetNoteFast(double* maxVolume, float* weights){
m_fastAnalysisBuf.pop(size - m_SampleCt); m_fastAnalysisBuf.pop(size - m_SampleCt);
if(!m_fastAnalysisBuf.read(AnaylsisBuf, AnaylsisBuf + m_SampleCt)) if(!m_fastAnalysisBuf.read(AnaylsisBuf, AnaylsisBuf + m_SampleCt))
return -1; return -1;
return PitchTracker::GetTone(AnaylsisBuf, m_SampleCt, maxVolume, weights); return PitchTrackerAKF::GetTone(AnaylsisBuf, m_SampleCt, maxVolume, weights);
} }
void PtFast_Init(double baseToneFrequency, int minHalfTone, int maxHalfTone){ void PtFast_Init(double baseToneFrequency, int minHalfTone, int maxHalfTone){
PitchTracker::Init(baseToneFrequency, minHalfTone, maxHalfTone); PitchTrackerAKF::Init(baseToneFrequency, minHalfTone, maxHalfTone);
} }
void PtFast_DeInit(){ void PtFast_DeInit(){
PitchTracker::DeInit(); PitchTrackerAKF::DeInit();
} }
int PtFast_GetTone(short* samples, int sampleCt, double* maxVolume, float* weights){ int PtFast_GetTone(short* samples, int sampleCt, double* maxVolume, float* weights){
if(sampleCt <= 0) if(sampleCt <= 0)
return -1; return -1;
double* dataDouble = short2DoubleArray(samples, sampleCt, false); double* dataDouble = short2DoubleArray(samples, sampleCt, false);
int result = PitchTracker::GetTone(dataDouble, sampleCt, maxVolume, weights, true); int result = PitchTrackerAKF::GetTone(dataDouble, sampleCt, maxVolume, weights, true);
freeDoubleArray(dataDouble); freeDoubleArray(dataDouble);
return result; return result;
} }
@@ -84,7 +84,7 @@ double Analyzer_FindNote(AnalyzerExt* analyzer, double minFreq, double maxFreq){
if(!analyzer) if(!analyzer)
return -1; return -1;
const Tone* tone = analyzer->findTone(minFreq, maxFreq); const Tone* tone = analyzer->findTone(minFreq, maxFreq);
return (tone == NULL) ? -1 : ToneToNote(tone); return (tone == NULL) ? -1 : FreqToNote(tone->freq);
} }
int Analyzer_GetNoteFast(AnalyzerExt* analyzer, double* maxVolume, float* weights){ int Analyzer_GetNoteFast(AnalyzerExt* analyzer, double* maxVolume, float* weights){
+1 -1
View File
@@ -1,6 +1,6 @@
#pragma once #pragma once
#include "pitch.hh" #include "performous/pitch.hh"
#define DllExport extern "C" __declspec(dllexport) #define DllExport extern "C" __declspec(dllexport)
@@ -13,13 +13,13 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#include "pitchTracker.h" #include "pdaAKF.h"
#include <math.h> #include <math.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
namespace PitchTracker{ namespace PitchTrackerAKF{
static void doLog(const char* msg,...){ static void doLog(const char* msg,...){
va_list argptr = NULL; va_list argptr = NULL;
@@ -1,6 +1,7 @@
#pragma once #pragma once
namespace PitchTracker{ // A pitch detection that is based on the AKF and AMDF (initially from original Vocaluxe/USDx)
namespace PitchTrackerAKF{
void Init(double baseToneFrequency, int minHalfTone, int maxHalfTone); void Init(double baseToneFrequency, int minHalfTone, int maxHalfTone);
void DeInit(); void DeInit();
template<typename T> int GetTone(T *samples, int sampleCt, double* maxVolume, float *weights, bool scale = false); template<typename T> int GetTone(T *samples, int sampleCt, double* maxVolume, float *weights, bool scale = false);
+3
View File
@@ -0,0 +1,3 @@
code is based on Performous: https://github.com/performous/performous/tree/master/game
Some modifications were made to make it compile with VS2012, fix warnings and make it suitable for our needs
From 25.03.2014
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -5,7 +5,7 @@
#include <list> #include <list>
#include <algorithm> #include <algorithm>
#include <cmath> #include <cmath>
#include "compatibility.h" #include "../compatibility.h"
/// struct to represent tones /// struct to represent tones
struct Tone { struct Tone {
File renamed without changes.