save&restore gain levels; provide GUI control over relative route group bit; fix up solo/mute/recenable button naming as mixer strip width is set
git-svn-id: svn://localhost/ardour2/branches/3.0@5263 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
d13fdaa9d1
commit
f71a197270
|
@ -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 (_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;
|
||||
|
||||
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"));
|
||||
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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue