19 #ifndef __gtk_ardour_midi_region_view_h__
20 #define __gtk_ardour_midi_region_view_h__
46 struct PatchPrimaryKey;
75 uint32_t basic_color);
101 void step_add_note (uint8_t channel, uint8_t number, uint8_t velocity,
292 void change_velocities (
bool up,
bool fine,
bool allow_smush,
bool all_together);
293 void transpose (
bool up,
bool fine,
bool allow_smush);
399 typedef std::vector< boost::shared_ptr<SysEx> >
SysExes;
471 bool motion (GdkEventMotion*);
472 bool scroll (GdkEventScroll*);
std::set< boost::shared_ptr< NoteType > > _pending_note_selection
MidiTimeAxisView * midi_view() const
PBD::ScopedConnection _clear_midi_selection_connection
void note_mouse_position(float xfraction, float yfraction, bool can_set_cursor=true)
void sysex_entered(SysEx *p)
void delete_sysex(SysEx *)
void patch_left(PatchChange *)
PBD::ScopedConnection content_connection
void delete_patch_change(PatchChange *)
ARDOUR::MidiModel::NoteDiffCommand * _note_diff_command
void remove_from_selection(NoteBase *)
MIDI::Name::PatchPrimaryKey patch_change_to_patch_key(ARDOUR::MidiModel::PatchChangePtr)
void midi_channel_mode_changed()
void get_patch_key_at(Evoral::Beats time, uint8_t channel, MIDI::Name::PatchPrimaryKey &key) const
std::multiset< NotePtr, EarlierNoteComparator > Notes
boost::shared_ptr< ARDOUR::MidiModel > _model
bool leave_notify(GdkEventCrossing *)
void note_left(NoteBase *ev)
void get_events(Events &e, Evoral::Sequence< Evoral::Beats >::NoteOperator op, uint8_t val, int chan_mask=0)
void update_drag_selection(framepos_t start, framepos_t end, double y0, double y1, bool extend)
boost::shared_ptr< ARDOUR::Region > _region
PatchChanges _patch_changes
uint8_t _current_range_max
Events::iterator _optimization_iterator
void clear_selection_except(NoteBase *ev, bool signal=true)
void trim_note(NoteBase *ev, ARDOUR::MidiModel::TimeType start_delta, ARDOUR::MidiModel::TimeType end_delta)
void change_note_lengths(bool, bool, Evoral::Beats beats, bool start, bool end)
void update_ghost_note(double, double)
ARDOUR::BeatsFramesConverter _region_relative_time_converter
void update_sustained(Note *, bool update_ghost_regions=true)
void selection_cleared(MidiRegionView *)
bool scroll(GdkEventScroll *)
NoteBase * channel_selector_scoped_note()
void create_note_at(framepos_t t, double y, Evoral::Beats length, bool snap_t)
void change_note_channel(NoteBase *, int8_t, bool relative=false)
MidiRegionView(ArdourCanvas::Container *parent, RouteTimeAxisView &tv, boost::shared_ptr< ARDOUR::MidiRegion > r, double samples_per_pixel, uint32_t basic_color)
framepos_t source_beats_to_region_frames(Evoral::Beats beats) const
Evoral::Beats _step_edit_cursor_width
void set_channel_selector_scoped_note(NoteBase *note)
void create_ghost_note(double, double)
Evoral::Sequence< Evoral::Beats >::Notes Notes
framecnt_t _last_display_zoom
void sysex_left(SysEx *p)
void goto_next_note(bool add_to_selection)
ARDOUR::InstrumentInfo & instrument_info() const
void set_flags(XMLNode *)
void mouse_mode_changed()
void display_patch_changes()
void step_sustain(Evoral::Beats beats)
bool key_release(GdkEventKey *)
Evoral::Beats get_grid_beats(framepos_t pos) const
void unique_select(NoteBase *ev)
void note_entered(NoteBase *ev)
Evoral::Beats region_frames_to_region_beats(framepos_t) const
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > start
bool enter_notify(GdkEventCrossing *)
std::vector< NoteResizeData * > _resize_data
void transpose(bool up, bool fine, bool allow_smush)
void cut_copy_clear(Editing::CutCopyOp)
framepos_t source_beats_to_absolute_frames(Evoral::Beats beats) const
void trim_front_starting()
ArdourCanvas::Rectangle * resize_rect
void change_note_velocity(NoteBase *ev, int8_t vel, bool relative=false)
MidiStreamView * midi_stream_view() const
void reset_width_dependent_items(double pixel_width)
void change_patch_change(PatchChange &old_patch, const MIDI::Name::PatchPrimaryKey &new_patch)
Selection selection() const
framepos_t snap_pixel_to_sample(double x)
NoteBase * add_note(const boost::shared_ptr< NoteType > note, bool visible)
void note_selected(NoteBase *ev, bool add, bool extend=false)
uint16_t get_selected_channels() const
MidiListEditor * _list_editor
bool motion(GdkEventMotion *)
void start_playing_midi_note(boost::shared_ptr< NoteType > note)
void select_range(framepos_t start, framepos_t end)
void update_hit(Hit *, bool update_ghost_regions=true)
ARDOUR::ChannelMode get_channel_mode() const
void change_note_time(NoteBase *ev, ARDOUR::MidiModel::TimeType, bool relative=false)
void show_step_edit_cursor(Evoral::Beats pos)
void show_verbose_cursor(std::string const &, double, double) const
bool _mouse_changed_selection
ARDOUR::ColorMode color_mode() const
void note_deselected(NoteBase *ev)
const boost::shared_ptr< ARDOUR::MidiRegion > midi_region() const
void selection_as_notelist(Notes &selected, bool allow_all_if_none_selected=false)
void toggle_matching_notes(uint8_t notenum, uint16_t channel_mask)
void delete_note(boost::shared_ptr< NoteType >)
void display_model(boost::shared_ptr< ARDOUR::MidiModel > model)
boost::shared_ptr< CursorContext > _press_cursor_ctx
framepos_t region_beats_to_region_frames(Evoral::Beats beats) const
bool note_in_region_range(const boost::shared_ptr< NoteType > note, bool &visible) const
void parameter_changed(std::string const &p)
ARDOUR::BeatsFramesConverter _source_relative_time_converter
ARDOUR::BeatsFramesConverter const & source_relative_time_converter() const
void extend_active_notes()
void update_vertical_drag_selection(double last_y, double y, bool extend)
ARDOUR::BeatsFramesConverter const & region_relative_time_converter() const
void maybe_remove_deleted_note_from_selection(NoteBase *)
void step_patch(PatchChange &patch, bool bank, int delta)
ArdourCanvas::Container * _note_group
PBD::ScopedConnection snap_changed_connection
void instrument_settings_changed()
PBD::ScopedConnection _instrument_changed_connection
MidiCutBuffer * selection_as_cut_buffer() const
void move_step_edit_cursor(Evoral::Beats pos)
double get_end_position_pixels()
void update_resizing(NoteBase *, bool, double, bool)
framepos_t region_beats_to_absolute_frames(Evoral::Beats beats) const
void patch_entered(PatchChange *)
uint8_t _current_range_min
ArdourCanvas::Container * _temporary_note_group
void display_patch_changes_on_channel(uint8_t, bool)
std::vector< boost::shared_ptr< SysEx > > SysExes
void region_resized(const PBD::PropertyChange &)
NoteBase * find_canvas_note(boost::shared_ptr< NoteType >)
uint8_t get_velocity_for_add(ARDOUR::MidiModel::TimeType time) const
framepos_t position() const
void set_step_edit_cursor_width(Evoral::Beats beats)
void maybe_select_by_position(GdkEventButton *ev, double x, double y)
void connect_to_diskstream()
void change_note_length(NoteBase *, ARDOUR::MidiModel::TimeType)
void hide_step_edit_cursor()
void play_midi_note(boost::shared_ptr< NoteType > note)
void clear_midi_selection()
void add_canvas_patch_change(ARDOUR::MidiModel::PatchChangePtr patch, const std::string &displaytext, bool)
double snap_to_pixel(double x)
PBD::ScopedConnection _mouse_mode_connection
bool note_canvas_event(GdkEvent *ev)
std::set< boost::shared_ptr< NoteType > > _marked_for_velocity
std::set< NoteBase * > Selection
void commit_resizing(NoteBase *, bool, double, bool)
void step_add_note(uint8_t channel, uint8_t number, uint8_t velocity, Evoral::Beats pos, Evoral::Beats len)
void paste_internal(framepos_t pos, unsigned paste_count, float times, const MidiCutBuffer &)
framepos_t snap_frame_to_grid_underneath(framepos_t p, framecnt_t &) const
void change_channel(uint8_t channel)
LIBARDOUR_API PBD::PropertyDescriptor< bool > relative
void select_matching_notes(uint8_t notenum, uint16_t channel_mask, bool add, bool extend)
void enable_display(bool)
bool button_press(GdkEventButton *)
void move_patch_change(PatchChange &, Evoral::Beats)
void note_diff_remove_note(NoteBase *ev)
void start_playing_midi_chord(std::vector< boost::shared_ptr< NoteType > > notes)
void change_velocities(bool up, bool fine, bool allow_smush, bool all_together)
uint32_t get_fill_color() const
void move_selection(double dx, double dy, double cumulative_dy)
void update_note(NoteBase *, bool update_ghost_regions=true)
void change_note_note(NoteBase *ev, int8_t note, bool relative=false)
bool key_press(GdkEventKey *)
GhostRegion * add_ghost(TimeAxisView &)
bool button_release(GdkEventButton *)
std::set< boost::shared_ptr< NoteType > > _marked_for_selection
bool paste(framepos_t pos, const ::Selection &selection, PasteContext &ctx)
PBD::ScopedConnection note_delete_connection
void note_dropped(NoteBase *ev, ARDOUR::frameoffset_t, int8_t d_note)
void add_to_selection(NoteBase *)
void goto_previous_note(bool add_to_selection)
static PBD::Signal1< void, MidiRegionView * > SelectionCleared
NoteBase * _channel_selection_scoped_note
void note_diff_add_change(NoteBase *ev, ARDOUR::MidiModel::NoteDiffCommand::Property, uint8_t val)
void apply_diff(bool as_subcommand=false)
LIBGTKMM2EXT_API int pixel_width(const std::string &str, Pango::FontDescription &font)
void select_notes(std::list< boost::shared_ptr< NoteType > >)
void resolve_note(uint8_t note_num, Evoral::Beats end_time)
void nudge_notes(bool forward, bool fine)
void start_note_diff_command(std::string name="midi edit")
void clear_events(bool with_selection_signal=true)
double get_position_pixels()
std::vector< boost::shared_ptr< PatchChange > > PatchChanges
Evoral::Beats _step_edit_cursor_position
void begin_resizing(bool at_front)
void data_recorded(boost::weak_ptr< ARDOUR::MidiSource >)
std::list< NoteBase * > Events
void edit_patch_change(PatchChange *)
PBD::ScopedConnection _selection_cleared_connection
MidiStreamView * midi_view()
void note_diff_add_note(const boost::shared_ptr< NoteType > note, bool selected, bool show_velocity=false)
bool canvas_group_event(GdkEvent *ev)
PBD::ScopedConnection _channel_mode_changed_connection
ARDOUR::ColorMode color_mode() const
MouseState mouse_state() const
void add_patch_change(framecnt_t, Evoral::PatchChange< Evoral::Beats > const &)
Evoral::Beats absolute_frames_to_source_beats(framepos_t) const
void clear_selection(bool signal=true)
Evoral::Note< Evoral::Beats > NoteType
LIBARDOUR_API PBD::PropertyDescriptor< framecnt_t > length
ArdourCanvas::Rectangle * _step_edit_cursor
void apply_note_range(uint8_t lowest, uint8_t highest, bool force=false)