View Issue Details

IDProjectCategoryView StatusLast Update
0003817ardourbugspublic2011-11-16 16:28
Reporterdanboid Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Target Version3.0-beta2 
Summary0003817: quickly sliding up/down onscreen MIDI keyboard kills it
DescriptionCreate a MIDI track, add a LV2 (such as monosynth) or a VSTi (such as Synth1) to it and expand the MIDI track vertically enough so that the integrated MIDI keyboard appears. Now hold the left mouse button and run the pointer up and down the integrated keyboard about 10 or so times in quick succession. Under 9038 doing this pretty quickly causes the on screen keyboard to stop responding and usually you are left with the MIDI track producing a continuous note and the only way to stop the note is to remove the track.
TagsNo tags attached.

Relationships

related to 0003824 closedcth103 Rapid left and right mouse clicking on piano roll results in stuck notes. 

Activities

danboid

2011-03-03 11:28

reporter   ~0010264

Last edited: 2011-03-03 11:29

Although doing as above is likely a surefire way to trigger this problem, its not required as I've just had the suspended note problem occur a number of times within the last hour with regular, sane and simple use of the on screen keyboard to test presets on a VSTi under 9052.

cth103

2011-03-09 18:14

administrator   ~0010328

I can't reproduce this here; however, a similar-sounding bug (0003824) is fixed in SVN 9114 which may help with this. Is it still a problem?

danboid

2011-03-09 18:45

reporter   ~0010333

This still happens under 9115 with both the monosynth LV2 and with two different VSTis that I've tested (synth1 and polyiblit) under a new session.

danboid

2011-03-10 00:10

reporter   ~0010335

Is there any more info I could provide that might help? A video?

2011-03-10 00:27

 

3817-debug.patch (3,805 bytes)   
diff --git a/gtk2_ardour/piano_roll_header.cc b/gtk2_ardour/piano_roll_header.cc
index 2839867..c660755 100644
--- a/gtk2_ardour/piano_roll_header.cc
+++ b/gtk2_ardour/piano_roll_header.cc
@@ -461,9 +461,11 @@ PianoRollHeader::on_expose_event (GdkEventExpose* ev)
 bool
 PianoRollHeader::on_motion_notify_event (GdkEventMotion* ev)
 {
+	cout << "=> on_motion_notify_event, dragging=" << _dragging << "\n";
 	if (_dragging) {
 
 		int note = _view.y_to_note(ev->y);
+		cout << "note=" << ((int) note) << ", _highlighted_note=" << ((int) _highlighted_note) << ", _clicked_note=" << _clicked_note << "\n";
 
 		if (_highlighted_note != no_note) {
 			if (note > _highlighted_note) {
@@ -477,12 +479,14 @@ PianoRollHeader::on_motion_notify_event (GdkEventMotion* ev)
 		
 		/* redraw already taken care of above */
 		if (_clicked_note != no_note && _clicked_note != note) {
+			cout << "deactivate " << ((int) _clicked_note) << "\n";
 			_active_notes[_clicked_note] = false;
 			send_note_off(_clicked_note);
 
 			_clicked_note = note;
 			
 			if (!_active_notes[note]) {
+				cout << "activate " << ((int) note) << "\n";
 				_active_notes[note] = true;
 				send_note_on(note);
 			}
@@ -490,7 +494,7 @@ PianoRollHeader::on_motion_notify_event (GdkEventMotion* ev)
 	}
 
 	//win->process_updates(false);
-
+	cout << "<= on_motion_notify_event\n";
 	return true;
 }
 
@@ -498,8 +502,10 @@ bool
 PianoRollHeader::on_button_press_event (GdkEventButton* ev)
 {
 	int note = _view.y_to_note(ev->y);
+	cout << "=> on_button_press_event note=" << ((int) note) << "\n";
 
 	if (ev->button == 2) {
+		cout << "button 2, send note on\n";
 		send_note_on (note);
 		/* relax till release */
 	} else {
@@ -510,16 +516,19 @@ PianoRollHeader::on_button_press_event (GdkEventButton* ev)
 			_dragging = true;
 			
 			if (!_active_notes[note]) {
+				cout << "activate " << ((int) note) << "\n";
 				_active_notes[note] = true;
 				_clicked_note = note;
 				send_note_on(note);
 				
 				invalidate_note_range(note, note);
 			} else {
+				cout << "reset_clicked_note " << ((int) note) << "\n";
 				reset_clicked_note(note);
 			}
 		}
 	}
+	cout << "<= on_button_press_event\n";
 
 	return true;
 }
@@ -528,8 +537,10 @@ bool
 PianoRollHeader::on_button_release_event (GdkEventButton* ev)
 {
 	int note = _view.y_to_note(ev->y);
+	cout << "<= on_button_release_event note=" << ((int) note) << "\n";
 
 	if (ev->button == 2) {
+		cout << "button 2, send note off\n";
 		send_note_off (note);
 
 		if (Keyboard::no_modifiers_active (ev->state)) {
@@ -547,11 +558,13 @@ PianoRollHeader::on_button_release_event (GdkEventButton* ev)
 			_dragging = false;
 			
 			if (note == _clicked_note) {
+				cout << "deactivate " << ((int) note) << "\n";
 				reset_clicked_note(note);
 			}
 		} 
 	}
 
+	cout << "<= on_button_release_event\n";
 	return true;
 }
 
@@ -570,6 +583,7 @@ PianoRollHeader::on_leave_notify_event (GdkEventCrossing*)
 	invalidate_note_range(_highlighted_note, _highlighted_note);
 
 	if (_clicked_note != no_note) {
+		cout << "leave notify: deactivate " << _clicked_note << "\n";
 		reset_clicked_note(_clicked_note, _clicked_note != _highlighted_note);
 	}
 
@@ -664,7 +678,7 @@ PianoRollHeader::send_note_on(uint8_t note)
 {
 	boost::shared_ptr<ARDOUR::MidiTrack> track = _view.trackview().midi_track();
 
-	//cerr << "note on: " << (int) note << endl;
+	cout << "note on: " << ((int) note) << endl;
 
 	if (track) {
 		_event[0] = (MIDI_CMD_NOTE_ON | track->default_channel());
@@ -681,6 +695,7 @@ PianoRollHeader::send_note_off(uint8_t note)
 	boost::shared_ptr<ARDOUR::MidiTrack> track = _view.trackview().midi_track();
 
 	if (track) {
+		cout << "note off: " << ((int) note) << endl;
 		_event[0] = (MIDI_CMD_NOTE_OFF | track->default_channel());
 		_event[1] = note;
 		_event[2] = 100;
3817-debug.patch (3,805 bytes)   

cth103

2011-03-10 00:28

administrator   ~0010337

You could try applying the attached patch, then triggering the bug and attaching the log file to this bug ... something like

gtk2_ardour/ardev > log

is probably the easiest way.

2011-03-10 22:53

 

3817-log.xz (2,024 bytes)

danboid

2011-03-10 22:57

reporter   ~0010341

log file attached

Contrary to what it says, this log was actually produced by a svn up'd, patched 9119 build, not 9113.

I ran my cursor quickly up and down the MIDIed keyb, stopping periodically and then quitting as soon as I noticed the note to be stuck.

2011-03-11 00:19

 

3817-1.patch (346 bytes)   
diff --git a/gtk2_ardour/piano_roll_header.cc b/gtk2_ardour/piano_roll_header.cc
index e88f551..a9baea8 100644
--- a/gtk2_ardour/piano_roll_header.cc
+++ b/gtk2_ardour/piano_roll_header.cc
@@ -585,6 +585,7 @@ PianoRollHeader::on_leave_notify_event (GdkEventCrossing*)
 	}
 
 	_highlighted_note = no_note;
+	_dragging = false;
 	return true;
 }
 
3817-1.patch (346 bytes)   

cth103

2011-03-11 00:20

administrator   ~0010344

Perhaps you could try the attached 3817-1.patch and see if that helps at all?

danboid

2011-03-11 01:04

reporter   ~0010345

3817-1.patch hasn't fixed it under 9119 for both my LV2 and VSTi

~/src/3.0/vst/ardevst
Ardour3.0pre0 (built using ['9119'] and GCC version 4.4.5)
Copyright (C) 1999-2011 Paul Davis
Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel Baker

Ardour comes with ABSOLUTELY NO WARRANTY
not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
This is free software, and you are welcome to redistribute it
under certain conditions; see the source for copying conditions.
Cannot xinstall SIGPIPE error handler
ardour: [INFO]: Loading default ui configuration file /home/iatn/src/3.0/vst/../gtk2_ardour/ardour3_ui_default.conf
Loading user ui configuration file /home/iatn/.config/ardour3/ardour3_ui.conf
ardour: [INFO]: Loading ui configuration file /home/iatn/src/3.0/vst/../build/default/gtk2_ardour/ardour3_ui_dark.rc
ardour: [INFO]: Ardour will be limited to 1024 open files
Startup win32 GUI thread

ardour: [INFO]: Loading user configuration file /home/iatn/.config/ardour3/ardour.rc
Using SSE optimized routines
ERROR: slv2_world_add_plugin: Duplicate plugin <http://linuxdsp.co.uk/lv2/gr-eq2.lv2>
ERROR: slv2_world_add_plugin: ... found in file:///usr/local/lib/lv2/gr-eq2.lv2/
ERROR: slv2_world_add_plugin: ... and file:///usr/lib/lv2/gr-eq2.lv2/
ERROR: slv2_world_add_plugin: Duplicate plugin <http://linuxdsp.co.uk/lv2/mkii-graph-eq1.lv2>
ERROR: slv2_world_add_plugin: ... found in file:///usr/local/lib/lv2/mkii-graph-eq1.lv2/
ERROR: slv2_world_add_plugin: ... and file:///usr/lib/lv2/mkii-graph-eq1.lv2/
ERROR: slv2_world_add_plugin: Duplicate plugin <http://linuxdsp.co.uk/lv2/mkii-graph-eq2.lv2>
ERROR: slv2_world_add_plugin: ... found in file:///usr/local/lib/lv2/mkii-graph-eq2.lv2/
ERROR: slv2_world_add_plugin: ... and file:///usr/lib/lv2/mkii-graph-eq2.lv2/
ardour: [INFO]: looking for panners in /home/iatn/src/3.0/vst/../build/default/libs/panners/2in2out:/home/iatn/src/3.0/vst/../build/default/libs/panners/1in2out:/home/iatn/src/3.0/vst/../build/default/libs/panners/vbap
ardour: [INFO]: Panner discovered: "Equal Power Stereo"
ardour: [INFO]: Panner discovered: "Mono to Stereo Panner"
ardour: [INFO]: Panner discovered: "VBAP 2D panner"
Found 0 along :/home/iatn/.config/ardour3/templates
Grab new name focus
lost focus
lost focus
JACK COMMAND: /usr/bin/jackd -p 128 -R -P 60 -T -d alsa -n 2 -r 96000 -p 1024 -d hw:0,0 -X seq
jackd 0.120.1
Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

no message buffer overruns
JACK compiled with System V SHM support.
loading driver ..
apparent rate = 96000
creating alsa driver ... hw:0,0|hw:0,0|1024|2|96000|0|0|nomon|swmeter|-|32bit
control device hw:0
configuring for 96000Hz, period = 1024 frames (10.7 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback
RemoteVSTClient: all cache files are up-to-date, not running scanner
LV2: Discovering 78 plugins
Done LV2 discovery
Mixer UI removing strip for 0x6c2c2000
jack main caught signal 12

danboid

2011-11-16 10:44

reporter   ~0012082

This no longer seems to be an issue so resolve please

Issue History

Date Modified Username Field Change
2011-03-02 21:12 danboid New Issue
2011-03-02 21:16 cth103 cost => 0.00
2011-03-02 21:16 cth103 Target Version => 3.0-beta1
2011-03-03 11:28 danboid Note Added: 0010264
2011-03-03 11:29 danboid Note Edited: 0010264
2011-03-05 10:41 cth103 Relationship added related to 0003824
2011-03-09 18:14 cth103 Note Added: 0010328
2011-03-09 18:14 cth103 Status new => feedback
2011-03-09 18:45 danboid Note Added: 0010333
2011-03-10 00:10 danboid Note Added: 0010335
2011-03-10 00:27 cth103 File Added: 3817-debug.patch
2011-03-10 00:28 cth103 Note Added: 0010337
2011-03-10 22:53 danboid File Added: 3817-log.xz
2011-03-10 22:57 danboid Note Added: 0010341
2011-03-11 00:19 cth103 File Added: 3817-1.patch
2011-03-11 00:20 cth103 Note Added: 0010344
2011-03-11 01:04 danboid Note Added: 0010345
2011-11-15 16:30 cth103 Target Version 3.0-beta1 => 3.0-beta2
2011-11-16 10:44 danboid Note Added: 0012082
2011-11-16 16:28 cth103 Status feedback => resolved
2011-11-16 16:28 cth103 Resolution open => fixed