mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-10 07:26:32 +01:00
OSC: add feedback for punch in/out, click and click level
This commit is contained in:
parent
aba52ad8a2
commit
a2965f585a
2 changed files with 40 additions and 1 deletions
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include "pbd/control_math.h"
|
||||
|
||||
#include "ardour/amp.h"
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/dB.h"
|
||||
#include "ardour/meter.h"
|
||||
|
|
@ -43,6 +44,9 @@ OSCGlobalObserver::OSCGlobalObserver (OSC& o, Session& s, ArdourSurface::OSC::OS
|
|||
,_last_master_gain (0.0)
|
||||
,_last_master_trim (0.0)
|
||||
,_last_monitor_gain (0.0)
|
||||
,last_punchin (4)
|
||||
,last_punchout (4)
|
||||
,last_click (4)
|
||||
{
|
||||
addr = lo_address_new_from_url (sur->remote_url.c_str());
|
||||
//addr = lo_address_new (lo_address_get_hostname(a) , lo_address_get_port(a));
|
||||
|
|
@ -120,6 +124,12 @@ OSCGlobalObserver::OSCGlobalObserver (OSC& o, Session& s, ArdourSurface::OSC::OS
|
|||
session->SoloActive.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&OSCGlobalObserver::solo_active, this, _1), OSC::instance());
|
||||
solo_active (session->soloing() || session->listening());
|
||||
|
||||
boost::shared_ptr<Controllable> click_controllable = boost::dynamic_pointer_cast<Controllable>(session->click_gain()->gain_control());
|
||||
click_controllable->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCGlobalObserver::send_change_message, this, X_("/click/level"), click_controllable), OSC::instance());
|
||||
send_change_message ("/click/level", click_controllable);
|
||||
|
||||
extra_check ();
|
||||
|
||||
/*
|
||||
* Maybe (many) more
|
||||
*/
|
||||
|
|
@ -184,11 +194,16 @@ OSCGlobalObserver::clear_observer ()
|
|||
_osc.float_message (X_("/loop_toggle"), 0, addr);
|
||||
_osc.float_message (X_("/transport_play"), 0, addr);
|
||||
_osc.float_message (X_("/transport_stop"), 0, addr);
|
||||
_osc.float_message (X_("/toggle_roll"), 0, addr);
|
||||
_osc.float_message (X_("/rewind"), 0, addr);
|
||||
_osc.float_message (X_("/ffwd"), 0, addr);
|
||||
_osc.float_message (X_("/record_tally"), 0, addr);
|
||||
_osc.float_message (X_("/rec_enable_toggle"), 0, addr);
|
||||
_osc.float_message (X_("/cancel_all_solos"), 0, addr);
|
||||
_osc.float_message (X_("/toggle_punch_out"), 0, addr);
|
||||
_osc.float_message (X_("/toggle_punch_in"), 0, addr);
|
||||
_osc.float_message (X_("/toggle_click"), 0, addr);
|
||||
_osc.float_message (X_("/click/level"), 0, addr);
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -315,13 +330,15 @@ OSCGlobalObserver::tick ()
|
|||
}
|
||||
monitor_timeout--;
|
||||
}
|
||||
extra_check ();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
OSCGlobalObserver::send_change_message (string path, boost::shared_ptr<Controllable> controllable)
|
||||
{
|
||||
_osc.float_message (path, (float) controllable->get_value(), addr);
|
||||
float val = controllable->get_value();
|
||||
_osc.float_message (path, (float) controllable->internal_to_interface (val), addr);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -406,3 +423,21 @@ OSCGlobalObserver::solo_active (bool active)
|
|||
{
|
||||
_osc.float_message (X_("/cancel_all_solos"), (float) active, addr);
|
||||
}
|
||||
|
||||
void
|
||||
OSCGlobalObserver::extra_check ()
|
||||
{
|
||||
if (last_punchin != session->config.get_punch_in()) {
|
||||
last_punchin = session->config.get_punch_in();
|
||||
_osc.float_message (X_("/toggle_punch_in"), last_punchin, addr);
|
||||
}
|
||||
if (last_punchout != session->config.get_punch_out()) {
|
||||
last_punchout = session->config.get_punch_out();
|
||||
_osc.float_message (X_("/toggle_punch_out"), last_punchout, addr);
|
||||
}
|
||||
if (last_click != Config->get_clicking()) {
|
||||
last_click = Config->get_clicking();
|
||||
_osc.float_message (X_("/toggle_click"), last_click, addr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -66,6 +66,9 @@ class OSCGlobalObserver
|
|||
float _last_meter;
|
||||
uint32_t master_timeout;
|
||||
uint32_t monitor_timeout;
|
||||
uint32_t last_punchin;
|
||||
uint32_t last_punchout;
|
||||
uint32_t last_click;
|
||||
|
||||
void send_change_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
|
||||
void send_gain_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
|
||||
|
|
@ -74,6 +77,7 @@ class OSCGlobalObserver
|
|||
void send_record_state_changed (void);
|
||||
void solo_active (bool active);
|
||||
void session_name (std::string path, std::string name);
|
||||
void extra_check (void);
|
||||
};
|
||||
|
||||
#endif /* __osc_oscglobalobserver_h__ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue