projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update classkeys to match new total LuaSignal count (windows only)
[ardour.git]
/
libs
/
surfaces
/
push2
/
push2.h
diff --git
a/libs/surfaces/push2/push2.h
b/libs/surfaces/push2/push2.h
index 29502239e8ce8947b2a517f788e6ee2d99d7519f..89982928bd09bcf09f1b078241ea05c52f7693a7 100644
(file)
--- a/
libs/surfaces/push2/push2.h
+++ b/
libs/surfaces/push2/push2.h
@@
-27,25
+27,20
@@
#include <libusb.h>
#include <libusb.h>
-#include <cairomm/refptr.h>
-
#define ABSTRACT_UI_EXPORTS
#include "pbd/abstract_ui.h"
#include "midi++/types.h"
#define ABSTRACT_UI_EXPORTS
#include "pbd/abstract_ui.h"
#include "midi++/types.h"
+#include "ardour/mode.h"
#include "ardour/types.h"
#include "control_protocol/control_protocol.h"
#include "control_protocol/types.h"
#include "ardour/types.h"
#include "control_protocol/control_protocol.h"
#include "control_protocol/types.h"
-#include "midi_byte_array.h"
-#include "mode.h"
+#include "gtkmm2ext/colors.h"
-namespace Cairo {
- class ImageSurface;
- class Context;
-}
+#include "midi_byte_array.h"
namespace Pango {
class Layout;
namespace Pango {
class Layout;
@@
-74,6
+69,7
@@
public:
class P2GUI;
class Push2Menu;
class Push2Layout;
class P2GUI;
class Push2Menu;
class Push2Layout;
+class Push2Canvas;
class Push2 : public ARDOUR::ControlProtocol
, public AbstractUI<Push2Request>
class Push2 : public ARDOUR::ControlProtocol
, public AbstractUI<Push2Request>
@@
-303,6
+299,11
@@
class Push2 : public ARDOUR::ControlProtocol
KnobBorder,
};
KnobBorder,
};
+ enum PressureMode {
+ AfterTouch,
+ PolyPressure,
+ };
+
public:
Push2 (ARDOUR::Session&);
~Push2 ();
public:
Push2 (ARDOUR::Session&);
~Push2 ();
@@
-328,7
+329,10
@@
class Push2 : public ARDOUR::ControlProtocol
int pad_note (int row, int col) const;
PBD::Signal0<void> PadChange;
int pad_note (int row, int col) const;
PBD::Signal0<void> PadChange;
+ void update_selection_color ();
+
void set_pad_scale (int root, int octave, MusicalMode::Type mode, bool inkey);
void set_pad_scale (int root, int octave, MusicalMode::Type mode, bool inkey);
+ PBD::Signal0<void> ScaleChange;
MusicalMode::Type mode() const { return _mode; }
int scale_root() const { return _scale_root; }
MusicalMode::Type mode() const { return _mode; }
int scale_root() const { return _scale_root; }
@@
-336,6
+340,9
@@
class Push2 : public ARDOUR::ControlProtocol
bool in_key() const { return _in_key; }
Push2Layout* current_layout() const;
bool in_key() const { return _in_key; }
Push2Layout* current_layout() const;
+ void use_previous_layout ();
+
+ Push2Canvas* canvas() const { return _canvas; }
enum ModifierState {
None = 0,
enum ModifierState {
None = 0,
@@
-345,58
+352,66
@@
class Push2 : public ARDOUR::ControlProtocol
ModifierState modifier_state() const { return _modifier_state; }
ModifierState modifier_state() const { return _modifier_state; }
- Button* button_by_id (ButtonID);
+ boost::shared_ptr<Button> button_by_id (ButtonID);
+ static std::string button_name_by_id (ButtonID);
+
+ void strip_buttons_off ();
void write (const MidiByteArray&);
void write (const MidiByteArray&);
- uint8_t get_color_index (
uint32_t rgb
);
-
uint32_t
get_color (ColorName);
+ uint8_t get_color_index (
Gtkmm2ext::Color rgba
);
+
Gtkmm2ext::Color
get_color (ColorName);
- static const int cols;
- static const int rows;
+ PressureMode pressure_mode () const { return _pressure_mode; }
+ void set_pressure_mode (PressureMode);
+ PBD::Signal1<void,PressureMode> PressureModeChange;
+
+ libusb_device_handle* usb_handle() const { return handle; }
private:
libusb_device_handle *handle;
private:
libusb_device_handle *handle;
- uint8_t frame_header[16];
- uint16_t* device_frame_buffer;
- int device_buffer;
- Cairo::RefPtr<Cairo::ImageSurface> frame_buffer;
- sigc::connection vblank_connection;
- sigc::connection periodic_connection;
-
+ bool in_use;
ModifierState _modifier_state;
ModifierState _modifier_state;
- static const int pixels_per_row;
-
void do_request (Push2Request*);
void do_request (Push2Request*);
- int stop ();
- int open ();
- int close ();
- bool redraw ();
- int blit_to_device_frame_buffer ();
- bool vblank ();
+
+ int begin_using_device ();
+ int stop_using_device ();
+ int device_acquire ();
+ void device_release ();
+ int ports_acquire ();
+ void ports_release ();
+ void run_event_loop ();
+ void stop_event_loop ();
void relax () {}
/* map of Buttons by CC */
void relax () {}
/* map of Buttons by CC */
- typedef std::map<int,
Button*
> CCButtonMap;
+ typedef std::map<int,
boost::shared_ptr<Button>
> CCButtonMap;
CCButtonMap cc_button_map;
/* map of Buttons by ButtonID */
CCButtonMap cc_button_map;
/* map of Buttons by ButtonID */
- typedef std::map<ButtonID,
Button*
> IDButtonMap;
+ typedef std::map<ButtonID,
boost::shared_ptr<Button>
> IDButtonMap;
IDButtonMap id_button_map;
std::set<ButtonID> buttons_down;
std::set<ButtonID> consumed;
bool button_long_press_timeout (ButtonID id);
IDButtonMap id_button_map;
std::set<ButtonID> buttons_down;
std::set<ButtonID> consumed;
bool button_long_press_timeout (ButtonID id);
- void start_press_timeout (
Button&
, ButtonID);
+ void start_press_timeout (
boost::shared_ptr<Button>
, ButtonID);
void init_buttons (bool startup);
void init_touch_strip ();
void init_buttons (bool startup);
void init_touch_strip ();
- /* map of Pads by note number */
- typedef std::map<int,Pad*> NNPadMap;
+ /* map of Pads by note number (the "fixed" note number sent by the
+ * hardware, not the note number generated if the pad is touched)
+ */
+ typedef std::map<int,boost::shared_ptr<Pad> > NNPadMap;
NNPadMap nn_pad_map;
NNPadMap nn_pad_map;
+ /* map of Pads by note number they generate (their "filtered" value)
+ */
+ typedef std::multimap<int,boost::shared_ptr<Pad> > FNPadMap;
+ FNPadMap fn_pad_map;
+
void set_button_color (ButtonID, uint8_t color_index);
void set_button_state (ButtonID, LED::State);
void set_led_color (ButtonID, uint8_t color_index);
void set_button_color (ButtonID, uint8_t color_index);
void set_button_state (ButtonID, LED::State);
void set_led_color (ButtonID, uint8_t color_index);
@@
-422,7
+437,6
@@
class Push2 : public ARDOUR::ControlProtocol
void handle_midi_sysex (MIDI::Parser&, MIDI::byte *, size_t count);
bool midi_input_handler (Glib::IOCondition ioc, MIDI::Port* port);
void handle_midi_sysex (MIDI::Parser&, MIDI::byte *, size_t count);
bool midi_input_handler (Glib::IOCondition ioc, MIDI::Port* port);
- bool periodic ();
void thread_init ();
void thread_init ();
@@
-443,7
+457,9
@@
class Push2 : public ARDOUR::ControlProtocol
void button_left ();
void button_metronome ();
void button_repeat ();
void button_left ();
void button_metronome ();
void button_repeat ();
+ void button_mute ();
void button_solo ();
void button_solo ();
+ void button_solo_long_press ();
void button_fixed_length ();
void button_new ();
void button_browse ();
void button_fixed_length ();
void button_new ();
void button_browse ();
@@
-459,6
+475,9
@@
class Push2 : public ARDOUR::ControlProtocol
void button_fwd4 ();
void button_add_track ();
void button_stop ();
void button_fwd4 ();
void button_add_track ();
void button_stop ();
+ void button_master ();
+ void button_quantize ();
+ void button_duplicate ();
void button_shift_press ();
void button_shift_release ();
void button_shift_long_press ();
void button_shift_press ();
void button_shift_release ();
void button_shift_long_press ();
@@
-501,26
+520,30
@@
class Push2 : public ARDOUR::ControlProtocol
void other_vpot (int, int);
void other_vpot_touch (int, bool);
void other_vpot (int, int);
void other_vpot_touch (int, bool);
- /* special Stripable
s
*/
+ /* special Stripable */
boost::shared_ptr<ARDOUR::Stripable> master;
boost::shared_ptr<ARDOUR::Stripable> master;
- boost::shared_ptr<ARDOUR::Stripable> monitor;
-
- /* Cairo graphics context */
- Cairo::RefPtr<Cairo::Context> context;
+ sigc::connection vblank_connection;
+ bool vblank ();
void splash ();
ARDOUR::microseconds_t splash_start;
void splash ();
ARDOUR::microseconds_t splash_start;
+ /* the canvas */
+
+ Push2Canvas* _canvas;
+
/* Layouts */
mutable Glib::Threads::Mutex layout_lock;
Push2Layout* _current_layout;
/* Layouts */
mutable Glib::Threads::Mutex layout_lock;
Push2Layout* _current_layout;
- Push2Layout*
drawn
_layout;
+ Push2Layout*
_previous
_layout;
Push2Layout* mix_layout;
Push2Layout* scale_layout;
Push2Layout* track_mix_layout;
Push2Layout* mix_layout;
Push2Layout* scale_layout;
Push2Layout* track_mix_layout;
+ Push2Layout* splash_layout;
+ void set_current_layout (Push2Layout*);
bool pad_filter (ARDOUR::MidiBuffer& in, ARDOUR::MidiBuffer& out) const;
bool pad_filter (ARDOUR::MidiBuffer& in, ARDOUR::MidiBuffer& out) const;
@@
-537,6
+560,7
@@
class Push2 : public ARDOUR::ControlProtocol
int connection_state;
bool connection_handler (boost::weak_ptr<ARDOUR::Port>, std::string name1, boost::weak_ptr<ARDOUR::Port>, std::string name2, bool yn);
PBD::ScopedConnection port_connection;
int connection_state;
bool connection_handler (boost::weak_ptr<ARDOUR::Port>, std::string name1, boost::weak_ptr<ARDOUR::Port>, std::string name2, bool yn);
PBD::ScopedConnection port_connection;
+ void connected ();
/* GUI */
/* GUI */
@@
-545,8
+569,7
@@
class Push2 : public ARDOUR::ControlProtocol
/* pad mapping */
/* pad mapping */
- PBD::ScopedConnection selection_connection;
- void stripable_selection_change (ARDOUR::StripableNotificationListPtr);
+ void stripable_selection_changed ();
MusicalMode::Type _mode;
int _scale_root;
MusicalMode::Type _mode;
int _scale_root;
@@
-560,7
+583,7
@@
class Push2 : public ARDOUR::ControlProtocol
/* color map (device side) */
/* color map (device side) */
- typedef std::map<
uint32_t
,uint8_t> ColorMap;
+ typedef std::map<
Gtkmm2ext::Color
,uint8_t> ColorMap;
typedef std::stack<uint8_t> ColorMapFreeList;
ColorMap color_map;
ColorMapFreeList color_map_free_list;
typedef std::stack<uint8_t> ColorMapFreeList;
ColorMap color_map;
ColorMapFreeList color_map_free_list;
@@
-568,9
+591,18
@@
class Push2 : public ARDOUR::ControlProtocol
/* our own colors */
/* our own colors */
- typedef std::map<ColorName,
uint32_t
> Colors;
+ typedef std::map<ColorName,
Gtkmm2ext::Color
> Colors;
Colors colors;
void fill_color_table ();
Colors colors;
void fill_color_table ();
+ void reset_pad_colors ();
+
+ PressureMode _pressure_mode;
+ void request_pressure_mode ();
+
+ uint8_t selection_color;
+ uint8_t contrast_color;
+
+ bool in_range_select;
};
} /* namespace */
};
} /* namespace */