Index: /code/branches/presentationHS13/data/defaultConfig/keybindings.ini
===================================================================
--- /code/branches/presentationHS13/data/defaultConfig/keybindings.ini	(revision 9917)
+++ /code/branches/presentationHS13/data/defaultConfig/keybindings.ini	(revision 9918)
@@ -58,5 +58,5 @@
 KeyLeftWindows=
 KeyLessThan=
-KeyM=
+KeyM="WorldAmbientSound nextsong"
 KeyMail=
 KeyMediaSelect=
Index: /code/branches/presentationHS13/data/levels/Spacerace2.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/Spacerace2.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/Spacerace2.oxw	(revision 9918)
@@ -14,4 +14,5 @@
 
 ?>
+
 
 <?lua
@@ -107,5 +108,16 @@
 
     <SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
-
+	
+	<!-- SOUNDS & MUSIC -->
+    <WorldSound name="scoreSound" position="-200,0,0" source="sounds/ReadyGo.ogg" >
+      <events>
+        <play>
+          <EventListener event="start" />
+        </play>
+      </events>
+    </WorldSound>
+    <DistanceTrigger name="start" position="-200,0,0"  target="Pawn" distance=100 stayActive="true" delay=0.5 />
+    
+    <WorldAmbientSound source="Ganymede.ogg" looping="true" playOnLoad="true" />
 
     <!-- ------------------Planet----------------- -->
Index: /code/branches/presentationHS13/data/levels/asteroidField.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/asteroidField.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/asteroidField.oxw	(revision 9918)
@@ -11,4 +11,5 @@
   include("templates/lodInformation.oxt")
 ?>
+<WorldAmbientSound source="Asteroid_rocks.ogg" looping="true" playOnLoad="true" />
 
 <?lua
Index: /code/branches/presentationHS13/data/levels/asteroids.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/asteroids.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/asteroids.oxw	(revision 9918)
@@ -5,4 +5,5 @@
  screenshot = "asteroids.png"
 />
+<WorldAmbientSound source="Asteroid_rocks.ogg" looping="true" playOnLoad="true" />
 
 <?lua
Index: /code/branches/presentationHS13/data/levels/dynamicMatch.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/dynamicMatch.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/dynamicMatch.oxw	(revision 9918)
@@ -5,4 +5,5 @@
  screenshot = "dynamicMatch.png"
 />
+<WorldAmbientSound source="Mars.ogg" looping="true" playOnLoad="true" />
 
 <?lua
Index: /code/branches/presentationHS13/data/levels/lastManStanding.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/lastManStanding.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/lastManStanding.oxw	(revision 9918)
@@ -32,4 +32,6 @@
       include("includes/pickups.oxi")
     ?>
+    
+    <WorldAmbientSound source="Nebula_metal.ogg" looping="true" playOnLoad="true" />
 
 <!----- Spawnpoints
Index: /code/branches/presentationHS13/data/levels/lastTeamStanding.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/lastTeamStanding.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/lastTeamStanding.oxw	(revision 9918)
@@ -33,4 +33,6 @@
       include("includes/pickups.oxi")
     ?>
+    
+    <WorldAmbientSound source="Nebula_metal.ogg" looping="true" playOnLoad="true" />
 
 <Bot />
Index: /code/branches/presentationHS13/data/levels/lastTeamStandingII.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/lastTeamStandingII.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/lastTeamStandingII.oxw	(revision 9918)
@@ -27,4 +27,6 @@
     skybox       = "Orxonox/skyBoxBasic"
   >
+  <WorldAmbientSound source="Nebula_metal.ogg" looping="true" playOnLoad="true" />
+  
 <!-- TODO:
 1. make collisionshapes bulletproof: -> attach movable entity with dynamic collisionshape within a static collisionshape 
Index: /code/branches/presentationHS13/data/levels/maxim.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/maxim.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/maxim.oxw	(revision 9918)
@@ -25,4 +25,6 @@
   </templates>
   <?lua include("includes/notifications.oxi") ?>
+  
+  <WorldAmbientSound source="Nebula_metal.ogg" looping="true" playOnLoad="true" />
 
   <NotificationQueueCEGUI
Index: /code/branches/presentationHS13/data/levels/pirateAttack.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/pirateAttack.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/pirateAttack.oxw	(revision 9918)
@@ -25,4 +25,6 @@
     dofile("includes/CuboidSpaceStation.lua")
 ?>
+
+<WorldAmbientSound source="Mars.ogg" looping="true" playOnLoad="true" />
     
 <Level
Index: /code/branches/presentationHS13/data/levels/pong.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/pong.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/pong.oxw	(revision 9918)
@@ -34,5 +34,8 @@
 
 <Template name=pongball>
-  <PongBall>
+  <PongBall 
+   defScoreSound = "sounds/PlayerWinScore_cut.ogg"
+   defBatSound = "sounds/Button.ogg"
+   defBoundarySound = "sounds/Button.ogg">
     <attached>
       <Model mesh="sphere.mesh" scale=2 />
Index: /code/branches/presentationHS13/data/levels/spaceRace.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/spaceRace.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/spaceRace.oxw	(revision 9918)
@@ -29,4 +29,17 @@
     skybox       = "Orxonox/skyBoxMoreNebula"
   >
+  
+  <!-- SOUNDS & MUSIC -->
+    <WorldSound name="scoreSound" position="0,-2100,0" source="sounds/ReadyGo.ogg" >
+      <events>
+        <play>
+          <EventListener event="start" />
+        </play>
+      </events>
+    </WorldSound>
+    <DistanceTrigger name="start" position="0,-2100,0"  target="Pawn" distance=100 stayActive="true" delay=0.5 />
+  
+    <WorldAmbientSound source="Ganymede.ogg" looping="true" playOnLoad="true" />
+  
 
     <?lua math.randomseed(98) ?>
@@ -463,4 +476,6 @@
       </controller>
     </SpaceShip>
+    
+    
 
   </Scene>
Index: /code/branches/presentationHS13/data/levels/surfaceRace.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/surfaceRace.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/surfaceRace.oxw	(revision 9918)
@@ -10,4 +10,5 @@
  tags = "gametype"
 />
+
 
 <?lua
@@ -445,4 +446,15 @@
     ?>
     <?lua end ?>
+    
+    <!-- SOUNDS & MUSIC -->
+    <WorldSound name="scoreSound" position="0,8050,0" source="sounds/ReadyGo.ogg" >
+      <events>
+        <play>
+          <EventListener event="start" />
+        </play>
+      </events>
+    </WorldSound>
+    <DistanceTrigger name="start" position="0,8050,0"  target="Pawn" distance=100 stayActive="true" delay=0.5 />
+    <WorldAmbientSound source="Ganymede.ogg" looping="true" playOnLoad="true" />
 
   </Scene>
Index: /code/branches/presentationHS13/data/levels/teamBaseMatch.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/teamBaseMatch.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/teamBaseMatch.oxw	(revision 9918)
@@ -19,4 +19,6 @@
 >
 
+<WorldAmbientSound source="Jupiter.ogg" looping="true" playOnLoad="true" />
+
   <templates>
     <Template link=lodtemplate_default />
Index: /code/branches/presentationHS13/data/levels/teamDeathMatch.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/teamDeathMatch.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/teamDeathMatch.oxw	(revision 9918)
@@ -22,4 +22,6 @@
   </templates>
   <?lua include("includes/notifications.oxi") ?>
+  
+  <WorldAmbientSound source="Jupiter.ogg" looping="true" playOnLoad="true" />
 
   <Scene
Index: /code/branches/presentationHS13/data/levels/templates/spaceshipAssff.oxt
===================================================================
--- /code/branches/presentationHS13/data/levels/templates/spaceshipAssff.oxt	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/templates/spaceshipAssff.oxt	(revision 9918)
@@ -37,4 +37,6 @@
    linearDamping     = 0.7
    angularDamping    = 0.9999999
+
+   explosionSound = "sounds/Explosion2.ogg"
   >
     <engines>
@@ -82,5 +84,5 @@
    defEngineSndNormal = "sounds/Engine_low.ogg"
    defEngineSndBoost = "sounds/Engine_high.ogg"
-
+   
    accelerationfront     = 500
    accelerationbrake     = 500
Index: /code/branches/presentationHS13/data/levels/underAttack.oxw
===================================================================
--- /code/branches/presentationHS13/data/levels/underAttack.oxw	(revision 9917)
+++ /code/branches/presentationHS13/data/levels/underAttack.oxw	(revision 9918)
@@ -20,4 +20,5 @@
   </templates>
   <?lua include("includes/notifications.oxi") ?>
+  <WorldAmbientSound source="Jupiter.ogg" looping="true" playOnLoad="true" />
 
   <Scene
Index: /code/branches/presentationHS13/src/modules/pong/Pong.cc
===================================================================
--- /code/branches/presentationHS13/src/modules/pong/Pong.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/modules/pong/Pong.cc	(revision 9918)
@@ -47,4 +47,5 @@
 #include "PongBot.h"
 #include "PongAI.h"
+
 namespace orxonox
 {
@@ -117,4 +118,5 @@
             }
         }
+
     }
 
Index: /code/branches/presentationHS13/src/modules/pong/PongBall.cc
===================================================================
--- /code/branches/presentationHS13/src/modules/pong/PongBall.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/modules/pong/PongBall.cc	(revision 9918)
@@ -40,4 +40,7 @@
 
 #include "PongBat.h"
+
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
 
 namespace orxonox
@@ -66,4 +69,21 @@
 
         this->registerVariables();
+
+        //initialize sound
+        if (GameMode::isMaster())
+             {
+                 this->defScoreSound_ = new WorldSound(this->getContext());
+                 this->defScoreSound_->setVolume(1.0f);
+                 this->defBatSound_ = new WorldSound(this->getContext());
+                 this->defBatSound_->setVolume(0.4f);
+                 this->defBoundarySound_ = new WorldSound(this->getContext());
+                 this->defBoundarySound_->setVolume(0.5f);
+             }
+             else
+             {
+                 this->defScoreSound_ = 0;
+                 this->defBatSound_ = 0;
+                 this->defBoundarySound_ = 0;
+             }
     }
 
@@ -81,4 +101,13 @@
             delete[] this->batID_;
         }
+    }
+
+    //xml port for loading sounds
+    void PongBall::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(PongBall, XMLPort, xmlelement, mode);
+        XMLPortParam(PongBall, "defScoreSound",  setDefScoreSound,  getDefScoreSound,  xmlelement, mode);
+        XMLPortParam(PongBall, "defBatSound",  setDefBatSound,  getDefBatSound,  xmlelement, mode);
+        XMLPortParam(PongBall, "defBoundarySound",  setDefBoundarySound,  getDefBoundarySound,  xmlelement, mode);
     }
 
@@ -117,5 +146,6 @@
         if (position.z > this->fieldHeight_ / 2 || position.z < -this->fieldHeight_ / 2)
         {
-            // Its velocity in z-direction is inverted (i.e. it bounces off).
+            defBoundarySound_->play(); //play boundary sound
+        	// Its velocity in z-direction is inverted (i.e. it bounces off).
             velocity.z = -velocity.z;
             // And its position is set as to not overstep the boundary it has just crossed.
@@ -142,5 +172,6 @@
                     if (fabs(distance) <= 1) // If the bat is there to parry.
                     {
-                        // Set the ball to be exactly at the boundary.
+                        defBatSound_->play(); //play bat sound
+                    	// Set the ball to be exactly at the boundary.
                         position.x = this->fieldWidth_ / 2;
                         // Invert its velocity in x-direction (i.e. it bounces off).
@@ -155,4 +186,5 @@
                     else if (GameMode::isMaster() && position.x > this->fieldWidth_ / 2 * (1 + this->relMercyOffset_))
                     {
+                    	defScoreSound_->play();//play score sound
                         if (this->getGametype() && this->bat_[0])
                         {
@@ -169,5 +201,6 @@
                     if (fabs(distance) <= 1) // If the bat is there to parry.
                     {
-                        // Set the ball to be exactly at the boundary.
+                        defBatSound_->play(); //play bat sound
+                    	// Set the ball to be exactly at the boundary.
                         position.x = -this->fieldWidth_ / 2;
                         // Invert its velocity in x-direction (i.e. it bounces off).
@@ -182,4 +215,5 @@
                     else if (GameMode::isMaster() && position.x < -this->fieldWidth_ / 2 * (1 + this->relMercyOffset_))
                     {
+                    	defScoreSound_->play();//play score sound
                         if (this->getGametype() && this->bat_[1])
                         {
@@ -262,3 +296,54 @@
             this->bat_[1] = orxonox_cast<PongBat*>(Synchronisable::getSynchronisable(this->batID_[1]));
     }
+
+    void PongBall::setDefScoreSound(const std::string &pongSound)
+    {
+        if( defScoreSound_ )
+            defScoreSound_->setSource(pongSound);
+        else
+            assert(0); // This should never happen, because soundpointer is only available on master
+    }
+
+    const std::string& PongBall::getDefScoreSound()
+    {
+        if( defScoreSound_ )
+            return defScoreSound_->getSource();
+        else
+            assert(0);
+        return BLANKSTRING;
+    }
+
+    void PongBall::setDefBatSound(const std::string &pongSound)
+    {
+        if( defBatSound_ )
+            defBatSound_->setSource(pongSound);
+        else
+            assert(0); // This should never happen, because soundpointer is only available on master
+    }
+
+    const std::string& PongBall::getDefBatSound()
+    {
+        if( defBatSound_ )
+            return defBatSound_->getSource();
+        else
+            assert(0);
+        return BLANKSTRING;
+    }
+
+    void PongBall::setDefBoundarySound(const std::string &pongSound)
+    {
+        if( defBoundarySound_ )
+            defBoundarySound_->setSource(pongSound);
+        else
+            assert(0); // This should never happen, because soundpointer is only available on master
+    }
+
+    const std::string& PongBall::getDefBoundarySound()
+    {
+        if( defBoundarySound_ )
+            return defBoundarySound_->getSource();
+        else
+            assert(0);
+        return BLANKSTRING;
+    }
 }
Index: /code/branches/presentationHS13/src/modules/pong/PongBall.h
===================================================================
--- /code/branches/presentationHS13/src/modules/pong/PongBall.h	(revision 9917)
+++ /code/branches/presentationHS13/src/modules/pong/PongBall.h	(revision 9918)
@@ -42,4 +42,5 @@
 #include "worldentities/MovableEntity.h"
 
+
 namespace orxonox
 {
@@ -63,4 +64,6 @@
 
             virtual void tick(float dt);
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 
             /**
@@ -123,4 +126,11 @@
             static const float MAX_REL_Z_VELOCITY;
 
+            void setDefScoreSound(const std::string& engineSound);
+            const std::string& getDefScoreSound();
+            void setDefBatSound(const std::string& engineSound);
+            const std::string& getDefBatSound();
+            void setDefBoundarySound(const std::string& engineSound);
+            const std::string& getDefBoundarySound();
+
         private:
             void registerVariables();
@@ -135,4 +145,7 @@
             unsigned int* batID_; //!< The object IDs of the bats, to be able to synchronize them over the network.
             float relMercyOffset_; //!< Offset, that makes the player not loose, when, in all fairness, he would have.
+            WorldSound* defScoreSound_;
+            WorldSound* defBatSound_;
+            WorldSound* defBoundarySound_;
     };
 }
Index: /code/branches/presentationHS13/src/modules/pong/PongScore.cc
===================================================================
--- /code/branches/presentationHS13/src/modules/pong/PongScore.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/modules/pong/PongScore.cc	(revision 9918)
@@ -41,4 +41,5 @@
 
 #include "Pong.h"
+#include "sound/WorldSound.h" /////////////////////////////
 
 namespace orxonox
Index: /code/branches/presentationHS13/src/modules/pong/PongScore.h
===================================================================
--- /code/branches/presentationHS13/src/modules/pong/PongScore.h	(revision 9917)
+++ /code/branches/presentationHS13/src/modules/pong/PongScore.h	(revision 9918)
@@ -124,4 +124,6 @@
             WeakPtr<PlayerInfo> player1_; //!< Store information about left player permanently.
             WeakPtr<PlayerInfo> player2_; //!< Same for the right player. To end the game properly.
+            WorldSound* scoreSound_;
+
     };
 }
Index: /code/branches/presentationHS13/src/orxonox/MoodManager.h
===================================================================
--- /code/branches/presentationHS13/src/orxonox/MoodManager.h	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/MoodManager.h	(revision 9918)
@@ -51,5 +51,5 @@
 
         private:
-            virtual void moodChanged(const std::string& mood) = 0;
+            virtual bool moodChanged(const std::string& mood) = 0;
 
             static void changedMood(const std::string& mood);
Index: /code/branches/presentationHS13/src/orxonox/gamestates/GSMainMenu.cc
===================================================================
--- /code/branches/presentationHS13/src/orxonox/gamestates/GSMainMenu.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/gamestates/GSMainMenu.cc	(revision 9918)
@@ -85,5 +85,5 @@
     {
         if (GameMode::playsSound())
-            this->ambient_->destroy();
+            this->ambient_->destroy(); //CHECK Thilo destroy ?preDestroy()? !!!!!!!
 
         InputManager::getInstance().destroyState("MainMenuHackery");
Index: /code/branches/presentationHS13/src/orxonox/items/MultiStateEngine.cc
===================================================================
--- /code/branches/presentationHS13/src/orxonox/items/MultiStateEngine.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/items/MultiStateEngine.cc	(revision 9918)
@@ -61,4 +61,6 @@
             this->defEngineSndNormal_->setLooping(true);
             this->defEngineSndBoost_->setLooping(true);
+            this->defEngineSndNormal_->setVolume(0.8f);
+            this->defEngineSndBoost_->setVolume(0.5f);
             this->lua_ = new LuaState();
         }
Index: /code/branches/presentationHS13/src/orxonox/sound/AmbientSound.cc
===================================================================
--- /code/branches/presentationHS13/src/orxonox/sound/AmbientSound.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/sound/AmbientSound.cc	(revision 9918)
@@ -79,11 +79,11 @@
     }
 
-    void AmbientSound::setAmbientSource(const std::string& source)
+    bool AmbientSound::setAmbientSource(const std::string& source)
     {
         this->ambientSource_ = source;
-        this->moodChanged(MoodManager::getInstance().getMood());
+        return(this->moodChanged(MoodManager::getInstance().getMood()));
     }
 
-    void AmbientSound::moodChanged(const std::string& mood)
+    bool AmbientSound::moodChanged(const std::string& mood)
     {
         if (GameMode::playsSound())
@@ -95,10 +95,17 @@
                 orxout(user_info) << "Loading ambient sound " << path << "..." << endl; // TODO: make this output internal if we implement sound streaming
                 this->setSource(path);
+
+                // all went fine
+                return true;
             }
             else
             {
                 orxout(internal_warning, context::sound) << this->ambientSource_ << ": Not a valid name! Ambient sound will not change." << endl;
+
+                // everything went southways
+                return false;
             }
         }
+        return false;
     }
 
Index: /code/branches/presentationHS13/src/orxonox/sound/AmbientSound.h
===================================================================
--- /code/branches/presentationHS13/src/orxonox/sound/AmbientSound.h	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/sound/AmbientSound.h	(revision 9918)
@@ -54,5 +54,5 @@
         void pause();
 
-        void setAmbientSource(const std::string& source);
+        bool setAmbientSource(const std::string& source);
         inline const std::string& getAmbientSource() const
             { return this->ambientSource_; }
@@ -68,5 +68,5 @@
         void preDestroy();
         float getRealVolume();
-        void moodChanged(const std::string& mood);
+        bool moodChanged(const std::string& mood);
         inline void ambientSourceChanged()
             { this->setAmbientSource(this->ambientSource_); }
Index: /code/branches/presentationHS13/src/orxonox/sound/BaseSound.cc
===================================================================
--- /code/branches/presentationHS13/src/orxonox/sound/BaseSound.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/sound/BaseSound.cc	(revision 9918)
@@ -47,5 +47,5 @@
     BaseSound::BaseSound()
         : bPooling_(false)
-        , volume_(1.0)
+        , volume_(0.7)
         , bLooping_(false)
         , state_(Stopped)
Index: /code/branches/presentationHS13/src/orxonox/sound/SoundManager.cc
===================================================================
--- /code/branches/presentationHS13/src/orxonox/sound/SoundManager.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/sound/SoundManager.cc	(revision 9918)
@@ -218,5 +218,5 @@
             .description("Defines the overall volume.")
             .callback(this, &SoundManager::checkSoundVolumeValidity);
-        SetConfigValueAlias(volume_[SoundType::Music], "ambientVolume_", 1.0f)
+        SetConfigValueAlias(volume_[SoundType::Music], "ambientVolume_", 0.7f)
             .description("Defines the ambient volume.")
             .callback(this, &SoundManager::checkAmbientVolumeValidity);
Index: /code/branches/presentationHS13/src/orxonox/sound/WorldAmbientSound.cc
===================================================================
--- /code/branches/presentationHS13/src/orxonox/sound/WorldAmbientSound.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/sound/WorldAmbientSound.cc	(revision 9918)
@@ -33,7 +33,12 @@
 #include "core/XMLPort.h"
 #include "AmbientSound.h"
+#include "core/command/ConsoleCommand.h"
+#include <exception>
+
 
 namespace orxonox
 {
+	SetConsoleCommand("WorldAmbientSound", "nextsong",      &WorldAmbientSound::nextSong);
+
     RegisterClass(WorldAmbientSound);
 
@@ -44,6 +49,15 @@
         this->ambientSound_ = new AmbientSound();
         this->registerVariables();
+        soundList_.push_back("Earth.ogg");
+        soundList_.push_back("Jupiter.ogg");
+        soundList_.push_back("Mars.ogg");
+        soundList_.push_back("allgorythm-lift_up.ogg");
+        soundList_.push_back("allgorythm-resonance_blaster.ogg");
+        soundList_.push_back("AlphaCentauri.ogg");
+        soundList_.push_back("Asteroid_rocks.ogg");
+        soundList_.push_back("Ganymede.ogg");
+        soundList_.push_back("luke_grey_-_hypermode.ogg");
+
     }
-
     WorldAmbientSound::~WorldAmbientSound()
     {
@@ -51,4 +65,5 @@
         {
             this->ambientSound_->destroy();
+            WorldAmbientSound::soundList_.clear();
         }
     }
@@ -94,3 +109,17 @@
             this->ambientSound_->stop();
     }
+
+    void WorldAmbientSound::nextSong()
+    {
+
+    	//HACK: Assuption - there is only one WorldAmbientSound in a level and only one level is used.
+    	for (ObjectList<WorldAmbientSound>::iterator it = ObjectList<WorldAmbientSound>::begin();
+    	     it != ObjectList<WorldAmbientSound>::end(); ++it)
+    	{
+    		while(it->ambientSound_->setAmbientSource(WorldAmbientSound::soundList_[WorldAmbientSound::soundNumber_]) == false){
+    			WorldAmbientSound::soundNumber_ = (WorldAmbientSound::soundNumber_ + 1) % WorldAmbientSound::soundList_.size();
+    		}
+    		WorldAmbientSound::soundNumber_ = (WorldAmbientSound::soundNumber_ + 1) % WorldAmbientSound::soundList_.size();
+    	}
+    }
 }
Index: /code/branches/presentationHS13/src/orxonox/sound/WorldAmbientSound.h
===================================================================
--- /code/branches/presentationHS13/src/orxonox/sound/WorldAmbientSound.h	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/sound/WorldAmbientSound.h	(revision 9918)
@@ -34,4 +34,7 @@
 #include "core/BaseObject.h"
 #include "network/synchronisable/Synchronisable.h"
+#include <string>
+#include <vector>
+
 
 namespace orxonox
@@ -54,9 +57,29 @@
             void play();
 
+            //This function changes the current ambient song.
+            //You can call nextSong() active in the level
+            //by pressing the key 'M'.
+            static void nextSong();
+
         private:
             void registerVariables();
 
+            //Vector with the diffrent available level sounds.
+            //The sound names are pushed in the WorldAmbientSound-constructor.
+            static std::vector<std::string> soundList_;
+
+            // This value will be initialized below, don't make this into
+            // a const, since we want to change it in nextSong().
+            static int soundNumber_;
+
+
             AmbientSound* ambientSound_;
     };
+
+    // This is an initialization for the soundnumber variable. Since it is
+    // static, we have to initialize it this way.
+    int WorldAmbientSound::soundNumber_ = 0;
+    std::vector<std::string> WorldAmbientSound::soundList_;
+
 }
 
Index: /code/branches/presentationHS13/src/orxonox/sound/WorldSound.cc
===================================================================
--- /code/branches/presentationHS13/src/orxonox/sound/WorldSound.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/sound/WorldSound.cc	(revision 9918)
@@ -81,5 +81,5 @@
             alSourcef(this->audioSource_, AL_REFERENCE_DISTANCE, refDist);
             // TODO: 500 is very magical here. Derive something better
-            alSourcef(this->audioSource_, AL_MAX_DISTANCE, refDist * 500);
+            alSourcef(this->audioSource_, AL_MAX_DISTANCE, refDist * 20);
         }
         this->tick(0); // update position, orientation and velocity
Index: /code/branches/presentationHS13/src/orxonox/weaponsystem/WeaponMode.cc
===================================================================
--- /code/branches/presentationHS13/src/orxonox/weaponsystem/WeaponMode.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/weaponsystem/WeaponMode.cc	(revision 9918)
@@ -79,4 +79,5 @@
             this->defSndWpnFire_ = new WorldSound(this->getContext());
             this->defSndWpnFire_->setLooping(false);
+            this->defSndWpnFire_->setVolume(0.8f);
             this->bSoundAttached_ = false;
         }
Index: /code/branches/presentationHS13/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- /code/branches/presentationHS13/src/orxonox/worldentities/pawns/Pawn.cc	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/worldentities/pawns/Pawn.cc	(revision 9918)
@@ -46,4 +46,5 @@
 #include "weaponsystem/WeaponPack.h"
 #include "weaponsystem/WeaponSet.h"
+#include "sound/WorldSound.h"
 
 #include "controllers/FormationController.h"
@@ -100,4 +101,14 @@
 
         this->setSyncMode(ObjectDirection::Bidirectional); // needed to synchronise e.g. aimposition
+
+        if (GameMode::isMaster())
+        {
+            this->explosionSound_ = new WorldSound(this->getContext());
+            this->explosionSound_->setVolume(1.0f);
+        }
+        else
+        {
+            this->explosionSound_ = 0;
+        }
     }
 
@@ -109,4 +120,5 @@
                 this->weaponSystem_->destroy();
         }
+
     }
 
@@ -135,6 +147,9 @@
         XMLPortParam(Pawn, "reloadwaittime", setReloadWaitTime, getReloadWaitTime, xmlelement, mode).defaultValues(1.0f);
 
+        XMLPortParam(Pawn, "explosionSound",  setExplosionSound,  getExplosionSound,  xmlelement, mode);
+
         XMLPortParam ( RadarViewable, "radarname", setRadarName, getRadarName, xmlelement, mode );
     }
+
 
     void Pawn::registerVariables()
@@ -290,5 +305,5 @@
     void Pawn::kill()
     {
-        this->damage(this->health_);
+    	this->damage(this->health_);
         this->death();
     }
@@ -314,5 +329,6 @@
         if (this->getGametype() && this->getGametype()->allowPawnDeath(this, this->lastHitOriginator_))
         {
-            // Set bAlive_ to false and wait for PawnManager to do the destruction
+            explosionSound_->play();
+        	// Set bAlive_ to false and wait for PawnManager to do the destruction
             this->bAlive_ = false;
 
@@ -532,4 +548,21 @@
 
 
+    void Pawn::setExplosionSound(const std::string &explosionSound)
+    {
+        if(explosionSound_ )
+            explosionSound_->setSource(explosionSound);
+        else
+            assert(0); // This should never happen, because soundpointer is only available on master
+    }
+
+    const std::string& Pawn::getExplosionSound()
+    {
+        if( explosionSound_ )
+            return explosionSound_->getSource();
+        else
+            assert(0);
+        return BLANKSTRING;
+    }
+
 
 }
Index: /code/branches/presentationHS13/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- /code/branches/presentationHS13/src/orxonox/worldentities/pawns/Pawn.h	(revision 9917)
+++ /code/branches/presentationHS13/src/orxonox/worldentities/pawns/Pawn.h	(revision 9918)
@@ -36,4 +36,5 @@
 #include "interfaces/RadarViewable.h"
 #include "worldentities/ControllableEntity.h"
+
 
 namespace orxonox // tolua_export
@@ -178,4 +179,7 @@
             virtual void changedVisibility();
 
+            void setExplosionSound(const std::string& engineSound);
+            const std::string& getExplosionSound();
+
         protected:
             virtual void preDestroy();
@@ -231,4 +235,7 @@
 
             Vector3 aimPosition_;
+
+            WorldSound* explosionSound_;
+
     }; // tolua_export
 } // tolua_export
