Mercurial > hg > tony
comparison src/Analyser.cpp @ 18:43ef22a44402
merged tonioni to default
author | gyorgyf |
---|---|
date | Sat, 13 Apr 2013 17:27:53 +0100 |
parents | f97399f18564 |
children | 05070252e43f |
comparison
equal
deleted
inserted
replaced
13:b7b5eddfd2c7 | 18:43ef22a44402 |
---|---|
15 | 15 |
16 #include "Analyser.h" | 16 #include "Analyser.h" |
17 | 17 |
18 #include "transform/TransformFactory.h" | 18 #include "transform/TransformFactory.h" |
19 #include "transform/ModelTransformer.h" | 19 #include "transform/ModelTransformer.h" |
20 #include "transform/FeatureExtractionModelTransformer.h" | |
20 #include "framework/Document.h" | 21 #include "framework/Document.h" |
21 #include "data/model/WaveFileModel.h" | 22 #include "data/model/WaveFileModel.h" |
22 #include "view/Pane.h" | 23 #include "view/Pane.h" |
23 #include "view/PaneStack.h" | 24 #include "view/PaneStack.h" |
24 #include "layer/Layer.h" | 25 #include "layer/Layer.h" |
25 #include "layer/TimeValueLayer.h" | 26 #include "layer/TimeValueLayer.h" |
26 #include "layer/NoteLayer.h" | 27 #include "layer/NoteLayer.h" |
27 #include "layer/FlexiNoteLayer.h" | 28 #include "layer/FlexiNoteLayer.h" |
28 #include "layer/ColourDatabase.h" | 29 #include "layer/ColourDatabase.h" |
30 #include "layer/LayerFactory.h" | |
29 | 31 |
30 Analyser::Analyser() : | 32 Analyser::Analyser() : |
31 m_document(0), | 33 m_document(0), |
32 m_fileModel(0), | 34 m_fileModel(0), |
33 m_pane(0) | 35 m_pane(0) |
45 m_document = doc; | 47 m_document = doc; |
46 m_fileModel = model; | 48 m_fileModel = model; |
47 m_pane = pane; | 49 m_pane = pane; |
48 | 50 |
49 TransformId f0 = "vamp:yintony:yintony:f0"; | 51 TransformId f0 = "vamp:yintony:yintony:f0"; |
50 TransformId notes = "vamp:cepstral-pitchtracker:cepstral-pitchtracker:notes"; | 52 TransformId notes = "vamp:yintony:yintony:notes"; |
53 | |
54 // TransformId f0 = "vamp:cepstral-pitchtracker:cepstral-pitchtracker:f0"; | |
55 // TransformId notes = "vamp:cepstral-pitchtracker:cepstral-pitchtracker:notes"; | |
51 | 56 |
52 // We don't want a waveform in the main pane. We must have a | 57 // We don't want a waveform in the main pane. We must have a |
53 // main-model layer of some sort, but the layers created by | 58 // main-model layer of some sort, but the layers created by |
54 // transforms are derived layers, so we'll create a time ruler for | 59 // transforms are derived layers, so we'll create a time ruler for |
55 // the main-model layer. It could subsequently be hidden if we | 60 // the main-model layer. It could subsequently be hidden if we |
63 layer = addLayerFor(f0); | 68 layer = addLayerFor(f0); |
64 | 69 |
65 if (layer) { | 70 if (layer) { |
66 TimeValueLayer *tvl = qobject_cast<TimeValueLayer *>(layer); | 71 TimeValueLayer *tvl = qobject_cast<TimeValueLayer *>(layer); |
67 if (tvl) { | 72 if (tvl) { |
68 tvl->setPlotStyle(TimeValueLayer::PlotDiscreteCurves); | 73 tvl->setPlotStyle(TimeValueLayer::PlotPoints); |
69 tvl->setBaseColour(ColourDatabase::getInstance()-> | 74 tvl->setBaseColour(ColourDatabase::getInstance()-> |
70 getColourIndex(QString("Black"))); | 75 getColourIndex(QString("Black"))); |
71 } | 76 } |
72 } | 77 } |
73 | 78 |
74 layer = addLayerFor(notes); | 79 layer = addLayerForNotes(notes); |
75 | 80 |
76 if (layer) { | 81 if (layer) { |
77 NoteLayer *nl = qobject_cast<NoteLayer *>(layer); | 82 FlexiNoteLayer *nl = qobject_cast<FlexiNoteLayer *>(layer); |
78 if (nl) { | 83 if (nl) { |
79 nl->setBaseColour(ColourDatabase::getInstance()-> | 84 nl->setBaseColour(ColourDatabase::getInstance()-> |
80 getColourIndex(QString("Bright Blue"))); | 85 getColourIndex(QString("Bright Blue"))); |
81 } | 86 } |
82 } | 87 } |
102 | 107 |
103 ModelTransformer::Input input(m_fileModel, -1); | 108 ModelTransformer::Input input(m_fileModel, -1); |
104 | 109 |
105 Layer *layer; | 110 Layer *layer; |
106 layer = m_document->createDerivedLayer(transform, m_fileModel); | 111 layer = m_document->createDerivedLayer(transform, m_fileModel); |
112 | |
107 if (layer) { | 113 if (layer) { |
108 m_document->addLayerToView(m_pane, layer); | 114 m_document->addLayerToView(m_pane, layer); |
109 } | 115 } else { |
116 std::cerr << "ERROR: Analyser::addLayerFor: Cound not create layer. " << std::endl; | |
117 } | |
110 | 118 |
111 return layer; | 119 return layer; |
112 } | 120 } |
113 | 121 |
122 Layer * | |
123 Analyser::addLayerForNotes(TransformId id) | |
124 { | |
125 TransformFactory *tf = TransformFactory::getInstance(); | |
126 | |
127 if (!tf->haveTransform(id)) { | |
128 std::cerr << "ERROR: Analyser::addLayerFor(" << id << "): Transform unknown" << std::endl; | |
129 return 0; | |
130 } | |
131 | |
132 Transform transform = tf->getDefaultTransformFor | |
133 (id, m_fileModel->getSampleRate()); | |
134 | |
135 transform.setStepSize(512); | |
136 transform.setBlockSize(2048); | |
137 | |
138 ModelTransformer::Input input(m_fileModel, -1); | |
139 | |
140 FeatureExtractionModelTransformer::PreferredOutputModel preferredModel; | |
141 | |
142 // preferredModel = FeatureExtractionModelTransformer::NoteOutputModel; | |
143 preferredModel = FeatureExtractionModelTransformer::FlexiNoteOutputModel; | |
144 | |
145 // preferredLayer = LayerFactory::Notes ; | |
146 preferredLayer = LayerFactory::FlexiNotes ; | |
147 | |
148 // std::cerr << "NOTE: Trying to create layer type(" << preferredLayer << ")" << std::endl; | |
149 Layer *layer; | |
150 layer = m_document->createDerivedLayer(transform, m_fileModel, preferredLayer, preferredModel); | |
151 | |
152 if (layer) { | |
153 m_document->addLayerToView(m_pane, layer); | |
154 } else { | |
155 std::cerr << "ERROR: Analyser::addLayerForNotes: Cound not create layer type(" << preferredLayer << ")" << std::endl; | |
156 } | |
157 | |
158 return layer; | |
159 } | |
160 |