EVERYTHING XIAOMI
Get listed

Second Music System

Second Music System (SMS) is an open-source middleware library for dynamic game music, designed to work with existing game engines.

Place
#20 of 23
Score
5.8
Second Music System's website

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

All alternatives
  1. 1Unity Version Control logo

    Unity Version Control

    Free planWebAPILinuxmacOS
    8.1Free plan
  2. 2

    Audiokinetic Wwise

    Free planAndroidiOSLinuxmacOS
    7.4$8,000, paid once
  3. 3Amplitude Audio SDK logo

    Amplitude Audio SDK

    Free planAndroidiOSLinuxmacOS
    6.8Free plan
  4. 4Elias logo

    Elias

    AndroidiOSmacOSWindows
    6.8€5,850, paid once
  5. 5

    irrKlang

    Free planLinuxmacOSWindows
    6.8€65, paid once
  6. 6

    psai

    Free planAndroidiOSAPILinux
    6.8Free plan