Network Synchronization

Synchronize playback across multiple devices on a LAN with sub-5ms accuracy. Namespace: OwnaudioNET

â„šī¸

Network sync uses UDP broadcast for clock distribution. An AudioMixer must be created and registered before starting the server or client.

Server Mode

The server device broadcasts its MasterClock timeline to all clients. The server controls play, pause, stop, and seek — clients follow automatically.

C#
// Prerequisites: Initialize + Start + Create AudioMixer
await OwnaudioNet.InitializeAsync();
OwnaudioNet.Start();
var mixer = new AudioMixer(OwnaudioNet.Engine!.UnderlyingEngine);
mixer.Start();

// Start server — broadcasts MasterClock to LAN
await OwnaudioNet.StartNetworkSyncServerAsync(port: 9876, useLocalTimeOnly: true);

// From this point, control playback normally:
mixer.Seek(0);
var track = new FileSource("backing.mp3");
track.AttachToClock(mixer.MasterClock);
track.Play();
mixer.AddSource(track);

// Stop network sync when done
await OwnaudioNet.StopNetworkSyncAsync();

Client Mode

Clients synchronize their MasterClock to the server's timeline. Each client plays its own audio files, kept in sync by the shared clock.

C#
await OwnaudioNet.InitializeAsync();
OwnaudioNet.Start();
var mixer = new AudioMixer(OwnaudioNet.Engine!.UnderlyingEngine);
mixer.Start();

// Connect to server (null = UDP auto-discovery)
await OwnaudioNet.StartNetworkSyncClientAsync(
    serverAddress: "192.168.1.100",  // or null for auto-discovery
    port: 9876,
    allowOfflinePlayback: true);     // continue if server disconnects

// Load client's own audio — clock is controlled by server
var clientTrack = new FileSource("client-audio.mp3");
clientTrack.AttachToClock(mixer.MasterClock);
clientTrack.Play();
mixer.AddSource(clientTrack);

Stop Network Sync

C#
await OwnaudioNet.StopNetworkSyncAsync();

Events

C#
OwnaudioNet.NetworkSyncConnectionChanged += (_, e) =>
{
    Console.WriteLine($"Network sync state: {e.State}");
};

Use Cases

🎤
Live Performance
Backing track server controls the click track; musicians' tablets follow automatically.
🔊
Multi-Room Audio
One server controls multiple zone players across a venue.
🎧
DJ Setup
Sync two machines for seamless handoffs or redundant playback.
đŸ›ī¸
Installation Art
Synchronized audio-visual installations with multiple playback nodes.

API Parameters

StartNetworkSyncServerAsync

ParameterTypeDefaultDescription
portint9876UDP port for clock broadcast.
useLocalTimeOnlybooltrueUse local time sync only (no internet NTP required).

StartNetworkSyncClientAsync

ParameterTypeDefaultDescription
serverAddressstring?nullServer IP address. null = UDP broadcast auto-discovery.
portint9876UDP port to listen on.
allowOfflinePlaybackbooltrueContinue playback if server connection drops.