class Control;
class SurfacePort;
class Button;
+ class Strip;
}
gboolean ipmidi_input_handler (GIOChannel*, GIOCondition condition, void *data);
static const int MODIFIER_CMDALT;
static const int MODIFIER_ZOOM;
static const int MODIFIER_SCRUB;
+ static const int MODIFIER_MARKER;
+ static const int MODIFIER_NUDGE;
static const int MAIN_MODIFIER_MASK;
enum ViewMode {
Busses,
Auxes,
Selected,
+ Hidden,
Plugins,
};
- enum PotMode {
- Trim,
- Send,
- Pan,
+ enum SubViewMode {
+ None,
+ EQ,
+ Dynamics,
+ Sends,
+ TrackView,
};
enum FlipMode {
FlipMode flip_mode () const { return _flip_mode; }
ViewMode view_mode () const { return _view_mode; }
- PotMode pot_mode () const { return _pot_mode; }
+ SubViewMode subview_mode () const { return _subview_mode; }
+ static bool subview_mode_would_be_ok (SubViewMode, boost::shared_ptr<ARDOUR::Route>);
+ boost::shared_ptr<ARDOUR::Route> subview_route() const;
bool zoom_mode () const { return modifier_state() & MODIFIER_ZOOM; }
bool metering_active () const { return _metering_active; }
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;
+ bool is_hidden (boost::shared_ptr<ARDOUR::Route>) const;
+ bool is_mapped (boost::shared_ptr<ARDOUR::Route>) const;
+ boost::shared_ptr<ARDOUR::Route> first_selected_route () const;
+
+ void check_fader_automation_state ();
+ void update_fader_automation_state ();
+ void set_automation_state (ARDOUR::AutoState);
void set_view_mode (ViewMode);
+ int set_subview_mode (SubViewMode, boost::shared_ptr<ARDOUR::Route>);
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();
+ static void* request_factory (uint32_t);
mutable Glib::Threads::Mutex surfaces_lock;
typedef std::list<boost::shared_ptr<Mackie::Surface> > Surfaces;
boost::shared_ptr<Mackie::Surface> get_surface_by_raw_pointer (void*) const;
boost::shared_ptr<Mackie::Surface> nth_surface (uint32_t) const;
+ uint32_t global_index (Mackie::Strip&);
+
std::list<boost::shared_ptr<ARDOUR::Bundle> > bundles ();
void set_master_on_surface_strip (uint32_t surface, uint32_t strip);
void handle_button_event (Mackie::Surface&, Mackie::Button& button, Mackie::ButtonState);
+ void notify_subview_route_deleted ();
+ void notify_route_added_or_removed ();
void notify_route_added (ARDOUR::RouteList &);
void notify_remote_id_changed();
Sorted get_sorted_routes();
// bank switching
- void switch_banks (uint32_t first_remote_id, bool force = false);
+ int switch_banks (uint32_t first_remote_id, bool force = false);
void prev_track ();
void next_track ();
static MackieControlProtocol* _instance;
+ bool profile_exists (std::string const&) const;
+
Mackie::DeviceInfo _device_info;
Mackie::DeviceProfile _device_profile;
sigc::connection periodic_connection;
PBD::ScopedConnectionList audio_engine_connections;
PBD::ScopedConnectionList session_connections;
PBD::ScopedConnectionList route_connections;
+ PBD::ScopedConnectionList subview_route_connections;
PBD::ScopedConnectionList gui_connections;
+ PBD::ScopedConnectionList fader_automation_connections;
// timer for two quick marker left presses
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;
+ SubViewMode _subview_mode;
+ boost::shared_ptr<ARDOUR::Route> _subview_route;
int _current_selected_track;
int _modifier_state;
ButtonMap button_map;
ARDOUR::RouteNotificationList _last_selected_routes;
XMLNode* configuration_state;
int state_version;
- int _last_mix_bank;
+ int _last_bank[9];
+ bool marker_modifier_consumed_by_button;
+ bool nudge_modifier_consumed_by_button;
boost::shared_ptr<ArdourSurface::Mackie::Surface> _master_surface;
int create_surfaces ();
bool periodic();
bool redisplay();
+ bool redisplay_subview_mode ();
bool hui_heartbeat ();
void build_gui ();
bool midi_input_handler (Glib::IOCondition ioc, MIDI::Port* port);
void force_special_route_to_strip (boost::shared_ptr<ARDOUR::Route> r, uint32_t surface, uint32_t strip_number);
void build_button_map ();
void gui_track_selection_changed (ARDOUR::RouteNotificationListPtr, bool save_list);
- void _gui_track_selection_changed (ARDOUR::RouteNotificationList*, bool save_list);
+ void _gui_track_selection_changed (ARDOUR::RouteNotificationList*, bool save_list, bool gui_did_change);
int ipmidi_restart ();
void initialize ();
int set_device_info (const std::string& device_name);
Mackie::LedState channel_left_release(Mackie::Button &);
Mackie::LedState channel_right_press(Mackie::Button &);
Mackie::LedState channel_right_release(Mackie::Button &);
- Mackie::LedState clicking_press(Mackie::Button &);
- Mackie::LedState clicking_release(Mackie::Button &);
- Mackie::LedState global_solo_press(Mackie::Button &);
- Mackie::LedState global_solo_release(Mackie::Button &);
Mackie::LedState marker_press(Mackie::Button &);
Mackie::LedState marker_release(Mackie::Button &);
Mackie::LedState save_press(Mackie::Button &);