#include "fp8_base.h"
#include "fp8_button.h"
+#ifdef FADERPORT16
+# define N_STRIPS 16
+#elif defined FADERPORT2
+# define N_STRIPS 1
+#else
+# define N_STRIPS 8
+#endif
+
namespace ARDOUR {
class Stripable;
class AutomationControl;
class ReadOnlyControl;
}
-namespace ArdourSurface {
+namespace ArdourSurface { namespace FP_NAMESPACE {
class FP8Strip
{
FP8Strip (FP8Base& b, uint8_t id);
~FP8Strip ();
+ enum CtrlElement {
+ BtnSolo,
+ BtnMute,
+ BtnSelect,
+ Fader,
+ Meter,
+ Redux,
+ BarVal,
+ BarMode
+ };
+
+ static uint8_t midi_ctrl_id (CtrlElement type, uint8_t id);
+
FP8ButtonInterface& solo_button () { return _solo; }
FP8ButtonInterface& mute_button () { return _mute; }
FP8ButtonInterface& selrec_button () { return _selrec; }
FP8ButtonInterface& recarm_button () { return *_selrec.button_shift(); }
FP8ButtonInterface& select_button () { return *_selrec.button(); }
+ void set_select_button_color (uint32_t color) {
+ if ((color & 0xffffff00) == 0) {
+ select_button ().set_color (0xffffffff);
+ } else {
+ select_button ().set_color (color);
+ }
+ }
+
bool midi_touch (bool t);
bool midi_fader (float val);
CTRL_TEXT2 = 0x400,
CTRL_TEXT3 = 0x800,
+ CTRL_TEXT01 = 0x300,
CTRL_TEXT = 0xf00,
CTRL_ALL = 0xfff,
};
void unset_controllables (int which = CTRL_ALL);
- void set_fader_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
- void set_mute_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
- void set_solo_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
- void set_rec_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
- void set_pan_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
+ void set_fader_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
+ void set_mute_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
+ void set_solo_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
+ void set_rec_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
+ void set_pan_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
+ void set_select_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
private:
FP8Base& _base;
PBD::ScopedConnection _base_connection; // periodic
PBD::ScopedConnectionList _button_connections;
- boost::shared_ptr<ARDOUR::Stripable> _stripable;
+ std::string _stripable_name;
boost::shared_ptr<ARDOUR::AutomationControl> _fader_ctrl;
boost::shared_ptr<ARDOUR::AutomationControl> _mute_ctrl;
boost::shared_ptr<ARDOUR::AutomationControl> _solo_ctrl;
boost::shared_ptr<ARDOUR::AutomationControl> _rec_ctrl;
boost::shared_ptr<ARDOUR::AutomationControl> _pan_ctrl;
+ boost::shared_ptr<ARDOUR::AutomationControl> _x_select_ctrl;
PBD::ScopedConnection _fader_connection;
PBD::ScopedConnection _mute_connection;
PBD::ScopedConnection _solo_connection;
PBD::ScopedConnection _rec_connection;
PBD::ScopedConnection _pan_connection;
+ PBD::ScopedConnection _x_select_connection;
boost::shared_ptr<ARDOUR::PeakMeter> _peak_meter;
boost::shared_ptr<ARDOUR::ReadOnlyControl> _redux_ctrl;
+
+ void set_x_select_controllable (boost::shared_ptr<ARDOUR::AutomationControl>);
boost::function<void ()> _select_plugin_functor;
+ void drop_automation_controls ();
+
PBD::Controllable::GroupControlDisposition group_mode () const;
/* notifications, update view */
void notify_mute_changed ();
void notify_rec_changed ();
void notify_pan_changed ();
+ void notify_x_select_changed ();
/* actions, update model */
void set_mute (bool);
void set_recarm ();
/* periodic poll, update view */
+ void set_strip_name ();
void periodic_update_fader ();
void periodic_update_meter ();
- void periodic_update_timecode ();
+ void periodic_update_timecode (uint32_t);
void periodic ();
/* cache */
/* display */
void set_strip_mode (uint8_t, bool clear = false);
- void set_bar_mode (uint8_t);
+ void set_bar_mode (uint8_t, bool force = false);
uint8_t _strip_mode;
uint8_t _bar_mode;
std::string _last_line[4];
};
-} /* namespace */
+} } /* namespace */
#endif /* _ardour_surfaces_fp8strip_h_ */