annotate hmm/hmm.h @ 321:f1e6be2de9a5

A threshold (delta) is added in the peak picking parameters structure (PPickParams). It is used as an offset when computing the smoothed detection function. A constructor for the structure PPickParams is also added to set the parameters to 0 when a structure instance is created. Hence programmes using the peak picking parameter structure and which do not set the delta parameter (e.g. QM Vamp note onset detector) won't be affected by the modifications. Functions modified: - dsp/onsets/PeakPicking.cpp - dsp/onsets/PeakPicking.h - dsp/signalconditioning/DFProcess.cpp - dsp/signalconditioning/DFProcess.h
author mathieub <mathieu.barthet@eecs.qmul.ac.uk>
date Mon, 20 Jun 2011 19:01:48 +0100
parents d5014ab8b0e5
children fdaa63607c15
rev   line source
c@244 1 #ifndef _HMM_H
c@244 2 #define _HMM_H
c@244 3
c@245 4 #ifdef __cplusplus
c@245 5 extern "C" {
c@245 6 #endif
c@245 7
c@244 8 /*
c@244 9 * hmm.h
c@244 10 *
c@244 11 * Created by Mark Levy on 12/02/2006.
c@309 12 * Copyright 2006 Centre for Digital Music, Queen Mary, University of London.
c@309 13
c@309 14 This program is free software; you can redistribute it and/or
c@309 15 modify it under the terms of the GNU General Public License as
c@309 16 published by the Free Software Foundation; either version 2 of the
c@309 17 License, or (at your option) any later version. See the file
c@309 18 COPYING included with this distribution for more information.
c@244 19 *
c@244 20 */
c@244 21
c@244 22 #ifndef PI
c@244 23 #define PI 3.14159265358979323846264338327950288
c@244 24 #endif
c@244 25
c@244 26 typedef struct _model_t {
c@244 27 int N; /* number of states */
c@244 28 double* p0; /* initial probs */
c@244 29 double** a; /* transition probs */
c@244 30 int L; /* dimensionality of data */
c@244 31 double** mu; /* state means */
c@244 32 double** cov; /* covariance, tied between all states */
c@244 33 } model_t;
c@244 34
c@244 35 void hmm_train(double** x, int T, model_t* model); /* with scaling */
c@244 36 void forward_backwards(double*** xi, double** gamma, double* loglik, double* loglik1, double* loglik2, int iter,
c@244 37 int N, int T, double* p0, double** a, double** b);
c@244 38 void baum_welch(double* p0, double** a, double** mu, double** cov, int N, int T, int L, double** x, double*** xi, double** gamma);
c@244 39 void viterbi_decode(double** x, int T, model_t* model, int* q); /* using logs */
c@244 40 model_t* hmm_init(double** x, int T, int L, int N);
c@244 41 void hmm_close(model_t* model);
c@244 42 void invert(double** cov, int L, double** icov, double* detcov); /* uses LAPACK (included with Mac OSX) */
c@244 43 double gauss(double* x, int L, double* mu, double** icov, double detcov, double* y, double* z);
c@244 44 double loggauss(double* x, int L, double* mu, double** icov, double detcov, double* y, double* z);
c@244 45 void hmm_print(model_t* model);
c@244 46
c@245 47 #ifdef __cplusplus
c@245 48 }
c@244 49 #endif
c@244 50
c@245 51 #endif
c@245 52