When note on and note off events for same note are processed in one call of EngineChannel::ImportEvents the note continue to play. To reproduce it, just drag the mouse over the virtual keyboard.
Release critical? :-)
Not too critical, but it's very annoying when you play on the keyboard by dragging the mouse :)
I currently can't spot the problem. The events are handled in the sequence they arrive from the input queue. So even if a note-on / note-off event pair arrives with the same time stamp, the note-off event should be sent by the MIDI source after the note-on event, so everything should be right. I don't have a recent Java version installed on this Linux box right now, so I couldn't test it with JSampler yet. Any hints?
(In reply to comment #3) > I don't have a recent Java version installed on this Linux box right now, so I > couldn't test it with JSampler yet. > > Any hints? You can try with a lscp script like: SEND CHANNEL MIDI_DATA NOTE_ON 0 60 100 SEND CHANNEL MIDI_DATA NOTE_OFF 0 60 100 SEND CHANNEL MIDI_DATA NOTE_ON 0 61 100 SEND CHANNEL MIDI_DATA NOTE_OFF 0 61 100 SEND CHANNEL MIDI_DATA NOTE_ON 0 62 100 SEND CHANNEL MIDI_DATA NOTE_OFF 0 62 100 SEND CHANNEL MIDI_DATA NOTE_ON 0 63 100 SEND CHANNEL MIDI_DATA NOTE_OFF 0 63 100 It reproduces the bug well with PMI Bosendorfer 290 instrument
I just commited a fix to CVS.
Still doesn't work quite right. Dragging the mouse over the keyboard in Fantasia still leaves playing notes.
I just tested it with gigedit's virtual keyboard and with the previous LSCP commands and the problem was solved for me. Unfortunately I can't reproduce it right now with JSampler, due to the mentioned old Java version.
(In reply to comment #6) > Still doesn't work quite right. Dragging the mouse over the keyboard in Fantasia > still leaves playing notes. Note that the virtual midi device event limit is 12 (MAX_EVENTS 12). So if you drag the mouse very fast (over 6 notes per cycle) LS may ignore some events. But maybe this is not your case. For me this fix is working fairly well.
(In reply to comment #8) > Note that the virtual midi device event limit is 12 (MAX_EVENTS 12). So if you drag the mouse very fast > (over 6 notes per cycle) LS may ignore some events. Yes, that was indeed my problem. I changed MAX_EVENTS to 1000 and now the problem is gone.
So what would be a reasonable value for MAX_EVENTS in VirtualMidiDevice.cpp?
(In reply to comment #10) > So what would be a reasonable value for MAX_EVENTS in VirtualMidiDevice.cpp? I would propose something like 64, but lets see how fast is Andreas :)
Sorry, I must have done something stupid, like running an older version of LS than I thought I was. Today it works fine, even with MAX_EVENTS 12.