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
| Parameter | Type | Default | Description |
|---|---|---|---|
port | int | 9876 | UDP port for clock broadcast. |
useLocalTimeOnly | bool | true | Use local time sync only (no internet NTP required). |
StartNetworkSyncClientAsync
| Parameter | Type | Default | Description |
|---|---|---|---|
serverAddress | string? | null | Server IP address. null = UDP broadcast auto-discovery. |
port | int | 9876 | UDP port to listen on. |
allowOfflinePlayback | bool | true | Continue playback if server connection drops. |