From 72d2ab0d3f9508e8c0cbebc04f501c8d1bb9b3f6 Mon Sep 17 00:00:00 2001 From: Mike Date: Sun, 16 Aug 2015 12:13:07 +0200 Subject: [PATCH] Add sample rate control re #10 --- mainwindow.cpp | 6 ++++++ mainwindow.h | 1 + spectrogram.cpp | 7 +++++++ spectrogram.h | 2 ++ spectrogramcontrols.cpp | 5 +++++ spectrogramcontrols.h | 2 ++ 6 files changed, 23 insertions(+) diff --git a/mainwindow.cpp b/mainwindow.cpp index aa92b3d..71f6ce0 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -14,6 +14,7 @@ MainWindow::MainWindow() addDockWidget(Qt::LeftDockWidgetArea, dock); connect(dock->fileOpenButton, SIGNAL(clicked()), &spectrogram, SLOT(pickFile())); + connect(dock->sampleRate, SIGNAL(textChanged(QString)), this, SLOT(setSampleRate(QString))); connect(dock, SIGNAL(fftSizeChanged(int)), this, SLOT(setFFTSize(int))); connect(dock->zoomLevelSlider, SIGNAL(valueChanged(int)), this, SLOT(setZoomLevel(int))); connect(dock->powerMaxSlider, SIGNAL(valueChanged(int)), &spectrogram, SLOT(setPowerMax(int))); @@ -42,6 +43,11 @@ bool MainWindow::eventFilter(QObject * /*obj*/, QEvent *event) return false; } +void MainWindow::setSampleRate(QString rate) +{ + spectrogram.setSampleRate(rate.toInt()); +} + void MainWindow::setFFTSize(int size) { off_t sample = getCenterSample(); diff --git a/mainwindow.h b/mainwindow.h index fa6ae9c..5fed64d 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -13,6 +13,7 @@ public: MainWindow(); public slots: + void setSampleRate(QString rate); void setFFTSize(int size); void setZoomLevel(int zoom); diff --git a/spectrogram.cpp b/spectrogram.cpp index 40239d2..e303023 100644 --- a/spectrogram.cpp +++ b/spectrogram.cpp @@ -9,6 +9,7 @@ Spectrogram::Spectrogram() { + sampleRate = 8000000; setFFTSize(1024); zoomLevel = 0; powerMax = 0.0f; @@ -161,6 +162,12 @@ void Spectrogram::getLine(float *dest, int y) } } +void Spectrogram::setSampleRate(int rate) +{ + sampleRate = rate; + update(); +} + void Spectrogram::setFFTSize(int size) { fftSize = size; diff --git a/spectrogram.h b/spectrogram.h index 98d6b14..335c11e 100644 --- a/spectrogram.h +++ b/spectrogram.h @@ -18,6 +18,7 @@ public: public slots: void pickFile(); + void setSampleRate(int rate); void setFFTSize(int size); void setPowerMax(int power); void setPowerMin(int power); @@ -33,6 +34,7 @@ private: std::unique_ptr window; fftwf_complex *lineBuffer = nullptr; + int sampleRate; int fftSize; int zoomLevel; float powerMax; diff --git a/spectrogramcontrols.cpp b/spectrogramcontrols.cpp index 6b7755d..e6cc513 100644 --- a/spectrogramcontrols.cpp +++ b/spectrogramcontrols.cpp @@ -1,4 +1,5 @@ #include "spectrogramcontrols.h" +#include #include SpectrogramControls::SpectrogramControls(const QString & title, QWidget * parent) @@ -10,6 +11,10 @@ SpectrogramControls::SpectrogramControls(const QString & title, QWidget * parent fileOpenButton = new QPushButton("Open file...", widget); layout->addRow(fileOpenButton); + sampleRate = new QLineEdit("8000000"); + sampleRate->setValidator(new QIntValidator(this)); + layout->addRow(new QLabel(tr("Sample rate:")), sampleRate); + fftSizeSlider = new QSlider(Qt::Horizontal, widget); fftSizeSlider->setRange(7, 13); fftSizeSlider->setValue(10); diff --git a/spectrogramcontrols.h b/spectrogramcontrols.h index a5acac7..7c278a7 100644 --- a/spectrogramcontrols.h +++ b/spectrogramcontrols.h @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -22,6 +23,7 @@ private: QFormLayout *layout; public: QPushButton *fileOpenButton; + QLineEdit *sampleRate; QSlider *fftSizeSlider; QSlider *zoomLevelSlider; QSlider *powerMaxSlider;