FS.GG.Audio.Core 0.2.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package FS.GG.Audio.Core --version 0.2.0
                    
NuGet\Install-Package FS.GG.Audio.Core -Version 0.2.0
                    
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="FS.GG.Audio.Core" Version="0.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FS.GG.Audio.Core" Version="0.2.0" />
                    
Directory.Packages.props
<PackageReference Include="FS.GG.Audio.Core" />
                    
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 FS.GG.Audio.Core --version 0.2.0
                    
#r "nuget: FS.GG.Audio.Core, 0.2.0"
                    
#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 FS.GG.Audio.Core@0.2.0
                    
#: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=FS.GG.Audio.Core&version=0.2.0
                    
Install as a Cake Addin
#tool nuget:?package=FS.GG.Audio.Core&version=0.2.0
                    
Install as a Cake Tool

FS.GG.Audio.Core

The pure request vocabulary at the bottom of the FS.GG.Audio component. A product's update emits AudioEffect values — data only, no device handles, no effectful closures — and a record-only interpreter folds a batch into AudioEvidence. BCL-only: FSharp.Core is the single dependency.

Playing those values through a real device is the job of FS.GG.Audio.Host; mixing them is FS.GG.Audio.Engine.

Install

dotnet add package FS.GG.Audio.Core

Quick start

open FS.GG.Audio.Core

// A pure update emits requests; it never plays sound.
let update model =
    model, [ Audio.playMusic (TrackId "bgm") true
             Audio.playSfx (SoundId "jump") 0.8
             Audio.setBusVolume Sfx 0.5 ]

// The record-only interpreter turns a batch into evidence.
let evidence = Audio.interpret (snd (update ()))
// evidence.Requested : AudioEffect list, in dispatch order

Surface

  • SoundId / TrackId — opaque, product-owned asset ids. The library never owns the id→asset map.
  • BusMaster | Music | Sfx | Ui | Ambient. Master scales every other bus.
  • AudioEffectPlaySfx, PlayMusic, StopMusic, SetMasterVolume, PlaySfx3D, SetBusVolume, Duck.
  • Audio.playSfx / playMusic / stopMusic / setMasterVolume / playSfx3D / setBusVolume / duck — smart constructors that clamp carried gains into [0.0, 1.0] at the boundary.
  • Audio.record / Audio.interpret — the pure interpreter producing AudioEvidence.

Every function is total: volumes clamp rather than throw (nan clamps to minVolume), and no call opens a device or blocks.

Determinism

The recorded evidence is the proof. Because nothing here touches hardware, audio behaviour is asserted headless — identical inputs produce identical AudioEvidence.

License

MIT — see LICENSE.

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 (7)

Showing the top 5 NuGet packages that depend on FS.GG.Audio.Core:

Package Downloads
FS.GG.UI.SkiaViewer

Skia viewer host workflow contracts for FS.GG.UI V3 products.

FS.GG.Audio.Host

Host-side playback for FS.GG.Audio.Core — a pluggable IAudioBackend with a deterministic Null/record backend and a real OpenAL (Silk.NET) device backend that degrades to Null when no device is present. Redistributes the OpenAL Soft native library (LGPL-2.0-or-later) as a separate, dynamically-linked, replaceable shared library — see THIRD-PARTY-NOTICES.md in this package.

FS.GG.UI.Controls.Elmish

Elmish command, subscription, and program adapters for Controls and KeyboardInput runtime effects.

FS.GG.UI.Elmish

Elmish adapter contracts for FS.GG.UI V3 products.

FS.GG.UI.Symbology.Render

Thin headless Scene to PNG bridge for the symbology design loop. Wraps the public SkiaViewer ReferenceRendering path via a SceneCodec round-trip and fails loud on any non-passing verdict.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.0 0 7/21/2026
0.3.0 946 7/16/2026
0.2.0 2,121 7/11/2026
0.1.0 4,218 7/9/2026
0.1.0-preview.1 87 7/7/2026