137 if (frames_from_start < 0) {
141 frames_from_start = 0;
181 uint32_t bufsize = 32;
183 buf =
new uint8_t[bufsize];
185 while (incoming.read_space()) {
192 if (size > bufsize) {
195 buf =
new uint8_t[bufsize];
232 }
else if (beats < 0.0) {
260 }
else if (beat_duration == 0.0) {
273 if (pitch < msv->lowest_note() || pitch > msv->
highest_note()) {
RegionView * find_view(boost::shared_ptr< const ARDOUR::Region >)
void step_edit_bar_sync()
Evoral::Beats note_length()
bool read_contents(uint32_t size, uint8_t *buf)
PBD::ScopedConnection step_edit_region_connection
boost::shared_ptr< ARDOUR::MidiTrack > _track
bool step_edit_within_triplet() const
shared_ptr< T > dynamic_pointer_cast(shared_ptr< U > const &r)
bool _step_edit_within_chord
void move_step_edit_beat_pos(Evoral::Beats beats)
Evoral::Beats _step_edit_chord_duration
Evoral::Beats last_added_end
Always round up, even if on a division.
Evoral::Beats step_edit_beat_pos
Representation of the interface of the Editor class.
int step_add_program_change(uint8_t channel, uint8_t program)
void reset_step_edit_beat_pos()
void step_sustain(Evoral::Beats beats)
Evoral::Beats region_frames_to_region_beats(framepos_t) const
framecnt_t frame_rate() const
virtual Evoral::Beats get_grid_type_as_beats(bool &success, framepos_t position)=0
framepos_t round_to_bar(framepos_t frame, RoundMode dir)
int step_add_note(uint8_t channel, uint8_t pitch, uint8_t velocity, Evoral::Beats beat_duration)
const Meter & meter_at(framepos_t) const
bool step_edit_within_chord() const
boost::shared_ptr< ARDOUR::MidiRegion > add_region(ARDOUR::framepos_t, ARDOUR::framecnt_t, bool)
int step_add_bank_change(uint8_t channel, uint8_t bank)
void show_step_edit_cursor(Evoral::Beats pos)
boost::shared_ptr< Region > top_region_at(framepos_t frame)
void step_edit_sustain(Evoral::Beats beats)
void step_edit_toggle_chord()
PBD::Signal1< void, boost::weak_ptr< Region > > RegionRemoved
static Beats ticks(uint32_t ticks)
ARDOUR::Session * session() const
void resync_step_edit_position()
Beats round_up_to_beat() const
boost::shared_ptr< Playlist > playlist()
void update_note_range(uint8_t note_num)
ARDOUR::framepos_t step_edit_insert_position
void step_edit_toggle_triplet()
bool read_prefix(T *time, Evoral::EventType *type, uint32_t *size)
virtual framecnt_t current_page_samples() const =0
void move_step_edit_cursor(Evoral::Beats pos)
void prepare_step_edit_region()
void step_edit_beat_sync()
framepos_t region_beats_to_absolute_frames(Evoral::Beats beats) const
void set_step_editing(bool yn)
PBD::Signal0< void > PlaylistChanged
framepos_t position() const
void set_step_edit_cursor_width(Evoral::Beats beats)
void hide_step_edit_cursor()
uint8_t _step_edit_triplet_countdown
MidiRegionView * step_edit_region_view
void step_add_note(uint8_t channel, uint8_t number, uint8_t velocity, Evoral::Beats pos, Evoral::Beats len)
void resync_step_edit_to_edit_point()
virtual framepos_t get_preferred_edit_position(Editing::EditIgnoreOption=Editing::EDIT_IGNORE_NONE, bool from_context_menu=false, bool from_outside_canvas=false)=0
MidiRingBuffer< framepos_t > & step_edit_ring_buffer()
void set_note_range(VisibleNoteRange r)
uint8_t highest_note() const
StepEditor(PublicEditor &, boost::shared_ptr< ARDOUR::MidiTrack >, MidiTimeAxisView &)
void step_edit_rest(Evoral::Beats beats)
void start_step_editing()
LIBEVORAL_API uint64_t Beats
boost::shared_ptr< ARDOUR::MidiRegion > step_edit_region
framecnt_t length() const
double frames_per_bar(const Tempo &, framecnt_t sr) const
virtual framepos_t leftmost_sample() const =0
void region_removed(boost::weak_ptr< ARDOUR::Region >)
void set_step_edit_cursor_width(Evoral::Beats beats)
const Tempo & tempo_at(framepos_t) const
MidiStreamView * midi_view()
bool step_editor_hidden(GdkEventAny *)
virtual void reset_x_origin(framepos_t frame)=0