Notion has an NTempo feature that allows something like this... But you need to have someone as "conductor" tapping the tempo into the computer. So not useful for a solo performer.

Putting this into BIAB raises some interesting questions.

You've got a particular tempo, and a predicted arrival time of new notes. If the notes arrive early, you've got to jump ahead to after their arrival point. If they arrive late, you've to hold the notes until the note finally arrives... Which may never happen.

Sustaining a note forever isn't a problem for a MIDI-only application. But for RealTracks, it raises big issues. It's certainly possible to do - for example, it could loop back to the last 1/nth second of music with crossfading to avoid nasty clicks. Not elegant, but it might work.

What about "near misses"? Do you have to hit the note, or can something "close enough" work? Does the program have a look-ahead, so if you miss a note and keep going, it notices? That's a more thorny problem, because you probably don't want the accompaniment to simply stop when you miss a note.

It would be interesting to play along with the software, and see what the experience is like. That's really the best way to find out. But it seems to me that it's not a very realistic experience. That is, in "real life", accompaniment doesn't stop when you miss a note. Tempo changes aren't instantaneous, either.

I think a better experience would come from the program adjusting the tempo using weights based on the note duration and a running average. It wouldn't "wait" for you as Home Concert Xtreme does, but I think the experience would be more organic, and more forgiving to performance goofs. After all, the software would "follow" you (literally), and adjust to your playing tempo.

Plus, it would work with BIAB.

The biggest question is, what do you do if a note doesn't come? There's a point where you've simply got to move on. So any given "expected" note is only active for a limited window. Every note after the first arrives after it's predecessor. So the expected arrival time of a note depend on the actual arrival time of the prior note. And you can't know that until the prior note arrives. If there's a missed note, how do you resolve this?

It's solvable in lots of different ways, and I better stop before I try to work out the full algorithm.


-- David Cuny
My virtual singer development blog

Vocal control, you say. Never heard of it. Is that some kind of ProTools thing?