Second Music System
Second Music System (SMS) is an open-source middleware library for dynamic game music, designed to work with existing game engines.
What Second Music System is
Second Music System (SMS) is an open-source middleware library for dynamic game music, designed to work with existing game engines. Compositions can change or branch in response to game conditions and events. SMS supports crossfades between related sounds, transitions between movements, overlapping independent flows, and combinations of sounds with different lengths and repetition patterns. The engine supplies a music-file loading hook, passes audio samples to its output, and sends commands for soundtracks, flows, and mixes. Written in Rust, SMS has a C binding for nearly all features; a C++ binding is planned but not yet written. Composers currently build soundtracks in SMS's own language, which requires some programming. Playback waits for required components to load, while precaching can prepare flows ahead of time. Sounds are normally preloaded and decoded in full, though individual sounds can be streamed to save memory. SMS supports real-time playback and offline recording. It is free and available for Windows, macOS, Linux, and self-hosted use.
Good
- Free and open source
- Music can react to game conditions and events
- Supports crossfades, branches, and overlapping flows
- Individual sounds can be streamed to save memory
- Supports real-time playback and offline recording
Watch out
- Composer workflow requires some programming
- No C++ binding yet
- Cannot apply complicated filters or change tempo
- Flows cannot yet be paused and resumed
Who it suits
SMS may suit game developers and composers building adaptive soundtracks for an existing engine, especially those comfortable working with its soundtrack language. It is available to teams using Windows, macOS, or Linux.
Verdict
SMS provides adaptive music playback and mixing for game engines, with streaming and offline recording among its supported capabilities. Its early development status, programming-oriented composer workflow, and stated audio limitations are important considerations.
The facts
Each one read from Second Music System's own pages, with the date it was checked.
What it does
- Adaptive soundtracks
- Compositions can shift and branch in response to game conditions and events, with little programmer or scripter support.checked 4 Oct 2001
- Audio handling
- SMS handles fades, crossfades, branches, and multithreaded loading so the engine integration mainly provides the required plumbing.checked 8 Oct 2001
- 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.checked 4 Oct 2001
- 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.checked 4 Oct 2001
- Composer controls
- Compositions can shift and branch in response to game conditions and events, using the SMS soundtrack language.checked 8 Oct 2001
- Composer workflow
- Composers currently create soundtracks directly in SMS's soundtrack language, which requires some programming.checked 4 Oct 2001
- Dependency license
- By default it uses libsoxr, which is LGPL 2.1 or later, and static linking requires an LGPL-compatible overall license situation.checked 8 Oct 2001
- Development status
- The project describes itself as early in development, with sparse documentation and tooling and an API and soundtrack format that may change.checked 8 Oct 2001
- Dynamic playback
- It supports crossfading related sounds, branching between movements, overlapping independent flows, and weaving sounds of varying lengths and repetitions.checked 8 Oct 2001
- 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.checked 8 Oct 2001
- Language bindings
- It is written in Rust and has a nearly complete C binding; a C++ binding is planned but not yet written.checked 8 Oct 2001
- License
- The project is dual licensed under Apache License 2.0 or MIT, at the user's option.checked 8 Oct 2001
- 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.checked 8 Oct 2001
- Loading behavior
- Flows begin playback after required components are loaded; precaching can keep flows ready for time-sensitive playback.checked 4 Oct 2001
- 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.checked 4 Oct 2001
- Memory
- Sounds are preloaded and fully decoded by default, while individual sounds can instead be streamed to save memory.checked 8 Oct 2001
- Memory and streaming
- Sounds are preloaded and decoded in full by default, while individual sounds can instead be streamed to save memory.checked 4 Oct 2001
- Mixing features
- It supports crossfading related sounds, branching between movements, overlapping independent flows, and combining sounds of varying lengths and repetitions.checked 4 Oct 2001
- Preloading
- Flows can be precached so they are ready when playback is needed, since playback waits for necessary components to load.checked 8 Oct 2001
- Product
- Second Music System is a middleware library for dynamic music that is designed to integrate into existing game engines.checked 8 Oct 2001
- Realtime and recording
- The library is designed for realtime playback and offline recording, with foreground loading recommended for consistent recording results.checked 8 Oct 2001
- Recording
- The library supports offline recording as well as real-time playback, and recommends foreground loading for consistent recordings.checked 4 Oct 2001
- Release status
- The releases page lists v0.1.0-6 as a pre-release test release for a GitHub Actions workflow.checked 4 Oct 2001
- Threading
- Loading runs in background threads and can use multiple hardware threads; streamed sounds are currently decoded in one thread.checked 4 Oct 2001
Alternatives to Second Music System
- 1

Unity Version Control
Free planWebAPILinuxmacOS8.1Free plan - 2
Audiokinetic Wwise
Free planAndroidiOSLinuxmacOS7.4$8,000, paid once - 3

Amplitude Audio SDK
Free planAndroidiOSLinuxmacOS6.8Free plan - 4

Elias
AndroidiOSmacOSWindows6.8€5,850, paid once - 5
irrKlang
Free planLinuxmacOSWindows6.8€65, paid once - 6
psai
Free planAndroidiOSAPILinux6.8Free plan
