diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-07-02 01:32:54 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2019-07-02 01:32:54 +0100 |
| commit | e6c828cbd577239e7c8e4c532161084a33843a0f (patch) | |
| tree | 2290dcdc341e47bcec5ed9f364be9f457b7bf3c0 /src/wx | |
| parent | 8c0414a0dec9f444a80fc30c7be3bc82188446d4 (diff) | |
Add support for Datasat AP2x and USL sound processors when converting
fader position to gain. Stop storing a chosen processor in config;
instead, get the user to choose the processor when calculating gains.
Diffstat (limited to 'src/wx')
| -rw-r--r-- | src/wx/audio_panel.cc | 10 | ||||
| -rw-r--r-- | src/wx/gain_calculator_dialog.cc | 36 | ||||
| -rw-r--r-- | src/wx/gain_calculator_dialog.h | 7 |
3 files changed, 28 insertions, 25 deletions
diff --git a/src/wx/audio_panel.cc b/src/wx/audio_panel.cc index ccdb57907..0cb062efd 100644 --- a/src/wx/audio_panel.cc +++ b/src/wx/audio_panel.cc @@ -251,18 +251,14 @@ AudioPanel::gain_calculate_button_clicked () { GainCalculatorDialog* d = new GainCalculatorDialog (this); int const r = d->ShowModal (); + optional<float> c = d->db_change(); - if (r == wxID_CANCEL || d->wanted_fader() == 0 || d->actual_fader() == 0) { + if (r == wxID_CANCEL || !c) { d->Destroy (); return; } - _gain->wrapped()->SetValue ( - Config::instance()->cinema_sound_processor()->db_for_fader_change ( - d->wanted_fader (), - d->actual_fader () - ) - ); + _gain->wrapped()->SetValue (*c); /* This appears to be necessary, as the change is not signalled, I think. diff --git a/src/wx/gain_calculator_dialog.cc b/src/wx/gain_calculator_dialog.cc index 8818aee9e..701856610 100644 --- a/src/wx/gain_calculator_dialog.cc +++ b/src/wx/gain_calculator_dialog.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net> + Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -21,35 +21,41 @@ #include "gain_calculator_dialog.h" #include "wx_util.h" #include "lib/util.h" +#include "lib/cinema_sound_processor.h" + +using boost::optional; GainCalculatorDialog::GainCalculatorDialog (wxWindow* parent) : TableDialog (parent, _("Gain Calculator"), 2, 1, true) { + add (_("Sound processor"), true); + _processor = add (new wxChoice(this, wxID_ANY)); + add (_("I want to play this back at fader"), true); _wanted = add (new wxTextCtrl (this, wxID_ANY, wxT (""), wxDefaultPosition, wxDefaultSize, 0, wxTextValidator (wxFILTER_NUMERIC))); add (_("But I have to use fader"), true); _actual = add (new wxTextCtrl (this, wxID_ANY, wxT (""), wxDefaultPosition, wxDefaultSize, 0, wxTextValidator (wxFILTER_NUMERIC))); - layout (); -} - -float -GainCalculatorDialog::wanted_fader () const -{ - if (_wanted->GetValue().IsEmpty()) { - return 0; + BOOST_FOREACH (CinemaSoundProcessor const * i, CinemaSoundProcessor::all()) { + _processor->Append (std_to_wx(i->name())); } - return relaxed_string_to_float (wx_to_std (_wanted->GetValue ())); + _processor->SetSelection (0); + + layout (); } -float -GainCalculatorDialog::actual_fader () const +optional<float> +GainCalculatorDialog::db_change () const { - if (_actual->GetValue().IsEmpty()) { - return 0; + if (_wanted->GetValue().IsEmpty() || _actual->GetValue().IsEmpty()) { + return optional<float>(); } - return relaxed_string_to_float (wx_to_std (_actual->GetValue ())); + return CinemaSoundProcessor::from_index( + _processor->GetSelection())->db_for_fader_change( + relaxed_string_to_float(wx_to_std(_wanted->GetValue())), + relaxed_string_to_float(wx_to_std(_actual->GetValue())) + ); } diff --git a/src/wx/gain_calculator_dialog.h b/src/wx/gain_calculator_dialog.h index e1ed026b8..addc07288 100644 --- a/src/wx/gain_calculator_dialog.h +++ b/src/wx/gain_calculator_dialog.h @@ -18,18 +18,19 @@ */ -#include <wx/wx.h> #include "table_dialog.h" +#include <wx/wx.h> +#include <boost/optional.hpp> class GainCalculatorDialog : public TableDialog { public: explicit GainCalculatorDialog (wxWindow* parent); - float actual_fader () const; - float wanted_fader () const; + boost::optional<float> db_change () const; private: + wxChoice* _processor; wxTextCtrl* _wanted; wxTextCtrl* _actual; }; |
