mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 23:05:04 +01:00
OSC: add group sharing bit feedback
This commit is contained in:
parent
6adeded426
commit
edd21ac89e
3 changed files with 69 additions and 12 deletions
|
|
@ -2593,15 +2593,34 @@ OSC::parse_sel_group (const char *path, const char* types, lo_arg **argv, int ar
|
||||||
}
|
}
|
||||||
else if (!strncmp (path, X_("/select/group/sharing"), 21)) {
|
else if (!strncmp (path, X_("/select/group/sharing"), 21)) {
|
||||||
if (argc == 9) {
|
if (argc == 9) {
|
||||||
|
if (rg->is_gain() != (bool) argv[0]->i) {
|
||||||
rg->set_gain ((bool) argv[0]->i);
|
rg->set_gain ((bool) argv[0]->i);
|
||||||
|
}
|
||||||
|
if (rg->is_relative() != (bool) argv[1]->i) {
|
||||||
rg->set_relative ((bool) argv[1]->i, this);
|
rg->set_relative ((bool) argv[1]->i, this);
|
||||||
|
}
|
||||||
|
if (rg->is_mute() != (bool) argv[2]->i) {
|
||||||
rg->set_mute ((bool) argv[2]->i);
|
rg->set_mute ((bool) argv[2]->i);
|
||||||
|
}
|
||||||
|
if (rg->is_solo() != (bool) argv[3]->i) {
|
||||||
rg->set_solo ((bool) argv[3]->i);
|
rg->set_solo ((bool) argv[3]->i);
|
||||||
|
}
|
||||||
|
if (rg->is_recenable() != (bool) argv[4]->i) {
|
||||||
rg->set_recenable ((bool) argv[4]->i);
|
rg->set_recenable ((bool) argv[4]->i);
|
||||||
|
}
|
||||||
|
if (rg->is_select() != (bool) argv[5]->i) {
|
||||||
rg->set_select ((bool) argv[5]->i);
|
rg->set_select ((bool) argv[5]->i);
|
||||||
|
}
|
||||||
|
if (rg->is_route_active() != (bool) argv[6]->i) {
|
||||||
rg->set_route_active ((bool) argv[6]->i);
|
rg->set_route_active ((bool) argv[6]->i);
|
||||||
|
}
|
||||||
|
if (rg->is_color() != (bool) argv[7]->i) {
|
||||||
rg->set_color ((bool) argv[7]->i);
|
rg->set_color ((bool) argv[7]->i);
|
||||||
|
}
|
||||||
|
if (rg->is_monitoring() != (bool) argv[8]->i) {
|
||||||
rg->set_monitoring ((bool) argv[8]->i);
|
rg->set_monitoring ((bool) argv[8]->i);
|
||||||
|
}
|
||||||
|
ret = 0;
|
||||||
} else {
|
} else {
|
||||||
PBD::warning << "OSC: Sharing can only be set if all 9 parameters are sent." << endmsg;
|
PBD::warning << "OSC: Sharing can only be set if all 9 parameters are sent." << endmsg;
|
||||||
}
|
}
|
||||||
|
|
@ -4188,7 +4207,7 @@ OSC::_strip_select (boost::shared_ptr<Stripable> s, lo_address addr)
|
||||||
if (so != 0) {
|
if (so != 0) {
|
||||||
so->refresh_strip (s, nsends, sur->gainmode, true);
|
so->refresh_strip (s, nsends, sur->gainmode, true);
|
||||||
} else {
|
} else {
|
||||||
OSCSelectObserver* sel_fb = new OSCSelectObserver (*this, sur);
|
OSCSelectObserver* sel_fb = new OSCSelectObserver (*this, *session, sur);
|
||||||
sur->sel_obs = sel_fb;
|
sur->sel_obs = sel_fb;
|
||||||
}
|
}
|
||||||
sur->sel_obs->set_expand (sur->expand_enable);
|
sur->sel_obs->set_expand (sur->expand_enable);
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
#include "ardour/solo_safe_control.h"
|
#include "ardour/solo_safe_control.h"
|
||||||
#include "ardour/route.h"
|
#include "ardour/route.h"
|
||||||
#include "ardour/route_group.h"
|
#include "ardour/route_group.h"
|
||||||
|
#include "ardour/route_group_member.h"
|
||||||
#include "ardour/send.h"
|
#include "ardour/send.h"
|
||||||
#include "ardour/plugin.h"
|
#include "ardour/plugin.h"
|
||||||
#include "ardour/plugin_insert.h"
|
#include "ardour/plugin_insert.h"
|
||||||
|
|
@ -50,7 +51,7 @@ using namespace PBD;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
using namespace ArdourSurface;
|
using namespace ArdourSurface;
|
||||||
|
|
||||||
OSCSelectObserver::OSCSelectObserver (OSC& o, ArdourSurface::OSC::OSCSurface* su)
|
OSCSelectObserver::OSCSelectObserver (OSC& o, ARDOUR::Session& s, ArdourSurface::OSC::OSCSurface* su)
|
||||||
: _osc (o)
|
: _osc (o)
|
||||||
,sur (su)
|
,sur (su)
|
||||||
,nsends (0)
|
,nsends (0)
|
||||||
|
|
@ -60,6 +61,7 @@ OSCSelectObserver::OSCSelectObserver (OSC& o, ArdourSurface::OSC::OSCSurface* su
|
||||||
,eq_bands (0)
|
,eq_bands (0)
|
||||||
,_expand (2048)
|
,_expand (2048)
|
||||||
{
|
{
|
||||||
|
session = &s;
|
||||||
addr = lo_address_new_from_url (sur->remote_url.c_str());
|
addr = lo_address_new_from_url (sur->remote_url.c_str());
|
||||||
gainmode = sur->gainmode;
|
gainmode = sur->gainmode;
|
||||||
feedback = sur->feedback;
|
feedback = sur->feedback;
|
||||||
|
|
@ -141,6 +143,9 @@ OSCSelectObserver::refresh_strip (boost::shared_ptr<ARDOUR::Stripable> new_strip
|
||||||
|
|
||||||
rt->comment_changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::comment_changed, this), OSC::instance());
|
rt->comment_changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::comment_changed, this), OSC::instance());
|
||||||
comment_changed ();
|
comment_changed ();
|
||||||
|
|
||||||
|
session->RouteGroupPropertyChanged.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::group_sharing, this, _1), OSC::instance());
|
||||||
|
group_sharing (rt->route_group ());
|
||||||
}
|
}
|
||||||
|
|
||||||
_strip->presentation_info().PropertyChanged.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::pi_changed, this, _1), OSC::instance());
|
_strip->presentation_info().PropertyChanged.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::pi_changed, this, _1), OSC::instance());
|
||||||
|
|
@ -664,6 +669,34 @@ OSCSelectObserver::group_name ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
OSCSelectObserver::group_sharing (RouteGroup *rgc)
|
||||||
|
{
|
||||||
|
boost::shared_ptr<Route> rt = boost::dynamic_pointer_cast<Route> (_strip);
|
||||||
|
if (rt) {
|
||||||
|
RouteGroup *rg = rt->route_group();
|
||||||
|
if (rg) {
|
||||||
|
if (rg != rgc) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lo_message reply = lo_message_new ();
|
||||||
|
lo_message_add_int32 (reply, rg->is_gain ());
|
||||||
|
lo_message_add_int32 (reply, rg->is_relative ());
|
||||||
|
lo_message_add_int32 (reply, rg->is_mute ());
|
||||||
|
lo_message_add_int32 (reply, rg->is_solo ());
|
||||||
|
lo_message_add_int32 (reply, rg->is_recenable ());
|
||||||
|
lo_message_add_int32 (reply, rg->is_select ());
|
||||||
|
lo_message_add_int32 (reply, rg->is_route_active ());
|
||||||
|
lo_message_add_int32 (reply, rg->is_color ());
|
||||||
|
lo_message_add_int32 (reply, rg->is_monitoring ());
|
||||||
|
lo_send_message (addr, "/select/group/sharing", reply);
|
||||||
|
lo_message_free (reply);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
OSCSelectObserver::comment_changed ()
|
OSCSelectObserver::comment_changed ()
|
||||||
{
|
{
|
||||||
|
|
@ -676,6 +709,9 @@ OSCSelectObserver::comment_changed ()
|
||||||
void
|
void
|
||||||
OSCSelectObserver::pi_changed (PBD::PropertyChange const& what_changed)
|
OSCSelectObserver::pi_changed (PBD::PropertyChange const& what_changed)
|
||||||
{
|
{
|
||||||
|
if (!what_changed.contains (ARDOUR::Properties::hidden)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
_osc.float_message (X_("/select/hide"), _strip->is_hidden (), addr);
|
_osc.float_message (X_("/select/hide"), _strip->is_hidden (), addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ class OSCSelectObserver
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OSCSelectObserver (ArdourSurface::OSC& o, ArdourSurface::OSC::OSCSurface* sur);
|
OSCSelectObserver (ArdourSurface::OSC& o, ARDOUR::Session& s, ArdourSurface::OSC::OSCSurface* sur);
|
||||||
~OSCSelectObserver ();
|
~OSCSelectObserver ();
|
||||||
|
|
||||||
boost::shared_ptr<ARDOUR::Stripable> strip () const { return _strip; }
|
boost::shared_ptr<ARDOUR::Stripable> strip () const { return _strip; }
|
||||||
|
|
@ -94,9 +94,11 @@ class OSCSelectObserver
|
||||||
int eq_bands;
|
int eq_bands;
|
||||||
bool _tick_busy;
|
bool _tick_busy;
|
||||||
uint32_t _expand;
|
uint32_t _expand;
|
||||||
|
ARDOUR::Session* session;
|
||||||
|
|
||||||
void name_changed (const PBD::PropertyChange& what_changed);
|
void name_changed (const PBD::PropertyChange& what_changed);
|
||||||
void group_name ();
|
void group_name ();
|
||||||
|
void group_sharing (ARDOUR::RouteGroup *rg_c);
|
||||||
void comment_changed ();
|
void comment_changed ();
|
||||||
void pi_changed (PBD::PropertyChange const&);
|
void pi_changed (PBD::PropertyChange const&);
|
||||||
void change_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
|
void change_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue