Freedom251 › Game Audio Middleware
Second Music System

What Second Music System is
Second Music System is an open-source middleware library for adding adaptive music to games through existing game engines. Its compositions can respond to game conditions and events by changing direction or moving between sections. The library supports crossfades between related sounds, overlapping independent flows, and combinations of sounds with different lengths and repetition patterns. SMS handles fades, transitions, and background loading; the game engine supplies a music-file loading hook, routes samples to its audio output, and sends commands for loading soundtracks and managing playback and mixes.
The library is written in Rust and offers a C binding for nearly all features. Composers currently author soundtracks in SMS's own language, which requires some programming; a C++ binding is planned but not yet available. Playback can run in real time or be recorded offline. Sounds are fully loaded and decoded by default, though individual sounds can be streamed to reduce memory use. Playback waits for needed components to load, and flows can be precached for time-sensitive starts. SMS is available for Linux, macOS, and Windows, and is in early development, with sparse documentation and tooling and an API and soundtrack format that may change.
Who it suits
SMS suits game developers who want music to adapt to game events and can connect a middleware library to an existing engine. It can also suit composers comfortable authoring in a language that requires some programming.
What it does well
- Branches and crossfades music in response to game events.
- Supports real-time playback and offline recording.
- Streams individual sounds to save memory.
- Background loading can use multiple hardware threads.
- Available for Linux, macOS, and Windows.
What to know first
- Soundtrack authoring requires some programming.
- No C++ binding is available yet.
- Complicated filters and real-time speed or tempo changes are unsupported.
- Pausing and resuming a flow is not supported.
Limits
Sounds are fully preloaded and decoded by default, though individual sounds can be streamed. The project is early in development, with sparse documentation and tooling, and its API and soundtrack format may change.
Getting started
- Open the project's GitHub page.
- Choose a Linux, macOS, or Windows setup.
- Integrate the library with a game engine that can load music files, route samples, and send playback commands.
- Create a soundtrack in SMS's soundtrack language.
- Load a soundtrack and control its flows and mixes through the engine.
Verdict
Choose Second Music System if you need adaptive game music, streaming options, and both real-time playback and offline recording. Look elsewhere if you need C++ bindings, complex filtering, tempo changes, or pause-and-resume controls; the project is also early in development.
Questions
Is Second Music System free?
Yes. It is free and open source.
Which platforms does it support?
The listed platforms are Linux, macOS, Windows, and self-hosted use.
What languages can developers use to integrate it?
The library is written in Rust and has a C binding for nearly all features. A C++ binding is planned but not yet written.
Can it record music offline?
Yes. It supports offline recording as well as real-time playback; foreground loading is recommended for consistent recordings.
What license does it use?
The project is available under either Apache License 2.0 or MIT License. Its default libsoxr dependency is LGPL 2.1 or later, with separate considerations for static linking.
Facts from Second Music System's own pages
- Adaptive soundtracks
- Compositions can shift and branch in response to game conditions and events, with little programmer or scripter support. · github.com, 4 Oct 2026
- Audio handling
- SMS handles fades, crossfades, branches, and multithreaded loading so the engine integration mainly provides the required plumbing. · github.com, 8 Oct 2026
- 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. · github.com, 4 Oct 2026
- 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. · github.com, 4 Oct 2026
- Composer controls
- Compositions can shift and branch in response to game conditions and events, using the SMS soundtrack language. · github.com, 8 Oct 2026
- Composer workflow
- Composers currently create soundtracks directly in SMS's soundtrack language, which requires some programming. · github.com, 4 Oct 2026
- Dependency license
- By default it uses libsoxr, which is LGPL 2.1 or later, and static linking requires an LGPL-compatible overall license situation. · github.com, 8 Oct 2026
- Development status
- The project describes itself as early in development, with sparse documentation and tooling and an API and soundtrack format that may change. · github.com, 8 Oct 2026
- Dynamic playback
- It supports crossfading related sounds, branching between movements, overlapping independent flows, and weaving sounds of varying lengths and repetitions. · github.com, 8 Oct 2026
- 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. · github.com, 8 Oct 2026
- Language bindings
- It is written in Rust and has a nearly complete C binding; a C++ binding is planned but not yet written. · github.com, 8 Oct 2026
- License
- The project is dual licensed under Apache License 2.0 or MIT, at the user's option. · github.com, 8 Oct 2026
- 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. · github.com, 8 Oct 2026
- Loading behavior
- Flows begin playback after required components are loaded; precaching can keep flows ready for time-sensitive playback. · github.com, 4 Oct 2026
- 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. · github.com, 4 Oct 2026
- Memory
- Sounds are preloaded and fully decoded by default, while individual sounds can instead be streamed to save memory. · github.com, 8 Oct 2026
- Memory and streaming
- Sounds are preloaded and decoded in full by default, while individual sounds can instead be streamed to save memory. · github.com, 4 Oct 2026
- Mixing features
- It supports crossfading related sounds, branching between movements, overlapping independent flows, and combining sounds of varying lengths and repetitions. · github.com, 4 Oct 2026
- Preloading
- Flows can be precached so they are ready when playback is needed, since playback waits for necessary components to load. · github.com, 8 Oct 2026
- Product
- Second Music System is a middleware library for dynamic music that is designed to integrate into existing game engines. · github.com, 8 Oct 2026
- Realtime and recording
- The library is designed for realtime playback and offline recording, with foreground loading recommended for consistent recording results. · github.com, 8 Oct 2026
- Recording
- The library supports offline recording as well as real-time playback, and recommends foreground loading for consistent recordings. · github.com, 4 Oct 2026
- Release status
- The releases page lists v0.1.0-6 as a pre-release test release for a GitHub Actions workflow. · github.com, 4 Oct 2026
- Threading
- Loading runs in background threads and can use multiple hardware threads; streamed sounds are currently decoded in one thread. · github.com, 4 Oct 2026
Where Second Music System stands on Freedom251
- Game Audio Middleware#16 of 24