annotate multires.h @ 13:de3961f74f30 tip

Add Linux/gcc Makefile; build fix
author Chris Cannam
date Mon, 05 Sep 2011 15:22:35 +0100
parents 977f541d6683
children
rev   line source
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