comparison align/TransformAligner.cpp @ 753:31289e8592c7 pitch-align

Switch to using the pulled-out TransformAligner and ExternalProgramAligner
author Chris Cannam
date Fri, 24 Apr 2020 14:38:22 +0100
parents 32654e402f8b
children 6429a164b7e1
comparison
equal deleted inserted replaced
752:32654e402f8b 753:31289e8592c7
187 SVDEBUG << "TransformAligner: Tuning difference transform step size " << transform.getStepSize() << ", block size " << transform.getBlockSize() << endl; 187 SVDEBUG << "TransformAligner: Tuning difference transform step size " << transform.getStepSize() << ", block size " << transform.getBlockSize() << endl;
188 188
189 ModelTransformerFactory *mtf = ModelTransformerFactory::getInstance(); 189 ModelTransformerFactory *mtf = ModelTransformerFactory::getInstance();
190 190
191 QString message; 191 QString message;
192 ModelId tuningDiffOutputModelId = mtf->transform(transform, 192 m_tuningDiffOutputModel = mtf->transform(transform,
193 m_aggregateModel, 193 m_aggregateModel,
194 message); 194 message);
195 195
196 auto tuningDiffOutputModel = 196 auto tuningDiffOutputModel =
197 ModelById::getAs<SparseTimeValueModel>(tuningDiffOutputModelId); 197 ModelById::getAs<SparseTimeValueModel>(m_tuningDiffOutputModel);
198 if (!tuningDiffOutputModel) { 198 if (!tuningDiffOutputModel) {
199 SVCERR << "Align::alignModel: ERROR: Failed to create tuning-difference output model (no Tuning Difference plugin?)" << endl; 199 SVCERR << "Align::alignModel: ERROR: Failed to create tuning-difference output model (no Tuning Difference plugin?)" << endl;
200 error = message; 200 error = message;
201 ModelById::release(alignmentModel); 201 ModelById::release(alignmentModel);
202 return false; 202 return false;
225 void 225 void
226 TransformAligner::tuningDifferenceCompletionChanged(ModelId tuningDiffOutputModelId) 226 TransformAligner::tuningDifferenceCompletionChanged(ModelId tuningDiffOutputModelId)
227 { 227 {
228 if (tuningDiffOutputModelId != m_tuningDiffOutputModel) { 228 if (tuningDiffOutputModelId != m_tuningDiffOutputModel) {
229 SVCERR << "WARNING: TransformAligner::tuningDifferenceCompletionChanged: Model " 229 SVCERR << "WARNING: TransformAligner::tuningDifferenceCompletionChanged: Model "
230 << tuningDiffOutputModelId 230 << tuningDiffOutputModelId
231 << " is not ours!" << endl; 231 << " is not ours! (ours is "
232 << m_tuningDiffOutputModel << ")" << endl;
232 return; 233 return;
233 } 234 }
234 235
235 auto tuningDiffOutputModel = 236 auto tuningDiffOutputModel =
236 ModelById::getAs<SparseTimeValueModel>(m_tuningDiffOutputModel); 237 ModelById::getAs<SparseTimeValueModel>(m_tuningDiffOutputModel);
287 bool 288 bool
288 TransformAligner::beginAlignmentPhase() 289 TransformAligner::beginAlignmentPhase()
289 { 290 {
290 TransformId id = getAlignmentTransformName(); 291 TransformId id = getAlignmentTransformName();
291 292
293 SVDEBUG << "TransformAligner::beginAlignmentPhase: transform is "
294 << id << endl;
295
292 TransformFactory *tf = TransformFactory::getInstance(); 296 TransformFactory *tf = TransformFactory::getInstance();
293 297
294 auto aggregateModel = 298 auto aggregateModel =
295 ModelById::getAs<AggregateWaveModel>(m_aggregateModel); 299 ModelById::getAs<AggregateWaveModel>(m_aggregateModel);
296 auto alignmentModel = 300 auto alignmentModel =
325 << " and pitch " << pitch << " -> cents " << cents << endl; 329 << " and pitch " << pitch << " -> cents " << cents << endl;
326 } 330 }
327 331
328 alignmentModel->setRelativePitch(cents); 332 alignmentModel->setRelativePitch(cents);
329 333
330 SVDEBUG << "Align::alignModel: Alignment transform step size " 334 SVDEBUG << "TransformAligner: Alignment transform step size "
331 << transform.getStepSize() << ", block size " 335 << transform.getStepSize() << ", block size "
332 << transform.getBlockSize() << endl; 336 << transform.getBlockSize() << endl;
333 337
334 ModelTransformerFactory *mtf = ModelTransformerFactory::getInstance(); 338 ModelTransformerFactory *mtf = ModelTransformerFactory::getInstance();
335 339
336 QString message; 340 QString message;
337 ModelId pathOutputModelId = mtf->transform 341 m_pathOutputModel = mtf->transform
338 (transform, m_aggregateModel, message); 342 (transform, m_aggregateModel, message);
339 343
340 if (pathOutputModelId.isNone()) { 344 if (m_pathOutputModel.isNone()) {
341 transform.setStepSize(0); 345 transform.setStepSize(0);
342 pathOutputModelId = mtf->transform 346 m_pathOutputModel = mtf->transform
343 (transform, m_aggregateModel, message); 347 (transform, m_aggregateModel, message);
344 } 348 }
345 349
346 auto pathOutputModel = 350 auto pathOutputModel =
347 ModelById::getAs<SparseTimeValueModel>(pathOutputModelId); 351 ModelById::getAs<SparseTimeValueModel>(m_pathOutputModel);
348 352
349 //!!! callers will need to be updated to get error from 353 //!!! callers will need to be updated to get error from
350 //!!! alignment model after initial call 354 //!!! alignment model after initial call
351 355
352 if (!pathOutputModel) { 356 if (!pathOutputModel) {
367 void 371 void
368 TransformAligner::alignmentCompletionChanged(ModelId alignmentModelId) 372 TransformAligner::alignmentCompletionChanged(ModelId alignmentModelId)
369 { 373 {
370 if (alignmentModelId != m_alignmentModel) { 374 if (alignmentModelId != m_alignmentModel) {
371 SVCERR << "WARNING: TransformAligner::alignmentCompletionChanged: Model " 375 SVCERR << "WARNING: TransformAligner::alignmentCompletionChanged: Model "
372 << alignmentModelId 376 << alignmentModelId
373 << " is not ours!" << endl; 377 << " is not ours! (ours is "
378 << m_alignmentModel << ")" << endl;
374 return; 379 return;
375 } 380 }
376 381
377 auto alignmentModel = ModelById::getAs<AlignmentModel>(m_alignmentModel); 382 auto alignmentModel = ModelById::getAs<AlignmentModel>(m_alignmentModel);
378 383