comparison src/OnsetDetectionFunction.cpp @ 66:b387d8327729

Overloaded initialise in OnsetDetectionFunction so the hopSize and frameSize can be set independently of the window type and onset detection function type
author Adam Stark <adamstark@users.noreply.github.com>
date Tue, 28 Jan 2014 00:49:53 +0000
parents d3c52c6b3905
children 5eeabb24d677
comparison
equal deleted inserted replaced
65:105999275c2e 66:b387d8327729
20 //======================================================================= 20 //=======================================================================
21 21
22 #include <math.h> 22 #include <math.h>
23 #include "OnsetDetectionFunction.h" 23 #include "OnsetDetectionFunction.h"
24 24
25 //======================================================================= 25
26 OnsetDetectionFunction::OnsetDetectionFunction(int hopSize_,int frameSize_,int onsetDetectionFunctionType_,int windowType) 26 //=======================================================================
27 OnsetDetectionFunction::OnsetDetectionFunction(int hopSize_,int frameSize_) : onsetDetectionFunctionType(ComplexSpectralDifferenceHWR), windowType(HanningWindow)
28 {
29 // indicate that we have not initialised yet
30 initialised = false;
31
32 // set pi
33 pi = 3.14159265358979;
34
35 // initialise with arguments to constructor
36 initialise(hopSize_,frameSize_,ComplexSpectralDifferenceHWR,HanningWindow);
37 }
38
39 //=======================================================================
40 OnsetDetectionFunction::OnsetDetectionFunction(int hopSize_,int frameSize_,int onsetDetectionFunctionType_,int windowType_) : onsetDetectionFunctionType(ComplexSpectralDifferenceHWR), windowType(HanningWindow)
27 { 41 {
28 // indicate that we have not initialised yet 42 // indicate that we have not initialised yet
29 initialised = false; 43 initialised = false;
30 44
31 // set pi 45 // set pi
32 pi = 3.14159265358979; 46 pi = 3.14159265358979;
33 47
34 // initialise with arguments to constructor 48 // initialise with arguments to constructor
35 initialise(hopSize_,frameSize_,onsetDetectionFunctionType_,windowType); 49 initialise(hopSize_,frameSize_,onsetDetectionFunctionType_,windowType_);
36 } 50 }
37 51
38 52
39 //======================================================================= 53 //=======================================================================
40 OnsetDetectionFunction::~OnsetDetectionFunction() 54 OnsetDetectionFunction::~OnsetDetectionFunction()
47 fftw_free(complexOut); 61 fftw_free(complexOut);
48 } 62 }
49 } 63 }
50 64
51 //======================================================================= 65 //=======================================================================
52 void OnsetDetectionFunction::initialise(int hopSize_,int frameSize_,int onsetDetectionFunctionType_,int windowType) 66 void OnsetDetectionFunction::initialise(int hopSize_,int frameSize_)
67 {
68 // use the already initialised onset detection function and window type and
69 // pass the new frame and hop size to the main initialisation function
70 initialise(hopSize_, frameSize_, onsetDetectionFunctionType, windowType);
71 }
72
73 //=======================================================================
74 void OnsetDetectionFunction::initialise(int hopSize_,int frameSize_,int onsetDetectionFunctionType_,int windowType_)
53 { 75 {
54 if (initialised) // if we have already initialised FFT plan 76 if (initialised) // if we have already initialised FFT plan
55 { 77 {
56 // destroy fft plan 78 // destroy fft plan
57 fftw_destroy_plan(p); 79 fftw_destroy_plan(p);
62 84
63 hopSize = hopSize_; // set hopsize 85 hopSize = hopSize_; // set hopsize
64 frameSize = frameSize_; // set framesize 86 frameSize = frameSize_; // set framesize
65 87
66 onsetDetectionFunctionType = onsetDetectionFunctionType_; // set detection function type 88 onsetDetectionFunctionType = onsetDetectionFunctionType_; // set detection function type
89 windowType = windowType_; // set window type
67 90
68 // initialise buffers 91 // initialise buffers
69 frame.resize(frameSize); 92 frame.resize(frameSize);
70 window.resize(frameSize); 93 window.resize(frameSize);
71 magSpec.resize(frameSize); 94 magSpec.resize(frameSize);