annotate widgets/LevelPanToolButton.h @ 1127:9fb8dfd7ce4c spectrogram-minor-refactor

Fix threshold in spectrogram -- it wasn't working in the last release. There is a new protocol for this. Formerly the threshold parameter had a range from -50dB to 0 with the default at -50, and -50 treated internally as "no threshold". However, there was a hardcoded, hidden internal threshold for spectrogram colour mapping at -80dB with anything below this being rounded to zero. Now the threshold parameter has range -81 to -1 with the default at -80, -81 is treated internally as "no threshold", and there is no hidden internal threshold. So the default behaviour is the same as before, an effective -80dB threshold, but it is now possible to change this in both directions. Sessions reloaded from prior versions may look slightly different because, if the session says there should be no threshold, there will now actually be no threshold instead of having the hidden internal one. Still need to do something in the UI to make it apparent that the -81dB setting removes the threshold entirely. This is at least no worse than the previous, also obscured, magic -50dB setting.
author Chris Cannam
date Mon, 01 Aug 2016 16:21:01 +0100
parents fcbfc7fad1f2
children 6a6a63506e3f
rev   line source
Chris@929 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@929 2
Chris@929 3 /*
Chris@929 4 Sonic Visualiser
Chris@929 5 An audio file viewer and annotation editor.
Chris@929 6 Centre for Digital Music, Queen Mary, University of London.
Chris@929 7
Chris@929 8 This program is free software; you can redistribute it and/or
Chris@929 9 modify it under the terms of the GNU General Public License as
Chris@929 10 published by the Free Software Foundation; either version 2 of the
Chris@929 11 License, or (at your option) any later version. See the file
Chris@929 12 COPYING included with this distribution for more information.
Chris@929 13 */
Chris@929 14
Chris@929 15 #ifndef LEVEL_PAN_TOOLBUTTON_H
Chris@929 16 #define LEVEL_PAN_TOOLBUTTON_H
Chris@929 17
Chris@929 18 #include <QToolButton>
Chris@929 19
Chris@929 20 class LevelPanWidget;
Chris@929 21
Chris@929 22 class LevelPanToolButton : public QToolButton
Chris@929 23 {
Chris@929 24 Q_OBJECT
Chris@929 25
Chris@929 26 public:
Chris@929 27 LevelPanToolButton(QWidget *parent = 0);
Chris@929 28 ~LevelPanToolButton();
Chris@929 29
Chris@929 30 /// Return level as a gain value in the range [0,1]
Chris@929 31 float getLevel() const;
Chris@929 32
Chris@929 33 /// Return pan as a value in the range [-1,1]
Chris@929 34 float getPan() const;
Chris@929 35
Chris@940 36 /// Discover whether the level range includes muting or not
Chris@940 37 bool includesMute() const;
Chris@940 38
Chris@929 39 void setImageSize(int pixels);
Chris@929 40
Chris@942 41 void setBigImageSize(int pixels);
Chris@942 42
Chris@929 43 public slots:
Chris@929 44 /// Set level in the range [0,1] -- will be rounded
Chris@929 45 void setLevel(float);
Chris@929 46
Chris@929 47 /// Set pan in the range [-1,1] -- will be rounded
Chris@929 48 void setPan(float);
Chris@929 49
Chris@940 50 /// Specify whether the level range should include muting or not
Chris@940 51 void setIncludeMute(bool);
Chris@940 52
Chris@933 53 void setEnabled(bool enabled);
Chris@940 54
Chris@929 55 signals:
Chris@929 56 void levelChanged(float);
Chris@929 57 void panChanged(float);
Chris@929 58
Chris@930 59 private slots:
Chris@930 60 void selfLevelChanged(float);
Chris@930 61 void selfClicked();
Chris@930 62
Chris@929 63 protected:
Chris@932 64 void paintEvent(QPaintEvent *);
Chris@932 65
Chris@929 66 LevelPanWidget *m_lpw;
Chris@929 67 int m_pixels;
Chris@942 68 int m_pixelsBig;
Chris@930 69 bool m_muted;
Chris@930 70 float m_savedLevel;
Chris@929 71 };
Chris@929 72
Chris@929 73 #endif