@@ -0,0 +1,1955 @@
+package de.mycrobase.ssim.ed.app;%0A%0Aimport com.jme3.app.Application;%0Aimport com.jme3.app.state.AppStateManager;%0Aimport com.jme3.audio.AudioNode;%0A%0Aimport de.mycrobase.ssim.ed.GameMode;%0Aimport de.mycrobase.ssim.ed.GameModeListener;%0A%0Apublic class MenuMusicAppState extends BasicAppState implements GameModeListener %7B%0A    %0A    private static final float UpdateInterval = 0.1f; // in seconds%0A    %0A    // exists only while AppState is attached%0A    private AudioNode menuMusic;%0A    %0A    public MenuMusicAppState() %7B%0A        super(UpdateInterval);%0A    %7D%0A    %0A    @Override%0A    public void initialize(AppStateManager stateManager, Application baseApp) %7B%0A        super.initialize(stateManager, baseApp);%0A        %0A        menuMusic = new AudioNode(getApp().getAssetManager(), %22audio/09.AlisterFlint-UnderTheSurface.ogg%22, true);%0A        menuMusic.setPositional(false);%0A        //menuMusic.setLooping(true);%0A        menuMusic.setTimeOffset(5f);%0A        getApp().getRootNode().attachChild(menuMusic);%0A        %0A        // manual call to avoid code duplication%0A        gameModeChanged(null, getApp().getCurrentMode());%0A        %0A        getApp().addGameModeListener(this);%0A    %7D%0A    %0A    @Override%0A    protected void intervalUpdate(float dt) %7B%0A        // adjust volume%0A        menuMusic.setVolume(getApp().getSettingsManager().getFloat(%22sound.music.volume%22));%0A        %0A        if(menuMusic.getStatus() == AudioNode.Status.Stopped) %7B%0A            // play again! (needed since menu music is streamed)%0A            menuMusic.play();%0A        %7D%0A    %7D%0A    %0A    @Override%0A    public void cleanup() %7B%0A        super.cleanup();%0A        %0A        menuMusic.stop();%0A        getApp().getRootNode().detachChild(menuMusic);%0A        %0A        menuMusic = null;%0A    %7D%0A    %0A    @Override%0A    public void gameModeChanged(GameMode oldMode, GameMode newMode) %7B%0A        if(newMode == GameMode.Stopped) %7B%0A            menuMusic.play();%0A        %7D else %7B%0A            menuMusic.stop();%0A        %7D%0A    %7D%0A%7D%0A

Add MenuMusicAppState that manages the menu soundtrack, without sound file atm