package thb.jeanluc.adventure.io;

/** Raw audio operations — the only part that touches sound hardware. */
public interface MusicBackend {

    /** Fade the current track out, then start {@code track} (looping) and fade in to {@code gainDb}. */
    void fadeTo(String track, float gainDb);

    /** Fade the current track out and stop. */
    void fadeOut();

    /** Set the playback volume immediately. */
    void setGainDb(float gainDb);

    /** Stop playback and release resources. */
    void shutdown();
}
