comparison data/model/AlignmentModel.h @ 297:c022976d18e8

* Merge from sv-match-alignment branch (excluding alignment-specific document). - add aggregate wave model (not yet complete enough to be added as a true model in a layer, but there's potential) - add play solo mode - add alignment model -- unused in plain SV - fix two plugin leaks - add m3u playlist support (opens all files at once, potentially hazardous) - fix retrieval of pre-encoded URLs - add ability to resample audio files on import, so as to match rates with other files previously loaded; add preference for same - add preliminary support in transform code for range and rate of transform input - reorganise preferences dialog, move dark-background option to preferences, add option for temporary directory location
author Chris Cannam
date Fri, 28 Sep 2007 13:56:38 +0000
parents
children a71dec01c4d3
comparison
equal deleted inserted replaced
296:2b6c99b607f1 297:c022976d18e8
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2
3 /*
4 Sonic Visualiser
5 An audio file viewer and annotation editor.
6 Centre for Digital Music, Queen Mary, University of London.
7 This file copyright 2007 QMUL.
8
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License as
11 published by the Free Software Foundation; either version 2 of the
12 License, or (at your option) any later version. See the file
13 COPYING included with this distribution for more information.
14 */
15
16 #ifndef _ALIGNMENT_MODEL_H_
17 #define _ALIGNMENT_MODEL_H_
18
19 #include "Model.h"
20
21 class SparseTimeValueModel;
22
23 class AlignmentModel : public Model
24 {
25 Q_OBJECT
26
27 public:
28 AlignmentModel(Model *reference,
29 Model *aligned,
30 Model *inputModel, // probably an AggregateWaveModel; I take ownership
31 SparseTimeValueModel *path); // I take ownership
32 ~AlignmentModel();
33
34 virtual bool isOK() const;
35 virtual size_t getStartFrame() const;
36 virtual size_t getEndFrame() const;
37 virtual size_t getSampleRate() const;
38 virtual Model *clone() const;
39 virtual bool isReady(int *completion = 0) const;
40 virtual const ZoomConstraint *getZoomConstraint() const;
41
42 const Model *getReferenceModel() const;
43 const Model *getAlignedModel() const;
44
45 size_t toReference(size_t frame) const;
46 size_t fromReference(size_t frame) const;
47
48 signals:
49 void modelChanged();
50 void modelChanged(size_t startFrame, size_t endFrame);
51 void completionChanged();
52
53 protected slots:
54 void pathChanged();
55 void pathChanged(size_t startFrame, size_t endFrame);
56 void pathCompletionChanged();
57
58 protected:
59 Model *m_reference; // I don't own this
60 Model *m_aligned; // I don't own this
61
62 Model *m_inputModel; // I own this
63 SparseTimeValueModel *m_path; // I own this
64 mutable SparseTimeValueModel *m_reversePath; // I own this
65 bool m_pathComplete;
66
67 void constructReversePath() const;
68
69 size_t align(SparseTimeValueModel *path, size_t frame) const;
70 };
71
72 #endif