Chris@752
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
Chris@752
|
2
|
Chris@752
|
3 /*
|
Chris@752
|
4 Sonic Visualiser
|
Chris@752
|
5 An audio file viewer and annotation editor.
|
Chris@752
|
6 Centre for Digital Music, Queen Mary, University of London.
|
Chris@752
|
7
|
Chris@752
|
8 This program is free software; you can redistribute it and/or
|
Chris@752
|
9 modify it under the terms of the GNU General Public License as
|
Chris@752
|
10 published by the Free Software Foundation; either version 2 of the
|
Chris@752
|
11 License, or (at your option) any later version. See the file
|
Chris@752
|
12 COPYING included with this distribution for more information.
|
Chris@752
|
13 */
|
Chris@752
|
14
|
Chris@752
|
15 #ifndef SV_TRANSFORM_ALIGNER_H
|
Chris@752
|
16 #define SV_TRANSFORM_ALIGNER_H
|
Chris@752
|
17
|
Chris@752
|
18 #include <QString>
|
Chris@752
|
19
|
Chris@752
|
20 #include "data/model/Model.h"
|
Chris@752
|
21
|
Chris@752
|
22 class AlignmentModel;
|
Chris@752
|
23 class Document;
|
Chris@752
|
24
|
Chris@752
|
25 class TransformAligner : public QObject
|
Chris@752
|
26 {
|
Chris@752
|
27 Q_OBJECT
|
Chris@752
|
28
|
Chris@752
|
29 public:
|
Chris@752
|
30 TransformAligner(Document *doc,
|
Chris@752
|
31 ModelId reference,
|
Chris@752
|
32 ModelId toAlign);
|
Chris@752
|
33
|
Chris@752
|
34 // Destroy the aligner, cleanly cancelling any ongoing alignment
|
Chris@752
|
35 ~TransformAligner();
|
Chris@752
|
36
|
Chris@752
|
37 bool begin(QString &error);
|
Chris@752
|
38
|
Chris@752
|
39 static bool isAvailable();
|
Chris@752
|
40
|
Chris@752
|
41 signals:
|
Chris@752
|
42 /**
|
Chris@752
|
43 * Emitted when alignment is successfully completed. The reference
|
Chris@752
|
44 * and toAlign models can be queried from the alignment model.
|
Chris@752
|
45 */
|
Chris@752
|
46 void complete(ModelId alignmentModel); // an AlignmentModel
|
Chris@752
|
47
|
Chris@752
|
48 private slots:
|
Chris@752
|
49 void alignmentCompletionChanged(ModelId);
|
Chris@752
|
50 void tuningDifferenceCompletionChanged(ModelId);
|
Chris@752
|
51
|
Chris@752
|
52 private:
|
Chris@752
|
53 static QString getAlignmentTransformName();
|
Chris@752
|
54 static QString getTuningDifferenceTransformName();
|
Chris@752
|
55
|
Chris@752
|
56 bool beginAlignmentPhase();
|
Chris@752
|
57
|
Chris@752
|
58 Document *m_document;
|
Chris@752
|
59 ModelId m_reference;
|
Chris@752
|
60 ModelId m_toAlign;
|
Chris@752
|
61 ModelId m_aggregateModel; // an AggregateWaveModel
|
Chris@752
|
62 ModelId m_alignmentModel; // an AlignmentModel
|
Chris@752
|
63 ModelId m_tuningDiffProgressModel; // SparseTimeValueModel, unreg'd with doc
|
Chris@752
|
64 ModelId m_tuningDiffOutputModel; // SparseTimeValueModel, unreg'd with doc
|
Chris@752
|
65 ModelId m_pathOutputModel; // SparseTimeValueModel, unreg'd with doc
|
Chris@752
|
66 float m_tuningFrequency;
|
Chris@752
|
67 bool m_incomplete;
|
Chris@752
|
68 };
|
Chris@752
|
69
|
Chris@752
|
70 #endif
|