summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-08-28 16:06:08 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-08-28 16:06:08 +0000
commite7e071db1a07ec6d66b71982f204c2cbaa70adee (patch)
tree89bb307195d90c110fa7244a062397403390d21f
parent710ba02c70545e06ea57193c61bddba706a49dec (diff)
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
-rw-r--r--gtk2_ardour/canvas-note-event.cc5
-rw-r--r--gtk2_ardour/editor.cc25
-rw-r--r--gtk2_ardour/editor.h5
-rw-r--r--gtk2_ardour/editor_canvas_events.cc50
-rw-r--r--gtk2_ardour/editor_mouse.cc28
-rw-r--r--gtk2_ardour/midi_region_view.cc144
-rw-r--r--gtk2_ardour/midi_region_view.h9
-rw-r--r--gtk2_ardour/public_editor.h4
-rw-r--r--gtk2_ardour/region_view.cc4
-rw-r--r--libs/ardour/midi_buffer.cc1
-rw-r--r--libs/ardour/midi_diskstream.cc18
-rw-r--r--libs/ardour/processor.cc2
-rw-r--r--libs/ardour/route.cc1
-rw-r--r--libs/evoral/evoral/Event.hpp13
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
@@ -3367,6 +3367,31 @@ Editor::clamp_verbose_cursor_y (double 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)
{
verbose_canvas_cursor->property_text() = txt.c_str();
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<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&);
void get_regions_corresponding_to (boost::shared_ptr<ARDOUR::Region> region, std::vector<RegionView*>& 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<RouteTimeAxisView*>(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<MidiModel> 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<NoteType> 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<NoteType> 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<NoteType> 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<Source> 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<TimeType> 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<ChanCount,ChanCount> >::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<typename Time>
+std::ostream& operator<<(std::ostream& o, const Evoral::Event<Time>& ev) {
+ o << "Event type = " << ev.event_type() << " @ " << " @ " << ev.time() << "\n\t";
+ o << std::hex;
+ for (uint32_t n = 0; n < ev.size(); ++n) {
+ o << (int) ev.buffer()[n] << ' ';
+ }
+ o << std::dec << std::endl;
+ return o;
+}
+
+
#endif // EVORAL_EVENT_HPP