annotate dsp/wavelet/Wavelet.h @ 298:255e431ae3d4

* Key detector: when returning key strengths, use the peak value of the three underlying chromagram correlations (from 36-bin chromagram) corresponding to each key, instead of the mean. Rationale: This is the same method as used when returning the key value, and it's nice to have the same results in both returned value and plot. The peak performed better than the sum with a simple test set of triads, so it seems reasonable to change the plot to match the key output rather than the other way around. * FFT: kiss_fftr returns only the non-conjugate bins, synthesise the rest rather than leaving them (perhaps dangerously) undefined. Fixes an uninitialised data error in chromagram that could cause garbage results from key detector. * Constant Q: remove precalculated values again, I reckon they're not proving such a good tradeoff.
author Chris Cannam <c.cannam@qmul.ac.uk>
date Fri, 05 Jun 2009 15:12:39 +0000
parents c88fb48790d9
children e5907ae6de17
rev   line source
c@285 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
c@285 2
c@285 3 /*
c@285 4 QM DSP Library
c@285 5
c@285 6 Centre for Digital Music, Queen Mary, University of London.
c@285 7 This file copyright 2009 Thomas Wilmering.
c@285 8 All rights reserved.
c@285 9 */
c@285 10
c@285 11 #ifndef _WAVELET_H_
c@285 12 #define _WAVELET_H_
c@285 13
c@285 14 #include <string>
c@285 15 #include <vector>
c@285 16
c@285 17 class Wavelet
c@285 18 {
c@285 19 public:
c@285 20 enum Type {
c@285 21 Haar = 0,
c@285 22 Daubechies_2,
c@285 23 Daubechies_3,
c@285 24 Daubechies_4,
c@285 25 Daubechies_5,
c@285 26 Daubechies_6,
c@285 27 Daubechies_7,
c@285 28 Daubechies_8,
c@285 29 Daubechies_9,
c@285 30 Daubechies_10,
c@285 31 Daubechies_20,
c@285 32 Daubechies_40,
c@285 33 Symlet_2,
c@285 34 Symlet_3,
c@285 35 Symlet_4,
c@285 36 Symlet_5,
c@285 37 Symlet_6,
c@285 38 Symlet_7,
c@285 39 Symlet_8,
c@285 40 Symlet_9,
c@285 41 Symlet_10,
c@285 42 Symlet_20,
c@285 43 Symlet_30,
c@285 44 Coiflet_1,
c@285 45 Coiflet_2,
c@285 46 Coiflet_3,
c@285 47 Coiflet_4,
c@285 48 Coiflet_5,
c@285 49 Biorthogonal_1_3,
c@285 50 Biorthogonal_1_5,
c@285 51 Biorthogonal_2_2,
c@285 52 Biorthogonal_2_4,
c@285 53 Biorthogonal_2_6,
c@285 54 Biorthogonal_2_8,
c@285 55 Biorthogonal_3_1,
c@285 56 Biorthogonal_3_3,
c@285 57 Biorthogonal_3_5,
c@285 58 Biorthogonal_3_7,
c@285 59 Biorthogonal_3_9,
c@285 60 Biorthogonal_4_4,
c@285 61 Biorthogonal_5_5,
c@285 62 Biorthogonal_6_8,
c@285 63 Meyer,
c@285 64
c@285 65 LastType = Meyer
c@285 66 };
c@285 67
c@285 68 static std::string getWaveletName(Type);
c@285 69
c@285 70 static void createDecompositionFilters(Type,
c@285 71 std::vector<float> &lpd,
c@285 72 std::vector<float> &hpd);
c@285 73 };
c@285 74
c@285 75 #endif