I've come across a possible source of occasional notes dropping out. I'm posting it here because it took me a while before the penny dropped and some other members of the Forum might be having the same problem. Maybe I can save somebody some pain.

It took me a while because I was suspecting all kinds of sophisticated things (like buffer overrun) not to mention expensive ones (like not enough RAM), but it turned out to be simple, and easy to fix.

So what was happening is this: I had repeated notes (i.e. same note repeated consecutively on the same instrument) and, for reasons I'll go into below but you can probably guess, the first noted ended a small fraction of a second after the second one started. In this situation the second note will effectively not sound at all. If you have more than two notes in succession, all with a tiny overlap, then none but the first note will sound.

Try it out if you don't believe me. Set up a short dummy score with a few repeated crotchets on almost any wind instrument, let's say a flute. Now extend the length of all those notes so they overlap by, say, a 20th of a second. Now play the score.

How did I unwittingly get my score into this mess? Two ways.

First way. A legato phrase, in which each note ends exactly as the next one starts. Now I add cc64 to slur it all and then of course extend all the notes' durations by a few ticks to make sure the slurs "take". But the melody has a few repeated notes, and I now get the overlap problem with them.

Second way. I have a sequencer (DP5) which has a facility it calls "humanise". One of the things this does is change the onset time of all notes randomly backwards or forwards by a small amount, to simulate the tiny variations in timing of real players. I think lots of sequencers have a similar facility, though they may use different names for it. I find this effect valuable, but I think you can see what's coming: anywhere there are repeated legato notes, the first one may be moved back and the second one moved forwards, and Bob's your uncle, you've got dropout again. I usually use "humanise" as a plug-in, which does the randomisation on the fly and so differently every time. This is really confusing because then the notes which drop out are different every time. Another unhelpful thing is that the overlapping of repeated notes hardly shows up on the usual player-piano display.

The reason this happens depends on how Midi sends its signals. If we are used to using a sequencer, we are probably used to specifying note timing by onset time and length. But Midi expects separate Note-on and Note-off signals. (Has to: otherwise you couldn't use it in real time performance.) The sequencer translates our instructions into this Midi-speak before sending it.

Suppose, for instance, we specify two middle C's, with no overlap. The sequencer will send something like this
C3 on .............. C3 off .. C3 on ......................... C3 off
and everything works OK. But now suppose we have an overlap. Then the sequencer sends
C3 on .......................... C3 on .. C3 off ............. C3 off
The synth (Kontakt say) starts playing C3 at the first signal, ignores the second because C3 is already on, obeys the third (Note-off) signal and ignores the last one because C3 is now already off. So all you got was one C3, not two.

There are probably other situations than the two I have suggested which can give rise to overlapping repeated notes, but those are the two that bit me! The solution is (usually) simple. If you do anything at all that will change the timing of notes from the original written values, have a careful look at all repeated notes in player-piano display or some format where you can read the timings easily, and fix them if necessary.

If you use an on-the-fly randomiser, like I do, you can't do that. So just make sure that you write a gap between repeated notes big enough that your randomisation cannot cause an overlap. (Suppose your notes can be moved backwards or forwards by 20 ticks. Then, to cover the worst case possibility, leave a 40 tick gap.) The gap usually improves the articulation of repeated notes anyway.

Oh yes, and all this goes just as well for JABB as it does for GPO of course. I just had to put this post somewhere. In fact, it should be true for almost any combination of sequencer and synthesizer at all, so I dunno why I didn't work this out years ago!