summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/mixer_strip.cc55
-rw-r--r--gtk2_ardour/route_group_dialog.cc8
-rw-r--r--gtk2_ardour/route_group_dialog.h1
-rw-r--r--libs/ardour/amp.cc25
-rw-r--r--libs/ardour/ardour/amp.h1
-rw-r--r--libs/ardour/route.cc6
6 files changed, 71 insertions, 25 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 1b1e28cda9..073feaf339 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -540,17 +540,13 @@ MixerStrip::set_width_enum (Width w, void* owner)
xml_node->add_property ("strip-width", enum_2_string (_width));
}
+ set_button_names ();
+
switch (w) {
case Wide:
-
- if (rec_enable_button) {
- ((Gtk::Label*)rec_enable_button->get_child())->set_text (_("Record"));
- }
if (show_sends_button) {
((Gtk::Label*)show_sends_button->get_child())->set_text (_("Sends"));
}
- ((Gtk::Label*)mute_button->get_child())->set_text (_("Mute"));
- ((Gtk::Label*)solo_button->get_child())->set_text (_("Solo"));
if (_route->comment() == "") {
comment_button.unset_bg (STATE_NORMAL);
@@ -577,14 +573,9 @@ MixerStrip::set_width_enum (Width w, void* owner)
break;
case Narrow:
- if (rec_enable_button) {
- ((Gtk::Label*)rec_enable_button->get_child())->set_text (_("Rec"));
- }
if (show_sends_button) {
((Gtk::Label*)show_sends_button->get_child())->set_text (_("Snd"));
}
- ((Gtk::Label*)mute_button->get_child())->set_text (_("M"));
- ((Gtk::Label*)solo_button->get_child())->set_text (_("S"));
if (_route->comment() == "") {
comment_button.unset_bg (STATE_NORMAL);
@@ -1492,19 +1483,39 @@ MixerStrip::revert_to_default_display ()
void
MixerStrip::set_button_names ()
{
- rec_enable_button_label.set_text (_("Rec"));
- mute_button_label.set_text (_("Mute"));
-
- switch (Config->get_solo_model()) {
- case SoloInPlace:
- solo_button_label.set_text (_("Solo"));
- break;
- case SoloAFL:
- solo_button_label.set_text (_("AFL"));
+ switch (_width) {
+ case Wide:
+ rec_enable_button_label.set_text (_("Rec"));
+ mute_button_label.set_text (_("Mute"));
+ switch (Config->get_solo_model()) {
+ case SoloInPlace:
+ solo_button_label.set_text (_("Solo"));
+ break;
+ case SoloAFL:
+ solo_button_label.set_text (_("AFL"));
+ break;
+ case SoloPFL:
+ solo_button_label.set_text (_("PFL"));
+ break;
+ }
break;
- case SoloPFL:
- solo_button_label.set_text (_("PFL"));
+
+ default:
+ rec_enable_button_label.set_text (_("R"));
+ mute_button_label.set_text (_("M"));
+ switch (Config->get_solo_model()) {
+ case SoloInPlace:
+ solo_button_label.set_text (_("S"));
+ break;
+ case SoloAFL:
+ solo_button_label.set_text (_("A"));
+ break;
+ case SoloPFL:
+ solo_button_label.set_text (_("P"));
+ break;
+ }
break;
+
}
}
diff --git a/gtk2_ardour/route_group_dialog.cc b/gtk2_ardour/route_group_dialog.cc
index 3cd2a3508c..6a87ea3c95 100644
--- a/gtk2_ardour/route_group_dialog.cc
+++ b/gtk2_ardour/route_group_dialog.cc
@@ -11,6 +11,7 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, StockID const & s)
_group (g),
_active (_("Active")),
_gain (_("Gain")),
+ _relative (_("Relative")),
_mute (_("Muting")),
_solo (_("Soloing")),
_rec_enable (_("Record enable")),
@@ -21,6 +22,7 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, StockID const & s)
_active.set_active (_group->is_active ());
_gain.set_active (_group->property (RouteGroup::Gain));
+ _relative.set_active (_group->is_relative());
_mute.set_active (_group->property (RouteGroup::Mute));
_solo.set_active (_group->property (RouteGroup::Solo));
_rec_enable.set_active (_group->property (RouteGroup::RecEnable));
@@ -34,6 +36,11 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, StockID const & s)
get_vbox()->pack_start (*h);
get_vbox()->pack_start (_active);
get_vbox()->pack_start (_gain);
+
+ h = manage (new HBox);
+ h->pack_start (_relative, PACK_EXPAND_PADDING);
+ get_vbox()->pack_start (*h);
+
get_vbox()->pack_start (_mute);
get_vbox()->pack_start (_solo);
get_vbox()->pack_start (_rec_enable);
@@ -63,6 +70,7 @@ RouteGroupDialog::do_run ()
_group->set_property (RouteGroup::RecEnable, _rec_enable.get_active ());
_group->set_property (RouteGroup::Select, _select.get_active ());
_group->set_property (RouteGroup::Edit, _edit.get_active ());
+ _group->set_relative (_relative.get_active(), this);
}
return r;
diff --git a/gtk2_ardour/route_group_dialog.h b/gtk2_ardour/route_group_dialog.h
index 4deb5b56a2..3bcd2b762f 100644
--- a/gtk2_ardour/route_group_dialog.h
+++ b/gtk2_ardour/route_group_dialog.h
@@ -17,6 +17,7 @@ private:
Gtk::Entry _name;
Gtk::CheckButton _active;
Gtk::CheckButton _gain;
+ Gtk::CheckButton _relative;
Gtk::CheckButton _mute;
Gtk::CheckButton _solo;
Gtk::CheckButton _rec_enable;
diff --git a/libs/ardour/amp.cc b/libs/ardour/amp.cc
index 28edaf43a0..d6c6f00ee5 100644
--- a/libs/ardour/amp.cc
+++ b/libs/ardour/amp.cc
@@ -222,6 +222,7 @@ void
Amp::inc_gain (gain_t factor, void *src)
{
float desired_gain = _gain_control->user_float();
+
if (desired_gain == 0.0f) {
set_gain (0.000001f + (0.000001f * factor), src);
} else {
@@ -255,9 +256,33 @@ Amp::state (bool full_state)
{
XMLNode& node (Processor::state (full_state));
node.add_property("type", "amp");
+
+ char buf[32];
+ snprintf (buf, sizeof (buf), "%2.12f", _gain_control->get_value());
+ node.add_property("gain", buf);
+
return node;
}
+int
+Amp::set_state (const XMLNode& node)
+{
+ const XMLProperty* prop;
+
+ Processor::set_state (node);
+ prop = node.property ("gain");
+
+ if (prop) {
+ gain_t val;
+
+ if (sscanf (prop->value().c_str(), "%f", &val) == 1) {
+ _gain_control->set_value (val);
+ }
+ }
+
+ return 0;
+}
+
void
Amp::GainControl::set_value (float val)
{
diff --git a/libs/ardour/ardour/amp.h b/libs/ardour/ardour/amp.h
index f758ca4de8..7b9ed4a59e 100644
--- a/libs/ardour/ardour/amp.h
+++ b/libs/ardour/ardour/amp.h
@@ -51,6 +51,7 @@ public:
void apply_gain_automation(bool yn) { _apply_gain_automation = yn; }
XMLNode& state (bool full);
+ int set_state (const XMLNode&);
static void apply_gain (BufferSet& bufs, nframes_t nframes, gain_t initial, gain_t target);
static void apply_simple_gain(BufferSet& bufs, nframes_t nframes, gain_t target);
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 2dc9d13b86..e55ad3e425 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -262,7 +262,7 @@ Route::set_gain (gain_t val, void *src)
if (src != 0 && _route_group && src != _route_group && _route_group->active_property (RouteGroup::Gain)) {
if (_route_group->is_relative()) {
-
+
gain_t usable_gain = _amp->gain();
if (usable_gain < 0.000001f) {
usable_gain = 0.000001f;
@@ -1739,7 +1739,7 @@ Route::set_processor_state (const XMLNode& node)
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
XMLProperty* id_prop = (*niter)->property(X_("id"));
- cerr << "\tchecking " << id_prop->value() << endl;
+
if (id_prop && (*i)->id() == id_prop->value()) {
processorInStateList = true;
break;
@@ -1772,7 +1772,7 @@ Route::set_processor_state (const XMLNode& node)
while (o != _processors.end()) {
XMLProperty* id_prop = (*niter)->property(X_("id"));
if (id_prop && (*o)->id() == id_prop->value()) {
- break;
+ break;
}
++o;