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