Ardour  9.0-pre0-582-g084a23a80d
ArdourSurface::Maschine2 Class Reference

#include <maschine2.h>

Inheritance diagram for ArdourSurface::Maschine2:
[legend]

Public Types

enum  Maschine2Type { Mikro , Maschine , Studio }
 
- Public Types inherited from PBD::EventLoop
enum  RequestType { range_guarantee = ~0 }
 

Public Member Functions

 Maschine2 (ARDOUR::Session &)
 
 ~Maschine2 ()
 
int set_active (bool yn)
 
XMLNodeget_state () const
 
int set_state (const XMLNode &node, int version)
 
Maschine2Canvascanvas () const
 
Maschine2Layoutcurrent_layout () const
 
 CONTROL_PROTOCOL_THREADS_NEED_TEMPO_MAP_DECL ()
 
- Public Member Functions inherited from ARDOUR::ControlProtocol
 ControlProtocol (Session &, std::string name)
 
virtual ~ControlProtocol ()
 
virtual std::string name () const
 
virtual bool active () const
 
virtual int set_feedback (bool)
 
virtual bool get_feedback () const
 
virtual void midi_connectivity_established (bool)
 
void add_stripable_to_selection (std::shared_ptr< ARDOUR::Stripable >)
 
void set_stripable_selection (std::shared_ptr< ARDOUR::Stripable >)
 
void toggle_stripable_selection (std::shared_ptr< ARDOUR::Stripable >)
 
void remove_stripable_from_selection (std::shared_ptr< ARDOUR::Stripable >)
 
void clear_stripable_selection ()
 
virtual void add_rid_to_selection (int rid)
 
virtual void set_rid_selection (int rid)
 
virtual void toggle_rid_selection (int rid)
 
virtual void remove_rid_from_selection (int rid)
 
std::shared_ptr< ARDOUR::Stripablefirst_selected_stripable () const
 
void set_route_table_size (uint32_t size)
 
void set_route_table (uint32_t table_index, std::shared_ptr< ARDOUR::Route >)
 
bool set_route_table (uint32_t table_index, uint32_t remote_control_id)
 
void route_set_rec_enable (uint32_t table_index, bool yn)
 
bool route_get_rec_enable (uint32_t table_index)
 
float route_get_gain (uint32_t table_index)
 
void route_set_gain (uint32_t table_index, float)
 
float route_get_effective_gain (uint32_t table_index)
 
float route_get_peak_input_power (uint32_t table_index, uint32_t which_input)
 
bool route_get_muted (uint32_t table_index)
 
void route_set_muted (uint32_t table_index, bool)
 
bool route_get_soloed (uint32_t table_index)
 
void route_set_soloed (uint32_t table_index, bool)
 
std::string route_get_name (uint32_t table_index)
 
virtual std::list< std::shared_ptr< ARDOUR::Bundle > > bundles ()
 
virtual bool has_editor () const
 
virtual void * get_gui () const
 
virtual void tear_down_gui ()
 
- Public Member Functions inherited from PBD::Stateful
 Stateful ()
 
virtual ~Stateful ()
 
virtual bool apply_change (PropertyBase const &)
 
PropertyChange apply_changes (PropertyList const &)
 
const OwnedPropertyListproperties () const
 
void add_property (PropertyBase &s)
 
void add_extra_xml (XMLNode &)
 
XMLNodeextra_xml (const std::string &str, bool add_if_missing=false)
 
void save_extra_xml (const XMLNode &)
 
const PBD::IDid () const
 
bool set_id (const XMLNode &)
 
void set_id (const std::string &)
 
void reset_id ()
 
void clear_changes ()
 
virtual void clear_owned_changes ()
 
PropertyListget_changes_as_properties (PBD::Command *) const
 
virtual void rdiff (std::vector< PBD::Command * > &) const
 
bool changed () const
 
virtual PropertyListproperty_factory (const XMLNode &) const
 
virtual void suspend_property_changes ()
 
virtual void resume_property_changes ()
 
bool property_changes_suspended () const
 
- Public Member Functions inherited from PBD::ScopedConnectionList
 ScopedConnectionList ()
 
 ScopedConnectionList (const ScopedConnectionList &)=delete
 
ScopedConnectionListoperator= (const ScopedConnectionList &)=delete
 
virtual ~ScopedConnectionList ()
 
void add_connection (const UnscopedConnection &c)
 
void drop_connections ()
 
- Public Member Functions inherited from BasicUI
 BasicUI (ARDOUR::Session &)
 
virtual ~BasicUI ()
 
void add_marker (const std::string &=std::string())
 
void remove_marker_at_playhead ()
 
void register_thread (std::string name)
 
void loop_toggle ()
 
void loop_location (Temporal::timepos_t const &start, Temporal::timepos_t const &end)
 
void access_action (std::string action_path)
 
void goto_zero ()
 
void goto_start (bool and_roll=false)
 
void goto_end ()
 
void button_varispeed (bool fwd)
 
void rewind ()
 
void ffwd ()
 
void transport_stop ()
 
void transport_play (bool jump_back=false)
 
void set_transport_speed (double speed)
 
double get_transport_speed () const
 
double transport_rolling () const
 
void jump_by_seconds (double sec, ARDOUR::LocateTransportDisposition ltd=ARDOUR::RollIfAppropriate)
 
void jump_by_bars (int bars, ARDOUR::LocateTransportDisposition ltd=ARDOUR::RollIfAppropriate)
 
void jump_by_beats (int beats, ARDOUR::LocateTransportDisposition ltd=ARDOUR::RollIfAppropriate)
 
ARDOUR::samplepos_t transport_sample ()
 
void locate (ARDOUR::samplepos_t sample, ARDOUR::LocateTransportDisposition ltd)
 
void locate (ARDOUR::samplepos_t sample, bool)
 
bool locating ()
 
bool locked ()
 
void save_state ()
 
void prev_marker ()
 
void next_marker ()
 
void undo ()
 
void redo ()
 
void toggle_punch_in ()
 
void toggle_punch_out ()
 
void mark_in ()
 
void mark_out ()
 
void toggle_click ()
 
void midi_panic ()
 
void trigger_cue_row (int cue)
 
void trigger_stop_all (bool stop_now=false)
 
void trigger_stop_col (int col, bool immediately=false)
 
void store_mixer_scene (int scn)
 
void apply_mixer_scene (int scn)
 
void toggle_monitor_mute ()
 
void toggle_monitor_dim ()
 
void toggle_monitor_mono ()
 
void cancel_all_solo ()
 
void quick_snapshot_stay ()
 
void quick_snapshot_switch ()
 
void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode)
 
void stop_forget ()
 
void set_punch_range ()
 
void set_loop_range ()
 
void set_session_range ()
 
void set_record_enable (bool yn)
 
bool get_record_enabled ()
 
void fit_1_track ()
 
void fit_2_tracks ()
 
void fit_4_tracks ()
 
void fit_8_tracks ()
 
void fit_16_tracks ()
 
void fit_32_tracks ()
 
void fit_all_tracks ()
 
void zoom_10_ms ()
 
void zoom_100_ms ()
 
void zoom_1_sec ()
 
void zoom_10_sec ()
 
void zoom_1_min ()
 
void zoom_5_min ()
 
void zoom_10_min ()
 
void zoom_to_session ()
 
void temporal_zoom_in ()
 
void temporal_zoom_out ()
 
void scroll_up_1_track ()
 
void scroll_dn_1_track ()
 
void scroll_up_1_page ()
 
void scroll_dn_1_page ()
 
void rec_enable_toggle ()
 
void toggle_all_rec_enables ()
 
void all_tracks_rec_in ()
 
void all_tracks_rec_out ()
 
void goto_nth_marker (int n)
 
ARDOUR::samplecnt_t timecode_frames_per_hour ()
 
void timecode_time (samplepos_t where, Timecode::Time &)
 
void timecode_to_sample (Timecode::Time &timecode, samplepos_t &sample, bool use_offset, bool use_subframes) const
 
void sample_to_timecode (samplepos_t sample, Timecode::Time &timecode, bool use_offset, bool use_subframes) const
 
bool stop_button_onoff () const
 
bool play_button_onoff () const
 
bool ffwd_button_onoff () const
 
bool rewind_button_onoff () const
 
bool loop_button_onoff () const
 
void tbank_set_size (int route_width, int row_height)
 
void tbank_step_routes (int step_size)
 
void tbank_step_rows (int step_size)
 
float trigger_progress_at (int x)
 
TriggerDisplay trigger_display_at (int x, int y)
 
void bang_trigger_at (int x, int y)
 
void unbang_trigger_at (int x, int y)
 
std::shared_ptr< ARDOUR::Triggerfind_trigger (int x, int y)
 
- Public Member Functions inherited from AbstractUI< Maschine2Request >
 AbstractUI (const std::string &name)
 
virtual ~AbstractUI ()
 
void register_thread (pthread_t, std::string, uint32_t num_requests)
 
bool call_slot (EventLoop::InvalidationRecord *, const std::function< void()> &)
 
Glib::Threads::RWLock & slot_invalidation_rwlock ()
 
- Public Member Functions inherited from BaseUI
 BaseUI (const std::string &name)
 
virtual ~BaseUI ()
 
BaseUIbase_instance ()
 
Glib::RefPtr< Glib::MainLoop > main_loop () const
 
bool caller_is_self () const
 
bool ok () const
 
void run ()
 
void quit ()
 
- Public Member Functions inherited from PBD::EventLoop
 EventLoop (std::string const &)
 
virtual ~EventLoop ()
 
virtual bool call_slot (InvalidationRecord *, const std::function< void()> &)=0
 
std::string event_loop_name () const
 

Static Public Member Functions

static bool available ()
 
- Static Public Member Functions inherited from ARDOUR::ControlProtocol
static StripableNotificationList const & last_selected ()
 
static void notify_stripable_selection_changed (StripableNotificationListPtr)
 
- Static Public Member Functions inherited from BaseUI
static RequestType new_request_type ()
 
static void set_thread_priority (int p)
 
- Static Public Member Functions inherited from PBD::EventLoop
static void * invalidate_request (void *data)
 
static EventLoopget_event_loop_for_thread ()
 
static void set_event_loop_for_thread (EventLoop *ui)
 
static std::vector< ThreadBufferMappingget_request_buffers_for_target_thread (const std::string &)
 
static void pre_register (const std::string &emitting_thread_name, uint32_t num_requests)
 
static void remove_request_buffer_from_map (pthread_t)
 
static InvalidationRecord__invalidator (sigc::trackable &trackable, const char *, int)
 

Private Types

enum  MasterMode { MST_NONE , MST_VOLUME , MST_TEMPO }
 

Private Member Functions

void do_request (Maschine2Request *)
 
int start ()
 
int stop ()
 
void thread_init ()
 
void run_event_loop ()
 
void stop_event_loop ()
 
bool dev_write ()
 
bool dev_read ()
 
void connect_signals ()
 
void stripable_selection_changed ()
 
void handle_master_change (enum MasterMode)
 
void notify_master_change ()
 
void notify_record_state_changed ()
 
void notify_transport_state_changed ()
 
void notify_loop_state_changed ()
 
void notify_parameter_changed (std::string)
 
void notify_snap_change ()
 
void notify_session_dirty_changed ()
 
void notify_history_changed ()
 
void button_play ()
 
void button_record ()
 
void button_loop ()
 
void button_metronom ()
 
void button_rewind ()
 
void button_action (const std::string &, const std::string &)
 
void button_snap_released ()
 
void button_snap_pressed ()
 
void button_snap_changed (bool)
 
void encoder_master (int)
 
void button_encoder ()
 
void pad_event (unsigned int, float, bool)
 
void pad_change (unsigned int, float)
 

Private Attributes

sigc::connection read_connection
 
sigc::connection write_connection
 
hid_device * _handle
 
M2Device_hw
 
M2Contols_ctrl
 
Maschine2Canvas_canvas
 
Maschine2Type _maschine_type
 
PBD::ScopedConnectionList session_connections
 
PBD::ScopedConnectionList button_connections
 
enum ArdourSurface::Maschine2::MasterMode _master_state
 
std::shared_ptr< ARDOUR::Port_midi_out
 
MIDI::Port_output_port
 

Additional Inherited Members

- Public Attributes inherited from ARDOUR::ControlProtocol
PBD::Signal< void()> ActiveChanged
 
- Public Attributes inherited from PBD::Stateful
PBD::Signal< void(const PropertyChange &)> PropertyChanged
 
- Public Attributes inherited from AbstractUI< Maschine2Request >
Glib::Threads::RWLock request_buffer_map_lock
 
- Public Attributes inherited from PBD::EventLoop
std::list< InvalidationRecord * > trash
 
- Static Public Attributes inherited from ARDOUR::ControlProtocol
static PBD::Signal< void()> ZoomToSession
 
static PBD::Signal< void()> ZoomIn
 
static PBD::Signal< void()> ZoomOut
 
static PBD::Signal< void()> Enter
 
static PBD::Signal< void()> Undo
 
static PBD::Signal< void()> Redo
 
static PBD::Signal< void(float)> ScrollTimeline
 
static PBD::Signal< void(uint32_t)> GotoView
 
static PBD::Signal< void()> CloseDialog
 
static PBD::Signal< void()> VerticalZoomInAll
 
static PBD::Signal< void()> VerticalZoomOutAll
 
static PBD::Signal< void()> VerticalZoomInSelected
 
static PBD::Signal< void()> VerticalZoomOutSelected
 
static PBD::Signal< void()> StepTracksDown
 
static PBD::Signal< void()> StepTracksUp
 
static PBD::Signal< void(std::weak_ptr< ARDOUR::PluginInsert >)> PluginSelected
 
static const std::string state_node_name
 
- Static Public Attributes inherited from PBD::Stateful
static int current_state_version
 
static int loading_state_version
 
- Static Public Attributes inherited from BasicUI
static PBD::Signal< void(std::string, std::string)> AccessAction
 
- Static Public Attributes inherited from BaseUI
static RequestType CallSlot
 
static RequestType Quit
 
- Protected Types inherited from AbstractUI< Maschine2Request >
typedef RequestBuffer::rw_vector RequestBufferVector
 
typedef std::map< pthread_t, RequestBuffer * >::iterator RequestBufferMapIterator
 
typedef std::map< pthread_t, RequestBuffer * > RequestBufferMap
 
- Protected Member Functions inherited from ARDOUR::ControlProtocol
void next_track (uint32_t initial_id)
 
void prev_track (uint32_t initial_id)
 
virtual void event_loop_precall ()
 
void install_precall_handler (Glib::RefPtr< Glib::MainContext >)
 
- Protected Member Functions inherited from PBD::Stateful
void add_instant_xml (XMLNode &, const std::string &directory_path)
 
XMLNodeinstant_xml (const std::string &str, const std::string &directory_path)
 
void add_properties (XMLNode &) const
 
PropertyChange set_values (XMLNode const &)
 
virtual void post_set (const PropertyChange &)
 
virtual void send_change (const PropertyChange &)
 
virtual void mid_thaw (const PropertyChange &)
 
bool regenerate_xml_or_string_ids () const
 
- Protected Member Functions inherited from BasicUI
 BasicUI ()
 
- Protected Member Functions inherited from AbstractUI< Maschine2Request >
Maschine2Request * get_request (RequestType)
 
void handle_ui_requests ()
 
void send_request (Maschine2Request *)
 
virtual void do_request (Maschine2Request *)=0
 
RequestBuffer * get_per_thread_request_buffer ()
 
- Protected Member Functions inherited from BaseUI
bool signal_running ()
 
int set_thread_priority () const
 
bool request_handler (Glib::IOCondition)
 
void signal_new_request ()
 
void attach_request_source ()
 
virtual void maybe_install_precall_handler (Glib::RefPtr< Glib::MainContext >)
 
- Protected Attributes inherited from ARDOUR::ControlProtocol
std::vector< std::shared_ptr< ARDOUR::Route > > route_table
 
std::string _name
 
GlibEventLoopCallback glib_event_callback
 
- Protected Attributes inherited from PBD::Stateful
XMLNode_extra_xml
 
XMLNode_instant_xml
 
PBD::PropertyChange _pending_changed
 
Glib::Threads::Mutex _lock
 
std::string _xml_node_name
 name of node to use for this object in XML More...
 
OwnedPropertyList_properties
 
- Protected Attributes inherited from BasicUI
ARDOUR::Sessionsession
 
int _tbank_route_width
 
int _tbank_row_height
 
int _tbank_start_route
 
int _tbank_start_row
 
- Protected Attributes inherited from AbstractUI< Maschine2Request >
RequestBufferMap request_buffers
 
std::list< Maschine2Request * > request_list
 
PBD::ScopedConnection new_thread_connection
 
- Protected Attributes inherited from BaseUI
bool _ok
 
Glib::RefPtr< Glib::MainLoop > _main_loop
 
Glib::RefPtr< Glib::MainContext > m_context
 
PBD::Thread_run_loop_thread
 
Glib::Threads::Mutex _run_lock
 
Glib::Threads::Cond _running
 

Detailed Description

Definition at line 61 of file maschine2.h.

Member Enumeration Documentation

◆ Maschine2Type

Enumerator
Mikro 
Maschine 
Studio 

Definition at line 82 of file maschine2.h.

◆ MasterMode

Enumerator
MST_NONE 
MST_VOLUME 
MST_TEMPO 

Definition at line 121 of file maschine2.h.

Constructor & Destructor Documentation

◆ Maschine2()

ArdourSurface::Maschine2::Maschine2 ( ARDOUR::Session )

◆ ~Maschine2()

ArdourSurface::Maschine2::~Maschine2 ( )

Member Function Documentation

◆ available()

static bool ArdourSurface::Maschine2::available ( )
static

◆ button_action()

void ArdourSurface::Maschine2::button_action ( const std::string &  ,
const std::string &   
)
private

◆ button_encoder()

void ArdourSurface::Maschine2::button_encoder ( )
private

◆ button_loop()

void ArdourSurface::Maschine2::button_loop ( )
private

◆ button_metronom()

void ArdourSurface::Maschine2::button_metronom ( )
private

◆ button_play()

void ArdourSurface::Maschine2::button_play ( )
private

◆ button_record()

void ArdourSurface::Maschine2::button_record ( )
private

◆ button_rewind()

void ArdourSurface::Maschine2::button_rewind ( )
private

◆ button_snap_changed()

void ArdourSurface::Maschine2::button_snap_changed ( bool  )
private

◆ button_snap_pressed()

void ArdourSurface::Maschine2::button_snap_pressed ( )
private

◆ button_snap_released()

void ArdourSurface::Maschine2::button_snap_released ( )
private

◆ canvas()

Maschine2Canvas* ArdourSurface::Maschine2::canvas ( ) const
inline

Definition at line 79 of file maschine2.h.

◆ connect_signals()

void ArdourSurface::Maschine2::connect_signals ( )
private

◆ CONTROL_PROTOCOL_THREADS_NEED_TEMPO_MAP_DECL()

ArdourSurface::Maschine2::CONTROL_PROTOCOL_THREADS_NEED_TEMPO_MAP_DECL ( )

◆ current_layout()

Maschine2Layout* ArdourSurface::Maschine2::current_layout ( ) const

◆ dev_read()

bool ArdourSurface::Maschine2::dev_read ( )
private

◆ dev_write()

bool ArdourSurface::Maschine2::dev_write ( )
private

◆ do_request()

void ArdourSurface::Maschine2::do_request ( Maschine2Request )
private

◆ encoder_master()

void ArdourSurface::Maschine2::encoder_master ( int  )
private

◆ get_state()

XMLNode& ArdourSurface::Maschine2::get_state ( ) const
virtual

Reimplemented from ARDOUR::ControlProtocol.

◆ handle_master_change()

void ArdourSurface::Maschine2::handle_master_change ( enum  MasterMode)
private

◆ notify_history_changed()

void ArdourSurface::Maschine2::notify_history_changed ( )
private

◆ notify_loop_state_changed()

void ArdourSurface::Maschine2::notify_loop_state_changed ( )
private

◆ notify_master_change()

void ArdourSurface::Maschine2::notify_master_change ( )
private

◆ notify_parameter_changed()

void ArdourSurface::Maschine2::notify_parameter_changed ( std::string  )
private

◆ notify_record_state_changed()

void ArdourSurface::Maschine2::notify_record_state_changed ( )
private

◆ notify_session_dirty_changed()

void ArdourSurface::Maschine2::notify_session_dirty_changed ( )
private

◆ notify_snap_change()

void ArdourSurface::Maschine2::notify_snap_change ( )
private

◆ notify_transport_state_changed()

void ArdourSurface::Maschine2::notify_transport_state_changed ( )
private

◆ pad_change()

void ArdourSurface::Maschine2::pad_change ( unsigned int  ,
float   
)
private

◆ pad_event()

void ArdourSurface::Maschine2::pad_event ( unsigned int  ,
float  ,
bool   
)
private

◆ run_event_loop()

void ArdourSurface::Maschine2::run_event_loop ( )
private

◆ set_active()

int ArdourSurface::Maschine2::set_active ( bool  yn)
virtual

Reimplemented from ARDOUR::ControlProtocol.

◆ set_state()

int ArdourSurface::Maschine2::set_state ( const XMLNode node,
int  version 
)
virtual

Reimplemented from ARDOUR::ControlProtocol.

◆ start()

int ArdourSurface::Maschine2::start ( )
private

◆ stop()

int ArdourSurface::Maschine2::stop ( )
private

◆ stop_event_loop()

void ArdourSurface::Maschine2::stop_event_loop ( )
private

◆ stripable_selection_changed()

void ArdourSurface::Maschine2::stripable_selection_changed ( )
inlineprivatevirtual

Implements ARDOUR::ControlProtocol.

Definition at line 117 of file maschine2.h.

◆ thread_init()

void ArdourSurface::Maschine2::thread_init ( )
privatevirtual

Derived UI objects can implement thread_init() which will be called by the event loop thread immediately before it enters the event loop.

Reimplemented from BaseUI.

Member Data Documentation

◆ _canvas

Maschine2Canvas* ArdourSurface::Maschine2::_canvas
private

Definition at line 109 of file maschine2.h.

◆ _ctrl

M2Contols* ArdourSurface::Maschine2::_ctrl
private

Definition at line 108 of file maschine2.h.

◆ _handle

hid_device* ArdourSurface::Maschine2::_handle
private

Definition at line 106 of file maschine2.h.

◆ _hw

M2Device* ArdourSurface::Maschine2::_hw
private

Definition at line 107 of file maschine2.h.

◆ _maschine_type

Maschine2Type ArdourSurface::Maschine2::_maschine_type
private

Definition at line 111 of file maschine2.h.

◆ _master_state

enum ArdourSurface::Maschine2::MasterMode ArdourSurface::Maschine2::_master_state
private

◆ _midi_out

std::shared_ptr<ARDOUR::Port> ArdourSurface::Maschine2::_midi_out
private

Definition at line 131 of file maschine2.h.

◆ _output_port

MIDI::Port* ArdourSurface::Maschine2::_output_port
private

Definition at line 132 of file maschine2.h.

◆ button_connections

PBD::ScopedConnectionList ArdourSurface::Maschine2::button_connections
private

Definition at line 114 of file maschine2.h.

◆ read_connection

sigc::connection ArdourSurface::Maschine2::read_connection
private

Definition at line 100 of file maschine2.h.

◆ session_connections

PBD::ScopedConnectionList ArdourSurface::Maschine2::session_connections
private

Definition at line 113 of file maschine2.h.

◆ write_connection

sigc::connection ArdourSurface::Maschine2::write_connection
private

Definition at line 101 of file maschine2.h.


The documentation for this class was generated from the following file: