summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-07-30 02:09:39 +0000
committerCarl Hetherington <carl@carlh.net>2010-07-30 02:09:39 +0000
commit1f07948972ca1cac5854539268ca3b290b79c671 (patch)
tree4d507ec8a035894628a8f5b84486656fdff6d0e9 /libs
parent66760a574a1fc0ccc8a798c2900a717c134838ea (diff)
Put Mackie surface ports into the Ardour tab of the port matrix.
git-svn-id: svn://localhost/ardour2/branches/3.0@7522 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/bundle.h6
-rw-r--r--libs/ardour/ardour/session.h1
-rw-r--r--libs/ardour/bundle.cc14
-rw-r--r--libs/surfaces/control_protocol/control_protocol.cc5
-rw-r--r--libs/surfaces/control_protocol/control_protocol/control_protocol.h3
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc22
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.h7
7 files changed, 55 insertions, 3 deletions
diff --git a/libs/ardour/ardour/bundle.h b/libs/ardour/ardour/bundle.h
index 975e407646..369b12ec9b 100644
--- a/libs/ardour/ardour/bundle.h
+++ b/libs/ardour/ardour/bundle.h
@@ -52,6 +52,9 @@ class Bundle : public PBD::ScopedConnectionList
struct Channel {
Channel (std::string n, DataType t) : name (n), type (t) {}
Channel (std::string n, DataType t, PortList p) : name (n), type (t), ports (p) {}
+ Channel (std::string n, DataType t, std::string const & p) : name (n), type (t) {
+ ports.push_back (p);
+ }
bool operator== (Channel const &o) const {
return name == o.name && type == o.type && ports == o.ports;
@@ -77,6 +80,7 @@ class Bundle : public PBD::ScopedConnectionList
PortList const & channel_ports (uint32_t) const;
void add_channel (std::string const &, DataType);
+ void add_channel (std::string const &, DataType, std::string const &);
void add_channel (std::string const &, DataType, PortList);
std::string channel_name (uint32_t) const;
DataType channel_type (uint32_t) const;
@@ -87,7 +91,7 @@ class Bundle : public PBD::ScopedConnectionList
void remove_ports_from_channel (uint32_t);
void remove_ports_from_channels ();
bool port_attached_to_channel (uint32_t, std::string);
- bool uses_port (std::string) const;
+ bool offers_port (std::string) const;
bool offers_port_alone (std::string) const;
void remove_channel (uint32_t);
void remove_channels ();
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 0b26444bce..98bf0145c2 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -89,7 +89,6 @@ class AuxInput;
class BufferSet;
class Bundle;
class Butler;
-class ControlProtocolInfo;
class Diskstream;
class ExportHandler;
class ExportStatus;
diff --git a/libs/ardour/bundle.cc b/libs/ardour/bundle.cc
index 94fada383d..6037bfc7e9 100644
--- a/libs/ardour/bundle.cc
+++ b/libs/ardour/bundle.cc
@@ -177,6 +177,18 @@ Bundle::add_channel (std::string const & n, DataType t, PortList p)
emit_changed (ConfigurationChanged);
}
+/** @param n Channel name */
+void
+Bundle::add_channel (std::string const & n, DataType t, std::string const & p)
+{
+ {
+ Glib::Mutex::Lock lm (_channel_mutex);
+ _channel.push_back (Channel (n, t, p));
+ }
+
+ emit_changed (ConfigurationChanged);
+}
+
bool
Bundle::port_attached_to_channel (uint32_t ch, std::string portname)
{
@@ -211,7 +223,7 @@ Bundle::remove_channels ()
* @return true if any channel is associated with p.
*/
bool
-Bundle::uses_port (std::string p) const
+Bundle::offers_port (std::string p) const
{
Glib::Mutex::Lock lm (_channel_mutex);
diff --git a/libs/surfaces/control_protocol/control_protocol.cc b/libs/surfaces/control_protocol/control_protocol.cc
index cf98b66b5e..3afd589ee7 100644
--- a/libs/surfaces/control_protocol/control_protocol.cc
+++ b/libs/surfaces/control_protocol/control_protocol.cc
@@ -354,3 +354,8 @@ ControlProtocol:: route_get_name (uint32_t table_index)
return r->name();
}
+list<boost::shared_ptr<Bundle> >
+ControlProtocol::bundles ()
+{
+ return list<boost::shared_ptr<Bundle> > ();
+}
diff --git a/libs/surfaces/control_protocol/control_protocol/control_protocol.h b/libs/surfaces/control_protocol/control_protocol/control_protocol.h
index 559da08d33..479ffe30cc 100644
--- a/libs/surfaces/control_protocol/control_protocol/control_protocol.h
+++ b/libs/surfaces/control_protocol/control_protocol/control_protocol.h
@@ -33,6 +33,7 @@ namespace ARDOUR {
class Route;
class Session;
+class Bundle;
class ControlProtocol : virtual public sigc::trackable, public PBD::Stateful, public PBD::ScopedConnectionList, public BasicUI {
public:
@@ -98,6 +99,8 @@ class ControlProtocol : virtual public sigc::trackable, public PBD::Stateful, pu
std::string route_get_name (uint32_t table_index);
+ virtual std::list<boost::shared_ptr<ARDOUR::Bundle> > bundles ();
+
virtual bool has_editor () const { return false; }
virtual void* get_gui() const { return 0; }
virtual void tear_down_gui() { }
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc
index 2e4f2ba214..e9f3223796 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.cc
+++ b/libs/surfaces/mackie/mackie_control_protocol.cc
@@ -83,6 +83,8 @@ MackieControlProtocol::MackieControlProtocol (Session& session)
, _surface (0)
, _jog_wheel (*this)
, _timecode_type (ARDOUR::AnyTime::BBT)
+ , _input_bundle (new ARDOUR::Bundle (_("Mackie Control In"), true))
+ , _output_bundle (new ARDOUR::Bundle (_("Mackie Control Out"), false))
{
DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::MackieControlProtocol\n");
}
@@ -575,6 +577,18 @@ MackieControlProtocol::add_port (MIDI::Port & midi_input_port, MIDI::Port & midi
sport->init_event.connect_same_thread (port_connections, boost::bind (&MackieControlProtocol::handle_port_init, this, sport));
sport->active_event.connect_same_thread (port_connections, boost::bind (&MackieControlProtocol::handle_port_active, this, sport));
sport->inactive_event.connect_same_thread (port_connections, boost::bind (&MackieControlProtocol::handle_port_inactive, this, sport));
+
+ _input_bundle->add_channel (
+ midi_input_port.name(),
+ ARDOUR::DataType::MIDI,
+ session->engine().make_port_name_non_relative (midi_input_port.name())
+ );
+
+ _output_bundle->add_channel (
+ midi_output_port.name(),
+ ARDOUR::DataType::MIDI,
+ session->engine().make_port_name_non_relative (midi_output_port.name())
+ );
}
void
@@ -1707,3 +1721,11 @@ MackieControlProtocol::timecode_beats_release (Button &)
return off;
}
+list<boost::shared_ptr<ARDOUR::Bundle> >
+MackieControlProtocol::bundles ()
+{
+ list<boost::shared_ptr<ARDOUR::Bundle> > b;
+ b.push_back (_input_bundle);
+ b.push_back (_output_bundle);
+ return b;
+}
diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h
index f84530c733..3007df8f5a 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.h
+++ b/libs/surfaces/mackie/mackie_control_protocol.h
@@ -85,6 +85,8 @@ class MackieControlProtocol
Mackie::Surface & surface();
+ std::list<boost::shared_ptr<ARDOUR::Bundle> > bundles ();
+
// control events
void handle_control_event(Mackie::SurfacePort & port, Mackie::Control & control, const Mackie::ControlState & state);
@@ -337,6 +339,11 @@ class MackieControlProtocol
// Which timecode are we displaying? BBT or Timecode
ARDOUR::AnyTime::Type _timecode_type;
+
+ // Bundle to represent our input ports
+ boost::shared_ptr<ARDOUR::Bundle> _input_bundle;
+ // Bundle to represent our output ports
+ boost::shared_ptr<ARDOUR::Bundle> _output_bundle;
};
#endif // ardour_mackie_control_protocol_h