* (at your option) any later version. *
***************************************************************************/
+/**
+ Displays a spectral power distribution of audio samples.
+ The frequency distribution is calculated by means of a Fast Fourier Transformation.
+ For more information see Wikipedia:FFT and the code comments.
+*/
+
#ifndef AUDIOSPECTRUM_H
#define AUDIOSPECTRUM_H
#include <QtCore>
+#include <QVector>
+#include <QHash>
#include "abstractaudioscopewidget.h"
#include "ui_audiospectrum_ui.h"
#include "tools/kiss_fftr.h"
+#include "ffttools.h"
class AudioSpectrum_UI;
-
class AudioSpectrum : public AbstractAudioScopeWidget {
Q_OBJECT
public:
- AudioSpectrum(Monitor *projMonitor, Monitor *clipMonitor, QWidget *parent = 0);
+ AudioSpectrum(QWidget *parent = 0);
~AudioSpectrum();
// Implemented virtual methods
QString widgetName() const;
+
protected:
///// Implemented methods /////
QRect scopeRect();
virtual void readConfig();
void writeConfig();
+ virtual void handleMouseDrag(const QPoint movement, const RescaleDirection rescaleDirection, const Qt::KeyboardModifiers rescaleModifiers);
+
private:
Ui::AudioSpectrum_UI *ui;
- kiss_fftr_cfg m_cfg;
- QAction *m_aLin;
- QAction *m_aLog;
- QActionGroup *m_agScale;
+ QAction *m_aResetHz;
- QSize m_distance;
+ FFTTools m_fftTools;
+
+ /** Contains the plot only; m_scopeRect contains text and widgets as well */
+ QRect m_innerScopeRect;
/** Lower bound for the dB value to display */
int m_dBmin;
/** Upper bound (max: 0) */
int m_dBmax;
+ /** Maximum frequency (limited by the sampling rate if determined automatically).
+ Stored for the painters. */
uint m_freqMax;
+ /** The user has chosen a custom frequency. */
+ bool m_customFreq;
+
+
private slots:
- void slotUpdateCfg();
+ void slotResetMaxFreq();
};