diff options
author | Guenter Geiger <ggeiger@users.sourceforge.net> | 2002-11-19 11:47:34 +0000 |
---|---|---|
committer | Guenter Geiger <ggeiger@users.sourceforge.net> | 2002-11-19 11:47:34 +0000 |
commit | 256119f46dce880391bd994b82be81d003056f7d (patch) | |
tree | cede9788f8f1b814d63cbee7df56e9ebcec4a3c1 /rhythm_quantum.h |
addedsvn2git-root
svn path=/trunk/externals/rhythm_estimator/; revision=218
Diffstat (limited to 'rhythm_quantum.h')
-rw-r--r-- | rhythm_quantum.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/rhythm_quantum.h b/rhythm_quantum.h new file mode 100644 index 0000000..4c8bc80 --- /dev/null +++ b/rhythm_quantum.h @@ -0,0 +1,76 @@ +/* Rhythm estimation in real time + Copyright (C) 2000 Jarno Seppänen and Piotr Majdak + $Id: rhythm_quantum.h,v 1.1 2002-11-19 11:39:55 ggeiger Exp $ + + This file is part of rhythm_estimator. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef __RHYTHM_QUANTUM_H__ +#define __RHYTHM_QUANTUM_H__ + +#include "rhythm_estimator.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Parameter default values */ +#define RHYTHM_QUANTUM_DEFAULT_GCD_PERC 0.4 /* internal */ +#define RHYTHM_QUANTUM_GCD_PERC_MIN 0 +#define RHYTHM_QUANTUM_GCD_PERC_MAX 1 + +typedef struct +{ + /* --- Public data --- */ + + /* User-changeable parameters: */ + + /* --- Private data --- */ + + /* Internal parameters: */ + float gcd_perc; + float max_quantum; + float min_quantum; + float ioi_resolution; + + /* Internal "helper" variables */ + float* gcd_remainder_error; /* Length is below */ + unsigned gcd_re_length; /* ceil(max_quantum/ioi_resolution) */ + +} Rhythm_Quantum; + + +Rhythm_Quantum* rhythm_quantum_new (void); +void rhythm_quantum_delete (Rhythm_Quantum* rhythm_quantum); + +void rhythm_quantum_initialize (Rhythm_Quantum* rhythm_quantum); +void rhythm_quantum_finish (Rhythm_Quantum* rhythm_quantum); + + +float rhythm_quantum_compute_quantum (Rhythm_Quantum* rhythm_quantum, float *vector, unsigned len); + + /* Subroutines */ +static float rhythm_quantum_determine_quantum (Rhythm_Quantum* ge); +static void rhythm_quantum_compute_gcd_re (Rhythm_Quantum* ge, float *histogram, unsigned hist_len); + +static float compute_median (float* vector, unsigned length); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __RHYTHM_QUANTUM_H__ */ +/* EOF */ |