SoundBoard.PluginApi 1.0.0-beta.1

This is a prerelease version of SoundBoard.PluginApi.
dotnet add package SoundBoard.PluginApi --version 1.0.0-beta.1
                    
NuGet\Install-Package SoundBoard.PluginApi -Version 1.0.0-beta.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SoundBoard.PluginApi" Version="1.0.0-beta.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SoundBoard.PluginApi" Version="1.0.0-beta.1" />
                    
Directory.Packages.props
<PackageReference Include="SoundBoard.PluginApi" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SoundBoard.PluginApi --version 1.0.0-beta.1
                    
#r "nuget: SoundBoard.PluginApi, 1.0.0-beta.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SoundBoard.PluginApi@1.0.0-beta.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SoundBoard.PluginApi&version=1.0.0-beta.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=SoundBoard.PluginApi&version=1.0.0-beta.1&prerelease
                    
Install as a Cake Tool

SoundBoard.PluginApi

The plugin & theme SDK for Game Master Sound Board — a cross-platform soundboard for tabletop RPG sessions.

This is the only assembly a plugin references. It's intentionally tiny: it depends on NAudio.Core alone (for ISampleProvider / WaveStream in the audio contracts) — no Avalonia, no EF Core, no host internals. That keeps the surface a plugin compiles against stable and small.

The five extension interfaces

Every plugin exports exactly one IPlugin implementation and opts into behavior by also implementing one or more marker interfaces:

Interface Adds
IAudioCodecPlugin Support for a new audio file format or URL scheme. Can borrow/lend encoders & decoders via IPluginContext.CodecRegistry.
IAudioSamplerPlugin A real-time DSP effect ("FX Chain") attachable at the Master, Bus, Preset, Playlist, or Track-shortcut tier. Cross-bus sidechain detection via IPluginContext.Sidechain.
IAudioBridgePlugin Streams the master mix to an external destination (Discord, Zoom, Mumble, …) and can pipe remote audio back in.
IThemePlugin One or more selectable colour palettes. A palette is a flat ResourceDictionary of named brushes — no light/dark variants; the host derives chrome from the palette's luminance.
IUIExtensionPlugin Controls inserted at a named UI placement (Mixer, TrackEditor, Settings, Overlay).

Quick start

using SoundBoard.PluginApi;

public sealed class MyThemePlugin : IThemePlugin
{
    public string Id => "com.example.my-theme";
    public string Name => "My Theme";
    public string Version => "1.0.0";
    public string Author => "Me";
    public string Description => "A single warm palette.";

    public void Initialize(IPluginContext context) { }
    public void Shutdown() { }

    public IEnumerable<ThemePalette> GetPalettes() => new[]
    {
        new ThemePalette("warm", "Warm",
            new[] { "avares://MyThemePlugin/Themes/Warm.axaml" }),
    };
}

Each plugin ships a plugin.json manifest (publisher, id, name, version, author, description, entryDll, isTheme) at its package root. Users install by dragging the plugin's .zip onto Settings → Plugin Manager, or by extracting its folder under …/Plugins/<id>/ (or …/Themes/<id>/ for themes).

Documentation

  • Plugin developer guide — full walkthrough: csproj setup, manifest, the Stream-handoff codec contract, sidechain, bridges, and packaging.
  • Plugin catalog — the first-party codec / sampler / bridge / theme plugins, each in its own sibling repo.

Licensing

The host application is GPL-3.0-only, but a written exception lets any plugin that interacts with the host only through the interfaces in this SDK be licensed however its author wants. Build your plugin under MIT, Apache, a commercial license — whatever you like.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-beta.1 913 5/27/2026