Second Music System
github.com
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
- Game Audio Middleware#20 of 247.4