From e7e071db1a07ec6d66b71982f204c2cbaa70adee Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 28 Aug 2009 16:06:08 +0000 Subject: more MIDI editing tweaks ; flip mouse mode buttons around for MIDI so that "object" mode is the most likely mode for both region \& region editing ; frame handle events (from lincoln's region trimming patch) are now handled more explicitly git-svn-id: svn://localhost/ardour2/branches/3.0@5600 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/canvas-note-event.cc | 5 +- gtk2_ardour/editor.cc | 25 +++++++ gtk2_ardour/editor.h | 5 +- gtk2_ardour/editor_canvas_events.cc | 50 ++++++++++++- gtk2_ardour/editor_mouse.cc | 28 ++++--- gtk2_ardour/midi_region_view.cc | 144 ++++++++++++++++++++++-------------- gtk2_ardour/midi_region_view.h | 9 +-- gtk2_ardour/public_editor.h | 4 + gtk2_ardour/region_view.cc | 4 +- libs/ardour/midi_buffer.cc | 1 + libs/ardour/midi_diskstream.cc | 18 ++--- libs/ardour/processor.cc | 2 - libs/ardour/route.cc | 1 - libs/evoral/evoral/Event.hpp | 13 ++++ 14 files changed, 218 insertions(+), 91 deletions(-) diff --git a/gtk2_ardour/canvas-note-event.cc b/gtk2_ardour/canvas-note-event.cc index 145ee5e0ba..b796ef47fb 100644 --- a/gtk2_ardour/canvas-note-event.cc +++ b/gtk2_ardour/canvas-note-event.cc @@ -235,7 +235,8 @@ CanvasNoteEvent::on_event(GdkEvent* ev) case GDK_LEAVE_NOTIFY: //Keyboard::magic_widget_drop_focus(); - if (! selected()) { + _region.note_left (this); + if (!selected()) { hide_velocity(); } //_region.get_canvas_group()->grab_focus(); @@ -255,7 +256,7 @@ CanvasNoteEvent::on_event(GdkEvent* ev) switch (_state) { case Pressed: // Drag begin - if (editor.current_mouse_mode() == Editing::MouseRange && _region.mouse_state() != MidiRegionView::SelectTouchDragging) { + if (editor.current_mouse_mode() == Editing::MouseObject && _region.mouse_state() != MidiRegionView::SelectTouchDragging) { _item->grab(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, Gdk::Cursor(Gdk::FLEUR), ev->motion.time); _state = Dragging; diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 34f258a348..1203dc83bd 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -3366,6 +3366,31 @@ Editor::clamp_verbose_cursor_y (double y) return y; } +void +Editor::show_verbose_canvas_cursor_with (const string & txt) +{ + verbose_canvas_cursor->property_text() = txt.c_str(); + + int x, y; + double wx, wy; + + track_canvas->get_pointer (x, y); + track_canvas->window_to_world (x, y, wx, wy); + + /* move it away from the mouse pointer to avoid an + infinite loop of enter/leave events. + */ + + wx += 20; + wy += 20; + + /* don't get too close to the edge */ + verbose_canvas_cursor->property_x() = clamp_verbose_cursor_x (wx); + verbose_canvas_cursor->property_y() = clamp_verbose_cursor_y (wy); + + show_verbose_canvas_cursor (); +} + void Editor::set_verbose_canvas_cursor (const string & txt, double x, double y) { diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 66e6f2c5f8..18285b9fa0 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -419,6 +419,9 @@ class Editor : public PublicEditor void do_embed (std::vector paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&); void get_regions_corresponding_to (boost::shared_ptr region, std::vector& regions); + + void show_verbose_canvas_cursor_with (const std::string& txt); + void hide_verbose_canvas_cursor(); protected: void map_transport_state (); @@ -629,7 +632,6 @@ class Editor : public PublicEditor void set_verbose_canvas_cursor (const std::string &, double x, double y); void set_verbose_canvas_cursor_text (const std::string &); void show_verbose_canvas_cursor(); - void hide_verbose_canvas_cursor(); bool verbose_cursor_on; // so far unused @@ -1359,6 +1361,7 @@ private: public: bool canvas_region_view_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); + bool canvas_frame_handle_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); bool canvas_region_view_name_highlight_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); bool canvas_region_view_name_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); bool canvas_stream_view_event (GdkEvent* event,ArdourCanvas::Item*, RouteTimeAxisView*); diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index e789fef314..9c0fe30be4 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -753,12 +753,60 @@ Editor::canvas_selection_end_trim_event (GdkEvent *event, ArdourCanvas::Item* it return ret; } +bool +Editor::canvas_frame_handle_event (GdkEvent* event, ArdourCanvas::Item* item, RegionView* rv) +{ + bool ret = false; + + /* frame handles are not active when in internal edit mode, because actual notes + might be in the area occupied by the handle - we want them to be editable as normal. + */ + + if (internal_editing() || !rv->sensitive()) { + return false; + } + + /* NOTE: frame handles pretend to be the colored trim bar from an event handling + perspective. XXX change this ?? + */ + + switch (event->type) { + case GDK_BUTTON_PRESS: + case GDK_2BUTTON_PRESS: + case GDK_3BUTTON_PRESS: + clicked_regionview = rv; + clicked_control_point = 0; + clicked_axisview = &clicked_regionview->get_time_axis_view(); + clicked_routeview = dynamic_cast(clicked_axisview); + ret = button_press_handler (item, event, RegionViewNameHighlight); + break; + case GDK_BUTTON_RELEASE: + ret = button_release_handler (item, event, RegionViewNameHighlight); + break; + case GDK_MOTION_NOTIFY: + ret = motion_handler (item, event); + break; + case GDK_ENTER_NOTIFY: + ret = enter_handler (item, event, RegionViewNameHighlight); + break; + + case GDK_LEAVE_NOTIFY: + ret = leave_handler (item, event, RegionViewNameHighlight); + break; + + default: + break; + } + + return ret; +} + bool Editor::canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas::Item* item, RegionView* rv) { bool ret = false; - + if (!rv->sensitive()) { return false; } diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 4f85f20846..a6183f7644 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -172,12 +172,12 @@ Editor::which_grabber_cursor () if (_internal_editing) { switch (mouse_mode) { - case MouseObject: + case MouseRange: c = midi_pencil_cursor; break; - case MouseRange: - c = midi_select_cursor; + case MouseObject: + c = grabber_cursor; break; case MouseTimeFX: @@ -208,12 +208,12 @@ Editor::set_canvas_cursor () if (_internal_editing) { switch (mouse_mode) { - case MouseObject: + case MouseRange: current_canvas_cursor = midi_pencil_cursor; break; - case MouseRange: - current_canvas_cursor = midi_select_cursor; + case MouseObject: + current_canvas_cursor = which_grabber_cursor(); break; case MouseTimeFX: @@ -599,9 +599,15 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT } if (internal_editing()) { - assert (_drag == 0); - _drag = new RegionCreateDrag (this, item, clicked_axisview); - _drag->start_grab (event); + switch (item_type) { + case StreamItem: + assert (_drag == 0); + _drag = new RegionCreateDrag (this, item, clicked_axisview); + _drag->start_grab (event); + return true; + default: + return true; + } } else { switch (mouse_mode) { case MouseRange: @@ -2552,11 +2558,9 @@ Editor::set_internal_edit (bool yn) _internal_editing = yn; if (yn) { - mouse_select_button.set_image (*(manage (new Image (::get_icon("midi_tool_select"))))); - mouse_move_button.set_image (*(manage (new Image (::get_icon("midi_tool_pencil"))))); + mouse_select_button.set_image (*(manage (new Image (::get_icon("midi_tool_pencil"))))); } else { mouse_select_button.set_image (*(manage (new Image (::get_xpm("tool_range.xpm"))))); - mouse_move_button.set_image (*(manage (new Image (::get_icon("tool_object"))))); } set_canvas_cursor (); diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 95b1ffad93..317e1f33fe 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -209,7 +209,7 @@ MidiRegionView::canvas_event(GdkEvent* ev) static double last_x, last_y; double event_x, event_y; nframes64_t event_frame = 0; - uint8_t d_velocity = 10; + bool fine; static ArdourCanvas::SimpleRect* drag_rect = NULL; @@ -219,15 +219,13 @@ MidiRegionView::canvas_event(GdkEvent* ev) switch (ev->type) { case GDK_SCROLL: - if (Keyboard::modifier_state_equals (ev->scroll.state, Keyboard::Level4Modifier)) { - d_velocity = 1; - } - + fine = Keyboard::modifier_state_equals (ev->scroll.state, Keyboard::Level4Modifier); + if (ev->scroll.direction == GDK_SCROLL_UP) { - change_velocities (d_velocity, true); + change_velocities (true, fine, false); return true; } else if (ev->scroll.direction == GDK_SCROLL_DOWN) { - change_velocities(-d_velocity, true); + change_velocities (false, fine, false); return true; } else { return false; @@ -254,7 +252,7 @@ MidiRegionView::canvas_event(GdkEvent* ev) bool start = (ev->key.keyval == GDK_comma); bool end = (ev->key.keyval == GDK_period); bool shorter = Keyboard::modifier_state_contains (ev->key.state, Keyboard::PrimaryModifier); - bool fine = Keyboard::modifier_state_contains (ev->key.state, Keyboard::SecondaryModifier); + fine = Keyboard::modifier_state_contains (ev->key.state, Keyboard::SecondaryModifier); change_note_lengths (fine, shorter, start, end); @@ -277,19 +275,25 @@ MidiRegionView::canvas_event(GdkEvent* ev) } else if (ev->key.keyval == GDK_Up) { - if (Keyboard::modifier_state_equals (ev->key.state, Keyboard::PrimaryModifier)) { - change_velocities (1, true); + bool allow_smush = Keyboard::modifier_state_contains (ev->key.state, Keyboard::SecondaryModifier); + bool fine = Keyboard::modifier_state_contains (ev->key.state, Keyboard::TertiaryModifier); + + if (Keyboard::modifier_state_contains (ev->key.state, Keyboard::PrimaryModifier)) { + change_velocities (true, fine, allow_smush); } else { - transpose (true, Keyboard::modifier_state_equals (ev->key.state, Keyboard::SecondaryModifier)); + transpose (true, fine, allow_smush); } return true; } else if (ev->key.keyval == GDK_Down) { - if (Keyboard::modifier_state_equals (ev->key.state, Keyboard::PrimaryModifier)) { - change_velocities (-1, true); + bool allow_smush = Keyboard::modifier_state_contains (ev->key.state, Keyboard::SecondaryModifier); + fine = Keyboard::modifier_state_contains (ev->key.state, Keyboard::TertiaryModifier); + + if (Keyboard::modifier_state_contains (ev->key.state, Keyboard::PrimaryModifier)) { + change_velocities (false, fine, allow_smush); } else { - transpose (false, Keyboard::modifier_state_equals (ev->key.state, Keyboard::SecondaryModifier)); + transpose (false, fine, allow_smush); } return true; @@ -349,7 +353,7 @@ MidiRegionView::canvas_event(GdkEvent* ev) case Pressed: // Drag start // Select drag start - if (_pressed_button == 1 && editor.current_mouse_mode() == MouseRange) { + if (_pressed_button == 1 && editor.current_mouse_mode() == MouseObject) { group->grab(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, Gdk::Cursor(Gdk::FLEUR), ev->motion.time); last_x = event_x; @@ -372,7 +376,7 @@ MidiRegionView::canvas_event(GdkEvent* ev) return true; // Add note drag start - } else if (editor.current_mouse_mode() == MouseObject) { + } else if (editor.current_mouse_mode() == MouseRange) { group->grab(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, Gdk::Cursor(Gdk::FLEUR), ev->motion.time); last_x = event_x; @@ -455,11 +459,11 @@ MidiRegionView::canvas_event(GdkEvent* ev) switch (_mouse_state) { case Pressed: // Clicked switch (editor.current_mouse_mode()) { - case MouseRange: + case MouseObject: case MouseTimeFX: clear_selection(); break; - case MouseObject: + case MouseRange: create_note_at(event_x, event_y, _default_note_length); break; default: @@ -486,7 +490,7 @@ MidiRegionView::canvas_event(GdkEvent* ev) drag_rect = NULL; default: break; } - + default: break; } @@ -532,6 +536,8 @@ MidiRegionView::create_note_at(double x, double y, double length) MidiModel::DeltaCommand* cmd = _model->new_delta_command("add note"); cmd->add(new_note); _model->apply_command(trackview.session(), cmd); + + play_midi_note (new_note); } void @@ -562,7 +568,7 @@ MidiRegionView::display_model(boost::shared_ptr model) _model = model; content_connection.disconnect (); content_connection = _model->ContentsChanged.connect(sigc::mem_fun(this, &MidiRegionView::redisplay_model)); - + if (_enable_display) { redisplay_model(); } @@ -657,17 +663,26 @@ MidiRegionView::redisplay_model() } if (_model) { + + // Mark all selected notes for selection when model reloads + for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) { + _marked_for_selection.insert((*i)->note()); + } + + clear_events(); _model->read_lock(); MidiModel::Notes notes = _model->notes(); for (size_t i = 0; i < _model->n_notes(); ++i) { - add_note(_model->note_at(i)); + boost::shared_ptr note (_model->note_at (i)); + if (note_in_visible_range (note)) { + add_note (note); + } } display_sysexes(); - display_program_changes(); _model->read_unlock(); @@ -1025,7 +1040,7 @@ MidiRegionView::add_note(const boost::shared_ptr note) { assert(note->time() >= 0); assert(midi_view()->note_mode() == Sustained || midi_view()->note_mode() == Percussive); - + const nframes64_t note_start_frames = beats_to_frames(note->time()); const nframes64_t note_end_frames = beats_to_frames(note->end_time()); @@ -1092,21 +1107,19 @@ MidiRegionView::add_note(const boost::shared_ptr note) if (event) { if (_marked_for_selection.find(note) != _marked_for_selection.end()) { - cerr << "Added note " << *note << " was marked for selection\n"; note_selected(event, true); - } else { - cerr << "Added note " << *note << " not selected\n"; - } + } if (_marked_for_velocity.find(note) != _marked_for_velocity.end()) { event->show_velocity(); } event->on_channel_selection_change(_last_channel_selection); _events.push_back(event); + if (note_in_visible_range(note)) { event->show(); } else { - event->hide(); + event->hide (); } } } @@ -1839,18 +1852,38 @@ MidiRegionView::change_note_time (CanvasNoteEvent* event, Evoral::MusicalTime de } void -MidiRegionView::change_velocities (int8_t velocity, bool relative) +MidiRegionView::change_velocities (bool up, bool fine, bool allow_smush) { + int8_t delta; + if (_selection.empty()) { return; } + if (fine) { + delta = 1; + } else { + delta = 10; + } + + if (!up) { + delta = -delta; + } + + if (!allow_smush) { + for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) { + if ((*i)->note()->velocity() + delta == 0 || (*i)->note()->velocity() + delta == 127) { + return; + } + } + } + start_delta_command(_("change velocities")); for (Selection::iterator i = _selection.begin(); i != _selection.end();) { Selection::iterator next = i; ++next; - change_note_velocity (*i, velocity, relative); + change_note_velocity (*i, delta, true); i = next; } @@ -1859,7 +1892,7 @@ MidiRegionView::change_velocities (int8_t velocity, bool relative) void -MidiRegionView::transpose (bool up, bool fine) +MidiRegionView::transpose (bool up, bool fine, bool allow_smush) { if (_selection.empty()) { return; @@ -1877,6 +1910,20 @@ MidiRegionView::transpose (bool up, bool fine) delta = -delta; } + if (!allow_smush) { + for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) { + if (!up) { + if ((int8_t) (*i)->note()->note() + delta <= 0) { + return; + } + } else { + if ((int8_t) (*i)->note()->note() + delta > 127) { + return; + } + } + } + } + start_delta_command (_("transpose")); for (Selection::iterator i = _selection.begin(); i != _selection.end(); ) { @@ -2017,8 +2064,18 @@ MidiRegionView::note_entered(ArdourCanvas::CanvasNoteEvent* ev) if (_mouse_state == SelectTouchDragging) { note_selected(ev, true); } + + PublicEditor& editor (trackview.editor()); + editor.show_verbose_canvas_cursor_with (Evoral::midi_note_name (ev->note()->note())); } +void +MidiRegionView::note_left (ArdourCanvas::CanvasNoteEvent* ev) +{ + PublicEditor& editor (trackview.editor()); + editor.hide_verbose_canvas_cursor (); +} + void MidiRegionView::switch_source(boost::shared_ptr src) @@ -2231,31 +2288,6 @@ MidiRegionView::goto_previous_note () unique_select (*(_events.rbegin())); } -MidiModel::DeltaCommand* -MidiRegionView::apply (Filter& filter, const std::string& name) -{ - MidiModel::Notes before = _model->notes(); - MidiModel::Notes after; - - _region->apply (filter); - - redisplay_model (); - - after = _model->notes(); - - start_delta_command (name); - - for (MidiModel::Notes::iterator i = before.begin(); i != before.end(); ++i) { - _delta_command->add (*i); - } - - for (MidiModel::Notes::iterator i = after.begin(); i != after.end(); ++i) { - _delta_command->remove (*i); - } - - return _delta_command; -} - void MidiRegionView::selection_as_notelist (NoteList& selected) { diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index 7edc4cd835..b88583e64e 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -88,8 +88,6 @@ class MidiRegionView : public RegionView inline MidiStreamView* midi_stream_view() const { return midi_view()->midi_view(); } - ARDOUR::MidiModel::DeltaCommand* apply (ARDOUR::Filter&, const std::string& name); - void set_height (double); void apply_note_range(uint8_t lowest, uint8_t highest, bool force=false); @@ -176,6 +174,7 @@ class MidiRegionView : public RegionView void abort_command(); void note_entered(ArdourCanvas::CanvasNoteEvent* ev); + void note_left(ArdourCanvas::CanvasNoteEvent* ev); void unique_select(ArdourCanvas::CanvasNoteEvent* ev); void note_selected(ArdourCanvas::CanvasNoteEvent* ev, bool add, bool extend=false); void note_deselected(ArdourCanvas::CanvasNoteEvent* ev, bool add); @@ -268,9 +267,9 @@ class MidiRegionView : public RegionView void goto_previous_note (); void goto_next_note (); - void change_velocities (int8_t velocity, bool relative); void change_note_lengths (bool, bool, bool start, bool end); - void transpose (bool up, bool fine); + void change_velocities (bool up, bool fine, bool allow_smush); + void transpose (bool up, bool fine, bool allow_smush); void nudge_notes (bool forward); void show_list_editor (); @@ -374,7 +373,7 @@ class MidiRegionView : public RegionView /* connection used to connect to model's ContentChanged signal */ sigc::connection content_connection; +}; -}; #endif /* __gtk_ardour_midi_region_view_h__ */ diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index ee7f303884..abf92a8a40 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -297,6 +297,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual bool canvas_fade_out_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0; virtual bool canvas_fade_out_handle_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0; virtual bool canvas_region_view_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0; + virtual bool canvas_frame_handle_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0; virtual bool canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0; virtual bool canvas_region_view_name_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0; virtual bool canvas_stream_view_event (GdkEvent* event, ArdourCanvas::Item*, RouteTimeAxisView*) = 0; @@ -344,6 +345,9 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual TimeAxisView* axis_view_from_route (ARDOUR::Route *) const = 0; + virtual void show_verbose_canvas_cursor_with (const std::string& txt) = 0; + virtual void hide_verbose_canvas_cursor() = 0; + /// Singleton instance, set up by Editor::Editor() static PublicEditor* _instance; diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index aa7005e9c0..11e2eaaecf 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -156,10 +156,10 @@ RegionView::init (Gdk::Color const & basic_color, bool wfd) name_highlight->signal_event().connect (bind (mem_fun (PublicEditor::instance(), &PublicEditor::canvas_region_view_name_highlight_event), name_highlight, this)); frame_handle_start->set_data ("regionview", this); - frame_handle_start->signal_event().connect (bind (mem_fun (PublicEditor::instance(), &PublicEditor::canvas_region_view_name_highlight_event), frame_handle_start, this)); + frame_handle_start->signal_event().connect (bind (mem_fun (PublicEditor::instance(), &PublicEditor::canvas_frame_handle_event), frame_handle_start, this)); frame_handle_end->set_data ("regionview", this); - frame_handle_end->signal_event().connect (bind (mem_fun (PublicEditor::instance(), &PublicEditor::canvas_region_view_name_highlight_event), frame_handle_end, this)); + frame_handle_end->signal_event().connect (bind (mem_fun (PublicEditor::instance(), &PublicEditor::canvas_frame_handle_event), frame_handle_end, this)); frame_handle_start->raise_to_top(); frame_handle_end->raise_to_top(); diff --git a/libs/ardour/midi_buffer.cc b/libs/ardour/midi_buffer.cc index ae3071a53c..12b46e7f04 100644 --- a/libs/ardour/midi_buffer.cc +++ b/libs/ardour/midi_buffer.cc @@ -93,6 +93,7 @@ MidiBuffer::read_from (const Buffer& src, nframes_t nframes, nframes_t dst_offse const Evoral::MIDIEvent ev(*i, false); if (ev.time() >= src_offset && ev.time() < (nframes+src_offset)) { push_back (ev); + cerr << "got note " << ev << endl; } } diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc index 29b6ab4a4d..3d4b188a8b 100644 --- a/libs/ardour/midi_diskstream.cc +++ b/libs/ardour/midi_diskstream.cc @@ -1652,15 +1652,15 @@ MidiDiskstream::get_playback (MidiBuffer& dst, nframes_t start, nframes_t end) MidiBuffer::iterator this_cycle_start = dst.end(); // Translates stamps to be relative to start - #if 1 - _playback_buf->read(dst, start, end); - #else - const size_t events_read = _playback_buf->read(dst, start, end); - cout << "MDS events read = " << events_read - << " start = " << start << " end = " << end - << " readspace " << _playback_buf->read_space() - << " writespace " << _playback_buf->write_space() << endl; - #endif + + _playback_buf->read(dst, start, end); +#if 0 + const size_t events_read = _playback_buf->read(dst, start, end); + cout << _name << ": MDS events read = " << events_read + << " start = " << start << " end = " << end + << " readspace " << _playback_buf->read_space() + << " writespace " << _playback_buf->write_space() << endl; +#endif gint32 frames_read = end - start; g_atomic_int_add(&_frames_read_from_ringbuffer, frames_read); diff --git a/libs/ardour/processor.cc b/libs/ardour/processor.cc index 101bc29ab4..04706c0c2d 100644 --- a/libs/ardour/processor.cc +++ b/libs/ardour/processor.cc @@ -232,8 +232,6 @@ Processor::configure_io (ChanCount in, ChanCount out) _configured_output = out; _configured = true; - std::cerr << "******* CONF IN for " << _name << " set to " << in << std::endl; - ConfigurationChanged.emit (in, out); return true; diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index e922a2f33f..1cb7b84bc9 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -1341,7 +1341,6 @@ Route::configure_processors_unlocked (ProcessorStreams* err) // We can, so configure everything list< pair >::iterator c = configuration.begin(); for (ProcessorList::iterator p = _processors.begin(); p != _processors.end(); ++p, ++c) { - cerr << _name << " Configure " << (*p)->name() << " for " << in << " + " << out << endl; (*p)->configure_io(c->first, c->second); processor_max_streams = ChanCount::max(processor_max_streams, c->first); processor_max_streams = ChanCount::max(processor_max_streams, c->second); diff --git a/libs/evoral/evoral/Event.hpp b/libs/evoral/evoral/Event.hpp index 096d00de35..3e8e05fa3b 100644 --- a/libs/evoral/evoral/Event.hpp +++ b/libs/evoral/evoral/Event.hpp @@ -196,5 +196,18 @@ protected: } // namespace Evoral + +template +std::ostream& operator<<(std::ostream& o, const Evoral::Event