A group of
singers were interested in trying out the
bucket brigade singing program, and
I realized that with a small tweak it could support rounds directly.
We just needed to write audio both at the place it belonged to, and an
appropriate distance into the future. This would let everyone hear
everyone else, though the leader still has to wait a bit before they
start to hear others.
The system already needs to know BPM (beats per minute) so it can run
a metronome, but the support around it also needs to know BPR (beats
per repeat). For example, "Row, Row, Row, Your Boat" is a 16 beat
round with participants entering every four beats, so you would
probably set BPR to be 16. Four (or more) people could sing, with one
person leading and each other person joining after the right number of
beats as if they were singing together in person. Once everyone has
been singing for 16 beats they all hear everyone else, and also
You can get interesting effects by setting the BPR to some other
multiple of the part interval, such as 12. This lets you sing along
with yourself an offset, so that you appear to be one of the other
It's also possible to configure the system with multiple repeats, so
you would hear each iteration of your voice, say, three times. This
can be fun if you have a small group of people and want to sing many
parts, or even if you're playing around by yourself.
One thing this made me realize is that the latency calibration is
really very important, and the previous way we were handling it was
not sufficient. Originally, it started off trying to get a very
accurate estimation of your latency, but if it wasn't doing very well
it would slowly lower its standards. After about 30 seconds, it would
let in people even with pretty inaccurate estimates. I've updated it
now to be very careful, and if it can't estimate your latency to
within 2 ms, it lets you know and gives you the choice between trying
again, and joining without sending any of your audio to the server.
Feel free to play with it: echo.jefftk.com.
Comment via: facebook
Is there a typo in the screenshot "...continue with calibration if you just want to sing along..."?
I haven't looked at the actual program, so this may have been fixed already. Either way, thanks for putting this together !!