xue@11
|
1 /*
|
xue@11
|
2 Harmonic sinusoidal modelling and tools
|
xue@11
|
3
|
xue@11
|
4 C++ code package for harmonic sinusoidal modelling and relevant signal processing.
|
xue@11
|
5 Centre for Digital Music, Queen Mary, University of London.
|
xue@11
|
6 This file copyright 2011 Wen Xue.
|
xue@11
|
7
|
xue@11
|
8 This program is free software; you can redistribute it and/or
|
xue@11
|
9 modify it under the terms of the GNU General Public License as
|
xue@11
|
10 published by the Free Software Foundation; either version 2 of the
|
xue@11
|
11 License, or (at your option) any later version.
|
xue@11
|
12 */
|
xue@1
|
13 #ifndef multiresH
|
xue@1
|
14 #define multiresH
|
xue@1
|
15
|
Chris@5
|
16 /**
|
Chris@5
|
17 \file multires.h - composite spectrogram routines
|
xue@1
|
18
|
xue@1
|
19 This unit deals with basis selection from multiresolution Fourier bases set.
|
xue@1
|
20
|
xue@1
|
21 A tiling of an area of the T-F plane is represented as a sequence of 0's and 1's, each 0 represents
|
xue@1
|
22 a horizontal split-in-half, each 1 represents a vertical split-in-half. The sequence is made up of
|
xue@1
|
23 three pieces: 1) the first entry giving the direction of primary split; 2) the tiling of the upper
|
xue@1
|
24 or left half after the primary split; and 3) the tiling of the lower or right half.
|
xue@1
|
25
|
xue@1
|
26 A composite spectrogram is represented as a tiling and a vector of amplitude (or square amplitude)
|
xue@1
|
27 values, each representing the energy within a tile. If the primary split is horizontal, then the
|
xue@1
|
28 first/second half of the amplitude or power vector represents the the upper/lower half of the
|
xue@1
|
29 composite spectrogram; if the primary splits is vertical, then the first/second half of the amplitude
|
xue@1
|
30 or power vector represents the left/right half of the composite spectrogram.
|
xue@1
|
31
|
xue@1
|
32 Further reading: Wen X. and M. Sandler, "Composite spectrogram using multiple fourier transforms,"
|
xue@1
|
33 IET Signal Processing, 3(1):51-63, 2009.
|
xue@1
|
34 */
|
xue@1
|
35
|
xue@1
|
36 //--memory re-indexing routines for internal use-----------------------------
|
xue@1
|
37 void HSplitSpec(int X, int Y, double** Spec, double**& lSpec, double**& uSpec);
|
xue@1
|
38 void HSplitSpecs(int N, double*** Specs, double***& lSpecs, double***& uSpecs);
|
xue@1
|
39 void VSplitSpec(int X, int Y, double** Spec, double**& lSpec, double**& rSpec);
|
xue@1
|
40 void VSplitSpecs(int N, double*** Specs, double***& lSpecs, double***& rSpecs);
|
xue@1
|
41
|
xue@1
|
42 //--composite spectrogram algorithms-----------------------------------------
|
xue@1
|
43 double MixSpectrogram(double** Spec, double*** Specs, int Fr, int WID, int wid, bool norm=true, bool normmix=true, int*** cuts=0);
|
xue@1
|
44 double MixSpectrogram(int** spl, double** Spec, double*** Specs, int Fr, int WID, int wid, bool norm=true, bool normmix=true);
|
xue@1
|
45 #endif
|