diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-02-27 22:26:57 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-02-27 22:26:57 +0100 |
| commit | bcc4e2f7dc4cd5658e199ddacb7202b00ec72cf1 (patch) | |
| tree | 70a6d59908b1d1391e2f9ecd2c8bd17890b3bbc5 /src/wx | |
| parent | a2ceaa313a2b8ba28516c935f7f8b82d69957b77 (diff) | |
Add and use dB/linear conversion functions.
Diffstat (limited to 'src/wx')
| -rw-r--r-- | src/wx/audio_dialog.cc | 4 | ||||
| -rw-r--r-- | src/wx/audio_gain_dialog.cc | 11 | ||||
| -rw-r--r-- | src/wx/audio_mapping_view.cc | 6 | ||||
| -rw-r--r-- | src/wx/audio_panel.cc | 2 | ||||
| -rw-r--r-- | src/wx/audio_plot.cc | 8 |
5 files changed, 16 insertions, 15 deletions
diff --git a/src/wx/audio_dialog.cc b/src/wx/audio_dialog.cc index 9b3a93769..2f1f1c826 100644 --- a/src/wx/audio_dialog.cc +++ b/src/wx/audio_dialog.cc @@ -366,7 +366,7 @@ AudioDialog::setup_statistics () } pair<AudioAnalysis::PeakTime, int> const peak = _analysis->overall_sample_peak (); - float const peak_dB = 20 * log10 (peak.first.peak) + _analysis->gain_correction (_playlist); + float const peak_dB = linear_to_db(peak.first.peak) + _analysis->gain_correction(_playlist); _sample_peak->SetLabel ( wxString::Format ( _("Sample peak is %.2fdB at %s on %s"), @@ -384,7 +384,7 @@ AudioDialog::setup_statistics () if (_analysis->overall_true_peak()) { float const peak = _analysis->overall_true_peak().get(); - float const peak_dB = 20 * log10 (peak) + _analysis->gain_correction (_playlist); + float const peak_dB = linear_to_db(peak) + _analysis->gain_correction(_playlist); _true_peak->SetLabel (wxString::Format (_("True peak is %.2fdB"), peak_dB)); diff --git a/src/wx/audio_gain_dialog.cc b/src/wx/audio_gain_dialog.cc index 72b3f86ca..5cd936d24 100644 --- a/src/wx/audio_gain_dialog.cc +++ b/src/wx/audio_gain_dialog.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014 Carl Hetherington <cth@carlh.net> + Copyright (C) 2014-2020 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -18,10 +18,11 @@ */ -#include <cmath> -#include <wx/spinctrl.h> #include "audio_gain_dialog.h" #include "wx_util.h" +#include "lib/util.h" +#include <cmath> +#include <wx/spinctrl.h> AudioGainDialog::AudioGainDialog (wxWindow* parent, int c, int d, float v) : TableDialog (parent, _("Channel gain"), 3, 1, true) @@ -34,7 +35,7 @@ AudioGainDialog::AudioGainDialog (wxWindow* parent, int c, int d, float v) _gain->SetDigits (1); _gain->SetIncrement (0.1); - _gain->SetValue (20 * log10 (v)); + _gain->SetValue (linear_to_db(v)); layout (); } @@ -46,5 +47,5 @@ AudioGainDialog::value () const return 0; } - return pow (10, _gain->GetValue () / 20); + return db_to_linear (_gain->GetValue()); } diff --git a/src/wx/audio_mapping_view.cc b/src/wx/audio_mapping_view.cc index 140f18d60..937dea558 100644 --- a/src/wx/audio_mapping_view.cc +++ b/src/wx/audio_mapping_view.cc @@ -308,7 +308,7 @@ AudioMappingView::paint_indicators (wxDC& dc) ) ); - float const value_dB = 20 * log10 (_map.get(y, x)); + float const value_dB = linear_to_db(_map.get(y, x)); int const range = 18; int height = 0; if (value_dB > -range) { @@ -504,7 +504,7 @@ AudioMappingView::full () void AudioMappingView::minus6dB () { - _map.set (_menu_input, _menu_output, pow (10, -6.0 / 20)); + _map.set (_menu_input, _menu_output, db_to_linear(-6)); map_values_changed (); } @@ -599,7 +599,7 @@ AudioMappingView::motion (wxMouseEvent& ev) safe_output_channel_name(channels->second) ); } else { - float const dB = 20 * log10 (gain); + float const dB = linear_to_db(gain); s = wxString::Format ( _("Audio will be passed from %s channel %s to %s channel %s with gain %.1fdB."), _from, diff --git a/src/wx/audio_panel.cc b/src/wx/audio_panel.cc index d6137ad9f..37d6f8bb6 100644 --- a/src/wx/audio_panel.cc +++ b/src/wx/audio_panel.cc @@ -381,7 +381,7 @@ AudioPanel::peak () const playlist->add (_parent->film(), sel.front()); try { shared_ptr<AudioAnalysis> analysis (new AudioAnalysis(_parent->film()->audio_analysis_path(playlist))); - peak_dB = 20 * log10 (analysis->overall_sample_peak().first.peak) + analysis->gain_correction(playlist); + peak_dB = linear_to_db(analysis->overall_sample_peak().first.peak) + analysis->gain_correction(playlist); } catch (...) { } diff --git a/src/wx/audio_plot.cc b/src/wx/audio_plot.cc index 3da7a50ff..0b7b29923 100644 --- a/src/wx/audio_plot.cc +++ b/src/wx/audio_plot.cc @@ -267,7 +267,7 @@ AudioPlot::y_for_linear (float p, Metrics const & metrics) const p = 1e-4; } - return metrics.height - (20 * log10(p) - _minimum) * metrics.y_scale - metrics.y_origin; + return metrics.height - (linear_to_db(p) - _minimum) * metrics.y_scale - metrics.y_origin; } void @@ -294,7 +294,7 @@ AudioPlot::plot_peak (wxGraphicsPath& path, int channel, Metrics const & metrics Point ( wxPoint (metrics.db_label_width + i * metrics.x_scale, y_for_linear (peak, metrics)), DCPTime::from_frames (i * _analysis->samples_per_point(), _analysis->sample_rate()), - 20 * log10(peak) + linear_to_db(peak) ) ); } @@ -363,7 +363,7 @@ AudioPlot::plot_rms (wxGraphicsPath& path, int channel, Metrics const & metrics) Point ( wxPoint (metrics.db_label_width + i * metrics.x_scale, y_for_linear (p, metrics)), DCPTime::from_frames (i * _analysis->samples_per_point(), _analysis->sample_rate()), - 20 * log10(p) + linear_to_db(p) ) ); } @@ -397,7 +397,7 @@ AudioPlot::get_point (int channel, int point) const { AudioPoint p = _analysis->get_point (channel, point); for (int i = 0; i < AudioPoint::COUNT; ++i) { - p[i] *= pow (10, _gain_correction / 20); + p[i] *= db_to_linear(_gain_correction); } return p; |
