OSC: Add send/plugin page values to GUI
authorLen Ovens <len@ovenwerks.net>
Wed, 14 Jun 2017 17:28:45 +0000 (10:28 -0700)
committerLen Ovens <len@ovenwerks.net>
Wed, 14 Jun 2017 17:28:45 +0000 (10:28 -0700)
libs/surfaces/osc/osc.cc
libs/surfaces/osc/osc.h
libs/surfaces/osc/osc_gui.cc
libs/surfaces/osc/osc_gui.h
osc/basic-touchosc.preset [new file with mode: 0644]

index d1edbc2b4772ee86fdfb9553b976db887957c7de..ec4966c8c07c779dd4f86f788be58a068ca4d983 100644 (file)
@@ -98,6 +98,8 @@ OSC::OSC (Session& s, uint32_t port)
        , default_strip (159)
        , default_feedback (0)
        , default_gainmode (0)
+       , default_send_size (0)
+       , default_plugin_size (0)
        , tick (true)
        , bank_dirty (false)
        , scrub_speed (0)
@@ -1659,9 +1661,9 @@ OSC::get_surface (lo_address addr)
        s.aux = 0;
        s.strips = get_sorted_stripables(s.strip_types, s.cue);
        s.send_page = 1;
-       s.send_page_size = 0;
+       s.send_page_size = default_send_size;
        s.plug_page = 1;
-       s.plug_page_size = 0;
+       s.plug_page_size = default_plugin_size;
        s.plugin_id = 1;
 
        s.nstrips = s.strips.size();
@@ -4660,6 +4662,8 @@ OSC::get_state ()
        node.set_property ("striptypes", default_strip);
        node.set_property ("feedback", default_feedback);
        node.set_property ("gainmode", default_gainmode);
+       node.set_property ("send-page-size", default_send_size);
+       node.set_property ("plug-page-size", default_plugin_size);
        if (_surface.size()) {
                XMLNode* config = new XMLNode (X_("Configurations"));
                for (uint32_t it = 0; it < _surface.size(); ++it) {
@@ -4699,6 +4703,8 @@ OSC::set_state (const XMLNode& node, int version)
        node.get_property (X_("striptypes"), default_strip);
        node.get_property (X_("feedback"), default_feedback);
        node.get_property (X_("gainmode"), default_gainmode);
+       node.get_property (X_("send-page-size"), default_send_size);
+       node.get_property (X_("plugin-page-size"), default_plugin_size);
 
        XMLNode* cnode = node.child (X_("Configurations"));
 
index 4e21cf7605c46b8df4f3d52210d4a24163c3d509..d92d0777d1d52732f96a5369f36e3fd41229dc5f 100644 (file)
@@ -178,6 +178,10 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
        void set_defaultstrip (int st) { default_strip = st; }
        int get_defaultfeedback() { return default_feedback; }
        void set_defaultfeedback (int fb) { default_feedback = fb; }
+       int get_send_size() { return default_send_size; }
+       void set_send_size (int ss) { default_send_size = ss; }
+       int get_plugin_size() { return default_plugin_size; }
+       void set_plugin_size (int ps) { default_plugin_size = ps; }
        void clear_devices ();
        void gui_changed ();
        std::string get_remote_port () { return remote_port; }
@@ -207,6 +211,8 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
        uint32_t default_strip;
        uint32_t default_feedback;
        uint32_t default_gainmode;
+       uint32_t default_send_size;
+       uint32_t default_plugin_size;
        bool tick;
        bool bank_dirty;
        float scrub_speed;              // Current scrub speed
index b61dd35e990ae4fa11dd5c49f1fcab39691df948..7a64aa27bf9737b7541ff0e903a245043e926f8f 100644 (file)
@@ -111,6 +111,28 @@ OSC_GUI::OSC_GUI (OSC& p)
 
        ++n;
 
+       // default send page setting
+       label = manage (new Gtk::Label(_("Send Page Size:")));
+       label->set_alignment(1, .5);
+       table->attach (*label, 0, 1, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0));
+       table->attach (send_page_entry, 1, 2, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0);
+       send_page_entry.set_range (0, 0xffff);
+       send_page_entry.set_increments (1, 8);
+       send_page_entry.set_value (cp.get_send_size());
+
+       ++n;
+
+       // default plugin page setting
+       label = manage (new Gtk::Label(_("Plugin Page Size:")));
+       label->set_alignment(1, .5);
+       table->attach (*label, 0, 1, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0));
+       table->attach (plugin_page_entry, 1, 2, n, n+1, AttachOptions(FILL|EXPAND), AttachOptions(0), 0, 0);
+       plugin_page_entry.set_range (0, 0xffff);
+       plugin_page_entry.set_increments (1, 8);
+       plugin_page_entry.set_value (cp.get_send_size());
+
+       ++n;
+
        // Gain Mode
        label = manage (new Gtk::Label(_("Gain Mode:")));
        label->set_alignment(1, .5);
@@ -173,6 +195,8 @@ OSC_GUI::OSC_GUI (OSC& p)
        button->signal_clicked().connect (sigc::mem_fun (*this, &OSC_GUI::clear_device));
        port_entry.signal_activate().connect (sigc::mem_fun (*this, &OSC_GUI::port_changed));
        bank_entry.signal_activate().connect (sigc::mem_fun (*this, &OSC_GUI::bank_changed));
+       send_page_entry.signal_activate().connect (sigc::mem_fun (*this, &OSC_GUI::send_page_changed));
+       plugin_page_entry.signal_activate().connect (sigc::mem_fun (*this, &OSC_GUI::plugin_page_changed));
 
        // Strip Types Calculate Page
        int stn = 0; // table row
@@ -516,6 +540,24 @@ OSC_GUI::bank_changed ()
 
 }
 
+void
+OSC_GUI::send_page_changed ()
+{
+       uint32_t ssize = send_page_entry.get_value ();
+       cp.set_send_size (ssize);
+       save_user ();
+
+}
+
+void
+OSC_GUI::plugin_page_changed ()
+{
+       uint32_t psize = plugin_page_entry.get_value ();
+       cp.set_plugin_size (psize);
+       save_user ();
+
+}
+
 void
 OSC_GUI::gainmode_changed ()
 {
@@ -556,6 +598,7 @@ OSC_GUI::preset_changed ()
        else {
                load_preset (str);
        }
+       cp.clear_devices ();
        preset_busy = false;
 }
 
@@ -564,6 +607,10 @@ OSC_GUI::factory_reset ()
 {
        cp.set_banksize (0);
        bank_entry.set_value (0);
+       cp.set_send_size (0);
+       send_page_entry.set_value (0);
+       cp.set_plugin_size (0);
+       plugin_page_entry.set_value (0);
        cp.set_defaultstrip (159);
        cp.set_defaultfeedback (0);
        reshow_values ();
@@ -799,6 +846,14 @@ OSC_GUI::save_user ()
        child->set_property ("value", cp.get_banksize());
        node->add_child_nocopy (*child);
 
+       child = new XMLNode ("Send-Size");
+       child->set_property ("value", cp.get_send_size());
+       node->add_child_nocopy (*child);
+
+       child = new XMLNode ("Plugin-Size");
+       child->set_property ("value", cp.get_plugin_size());
+       node->add_child_nocopy (*child);
+
        child = new XMLNode ("Strip-Types");
        child->set_property ("value", cp.get_defaultstrip());
        node->add_child_nocopy (*child);
@@ -873,6 +928,20 @@ OSC_GUI::load_preset (std::string preset)
                        cp.set_banksize (atoi (prop->value().c_str()));
                        bank_entry.set_value (atoi (prop->value().c_str()));
                }
+               if ((child = root->child ("Send-Size")) == 0 || (prop = child->property ("value")) == 0) {
+                       cp.set_send_size (sesn_send);
+                       send_page_entry.set_value (sesn_send);
+               } else {
+                       cp.set_send_size (atoi (prop->value().c_str()));
+                       send_page_entry.set_value (atoi (prop->value().c_str()));
+               }
+               if ((child = root->child ("Plugin-Size")) == 0 || (prop = child->property ("value")) == 0) {
+                       cp.set_plugin_size (sesn_plugin);
+                       plugin_page_entry.set_value (sesn_plugin);
+               } else {
+                       cp.set_plugin_size (atoi (prop->value().c_str()));
+                       plugin_page_entry.set_value (atoi (prop->value().c_str()));
+               }
                if ((child = root->child ("Strip-Types")) == 0 || (prop = child->property ("value")) == 0) {
                        cp.set_defaultstrip (sesn_strips);
                } else {
@@ -903,6 +972,8 @@ OSC_GUI::get_session ()
        sesn_portmode = cp.get_portmode ();
        sesn_port = cp.get_remote_port ();
        sesn_bank = cp.get_banksize ();
+       sesn_send = cp.get_send_size ();
+       sesn_plugin = cp.get_plugin_size ();
        sesn_strips = cp.get_defaultstrip ();
        sesn_feedback = cp.get_defaultfeedback ();
        sesn_gainmode = cp.get_gainmode ();
@@ -917,6 +988,10 @@ OSC_GUI::restore_sesn_values ()
        port_entry.set_text (sesn_port);
        cp.set_banksize (sesn_bank);
        bank_entry.set_value (sesn_bank);
+       cp.set_send_size (sesn_send);
+       send_page_entry.set_value (sesn_send);
+       cp.set_plugin_size (sesn_plugin);
+       plugin_page_entry.set_value (sesn_plugin);
        cp.set_defaultstrip (sesn_strips);
        cp.set_defaultfeedback (sesn_feedback);
        reshow_values ();
index 3e651b70fc2b26ac36305df14a1aa7544d00f681..c1ab20d6306207da7c0f38ac16c2926bcfd3ac74 100644 (file)
@@ -45,6 +45,8 @@ private:
        Gtk::ComboBoxText portmode_combo;
        Gtk::SpinButton port_entry;
        Gtk::SpinButton bank_entry;
+       Gtk::SpinButton send_page_entry;
+       Gtk::SpinButton plugin_page_entry;
        Gtk::ComboBoxText gainmode_combo;
        Gtk::ComboBoxText preset_combo;
        std::vector<std::string> preset_options;
@@ -55,6 +57,8 @@ private:
        uint32_t sesn_portmode;
        std::string sesn_port;
        uint32_t sesn_bank;
+       uint32_t sesn_send;
+       uint32_t sesn_plugin;
        uint32_t sesn_strips;
        uint32_t sesn_feedback;
        uint32_t sesn_gainmode;
@@ -70,6 +74,8 @@ private:
        void reshow_values ();
        void port_changed ();
        void bank_changed ();
+       void send_page_changed ();
+       void plugin_page_changed ();
        void strips_changed ();
        void feedback_changed ();
        void preset_changed ();
diff --git a/osc/basic-touchosc.preset b/osc/basic-touchosc.preset
new file mode 100644 (file)
index 0000000..0c55953
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<OSCPreset>
+  <Name value="Basic TouchOSC"/>
+  <PortMode value="1"/>
+  <Remote-Port value="8000"/>
+  <Bank-Size value="0"/>
+  <Send-Size value="0"/>
+  <Plugin-Size value="0"/>
+  <Strip-Types value="159"/>
+  <Feedback value="4"/>
+  <Gain-Mode value="1"/>
+</OSCPreset>