# HG changeset patch # User Chris Cannam # Date 1389369967 0 # Node ID cdc9d5f7978cf4a41e42c5fce4afb01a009a1659 # Parent c21b87a62ce6716fb60b9e1d0f29c885d7b8f73d Optional spectrogram (off by default) diff -r c21b87a62ce6 -r cdc9d5f7978c src/Analyser.cpp --- a/src/Analyser.cpp Fri Jan 10 15:46:39 2014 +0000 +++ b/src/Analyser.cpp Fri Jan 10 16:06:07 2014 +0000 @@ -28,7 +28,9 @@ #include "layer/FlexiNoteLayer.h" #include "layer/WaveformLayer.h" #include "layer/ColourDatabase.h" +#include "layer/ColourMapper.h" #include "layer/LayerFactory.h" +#include "layer/SpectrogramLayer.h" #include @@ -44,7 +46,7 @@ ("timevalues", QString("") - .arg(int(TimeValueLayer::LogScale)) + .arg(int(TimeValueLayer::AutoAlignScale)) .arg(int(TimeValueLayer::PlotDiscreteCurves)) .arg(27.5f).arg(880.f)); // temporary values: better get the real extents of the data from the model settings.setValue @@ -76,6 +78,17 @@ // what have you). It could be hidden if we don't want to see it // but it must exist. + // A spectrogram, off by default. Must go at the back because it's + // opaque + + SpectrogramLayer *spectrogram = qobject_cast + (m_document->createMainModelLayer(LayerFactory::MelodicRangeSpectrogram)); + spectrogram->setColourMap((int)ColourMapper::BlackOnWhite); + m_document->addLayerToView(m_pane, spectrogram); + spectrogram->setLayerDormant(m_pane, true); + + m_layers[Spectrogram] = spectrogram; + // Our waveform layer is just a shadow, light grey and taking up // little space at the bottom @@ -166,6 +179,7 @@ loadState(Audio); loadState(PitchTrack); loadState(Notes); + loadState(Spectrogram); emit layersChanged(); @@ -200,8 +214,8 @@ bool a = isAudible(c); QSettings settings; settings.beginGroup("Analyser"); - settings.setValue(QString("Visibility %1").arg(int(c)), v); - settings.setValue(QString("Audibility %1").arg(int(c)), a); + settings.setValue(QString("visible-%1").arg(int(c)), v); + settings.setValue(QString("audible-%1").arg(int(c)), a); settings.endGroup(); } @@ -210,8 +224,9 @@ { QSettings settings; settings.beginGroup("Analyser"); - bool v = settings.value(QString("Visibility %1").arg(int(c)), true).toBool(); - bool a = settings.value(QString("Audibility %1").arg(int(c)), true).toBool(); + bool deflt = (c == Spectrogram ? false : true); + bool v = settings.value(QString("visible-%1").arg(int(c)), deflt).toBool(); + bool a = settings.value(QString("audible-%1").arg(int(c)), true).toBool(); settings.endGroup(); setVisible(c, v); setAudible(c, a); diff -r c21b87a62ce6 -r cdc9d5f7978c src/Analyser.h --- a/src/Analyser.h Fri Jan 10 15:46:39 2014 +0000 +++ b/src/Analyser.h Fri Jan 10 16:06:07 2014 +0000 @@ -46,6 +46,7 @@ Audio, PitchTrack, Notes, + Spectrogram, }; bool isVisible(Component c) const; diff -r c21b87a62ce6 -r cdc9d5f7978c src/MainWindow.cpp --- a/src/MainWindow.cpp Fri Jan 10 15:46:39 2014 +0000 +++ b/src/MainWindow.cpp Fri Jan 10 16:06:07 2014 +0000 @@ -716,6 +716,11 @@ connect(m_showAudio, SIGNAL(triggered()), this, SLOT(showAudioToggled())); connect(this, SIGNAL(canPlay(bool)), m_showAudio, SLOT(setEnabled(bool))); + m_showSpect = toolbar->addAction(il.load("spectrogram"), tr("Show Spectrogram")); + m_showSpect->setCheckable(true); + connect(m_showSpect, SIGNAL(triggered()), this, SLOT(showSpectToggled())); + connect(this, SIGNAL(canPlay(bool)), m_showSpect, SLOT(setEnabled(bool))); + m_showPitch = toolbar->addAction(il.load("values"), tr("Show Pitch Track")); m_showPitch->setCheckable(true); connect(m_showPitch, SIGNAL(triggered()), this, SLOT(showPitchToggled())); @@ -840,6 +845,12 @@ } void +MainWindow::showSpectToggled() +{ + m_analyser->toggleVisible(Analyser::Spectrogram); +} + +void MainWindow::showNotesToggled() { m_analyser->toggleVisible(Analyser::Notes); @@ -867,6 +878,7 @@ MainWindow::updateLayerStatuses() { m_showAudio->setChecked(m_analyser->isVisible(Analyser::Audio)); + m_showSpect->setChecked(m_analyser->isVisible(Analyser::Spectrogram)); m_showPitch->setChecked(m_analyser->isVisible(Analyser::PitchTrack)); m_showNotes->setChecked(m_analyser->isVisible(Analyser::Notes)); m_playAudio->setChecked(m_analyser->isAudible(Analyser::Audio)); diff -r c21b87a62ce6 -r cdc9d5f7978c src/MainWindow.h --- a/src/MainWindow.h Fri Jan 10 15:46:39 2014 +0000 +++ b/src/MainWindow.h Fri Jan 10 16:06:07 2014 +0000 @@ -54,6 +54,7 @@ virtual void octaveShiftDown(); virtual void showAudioToggled(); + virtual void showSpectToggled(); virtual void showPitchToggled(); virtual void showNotesToggled(); @@ -142,6 +143,7 @@ bool m_intelligentActionOn; // GF: !!! temporary QAction *m_showAudio; + QAction *m_showSpect; QAction *m_showPitch; QAction *m_showNotes; QAction *m_playAudio;