Monitor Section Processor Box.

Allow to add plugins specific to Monitoring (room correction etc) directly
on the Monitor-Section GUI.

The Track/Bus Inspector allowed that for a long time, already but
apparently nobody found it.
This commit is contained in:
Robin Gareus 2015-12-21 12:43:38 +01:00
parent 51a140054e
commit 67917583d9
2 changed files with 27 additions and 6 deletions

View File

@ -37,6 +37,7 @@
#include "ardour/port.h"
#include "ardour/route.h"
#include "ardour/user_bundle.h"
#include "ardour/plugin_manager.h"
#include "gui_thread.h"
#include "monitor_section.h"
@ -95,6 +96,12 @@ MonitorSection::MonitorSection (Session* s)
}
_plugin_selector = new PluginSelector (PluginManager::instance());
insert_box = new ProcessorBox (_session, boost::bind (&MonitorSection::plugin_selector, this), _rr_selection, 0);
insert_box->set_no_show_all ();
insert_box->show ();
// TODO allow keyboard shortcuts in ProcessorBox
set_session (s);
/* Rude Solo & Solo Isolated */
@ -266,7 +273,7 @@ MonitorSection::MonitorSection (Session* s)
gain_control = new ArdourKnob (ArdourKnob::default_elements, ArdourKnob::Detent);
gain_control->set_name("monitor knob");
gain_control->set_size_request (PX_SCALE(70), PX_SCALE(70));
gain_control->set_size_request (PX_SCALE(60), PX_SCALE(60));
gain_display = new ArdourDisplay ();
gain_display->set_name("monitor section cut");
@ -394,7 +401,7 @@ MonitorSection::MonitorSection (Session* s)
lower_packer->pack_start (channel_table_packer, false, false);
lower_packer->pack_start (*mono_dim_box, false, false);
lower_packer->pack_start (cut_all_button, false, false);
lower_packer->pack_start (*master_box, false, false, PX_SCALE(16));
lower_packer->pack_start (*master_box, false, false, PX_SCALE(10));
// output port select
VBox* out_packer = manage (new VBox);
@ -410,14 +417,14 @@ MonitorSection::MonitorSection (Session* s)
vpacker->set_spacing (PX_SCALE(10));
vpacker->pack_start (*rude_box, false, false, PX_SCALE(3));
vpacker->pack_start (*solo_tbl, false, false);
vpacker->pack_start (*level_tbl, false, false, PX_SCALE(16));
vpacker->pack_start (*lower_packer, true, false); // expand, center
vpacker->pack_end (*out_packer, false, false, PX_SCALE(16));
vpacker->pack_start (*level_tbl, false, false);
vpacker->pack_start (*lower_packer, false, false);
vpacker->pack_start (*insert_box, true, true);
vpacker->pack_end (*out_packer, false, false);
hpacker.set_spacing (0);
hpacker.pack_start (*vpacker, true, true);
gain_control->show_all ();
gain_display->show_all ();
dim_control->show_all ();
@ -471,6 +478,7 @@ MonitorSection::~MonitorSection ()
_channel_buttons.clear ();
_output_changed_connection.disconnect ();
delete insert_box;
delete output_button;
delete gain_control;
delete gain_display;
@ -489,6 +497,7 @@ void
MonitorSection::set_session (Session* s)
{
AxisView::set_session (s);
_plugin_selector->set_session (_session);
if (_session) {
@ -501,6 +510,7 @@ MonitorSection::set_session (Session* s)
_route->output()->changed.connect (_output_changed_connection, invalidator (*this),
boost::bind (&MonitorSection::update_output_display, this),
gui_context());
insert_box->set_route (_route);
} else {
/* session with no monitor section */
_output_changed_connection.disconnect();

View File

@ -30,6 +30,10 @@
#include "route_ui.h"
#include "monitor_selector.h"
#include "plugin_selector.h"
#include "route_processor_selection.h"
#include "processor_box.h"
namespace Gtkmm2ext {
class TearOff;
class MotionFeedback;
@ -49,6 +53,8 @@ class MonitorSection : public RouteUI
std::string state_id() const;
PluginSelector* plugin_selector() { return _plugin_selector; }
private:
Gtk::HBox hpacker;
Gtkmm2ext::TearOff* _tearoff;
@ -154,5 +160,10 @@ class MonitorSection : public RouteUI
bool _inhibit_solo_model_update;
void assign_controllables ();
void port_connected_or_disconnected (boost::weak_ptr<ARDOUR::Port>, boost::weak_ptr<ARDOUR::Port>);
ProcessorBox* insert_box;
PluginSelector* _plugin_selector;
RouteProcessorSelection _rr_selection;
};