summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-12-30 15:46:44 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2013-12-30 15:46:44 -0500
commit7158eb7565e603491e2a576581939c55d13f2900 (patch)
treeab98f69c05e789aabbc36da274a8defc64224464 /libs
parent2d50adaf3acda79f5e961ff3463df4ff259ec8b7 (diff)
add configurable clipping level to Canvas::WaveView
Diffstat (limited to 'libs')
-rw-r--r--libs/canvas/canvas/wave_view.h4
-rw-r--r--libs/canvas/wave_view.cc10
2 files changed, 13 insertions, 1 deletions
diff --git a/libs/canvas/canvas/wave_view.h b/libs/canvas/canvas/wave_view.h
index 3272797e5a..b80ae5183d 100644
--- a/libs/canvas/canvas/wave_view.h
+++ b/libs/canvas/canvas/wave_view.h
@@ -115,6 +115,9 @@ public:
void set_amplitude_above_axis (double v);
double amplitude_above_axis () const { return _amplitude_above_axis; }
+ static void set_clip_level (double dB);
+ static PBD::Signal0<void> ClipLevelChanged;
+
#ifdef CANVAS_COMPATIBILITY
void*& property_gain_src () {
return _foo_void;
@@ -163,6 +166,7 @@ private:
static bool _global_logscaled;
static Shape _global_shape;
static bool _global_show_waveform_clipping;
+ static double _clip_level;
static PBD::Signal0<void> VisualPropertiesChanged;
diff --git a/libs/canvas/wave_view.cc b/libs/canvas/wave_view.cc
index 3467672b88..d73c906f3a 100644
--- a/libs/canvas/wave_view.cc
+++ b/libs/canvas/wave_view.cc
@@ -45,6 +45,7 @@ double WaveView::_global_gradient_depth = 0.6;
bool WaveView::_global_logscaled = false;
WaveView::Shape WaveView::_global_shape = WaveView::Normal;
bool WaveView::_global_show_waveform_clipping = true;
+double WaveView::_clip_level = 0.98853;
PBD::Signal0<void> WaveView::VisualPropertiesChanged;
@@ -161,6 +162,13 @@ alt_log_meter (float power)
return _log_meter (power, -192.0, 0.0, 8.0);
}
+void
+WaveView::set_clip_level (double dB)
+{
+ _clip_level = dB_to_coefficient (dB);
+ ClipLevelChanged ();
+}
+
struct LineTips {
double top;
double bot;
@@ -189,7 +197,7 @@ WaveView::draw_image (PeakData* _peaks, int n_peaks) const
has been scaled by scale_amplitude() already.
*/
- const double clip_level = 0.98853 * _region->scale_amplitude();
+ const double clip_level = _clip_level * _region->scale_amplitude();
if (_shape == WaveView::Rectified) {