class Port;
}
+namespace ArdourSurface {
+
namespace Mackie {
class Surface;
class Control;
class Button;
}
+gboolean ipmidi_input_handler (GIOChannel*, GIOCondition condition, void *data);
+
/**
This handles the plugin duties, and the midi encoding and decoding,
and the signal callbacks, mostly from ARDOUR::Route.
const Mackie::DeviceInfo& device_info() const { return _device_info; }
Mackie::DeviceProfile& device_profile() { return _device_profile; }
+ void device_ready ();
+
int set_active (bool yn);
int set_device (const std::string&);
void set_profile (const std::string&);
XMLNode& get_state ();
int set_state (const XMLNode&, int version);
-
+
+ /* Note: because Mackie control is inherently a duplex protocol,
+ we do not implement get/set_feedback() since this aspect of
+ support for the protocol is not optional.
+ */
+
static bool probe();
Glib::Threads::Mutex surfaces_lock;
};
typedef std::map<Mackie::Button::ID,ButtonHandlers> ButtonMap;
- typedef std::list<GSource*> PortSources;
static MackieControlProtocol* _instance;
ViewMode _view_mode;
int _current_selected_track;
int _modifier_state;
- PortSources port_sources;
ButtonMap button_map;
int16_t _ipmidi_base;
bool needs_ipmidi_restart;
XMLNode* _surfaces_state;
int _surfaces_version;
+ struct ipMIDIHandler {
+ MackieControlProtocol* mcp;
+ MIDI::Port* port;
+ };
+ friend struct ipMIDIHandler; /* is this necessary */
+ friend gboolean ArdourSurface::ipmidi_input_handler (GIOChannel*, GIOCondition condition, void *data);
+
int create_surfaces ();
bool periodic();
void build_gui ();
void pull_route_range (DownButtonList&, ARDOUR::RouteList&);
/* implemented button handlers */
- Mackie::LedState frm_left_press(Mackie::Button &);
- Mackie::LedState frm_left_release(Mackie::Button &);
- Mackie::LedState frm_right_press(Mackie::Button &);
- Mackie::LedState frm_right_release(Mackie::Button &);
Mackie::LedState stop_press(Mackie::Button &);
Mackie::LedState stop_release(Mackie::Button &);
Mackie::LedState play_press(Mackie::Button &);
Mackie::LedState record_release(Mackie::Button &);
Mackie::LedState loop_press(Mackie::Button &);
Mackie::LedState loop_release(Mackie::Button &);
- Mackie::LedState punch_in_press(Mackie::Button &);
- Mackie::LedState punch_in_release(Mackie::Button &);
- Mackie::LedState punch_out_press(Mackie::Button &);
- Mackie::LedState punch_out_release(Mackie::Button &);
- Mackie::LedState home_press(Mackie::Button &);
- Mackie::LedState home_release(Mackie::Button &);
- Mackie::LedState end_press(Mackie::Button &);
- Mackie::LedState end_release(Mackie::Button &);
Mackie::LedState rewind_press(Mackie::Button & button);
Mackie::LedState rewind_release(Mackie::Button & button);
Mackie::LedState ffwd_press(Mackie::Button & button);
Mackie::LedState scrub_release(Mackie::Button &);
Mackie::LedState undo_press (Mackie::Button &);
Mackie::LedState undo_release (Mackie::Button &);
- Mackie::LedState redo_press (Mackie::Button &);
- Mackie::LedState redo_release (Mackie::Button &);
Mackie::LedState shift_press (Mackie::Button &);
Mackie::LedState shift_release (Mackie::Button &);
Mackie::LedState option_press (Mackie::Button &);
Mackie::LedState cmd_alt_press (Mackie::Button &);
Mackie::LedState cmd_alt_release (Mackie::Button &);
- Mackie::LedState io_press (Mackie::Button &);
- Mackie::LedState io_release (Mackie::Button &);
- Mackie::LedState sends_press (Mackie::Button &);
- Mackie::LedState sends_release (Mackie::Button &);
Mackie::LedState pan_press (Mackie::Button &);
Mackie::LedState pan_release (Mackie::Button &);
Mackie::LedState plugin_press (Mackie::Button &);
Mackie::LedState dyn_release (Mackie::Button &);
Mackie::LedState flip_press (Mackie::Button &);
Mackie::LedState flip_release (Mackie::Button &);
- Mackie::LedState edit_press (Mackie::Button &);
- Mackie::LedState edit_release (Mackie::Button &);
Mackie::LedState name_value_press (Mackie::Button &);
Mackie::LedState name_value_release (Mackie::Button &);
Mackie::LedState F1_press (Mackie::Button &);
Mackie::LedState F7_release (Mackie::Button &);
Mackie::LedState F8_press (Mackie::Button &);
Mackie::LedState F8_release (Mackie::Button &);
- Mackie::LedState F9_press (Mackie::Button &);
- Mackie::LedState F9_release (Mackie::Button &);
- Mackie::LedState F10_press (Mackie::Button &);
- Mackie::LedState F10_release (Mackie::Button &);
- Mackie::LedState F11_press (Mackie::Button &);
- Mackie::LedState F11_release (Mackie::Button &);
- Mackie::LedState F12_press (Mackie::Button &);
- Mackie::LedState F12_release (Mackie::Button &);
- Mackie::LedState F13_press (Mackie::Button &);
- Mackie::LedState F13_release (Mackie::Button &);
- Mackie::LedState F14_press (Mackie::Button &);
- Mackie::LedState F14_release (Mackie::Button &);
- Mackie::LedState F15_press (Mackie::Button &);
- Mackie::LedState F15_release (Mackie::Button &);
- Mackie::LedState F16_press (Mackie::Button &);
- Mackie::LedState F16_release (Mackie::Button &);
- Mackie::LedState on_press (Mackie::Button &);
- Mackie::LedState on_release (Mackie::Button &);
- Mackie::LedState rec_ready_press (Mackie::Button &);
- Mackie::LedState rec_ready_release (Mackie::Button &);
Mackie::LedState touch_press (Mackie::Button &);
Mackie::LedState touch_release (Mackie::Button &);
Mackie::LedState enter_press (Mackie::Button &);
Mackie::LedState enter_release (Mackie::Button &);
Mackie::LedState cancel_press (Mackie::Button &);
Mackie::LedState cancel_release (Mackie::Button &);
- Mackie::LedState mixer_press (Mackie::Button &);
- Mackie::LedState mixer_release (Mackie::Button &);
Mackie::LedState user_a_press (Mackie::Button &);
Mackie::LedState user_a_release (Mackie::Button &);
Mackie::LedState user_b_press (Mackie::Button &);
Mackie::LedState master_fader_touch_press (Mackie::Button &);
Mackie::LedState master_fader_touch_release (Mackie::Button &);
- Mackie::LedState snapshot_press (Mackie::Button&);
- Mackie::LedState snapshot_release (Mackie::Button&);
Mackie::LedState read_press (Mackie::Button&);
Mackie::LedState read_release (Mackie::Button&);
Mackie::LedState write_press (Mackie::Button&);
Mackie::LedState write_release (Mackie::Button&);
- Mackie::LedState fdrgroup_press (Mackie::Button&);
- Mackie::LedState fdrgroup_release (Mackie::Button&);
Mackie::LedState clearsolo_press (Mackie::Button&);
Mackie::LedState clearsolo_release (Mackie::Button&);
Mackie::LedState track_press (Mackie::Button&);
Mackie::LedState view_release (Mackie::Button&);
};
+} // namespace
+
#endif // ardour_mackie_control_protocol_h