i am trying to implement transport_sync into the netjack software.
for those who dont know yet:
netjack consists of a jack_driver and a jack_client. on the Master machine the
client emits a network packet on each process() and tries to receive one
packet of data.
on the Slave Machine the Driver is waiting for an incoming Packet (like
the Alsa_Driver is waiting for an audio Interrupt) and emits a Packet.
so with this software you get two sample synchronous jackds. no need for
dynamic samplerate conversion and other hassle. there is one period of
roundtrip latency. this works very reliable on a LAN.
the thing which is missing is transport synchronisation.
i am currently trying to implement this but have a Problem with
when a transport_locate() occurs it is clear that the "UnifiedTransport"
has to wait for all slow-sync clients on all computers to be ready.
while waiting the jacknet clients (a driver is/contains also a client)
have to report FALSE on slow sync, to hold the transport.
(add missing step here)
now when all clients are ready and the exchanged packet headers contain
the flag which indicates that all clients are ready to roll. both
clients may return TRUE to sync_calback() in the equvalent process
cycles. so that both transports start to roll.
the missing step is detecting that we are the only client returning
FALSE to slow sync.