![]() |
Ardour
9.0-pre0-844-g046623df59
|
#include <push2.h>
Classes | |
struct | Button |
struct | ColorButton |
struct | LED |
struct | Pad |
struct | WhiteButton |
Public Member Functions | |
Push2 (ARDOUR::Session &) | |
~Push2 () | |
std::string | input_port_name () const |
std::string | output_port_name () const |
bool | has_editor () const |
void * | get_gui () const |
void | tear_down_gui () |
int | set_active (bool yn) |
XMLNode & | get_state () const |
int | set_state (const XMLNode &node, int version) |
int | pad_note (int row, int col) const |
void | update_selection_color () |
void | set_pad_note_kind (Pad &pad, PadNoteKind kind) |
Set up a pad to represent a "kind" of note. More... | |
void | set_pad_scale_in_key (int root, int octave, MusicalMode::Type mode, NoteGridOrigin origin, int ideal_vertical_semitones) |
void | set_pad_scale_chromatic (int root, int octave, MusicalMode::Type mode, NoteGridOrigin origin, int vertical_semitones) |
void | set_pad_scale (int root, int octave, MusicalMode::Type mode, NoteGridOrigin origin, RowInterval row_interval, bool inkey) |
MusicalMode::Type | mode () const |
NoteGridOrigin | note_grid_origin () |
RowInterval | row_interval () const |
int | scale_root () const |
int | root_octave () const |
bool | in_key () const |
Push2Layout * | current_layout () const |
void | use_previous_layout () |
Push2Canvas * | canvas () const |
ModifierState | modifier_state () const |
std::shared_ptr< Button > | button_by_id (ButtonID) |
void | strip_buttons_off () |
uint8_t | get_color_index (Gtkmm2ext::Color rgba) |
Gtkmm2ext::Color | get_color (ColorName) |
PressureMode | pressure_mode () const |
void | set_pressure_mode (PressureMode) |
libusb_device_handle * | usb_handle () const |
bool | stop_down () const |
PadMap const & | nn_pad_map () const |
std::shared_ptr< Pad > | pad_by_xy (int x, int y) |
std::shared_ptr< Button > | lower_button_by_column (uint32_t col) |
![]() | |
MIDISurface (ARDOUR::Session &, std::string const &name, std::string const &port_name_prefix, bool use_pad_filter) | |
~MIDISurface () | |
std::shared_ptr< ARDOUR::Port > | input_port () |
std::shared_ptr< ARDOUR::Port > | output_port () |
ARDOUR::Session & | get_session () |
void | write (const MidiByteArray &) |
void | write (MIDI::byte const *, size_t) |
std::list< std::shared_ptr< ARDOUR::Bundle > > | bundles () |
CONTROL_PROTOCOL_THREADS_NEED_TEMPO_MAP_DECL () | |
virtual bool | midi_input_handler (Glib::IOCondition ioc, MIDI::Port *port) |
void | midi_connectivity_established (bool) |
![]() | |
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 |
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::Stripable > | first_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) |
![]() | |
Stateful () | |
virtual | ~Stateful () |
virtual bool | apply_change (PropertyBase const &) |
PropertyChange | apply_changes (PropertyList const &) |
const OwnedPropertyList & | properties () const |
void | add_property (PropertyBase &s) |
void | add_extra_xml (XMLNode &) |
XMLNode * | extra_xml (const std::string &str, bool add_if_missing=false) |
void | save_extra_xml (const XMLNode &) |
const PBD::ID & | id () const |
bool | set_id (const XMLNode &) |
void | set_id (const std::string &) |
void | reset_id () |
void | clear_changes () |
virtual void | clear_owned_changes () |
PropertyList * | get_changes_as_properties (PBD::Command *) const |
virtual void | rdiff (std::vector< PBD::Command * > &) const |
bool | changed () const |
virtual PropertyList * | property_factory (const XMLNode &) const |
virtual void | suspend_property_changes () |
virtual void | resume_property_changes () |
bool | property_changes_suspended () const |
![]() | |
ScopedConnectionList () | |
ScopedConnectionList (const ScopedConnectionList &)=delete | |
ScopedConnectionList & | operator= (const ScopedConnectionList &)=delete |
virtual | ~ScopedConnectionList () |
void | add_connection (const UnscopedConnection &c) |
void | drop_connections () |
![]() | |
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::Trigger > | find_trigger (int x, int y) |
![]() | |
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 () |
![]() | |
BaseUI (const std::string &name) | |
virtual | ~BaseUI () |
BaseUI * | base_instance () |
Glib::RefPtr< Glib::MainLoop > | main_loop () const |
bool | caller_is_self () const |
bool | ok () const |
void | run () |
void | quit () |
![]() | |
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 bool | match_usb (uint16_t, uint16_t) |
static bool | probe (std::string &, std::string &) |
static std::string | button_name_by_id (ButtonID) |
![]() | |
static StripableNotificationList const & | last_selected () |
static void | notify_stripable_selection_changed (StripableNotificationListPtr) |
![]() | |
static RequestType | new_request_type () |
static void | set_thread_priority (int p) |
![]() | |
static void * | invalidate_request (void *data) |
static EventLoop * | get_event_loop_for_thread () |
static void | set_event_loop_for_thread (EventLoop *ui) |
static std::vector< ThreadBufferMapping > | get_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) |
Public Attributes | |
PBD::Signal< void()> | PadChange |
PBD::Signal< void()> | ScaleChange |
PBD::Signal< void(PressureMode)> | PressureModeChange |
![]() | |
std::shared_ptr< ARDOUR::Bundle > | _input_bundle |
std::shared_ptr< ARDOUR::Bundle > | _output_bundle |
PBD::Signal< void()> | ConnectionChange |
![]() | |
PBD::Signal< void()> | ActiveChanged |
![]() | |
PBD::Signal< void(const PropertyChange &)> | PropertyChanged |
![]() | |
Glib::Threads::RWLock | request_buffer_map_lock |
![]() | |
std::list< InvalidationRecord * > | trash |
Private Types | |
typedef std::map< int, std::shared_ptr< Button > > | CCButtonMap |
typedef std::map< ButtonID, std::shared_ptr< Button > > | IDButtonMap |
typedef std::multimap< int, std::shared_ptr< Pad > > | FNPadMap |
typedef std::map< Gtkmm2ext::Color, uint8_t > | ColorMap |
typedef std::stack< uint8_t > | ColorMapFreeList |
typedef std::map< ColorName, Gtkmm2ext::Color > | Colors |
Additional Inherited Members | |
![]() | |
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 int | current_state_version |
static int | loading_state_version |
![]() | |
static PBD::Signal< void(std::string, std::string)> | AccessAction |
![]() | |
static RequestType | CallSlot |
static RequestType | Quit |
![]() | |
enum | ConnectionState { InputConnected = 0x1 , OutputConnected = 0x2 } |
![]() | |
typedef RequestBuffer::rw_vector | RequestBufferVector |
typedef std::map< pthread_t, RequestBuffer * >::iterator | RequestBufferMapIterator |
typedef std::map< pthread_t, RequestBuffer * > | RequestBufferMap |
![]() | |
void | do_request (MidiSurfaceRequest *) |
virtual void | connect_to_parser () |
virtual void | connect_to_port_parser (MIDI::Port &) |
virtual void | handle_midi_polypressure_message (MIDI::Parser &, MIDI::EventTwoBytes *) |
virtual void | thread_init () |
virtual void | connect_session_signals () |
virtual void | port_registration_handler () |
virtual int | ports_acquire () |
virtual void | ports_release () |
void | drop () |
void | port_setup () |
![]() | |
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 >) |
![]() | |
void | add_instant_xml (XMLNode &, const std::string &directory_path) |
XMLNode * | instant_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 |
![]() | |
BasicUI () | |
![]() | |
MidiSurfaceRequest * | get_request (RequestType) |
void | handle_ui_requests () |
void | send_request (MidiSurfaceRequest *) |
RequestBuffer * | get_per_thread_request_buffer () |
![]() | |
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 >) |
![]() | |
bool | with_pad_filter |
bool | _in_use |
bool | _data_required |
std::string | port_name_prefix |
MIDI::Port * | _input_port |
MIDI::Port * | _output_port |
std::shared_ptr< ARDOUR::Port > | _async_in |
std::shared_ptr< ARDOUR::Port > | _async_out |
PBD::ScopedConnectionList | session_connections |
int | _connection_state |
PBD::ScopedConnectionList | port_connections |
![]() | |
std::vector< std::shared_ptr< ARDOUR::Route > > | route_table |
std::string | _name |
GlibEventLoopCallback | glib_event_callback |
![]() | |
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 |
![]() | |
ARDOUR::Session * | session |
int | _tbank_route_width |
int | _tbank_row_height |
int | _tbank_start_route |
int | _tbank_start_row |
![]() | |
RequestBufferMap | request_buffers |
std::list< MidiSurfaceRequest * > | request_list |
PBD::ScopedConnection | new_thread_connection |
![]() | |
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 |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
typedef std::map<int,std::shared_ptr<Pad> > ArdourSurface::Push2::PadMap |
The "origin" or "root" of the note grid.
This controls whether the grid is "fixed" in terms of the notes that it plays (so changing the scale is effectively just an overlay), or "rooted" so the root note of the scale is in the bottom left.
Enumerator | |
---|---|
Fixed | Bottom left pad is always C, or as close as possible. |
Rooted | Bottom left pad is the scale root. |
Interval between vertically adjacent note pads ("layout").
The comments describe the ideal interval that is used in chromatic mode. For in-scale mode, they may be slightly adjusted, hence the more general enumerator names.
Enumerator | |
---|---|
Third | |
Fourth | Major third or 4 semitones. |
Fifth | Perfect fourth or 5 semitones. |
Sequential | Perfect fifth or 7 semitones. |
ArdourSurface::Push2::Push2 | ( | ARDOUR::Session & | ) |
ArdourSurface::Push2::~Push2 | ( | ) |
|
static |
|
privatevirtual |
Reimplemented from MIDISurface.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
static |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
inline |
Push2Layout* ArdourSurface::Push2::current_layout | ( | ) | const |
|
privatevirtual |
Implements MIDISurface.
|
privatevirtual |
Implements MIDISurface.
|
private |
|
private |
Gtkmm2ext::Color ArdourSurface::Push2::get_color | ( | ColorName | ) |
uint8_t ArdourSurface::Push2::get_color_index | ( | Gtkmm2ext::Color | rgba | ) |
|
virtual |
Reimplemented from ARDOUR::ControlProtocol.
|
virtual |
Reimplemented from MIDISurface.
|
privatevirtual |
Reimplemented from MIDISurface.
|
privatevirtual |
Reimplemented from MIDISurface.
|
privatevirtual |
Reimplemented from MIDISurface.
|
privatevirtual |
Reimplemented from MIDISurface.
|
privatevirtual |
Reimplemented from MIDISurface.
|
inlinevirtual |
Reimplemented from ARDOUR::ControlProtocol.
|
private |
|
private |
|
virtual |
Implements MIDISurface.
std::shared_ptr<Button> ArdourSurface::Push2::lower_button_by_column | ( | uint32_t | col | ) |
|
static |
|
inline |
|
inline |
|
inline |
|
inline |
|
privatevirtual |
Reimplemented from MIDISurface.
|
privatevirtual |
Reimplemented from MIDISurface.
|
privatevirtual |
Reimplemented from MIDISurface.
|
privatevirtual |
Reimplemented from MIDISurface.
|
privatevirtual |
Reimplemented from MIDISurface.
|
private |
|
private |
|
virtual |
Implements MIDISurface.
std::shared_ptr<Pad> ArdourSurface::Push2::pad_by_xy | ( | int | x, |
int | y | ||
) |
|
privatevirtual |
Reimplemented from MIDISurface.
int ArdourSurface::Push2::pad_note | ( | int | row, |
int | col | ||
) | const |
|
inline |
|
static |
|
private |
|
private |
|
private |
|
inline |
|
private |
|
virtual |
Reimplemented from ARDOUR::ControlProtocol.
|
private |
|
private |
|
private |
|
private |
|
private |
void ArdourSurface::Push2::set_pad_note_kind | ( | Pad & | pad, |
PadNoteKind | kind | ||
) |
Set up a pad to represent a "kind" of note.
void ArdourSurface::Push2::set_pad_scale | ( | int | root, |
int | octave, | ||
MusicalMode::Type | mode, | ||
NoteGridOrigin | origin, | ||
RowInterval | row_interval, | ||
bool | inkey | ||
) |
void ArdourSurface::Push2::set_pad_scale_chromatic | ( | int | root, |
int | octave, | ||
MusicalMode::Type | mode, | ||
NoteGridOrigin | origin, | ||
int | vertical_semitones | ||
) |
Set a "chromatic" scale on the pads.
"Chromatic" mode is chromatic from left to right, and "tuned" to some interval from bottom up, like a stringed instrument. The default vertical interval is 5 semitones, or a perfect 4th, like strings on a bass guitar.
root | The root note in the lowest octave (at most 11). |
octave | The octave number of the "actual" root (at most 10). |
mode | The active musical mode (scale). |
origin | The note assigned to the bottom left pad |
vertical_semitones | The interval between rows in semitones. This mode guarantees that the vertical interval for all rows is always exactly this. |
void ArdourSurface::Push2::set_pad_scale_in_key | ( | int | root, |
int | octave, | ||
MusicalMode::Type | mode, | ||
NoteGridOrigin | origin, | ||
int | ideal_vertical_semitones | ||
) |
Set an "in-key" scale on the pads.
"In-key" mode shows only notes which are in the scale, so every pad is in the scale and there are no "spaces". This provides access to a wide range of notes in the scale, but no access to notes outside the scale at all.
root | The root note in the lowest octave (at most 11). |
octave | The octave number of the "actual" root (at most 10). |
mode | The active musical mode (scale). |
origin | The note assigned to the bottom left pad |
ideal_vertical_semitones | The ideal interval between rows in semitones. This is an "ideal" because it may not be possible to use exactly this interval for every row depending on the scale. It may be bumped up to the next note in the scale if necessary, so with this mode, rows are not guaranteed to all have the same vertical interval. |
|
private |
void ArdourSurface::Push2::set_pressure_mode | ( | PressureMode | ) |
|
virtual |
Reimplemented from MIDISurface.
|
private |
|
private |
|
private |
|
privatevirtual |
Reimplemented from MIDISurface.
void ArdourSurface::Push2::strip_buttons_off | ( | ) |
|
privatevirtual |
Implements ARDOUR::ControlProtocol.
|
virtual |
Reimplemented from ARDOUR::ControlProtocol.
void ArdourSurface::Push2::update_selection_color | ( | ) |
|
inline |
void ArdourSurface::Push2::use_previous_layout | ( | ) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
mutableprivate |
PBD::Signal<void()> ArdourSurface::Push2::PadChange |
PBD::Signal<void(PressureMode)> ArdourSurface::Push2::PressureModeChange |
PBD::Signal<void()> ArdourSurface::Push2::ScaleChange |