diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-12-16 22:01:41 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-12-16 22:01:41 +0000 |
| commit | fbf6df0e267774e4cfa32678176869095fa28986 (patch) | |
| tree | d4438e5d329f8423fa37f33cb3990ea772fcfda3 /src | |
| parent | 8ab140dace337d1d413433510a87e161759ccc53 (diff) | |
| download | qmmp-fbf6df0e267774e4cfa32678176869095fa28986.tar.gz qmmp-fbf6df0e267774e4cfa32678176869095fa28986.tar.bz2 qmmp-fbf6df0e267774e4cfa32678176869095fa28986.zip | |
improved equalizer precision
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@689 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/Input/cue/decoder_cue.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Input/cue/decoder_cue.h | 6 | ||||
| -rw-r--r-- | src/qmmp/decoder.cpp | 6 | ||||
| -rw-r--r-- | src/qmmp/decoder.h | 2 | ||||
| -rw-r--r-- | src/qmmp/soundcore.cpp | 2 | ||||
| -rw-r--r-- | src/qmmp/soundcore.h | 8 | ||||
| -rw-r--r-- | src/ui/eqpreset.cpp | 8 | ||||
| -rw-r--r-- | src/ui/eqpreset.h | 12 | ||||
| -rw-r--r-- | src/ui/eqslider.cpp | 12 | ||||
| -rw-r--r-- | src/ui/eqslider.h | 12 | ||||
| -rw-r--r-- | src/ui/eqwidget.cpp | 20 | ||||
| -rw-r--r-- | src/ui/eqwidget.h | 4 | ||||
| -rw-r--r-- | src/ui/mainwindow.cpp | 2 |
13 files changed, 48 insertions, 48 deletions
diff --git a/src/plugins/Input/cue/decoder_cue.cpp b/src/plugins/Input/cue/decoder_cue.cpp index 70bd81e48..a660d3cc0 100644 --- a/src/plugins/Input/cue/decoder_cue.cpp +++ b/src/plugins/Input/cue/decoder_cue.cpp @@ -220,7 +220,7 @@ void DecoderCUE::pause() } } -void DecoderCUE::setEQ(int bands[10], int preamp) +void DecoderCUE::setEQ(double bands[10], double preamp) { for (int i = 0; i < 10; ++i) m_bands2[i] = bands[i]; diff --git a/src/plugins/Input/cue/decoder_cue.h b/src/plugins/Input/cue/decoder_cue.h index 2b1904f4a..35ab8496e 100644 --- a/src/plugins/Input/cue/decoder_cue.h +++ b/src/plugins/Input/cue/decoder_cue.h @@ -43,7 +43,7 @@ public: void pause(); // Equalizer - void setEQ(int bands[10], int preamp); + void setEQ(double bands[10], double preamp); void setEQEnabled(bool on); private: @@ -55,8 +55,8 @@ private: QIODevice *m_input2; qint64 m_length; qint64 m_offset; - int m_preamp2; - int m_bands2[10]; + double m_preamp2; + double m_bands2[10]; bool m_useEQ2; }; diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp index 13cbd51a2..e9aa42b27 100644 --- a/src/qmmp/decoder.cpp +++ b/src/qmmp/decoder.cpp @@ -53,7 +53,7 @@ void Decoder::init() { if (m_output) m_output->recycler()->clear(); - int b[] = {0,0,0,0,0,0,0,0,0,0}; + double b[] = {0,0,0,0,0,0,0,0,0,0}; setEQ(b, 0); qRegisterMetaType<Qmmp::State>("Qmmp::State"); blksize = Buffer::size(); @@ -96,13 +96,13 @@ void Decoder::setStateHandler(StateHandler *handler) m_handler = handler; } -void Decoder::setEQ(int bands[10], int preamp) +void Decoder::setEQ(double bands[10], double preamp) { set_preamp(0, 1.0 + 0.0932471 *preamp + 0.00279033 * preamp * preamp); set_preamp(1, 1.0 + 0.0932471 *preamp + 0.00279033 * preamp * preamp); for (int i=0; i<10; ++i) { - int value = bands[i]; + double value = bands[i]; set_gain(i,0, 0.03*value+0.000999999*value*value); set_gain(i,1, 0.03*value+0.000999999*value*value); } diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h index 4a4a9ab98..ef3a74308 100644 --- a/src/qmmp/decoder.h +++ b/src/qmmp/decoder.h @@ -55,7 +55,7 @@ public: StateHandler *stateHandler(); void setStateHandler(StateHandler *handler); - virtual void setEQ(int bands[10], int preamp); + virtual void setEQ(double bands[10], double preamp); virtual void setEQEnabled(bool on); // static methods diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index 2474092c0..9eafb557d 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -248,7 +248,7 @@ qint64 SoundCore::length() const return (m_decoder) ? m_decoder->lengthInSeconds() : 0; } -void SoundCore::setEQ(int bands[10], const int &preamp) +void SoundCore::setEQ(double bands[10], double preamp) { for (int i = 0; i < 10; ++i) m_bands[i] = bands[i]; diff --git a/src/qmmp/soundcore.h b/src/qmmp/soundcore.h index df3792be5..03af722a9 100644 --- a/src/qmmp/soundcore.h +++ b/src/qmmp/soundcore.h @@ -52,9 +52,9 @@ public: /*! * Sets equalizer settings. Each item of \p bands[] and \p reamp should be - * \b -100..100 + * \b -20.0..20.0 */ - void setEQ(int bands[10], const int &preamp); + void setEQ(double bands[10], double preamp); /*! * Enables equalizer if \p on is \b TRUE or disables it if \p on is \b FALSE @@ -161,8 +161,8 @@ private: bool m_useEQ; bool m_update; bool m_block; - int m_preamp; - int m_bands[10]; + double m_preamp; + double m_bands[10]; Visual *m_vis; QList <Visual*> m_visuals; QWidget *m_parentWidget; diff --git a/src/ui/eqpreset.cpp b/src/ui/eqpreset.cpp index 760dea9d2..533dd4f67 100644 --- a/src/ui/eqpreset.cpp +++ b/src/ui/eqpreset.cpp @@ -31,26 +31,26 @@ EQPreset::EQPreset() EQPreset::~EQPreset() {} -void EQPreset::setGain(int n, int value) +void EQPreset::setGain(int n, double value) { if(n > 9 || n < 0) return; m_bands[n] = value; } -void EQPreset::setPreamp(int preamp) +void EQPreset::setPreamp(double preamp) { m_preamp = preamp; } -int EQPreset::gain(int n) +double EQPreset::gain(int n) { if(n > 9 || n < 0) return 0; return m_bands[n]; } -int EQPreset::preamp() +double EQPreset::preamp() { return m_preamp; } diff --git a/src/ui/eqpreset.h b/src/ui/eqpreset.h index 80f31747e..fd99e6826 100644 --- a/src/ui/eqpreset.h +++ b/src/ui/eqpreset.h @@ -32,15 +32,15 @@ public: ~EQPreset(); - void setGain(int n, int value); - void setPreamp(int); + void setGain(int n, double value); + void setPreamp(double); - int gain(int n); - int preamp(); + double gain(int n); + double preamp(); private: - int m_bands[10]; - int m_preamp; + double m_bands[10]; + double m_preamp; }; diff --git a/src/ui/eqslider.cpp b/src/ui/eqslider.cpp index bdc4ec4e2..5c08c71e3 100644 --- a/src/ui/eqslider.cpp +++ b/src/ui/eqslider.cpp @@ -94,12 +94,12 @@ void EqSlider::mouseMoveEvent(QMouseEvent* e) } } -int EqSlider::value() +double EqSlider::value() { - return -m_value; + return - m_value; } -void EqSlider::setValue(int p) +void EqSlider::setValue(double p) { if (m_moving) return; @@ -107,7 +107,7 @@ void EqSlider::setValue(int p) draw(FALSE); } -void EqSlider::setMax(int m) +void EqSlider::setMax(double m) { m_max = m; draw(FALSE); @@ -131,9 +131,9 @@ void EqSlider::draw(bool pressed) m_pos = p; } -int EqSlider::convert(int p) +double EqSlider::convert(int p) { - return int(ceil(double(m_max-m_min)*(p)/(height()-12)+m_min)); + return (m_max - m_min)*(p)/(height() - 12) + m_min; } void EqSlider::wheelEvent(QWheelEvent *e) diff --git a/src/ui/eqslider.h b/src/ui/eqslider.h index 54dc9f285..3915ec05b 100644 --- a/src/ui/eqslider.h +++ b/src/ui/eqslider.h @@ -38,14 +38,14 @@ public: ~EqSlider(); - int value(); + double value(); public slots: - void setValue(int); - void setMax(int); + void setValue(double); + void setMax(double); signals: - void sliderMoved (int); + void sliderMoved (double); private slots: void updateSkin(); @@ -54,9 +54,9 @@ private: Skin *m_skin; bool m_moving; int press_pos; - int m_max, m_min, m_pos, m_value, m_old; + double m_max, m_min, m_pos, m_value, m_old; QPixmap m_pixmap; - int convert(int); // value = convert(position); + double convert(int); // value = convert(position); void draw(bool pressed = TRUE); protected: diff --git a/src/ui/eqwidget.cpp b/src/ui/eqwidget.cpp index 457bfd5e0..860830146 100644 --- a/src/ui/eqwidget.cpp +++ b/src/ui/eqwidget.cpp @@ -54,7 +54,7 @@ EqWidget::EqWidget (QWidget *parent) m_preamp = new EqSlider (this); m_preamp->show(); m_preamp->move (21,38); - connect (m_preamp,SIGNAL (sliderMoved (int)),SLOT (setPreamp ())); + connect (m_preamp,SIGNAL (sliderMoved (double)),SLOT (setPreamp ())); m_on = new ToggleButton (this,Skin::EQ_BT_ON_N,Skin::EQ_BT_ON_P, Skin::EQ_BT_OFF_N,Skin::EQ_BT_OFF_P); @@ -83,7 +83,7 @@ EqWidget::EqWidget (QWidget *parent) m_sliders << new EqSlider (this); m_sliders.at (i)->move (78+i*18,38); m_sliders.at (i)->show(); - connect (m_sliders.at (i), SIGNAL (sliderMoved (int)),SLOT (setGain())); + connect (m_sliders.at (i), SIGNAL (sliderMoved (double)),SLOT (setGain())); } readSettings(); createActions(); @@ -98,12 +98,12 @@ EqWidget::~EqWidget() delete m_autoPresets.takeFirst(); } -int EqWidget::preamp() +double EqWidget::preamp() { return m_preamp->value(); } -int EqWidget::gain (int g) +double EqWidget::gain (int g) { return m_sliders.at (g)->value(); } @@ -138,8 +138,8 @@ void EqWidget::readSettings() //equalizer for (int i = 0; i < m_sliders.size(); ++i) m_sliders.at(i)->setValue(settings.value("band_"+ - QString("%1").arg(i), 0).toInt()); - m_preamp->setValue(settings.value("preamp", 0).toInt()); + QString("%1").arg(i), 0).toDouble()); + m_preamp->setValue(settings.value("preamp", 0).toDouble()); m_on->setON(settings.value("enabled", FALSE).toBool()); settings.endGroup(); setGain(); @@ -157,9 +157,9 @@ void EqWidget::readSettings() for (int j = 0; j < 10; ++j) { preset->setGain(j,eq_preset.value("Band"+QString("%1").arg(j), - 0).toInt()); + 0).toDouble()); } - preset->setPreamp(eq_preset.value("Preamp",0).toInt()); + preset->setPreamp(eq_preset.value("Preamp",0).toDouble()); m_presets.append(preset); eq_preset.endGroup(); } @@ -180,9 +180,9 @@ void EqWidget::readSettings() for (int j = 0; j < 10; ++j) { preset->setGain(j,eq_auto.value("Band"+QString("%1").arg(j), - 0).toInt()); + 0).toDouble()); } - preset->setPreamp(eq_auto.value("Preamp",0).toInt()); + preset->setPreamp(eq_auto.value("Preamp",0).toDouble()); m_autoPresets.append(preset); eq_auto.endGroup(); } diff --git a/src/ui/eqwidget.h b/src/ui/eqwidget.h index 7e30eec86..da79c3073 100644 --- a/src/ui/eqwidget.h +++ b/src/ui/eqwidget.h @@ -46,8 +46,8 @@ public: ~EqWidget(); - int preamp(); - int gain(int); + double preamp(); + double gain(int); bool isEQEnabled(); /*! * necessary for auto-load presets diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index ec2ebbb1b..d9a45249d 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -212,7 +212,7 @@ void MainWindow::previous() void MainWindow::updateEQ() { - int b[10]; + double b[10]; for (int i=0; i<10; ++i) b[i] = m_equalizer->gain(i); m_core->setEQ(b, m_equalizer->preamp()); |
