View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0005438||ardour||bugs||public||2013-04-07 23:15||2016-09-15 08:57|
|Summary||0005438: Missing first note when midi region looped|
|Description||Ardour 3.0 built from rev14207 (binary downloaded from ardour.org)|
1) Create a midi track and a 1 bar region on it.
2) Put 1 note on each beat (quantized/snapped to the beat).
2) Connect outputs of track to linuxsampler (as external program, not LV2 plugin)
3) Loop region.
--> Result: The 4 notes are correctly played on first iteration but when loop starts over again, 1st note cannot be heard.
(Expected result: all 4 notes should be heard on each iteration)
|Additional Information||When an LV2 instrument is used on the same track as the midi data, Ardour loops the region as expected.|
If the plugin is on a different track, to which initial track sends its midi data, bug appears (1st note missing when looping)
If track sends data to external program, bug appears too.
Here is the output of qmidiroute:
First play of region [everything normal]
00:54:26.448 Ch 1, Note On 47, Vel 64
00:54:27.635 Ch 1, Note Off 47
00:54:27.636 Ch 1, Note On 47, Vel 64
00:54:28.835 Ch 1, Note Off 47
00:54:28.836 Ch 1, Note On 47, Vel 64
00:54:30.035 Ch 1, Note Off 47
00:54:30.036 Ch 1, Note On 47, Vel 64
00:54:30.636 Ch 1, Note Off 47
[Looping from begining: notice that 1st "Note On" is missng]
00:54:32.438 Ch 1, Note Off 47
00:54:32.439 Ch 1, Note On 47, Vel 64
00:54:33.634 Ch 1, Note Off 47
00:54:33.636 Ch 1, Note On 47, Vel 64
00:54:34.835 Ch 1, Note Off 47
00:54:34.837 Ch 1, Note On 47, Vel 64
00:54:35.436 Ch 1, Note Off 47
If let to loop on for long, the 1st note of the region is sometimes correctly heard: maybe once in 20 iterations or so.
Attached is a very minimal session where the described behaviour occurs.
|Tags||No tags attached.|
|related to||0006666||new||MIDI notes get stuck when region is looped|
|related to||0006389||confirmed||MIDI Loop triggers the first note of the bar AFTER the loop end|
|has duplicate||0006397||new||Looped MIDI-region skips notes on iteration|
|related to||0006140||closed||ccaudle||first loop playback is incorrect, subsequent are correct|
test.tar.bz2 (11,255 bytes)
||Bug still here in version 3.1|
||This could basically be the same bug or at least a bug with a common cause like 0005421. There might be a compare-error for the note positions that shows up on the regions' borders.|
There are significant differences with 0005421 however:
- here the problem is when routing the midi of the track somewhere else (to another track or to an external synth). When the plugin is on the same track as the notes, everything is fine.
- here the first note is played correctly the first time. It is only ommited when the loop starts over again. As if it didn't go back right to the very begining.
- I couldn't replicate the note being deleted when changing tempo as in 0005421
The problem seems related to `_global_port_buffer_offset', incremented
The follow test uses `-p1024' for jackd but it also fails with a lower
period (i.e. 64):
- bpm 135
- loop an arpeggio legato 60 64 67 71 (0x3c 0x40 0x43 0x47)
(the duration is 1 beat for all the notes)
- loop start 0, loop length 85333 (sr = 48000)
(added the info for cycle start/split/end)
DEBUG: cycle_start(1024) => _global_port_buffer_offset is 0
DEBUG::MidiDiskstreamIO: MIDI 1 MDS pre-read read 277 @ 84992..85269 from 133 write to 247, LOOPED ? 0-85333
DEBUG::MidiDiskstreamIO: looped, effective start adjusted to 84992
DEBUG::MidiDiskstreamIO: loop read #3, adjusted start as 84992 for 277
DEBUG::MidiDiskstreamIO: MRB event @ 85332 past end @ 85269
DEBUG::MidiDiskstreamIO: MIDI 1 MDS events read 0 range 84992 .. 85269 rspace 114 wspace 47885 r@133 w@247
DEBUG: split_cycle(277) => _global_port_buffer_offset is 277
DEBUG::MidiDiskstreamIO: MIDI 1 MDS pre-read read 64 @ 85269..85333 from 133 write to 247, LOOPED ? 0-85333
DEBUG::MidiDiskstreamIO: looped, effective start adjusted to 85269
DEBUG::MidiDiskstreamIO: loop read #3, adjusted start as 85269 for 64
DEBUG::MidiDiskstreamIO: MRB event @ 85332 in range 85269 .. 85333
DEBUG::MidiDiskstreamIO: wrote MidiEvent to Buffer (time=63, start=85269 offset=0)0x80 0x47 0x40
DEBUG::MidiDiskstreamIO: MRB event @ 0 before start @ 85269
DEBUG::MidiDiskstreamIO: MIDI 1 MDS events read 1 range 85269 .. 85333 rspace 95 wspace 47904 r@152 w@247
NOTE: the last note-off (0x47) with time 63
drop flushed event on the floor, time 63 too early for 277 + 0 80 47 40
DEBUG: split_cycle(64) => _global_port_buffer_offset is 341 (277 + 64)
DEBUG::MidiDiskstreamIO: MIDI 1 MDS pre-read read 683 @ 85333..86016 from 152 write to 247, LOOPED ? 0-85333
DEBUG::MidiDiskstreamIO: looped, effective start adjusted to 0
DEBUG::MidiDiskstreamIO: loop read #3, adjusted start as 0 for 683
DEBUG::MidiDiskstreamIO: MRB event @ 0 in range 0 .. 683
DEBUG::MidiDiskstreamIO: wrote MidiEvent to Buffer (time=0, start=0 offset=0)0x90 0x3c 0x40
DEBUG::MidiDiskstreamIO: MRB event @ 21333 past end @ 683
DEBUG::MidiDiskstreamIO: MIDI 1 MDS events read 1 range 85333 .. 86016 rspace 76 wspace 47923 r@171 w@247
NOTE: drop the first note-on (0x3c)
drop flushed event on the floor, time 0 too early for 341 + 0 90 3c 40
DEBUG: cycle_end(1024) x 6 times
DEBUG::MidiSourceIO: MidiSource::midi_read() MIDI 1-1.mid sstart 0 start 46635 cnt 2048 tracker 0x7f6ff00d09d0
DEBUG::MidiSourceIO: MIDI 1-1.mid: reached end with event @ 63999 vs. 48683
DEBUG: cycle_start(1024) => _global_port_buffer_offset is 0
This problem is still persistent in Ardour 4.0.
When the 1st note is on the 1st beat, the loop recording does not record the 1st note.
The note is visible on the MIDI signal indicator.
||Similar behaviour here in 4.1: a looped MIDI region does not play any notes or just seems to skip the first 5-6 quarter notes in the iterations.|
||Still present in Ardour 4.4|
some progress in Ardour 4.4-340-g7a5cea4
I've tested the recent git version 4.4-564-g7b6ef41 with sessions where I noticed this problem before.
So far I can say that it works now like expected.
The old sessions do still miss the 1st beat on loop when loaded in g7b6ef41. As soon as I move the note back & forth to the same position it will be recognized during loop.
Many thanks for your efforts!
This still seems to be an issue with 4.7.
Testing with a simple session with one midi track and 2 bar region with a note on each beat and then looping the region results in notes not being played at the start of the region after several loops.
MIDI looping should now be either completely fixed in git (nightly builds) or just massively improved.
I can not reproduce this issue anymore using version 5.3.97.
Tested using seamless and non-seamless looping with a-Reasonable Synth, synthv1 and MDA DX10 instruments and a variety of loop lengths and notes overlapping with loop boundaries. All seems to work as expected.
Just one thing is still not working for me. When I enable 'Play loop is a transport mode' the loop just plays once. The playhead is moving but there is no audio output.
This is related to http://tracker.ardour.org/view.php?id=6734
|2013-04-07 23:15||svictor||New Issue|
|2013-04-07 23:15||svictor||File Added: test.tar.bz2|
|2013-04-12 20:14||svictor||Note Added: 0014858|
|2013-04-20 14:36||bluebell||Note Added: 0014871|
|2013-04-20 16:29||svictor||Note Added: 0014872|
|2015-01-22 16:21||x42||Relationship added||related to 0006140|
|2015-03-13 14:27||tlat||Note Added: 0016424|
|2015-04-24 17:04||hg87||Note Added: 0016640|
|2015-06-27 17:29||zettberlin||Note Added: 0016812|
|2015-08-05 00:24||x42||Relationship added||has duplicate 0006397|
|2015-11-25 02:09||x42||Relationship added||related to 0006666|
|2015-11-25 02:09||x42||Relationship added||related to 0006389|
|2015-11-28 00:37||magnetophon||Note Added: 0017665|
|2015-11-29 00:32||x42||Note Added: 0017667|
|2015-12-19 09:33||hg87||Note Added: 0017730|
|2016-02-22 10:00||timbyr||Note Added: 0017992|
|2016-09-14 00:27||paul||Note Added: 0018635|
|2016-09-14 02:29||timbyr||Note Added: 0018637|
|2016-09-15 08:34||rutsch||Note Added: 0018644|
|2016-09-15 08:56||rutsch||Note Edited: 0018644|