namespace ARDOUR {
class AutomationControl;
+ class Port;
}
namespace MIDI {
enum ViewMode {
Mixer,
- Dynamics,
- EQ,
- Loop,
AudioTracks,
MidiTracks,
Busses,
- Sends,
+ Auxes,
+ Selected,
Plugins,
};
+ enum PotMode {
+ Trim,
+ Send,
+ Pan,
+ };
+
enum FlipMode {
Normal, /* fader controls primary, vpot controls secondary */
Mirror, /* fader + vpot control secondary */
const Mackie::DeviceInfo& device_info() const { return _device_info; }
Mackie::DeviceProfile& device_profile() { return _device_profile; }
+ PBD::Signal0<void> DeviceChanged;
+ PBD::Signal1<void,boost::shared_ptr<Mackie::Surface> > ConnectionChange;
+
void device_ready ();
int set_active (bool yn);
- int set_device (const std::string&);
+ int set_device (const std::string&, bool force);
void set_profile (const std::string&);
FlipMode flip_mode () const { return _flip_mode; }
ViewMode view_mode () const { return _view_mode; }
+ PotMode pot_mode () const { return _pot_mode; }
bool zoom_mode () const { return modifier_state() & MODIFIER_ZOOM; }
bool metering_active () const { return _metering_active; }
+ bool is_track (boost::shared_ptr<ARDOUR::Route>) const;
+ bool is_audio_track (boost::shared_ptr<ARDOUR::Route>) const;
+ bool is_midi_track (boost::shared_ptr<ARDOUR::Route>) const;
+ bool selected (boost::shared_ptr<ARDOUR::Route>) const;
+
void set_view_mode (ViewMode);
void set_flip_mode (FlipMode);
+ void set_pot_mode (PotMode);
+ void display_view_mode ();
XMLNode& get_state ();
int set_state (const XMLNode&, int version);
static bool probe();
- Glib::Threads::Mutex surfaces_lock;
+ mutable Glib::Threads::Mutex surfaces_lock;
typedef std::list<boost::shared_ptr<Mackie::Surface> > Surfaces;
Surfaces surfaces;
+ boost::shared_ptr<Mackie::Surface> get_surface_by_raw_pointer (void*) const;
+ boost::shared_ptr<Mackie::Surface> nth_surface (uint32_t) const;
+
std::list<boost::shared_ptr<ARDOUR::Bundle> > bundles ();
void set_master_on_surface_strip (uint32_t surface, uint32_t strip);
int16_t ipmidi_base() const { return _ipmidi_base; }
void set_ipmidi_base (int16_t);
- bool session_load () { return _session_load; }
- void not_session_load () { _session_load = false; }
-
void ping_devices ();
protected:
Mackie::Timer _frm_left_last;
// last written timecode string
std::string _timecode_last;
+ framepos_t _frame_last;
// Which timecode are we displaying? BBT or Timecode
ARDOUR::AnyTime::Type _timecode_type;
// Bundle to represent our input ports
bool _scrub_mode;
FlipMode _flip_mode;
ViewMode _view_mode;
+ PotMode _pot_mode;
int _current_selected_track;
int _modifier_state;
ButtonMap button_map;
bool _metering_active;
bool _initialized;
ARDOUR::RouteNotificationList _last_selected_routes;
- XMLNode* _surfaces_state;
- int _surfaces_version;
- bool _session_load;
+ XMLNode* configuration_state;
+ int state_version;
+ int _last_bank[9];
+
boost::shared_ptr<ArdourSurface::Mackie::Surface> _master_surface;
struct ipMIDIHandler {
int ipmidi_restart ();
void initialize ();
int set_device_info (const std::string& device_name);
+ void update_configuration_state ();
+
+ /* MIDI port connection management */
+
+ PBD::ScopedConnection port_connection;
+ void connection_handler (boost::weak_ptr<ARDOUR::Port>, std::string name1, boost::weak_ptr<ARDOUR::Port>, std::string name2, bool);
/* BUTTON HANDLING */
Mackie::LedState click_release (Mackie::Button&);
Mackie::LedState view_press (Mackie::Button&);
Mackie::LedState view_release (Mackie::Button&);
+
+ Mackie::LedState bank_release (Mackie::Button&, uint32_t bank_num);
};
} // namespace