Skip to content
SPECIFICTION
Get listed

Second Music System

github.com

WindowsmacOSLinuxSelf-hosted
Visit github.com
Spec score 7.4 #20 of 24 in Game Audio Middleware

Spec sheet

Product
Second Music System is a middleware library for dynamic music that is designed to integrate into existing game engines.Read 8 Oct 2026 · github.com
License
The project is dual licensed under Apache License 2.0 or MIT, at the user's option.Read 8 Oct 2026 · github.com
Adaptive soundtracks
Compositions can shift and branch in response to game conditions and events, with little programmer or scripter support.Read 4 Oct 2026 · github.com
Audio handling
SMS handles fades, crossfades, branches, and multithreaded loading so the engine integration mainly provides the required plumbing.Read 8 Oct 2026 · github.com
Audio limitations
It cannot do complicated filters or real-time synthesis such as speed or tempo changes, and pausing and resuming a flow is not yet supported.Read 4 Oct 2026 · github.com
Bindings
The library is written in Rust and provides a C binding for nearly all features; a C++ binding is planned but not yet written.Read 4 Oct 2026 · github.com
Composer controls
Compositions can shift and branch in response to game conditions and events, using the SMS soundtrack language.Read 8 Oct 2026 · github.com
Composer workflow
Composers currently create soundtracks directly in SMS's soundtrack language, which requires some programming.Read 4 Oct 2026 · github.com
Dependency license
By default it uses libsoxr, which is LGPL 2.1 or later, and static linking requires an LGPL-compatible overall license situation.Read 8 Oct 2026 · github.com
Development status
The project describes itself as early in development, with sparse documentation and tooling and an API and soundtrack format that may change.Read 8 Oct 2026 · github.com
Dynamic playback
It supports crossfading related sounds, branching between movements, overlapping independent flows, and weaving sounds of varying lengths and repetitions.Read 8 Oct 2026 · github.com
Engine integration
The engine supplies music-file loading, accepts samples from the SMS Engine, and sends commands to load soundtracks and control flows and mixes.Read 8 Oct 2026 · github.com
Language bindings
It is written in Rust and has a nearly complete C binding; a C++ binding is planned but not yet written.Read 8 Oct 2026 · github.com
Limitations
It cannot apply complicated filters or realtime synthesis such as speed and tempo changes, and pausing and resuming a flow is not yet supported.Read 8 Oct 2026 · github.com
Loading behavior
Flows begin playback after required components are loaded; precaching can keep flows ready for time-sensitive playback.Read 4 Oct 2026 · github.com
Maturity
The project describes itself as early in development, with sparse documentation and tooling, performance that could improve, and an API and soundtrack format that may change.Read 4 Oct 2026 · github.com
Memory
Sounds are preloaded and fully decoded by default, while individual sounds can instead be streamed to save memory.Read 8 Oct 2026 · github.com
Memory and streaming
Sounds are preloaded and decoded in full by default, while individual sounds can instead be streamed to save memory.Read 4 Oct 2026 · github.com
Mixing features
It supports crossfading related sounds, branching between movements, overlapping independent flows, and combining sounds of varying lengths and repetitions.Read 4 Oct 2026 · github.com
Preloading
Flows can be precached so they are ready when playback is needed, since playback waits for necessary components to load.Read 8 Oct 2026 · github.com
Realtime and recording
The library is designed for realtime playback and offline recording, with foreground loading recommended for consistent recording results.Read 8 Oct 2026 · github.com
Recording
The library supports offline recording as well as real-time playback, and recommends foreground loading for consistent recordings.Read 4 Oct 2026 · github.com
Release status
The releases page lists v0.1.0-6 as a pre-release test release for a GitHub Actions workflow.Read 4 Oct 2026 · github.com
Threading
Loading runs in background threads and can use multiple hardware threads; streamed sounds are currently decoded in one thread.Read 4 Oct 2026 · github.com

Where Specifiction places it

Alternatives to Second Music SystemAll alternatives →