Mercurial > hg > qm-dsp
comparison dsp/segmentation/cluster_segmenter.c @ 58:d72fcd34d9a7
* Fixes to problems shown up by vamp-plugin-tester.
  Still not all plugins pass all tests, though
| author | cannam | 
|---|---|
| date | Mon, 23 Mar 2009 16:28:53 +0000 | 
| parents | 6fc20388d29e | 
| children | e5907ae6de17 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 57:d241e7701c0c | 58:d72fcd34d9a7 | 
|---|---|
| 159 /* create a model */ | 159 /* create a model */ | 
| 160 model_t* model = hmm_init(features, frames_read, feature_length, nHMM_states); | 160 model_t* model = hmm_init(features, frames_read, feature_length, nHMM_states); | 
| 161 | 161 | 
| 162 /* train the model */ | 162 /* train the model */ | 
| 163 hmm_train(features, frames_read, model); | 163 hmm_train(features, frames_read, model); | 
| 164 | 164 /* | 
| 165 printf("\n\nafter training:\n"); | 165 printf("\n\nafter training:\n"); | 
| 166 hmm_print(model); | 166 hmm_print(model); | 
| 167 | 167 */ | 
| 168 /* decode the hidden state sequence */ | 168 /* decode the hidden state sequence */ | 
| 169 viterbi_decode(features, frames_read, model, q); | 169 viterbi_decode(features, frames_read, model, q); | 
| 170 hmm_close(model); | 170 hmm_close(model); | 
| 171 | 171 | 
| 172 /*****************************/ | 172 /*****************************/ | 
| 173 } | 173 } | 
| 174 /*****************************/ | 174 /*****************************/ | 
| 175 | 175 | 
| 176 | 176 | 
| 177 /* | |
| 177 fprintf(stderr, "HMM state sequence:\n"); | 178 fprintf(stderr, "HMM state sequence:\n"); | 
| 178 for (i = 0; i < frames_read; i++) | 179 for (i = 0; i < frames_read; i++) | 
| 179 fprintf(stderr, "%d ", q[i]); | 180 fprintf(stderr, "%d ", q[i]); | 
| 180 fprintf(stderr, "\n\n"); | 181 fprintf(stderr, "\n\n"); | 
| 182 */ | |
| 181 | 183 | 
| 182 /* create histograms of states */ | 184 /* create histograms of states */ | 
| 183 double* h = (double*) malloc(frames_read*nHMM_states*sizeof(double)); /* vector in row major order */ | 185 double* h = (double*) malloc(frames_read*nHMM_states*sizeof(double)); /* vector in row major order */ | 
| 184 create_histograms(q, frames_read, nHMM_states, histogram_length, h); | 186 create_histograms(q, frames_read, nHMM_states, histogram_length, h); | 
| 185 | 187 | 
| 207 double** chroma; | 209 double** chroma; | 
| 208 int i; | 210 int i; | 
| 209 | 211 | 
| 210 if (feature_type == FEATURE_TYPE_CONSTQ) | 212 if (feature_type == FEATURE_TYPE_CONSTQ) | 
| 211 { | 213 { | 
| 212 fprintf(stderr, "Converting to dB and normalising...\n"); | 214 /* fprintf(stderr, "Converting to dB and normalising...\n"); | 
| 213 | 215 */ | 
| 214 mpeg7_constq(features, frames_read, ncoeff); | 216 mpeg7_constq(features, frames_read, ncoeff); | 
| 215 | 217 /* | 
| 216 fprintf(stderr, "Running PCA...\n"); | 218 fprintf(stderr, "Running PCA...\n"); | 
| 217 | 219 */ | 
| 218 /* do PCA on the features (but not the envelope) */ | 220 /* do PCA on the features (but not the envelope) */ | 
| 219 int ncomponents = 20; | 221 int ncomponents = 20; | 
| 220 pca_project(features, frames_read, ncoeff, ncomponents); | 222 pca_project(features, frames_read, ncoeff, ncomponents); | 
| 221 | 223 | 
| 222 /* copy the envelope so that it immediatly follows the chosen components */ | 224 /* copy the envelope so that it immediatly follows the chosen components */ | 
| 253 cluster_segment(q, features, frames_read, feature_length, nHMM_states, histogram_length, nclusters, neighbour_limit); | 255 cluster_segment(q, features, frames_read, feature_length, nHMM_states, histogram_length, nclusters, neighbour_limit); | 
| 254 } | 256 } | 
| 255 | 257 | 
| 256 if (feature_type == FEATURE_TYPE_CHROMA) | 258 if (feature_type == FEATURE_TYPE_CHROMA) | 
| 257 { | 259 { | 
| 260 /* | |
| 258 fprintf(stderr, "Converting to chroma features...\n"); | 261 fprintf(stderr, "Converting to chroma features...\n"); | 
| 259 | 262 */ | 
| 260 /* convert constant-Q to normalised chroma features */ | 263 /* convert constant-Q to normalised chroma features */ | 
| 261 chroma = (double**) malloc(frames_read*sizeof(double*)); | 264 chroma = (double**) malloc(frames_read*sizeof(double*)); | 
| 262 for (i = 0; i < frames_read; i++) | 265 for (i = 0; i < frames_read; i++) | 
| 263 chroma[i] = (double*) malloc(bins*sizeof(double)); | 266 chroma[i] = (double*) malloc(bins*sizeof(double)); | 
| 264 cq2chroma(features, frames_read, ncoeff, bins, chroma); | 267 cq2chroma(features, frames_read, ncoeff, bins, chroma); | 
