Hi all,
For our little music-for-the-blind multi-user pd
sequencer, we've come up with the following method for pretty reliable syncing
of two computers over a network. It's pretty crude, but it works:
Each computer has its internal sequencer engine,
simply driven by a metro (there are no tempo changes). In the case of two
computers, one is the master synchronizer and the other the slave; if the master
receives a start message from the user, it starts its metro and sends a
start-bang over to the client using netsend; the client also starts its metro
upon receive of this bang, and sends a bang back to the master. The master then
measures the delay between the outgoing and incoming bang, and if it's too large
(for instance greater than 1 ms), another start-bang is sent. If it's OK, the
two computers just keep on playing.
This process can take several bangs until the
computers are in acceptable sync, and it reminds us somehow of a car engine
starting, which is rather funny. There is no verification of the sync during
playback, so if the two clocks of the master & slave would somehow drift
apart, the users would have to fire up the system again. This is not a problem
in our specific case.
Greets, Steven