Novolis.Audio.Live.Protocol
2026.1.10.97
dotnet add package Novolis.Audio.Live.Protocol --version 2026.1.10.97
NuGet\Install-Package Novolis.Audio.Live.Protocol -Version 2026.1.10.97
<PackageReference Include="Novolis.Audio.Live.Protocol" Version="2026.1.10.97" />
<PackageVersion Include="Novolis.Audio.Live.Protocol" Version="2026.1.10.97" />
<PackageReference Include="Novolis.Audio.Live.Protocol" />
paket add Novolis.Audio.Live.Protocol --version 2026.1.10.97
#r "nuget: Novolis.Audio.Live.Protocol, 2026.1.10.97"
#:package Novolis.Audio.Live.Protocol@2026.1.10.97
#addin nuget:?package=Novolis.Audio.Live.Protocol&version=2026.1.10.97
#tool nuget:?package=Novolis.Audio.Live.Protocol&version=2026.1.10.97
Novolis.Audio.Live.Protocol
MessagePack DTOs and helper methods for the Novolis Audio Live control plane.
Install
dotnet add package Novolis.Audio.Live.Protocol
Quick start
using Novolis.Audio.Live.Protocol;
using Novolis.Transports.LocalIpc;
var endpoint = LiveTransportEndpoints.CreateDefault();
using var client = LocalIpcTransport.CreateClient();
await using var connection = await client.ConnectAsync(endpoint);
What this package owns
This package defines the audio-domain wire contract for live coding, plus the performer REPL client (Novolis.Audio.Live.Repl namespace inside this assembly). It does not implement transport itself.
It contains:
- request/response DTOs for compile, snapshot, and queue-swap
- immutable program, track-effect, and diagnostic payloads
- mapping helpers between domain objects and wire DTOs
- endpoint helpers for the default local IPC address
- readiness wait (
WaitUntilListeningAsync/IsListeningAsync) for host startup - MessagePack serialization helpers
The reusable transport implementation lives in Novolis.Transports.LocalIpc.
Transport model
The live host and its clients communicate over a framed local IPC stream:
- Windows: named pipes
- Unix-like systems: Unix domain sockets
The wire format is:
LocalIpcFrame
→ sequence number
→ message kind (`request` / `response`)
→ method name
→ MessagePack payload
This package layers typed live-audio semantics on top of that frame envelope.
RPC methods
The current control surface is intentionally small:
| Method | Direction | Purpose |
|---|---|---|
live.compile |
client → host | Compile a LiveProgramDefinition and optionally queue the result |
live.snapshot |
client → host | Fetch the current transport snapshot |
live.queue-swap |
client → host | Queue a previously compiled program by Guid |
State flow
REPL / visual client
→ build typed program definition
→ choose named instruments and optional effect chains
→ MessagePack request
→ host compiles to immutable LiveProgram
→ host either accepts or rejects without disturbing the current performance
→ host returns diagnostics + program payload
→ host publishes current snapshot on demand
Activation rules
SwapPolicy controls when a validated program becomes active:
ImmediatelyNextBeatNextBarNextPhrase
The host owns the clock and applies the queued swap at the next matching boundary.
Example
using Novolis.Audio.Live.Protocol;
using Novolis.Audio.Live.Protocol.Dto;
using Novolis.Transports.LocalIpc;
using Novolis.Audio.Live;
var endpoint = LiveTransportEndpoints.CreateDefault();
var client = LocalIpcTransport.CreateClient();
await using var connection = await client.ConnectAsync(endpoint);
var request = new LiveCompileRequestDto(
RequestId: 1,
Program: someProgramDefinition.ToDto(),
SwapPolicy: SwapPolicy.NextBeat);
await connection.SendMessageAsync(1, LiveRpcMessageKinds.Request, LiveRpcMethodNames.Compile, request);
Versioning rules
Wire contracts are additive-first:
- keep existing fields stable
- add new fields at the end of DTOs
- prefer new DTOs and new methods over changing existing ones
- include
RequestIdon all request/response pairs
That keeps the live host and clients loosely coupled while still staying strongly typed.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- MessagePack (>= 3.1.11)
- Novolis.Audio.Live (>= 2026.1.10.97)
- Novolis.Audio.Live.Dsl (>= 2026.1.10.97)
- Novolis.Transports.LocalIpc (>= 2026.1.10.97)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Novolis.Audio.Live.Protocol:
| Package | Downloads |
|---|---|
|
Novolis.Avalonia.Live
Avalonia Live editor, DSL completion, script compiler, and visualizers for Novolis Audio Live. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.1.10.97 | 0 | 10/5/2026 |
| 2026.1.10.96 | 40 | 10/4/2026 |
| 2026.1.10.94 | 34 | 10/4/2026 |
| 2026.1.10.93 | 35 | 10/4/2026 |
| 2026.1.10.92 | 50 | 10/4/2026 |
| 2026.1.10.91 | 38 | 10/4/2026 |
| 2026.1.10.90 | 56 | 10/1/2026 |
| 2026.1.10.88 | 48 | 10/1/2026 |
| 2026.1.10.87 | 82 | 9/30/2026 |