Mercurial > hg > tony
changeset 159:180e6af1806c
added gain knobs for Audio and Notes
author | Justin Salamon <justin.salamon@nyu.edu> |
---|---|
date | Thu, 23 Jan 2014 15:57:51 -0500 |
parents | e1a2c175a0e0 |
children | 106fdf38c6c9 |
files | src/MainWindow.cpp src/MainWindow.h |
diffstat | 2 files changed, 128 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/MainWindow.cpp Thu Jan 23 09:30:38 2014 +0000 +++ b/src/MainWindow.cpp Thu Jan 23 15:57:51 2014 -0500 @@ -212,6 +212,24 @@ connect(m_playSpeed, SIGNAL(mouseEntered()), this, SLOT(mouseEnteredWidget())); connect(m_playSpeed, SIGNAL(mouseLeft()), this, SLOT(mouseLeftWidget())); + // Gain controls + m_gainAudio = new AudioDial(frame); + m_gainAudio->setMinimum(-50); + m_gainAudio->setMaximum(50); + m_gainAudio->setValue(0); + m_gainAudio->setDefaultValue(0); + m_gainAudio->setFixedWidth(24); + m_gainAudio->setFixedHeight(24); + m_gainAudio->setNotchesVisible(true); + m_gainAudio->setPageStep(10); + m_gainAudio->setObjectName(tr("Audio Track Gain")); + m_gainAudio->setRangeMapper(new LinearRangeMapper(-50, 50, -25, 25, tr("dB"))); + m_gainAudio->setShowToolTip(true); + connect(m_gainAudio, SIGNAL(valueChanged(int)), + this, SLOT(audioGainChanged(int))); + connect(m_gainAudio, SIGNAL(mouseEntered()), this, SLOT(mouseEnteredWidget())); + connect(m_gainAudio, SIGNAL(mouseLeft()), this, SLOT(mouseLeftWidget())); + m_gainPitch = new AudioDial(frame); m_gainPitch->setMinimum(-50); m_gainPitch->setMaximum(50); @@ -229,6 +247,24 @@ connect(m_gainPitch, SIGNAL(mouseEntered()), this, SLOT(mouseEnteredWidget())); connect(m_gainPitch, SIGNAL(mouseLeft()), this, SLOT(mouseLeftWidget())); + m_gainNotes = new AudioDial(frame); + m_gainNotes->setMinimum(-50); + m_gainNotes->setMaximum(50); + m_gainNotes->setValue(0); + m_gainNotes->setDefaultValue(0); + m_gainNotes->setFixedWidth(24); + m_gainNotes->setFixedHeight(24); + m_gainNotes->setNotchesVisible(true); + m_gainNotes->setPageStep(10); + m_gainNotes->setObjectName(tr("Pitch Track Gain")); + m_gainNotes->setRangeMapper(new LinearRangeMapper(-50, 50, -25, 25, tr("dB"))); + m_gainNotes->setShowToolTip(true); + connect(m_gainNotes, SIGNAL(valueChanged(int)), + this, SLOT(notesGainChanged(int))); + connect(m_gainNotes, SIGNAL(mouseEntered()), this, SLOT(mouseEnteredWidget())); + connect(m_gainNotes, SIGNAL(mouseLeft()), this, SLOT(mouseLeftWidget())); + // End of Gain controls + layout->setSpacing(4); layout->addWidget(m_overview, 0, 1); layout->addWidget(scroll, 1, 1); @@ -788,6 +824,8 @@ connect(m_playAudio, SIGNAL(triggered()), this, SLOT(playAudioToggled())); connect(this, SIGNAL(canPlay(bool)), m_playAudio, SLOT(setEnabled(bool))); + toolbar->addWidget(m_gainAudio); + // Pitch (f0) QLabel *icon_pitch = new QLabel; icon_pitch->setFixedWidth(40); @@ -824,6 +862,8 @@ connect(m_playNotes, SIGNAL(triggered()), this, SLOT(playNotesToggled())); connect(this, SIGNAL(canPlay(bool)), m_playNotes, SLOT(setEnabled(bool))); + toolbar->addWidget(m_gainNotes); + // Spectrogram QLabel *icon_spectrogram = new QLabel; icon_spectrogram->setFixedWidth(40); @@ -1663,6 +1703,45 @@ } void +MainWindow::audioGainChanged(int position) +{ + float level = m_gainAudio->mappedValue(); + float gain = powf(10, level / 20.0); + + cerr << "gain = " << gain << " (" << position << " dB)" << endl; + + contextHelpChanged(tr("Audio Gain: %1 dB").arg(position)); + + m_analyser->setGain(Analyser::Audio, gain); + + updateMenuStates(); +} + +void +MainWindow::increaseAudioGain() +{ + int value = m_gainAudio->value(); + value = value + m_gainAudio->pageStep(); + if (value > m_gainAudio->maximum()) value = m_gainAudio->maximum(); + m_gainAudio->setValue(value); +} + +void +MainWindow::decreaseAudioGain() +{ + int value = m_gainAudio->value(); + value = value - m_gainAudio->pageStep(); + if (value < m_gainAudio->minimum()) value = m_gainAudio->minimum(); + m_gainAudio->setValue(value); +} + +void +MainWindow::restoreNormalAudioGain() +{ + m_gainAudio->setValue(m_gainAudio->defaultValue()); +} + +void MainWindow::pitchGainChanged(int position) { float level = m_gainPitch->mappedValue(); @@ -1702,6 +1781,45 @@ } void +MainWindow::notesGainChanged(int position) +{ + float level = m_gainNotes->mappedValue(); + float gain = powf(10, level / 20.0); + + cerr << "gain = " << gain << " (" << position << " dB)" << endl; + + contextHelpChanged(tr("Notes Gain: %1 dB").arg(position)); + + m_analyser->setGain(Analyser::Notes, gain); + + updateMenuStates(); +} + +void +MainWindow::increaseNotesGain() +{ + int value = m_gainNotes->value(); + value = value + m_gainNotes->pageStep(); + if (value > m_gainNotes->maximum()) value = m_gainNotes->maximum(); + m_gainNotes->setValue(value); +} + +void +MainWindow::decreaseNotesGain() +{ + int value = m_gainNotes->value(); + value = value - m_gainNotes->pageStep(); + if (value < m_gainNotes->minimum()) value = m_gainNotes->minimum(); + m_gainNotes->setValue(value); +} + +void +MainWindow::restoreNormalNotesGain() +{ + m_gainNotes->setValue(m_gainNotes->defaultValue()); +} + +void MainWindow::updateVisibleRangeDisplay(Pane *p) const { if (!getMainModel() || !p) {
--- a/src/MainWindow.h Thu Jan 23 09:30:38 2014 +0000 +++ b/src/MainWindow.h Thu Jan 23 15:57:51 2014 -0500 @@ -79,11 +79,21 @@ virtual void slowDownPlayback(); virtual void restoreNormalPlayback(); + virtual void audioGainChanged(int); + virtual void increaseAudioGain(); + virtual void decreaseAudioGain(); + virtual void restoreNormalAudioGain(); + virtual void pitchGainChanged(int); virtual void increasePitchGain(); virtual void decreasePitchGain(); virtual void restoreNormalPitchGain(); + virtual void notesGainChanged(int); + virtual void increaseNotesGain(); + virtual void decreaseNotesGain(); + virtual void restoreNormalNotesGain(); + virtual void sampleRateMismatch(size_t, size_t, bool); virtual void audioOverloadPluginDisabled(); virtual void audioTimeStretchMultiChannelDisabled();