Index: code/trunk/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/trunk/src/orxonox/OrxonoxPrereqs.h	(revision 7852)
+++ code/trunk/src/orxonox/OrxonoxPrereqs.h	(revision 7854)
@@ -151,4 +151,5 @@
     class SoundStreamer;
     class WorldSound;
+    class WorldAmbientSound;
 
     // weaponsystem
Index: code/trunk/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSLevel.cc	(revision 7852)
+++ code/trunk/src/orxonox/gamestates/GSLevel.cc	(revision 7854)
@@ -154,5 +154,5 @@
             if (find == this->staticObjects_.end())
             {
-                COUT(3) << ++i << ": " << it->getIdentifier()->getName() << " (" << *it << ')' << std::endl;
+                COUT(3) << ++i << ": " << it->getIdentifier()->getName() << " (" << *it << "), references: " << it->getReferenceCount() << std::endl;
             }
         }
Index: code/trunk/src/orxonox/gamestates/GSMainMenu.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSMainMenu.cc	(revision 7852)
+++ code/trunk/src/orxonox/gamestates/GSMainMenu.cc	(revision 7854)
@@ -77,6 +77,5 @@
         {
             // Load sound
-            this->ambient_ = new AmbientSound(0);
-            this->ambient_->setSyncMode(0x0);
+            this->ambient_ = new AmbientSound();
         }
     }
Index: code/trunk/src/orxonox/sound/AmbientSound.cc
===================================================================
--- code/trunk/src/orxonox/sound/AmbientSound.cc	(revision 7852)
+++ code/trunk/src/orxonox/sound/AmbientSound.cc	(revision 7854)
@@ -29,25 +29,15 @@
 #include "AmbientSound.h"
 
-#include "core/CoreIncludes.h"
-#include "core/EventIncludes.h"
 #include "core/GameMode.h"
 #include "core/Resource.h"
-#include "core/XMLPort.h"
 #include "SoundManager.h"
 
 namespace orxonox
 {
-    CreateFactory(AmbientSound);
-
-    AmbientSound::AmbientSound(BaseObject* creator)
-        : BaseObject(creator)
-        , Synchronisable(creator)
-        , bPlayOnLoad_(false)
+    AmbientSound::AmbientSound()
+        : bPlayOnLoad_(false)
     {
-        RegisterObject(AmbientSound);
-
         // Ambient sounds always fade in
         this->setVolume(0);
-        this->registerVariables();
     }
 
@@ -59,26 +49,4 @@
             SoundManager::getInstance().unregisterAmbientSound(this);
         }
-    }
-
-    void AmbientSound::registerVariables()
-    {
-        registerVariable(ambientSource_, ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this, &AmbientSound::ambientSourceChanged));
-        registerVariable(bLooping_,      ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this, &AmbientSound::loopingChanged));
-        registerVariable(pitch_,         ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this, &AmbientSound::pitchChanged));
-        registerVariable(bPlayOnLoad_,   ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this, &AmbientSound::playOnLoadChanged));
-    }
-
-    void AmbientSound::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(AmbientSound, XMLPort, xmlelement, mode);
-        BaseSound::XMLPortExtern(xmlelement, mode);
-        XMLPortParam(AmbientSound, "ambientSource", setAmbientSource, getAmbientSource, xmlelement, mode);
-        XMLPortParam(AmbientSound, "playOnLoad", setPlayOnLoad, getPlayOnLoad, xmlelement, mode);
-    }
-
-    void AmbientSound::XMLEventPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(AmbientSound, XMLEventPort, xmlelement, mode);
-        XMLPortEventState(AmbientSound, BaseObject, "play", play, xmlelement, mode);
     }
 
@@ -132,12 +100,3 @@
             this->play();
     }
-
-    void AmbientSound::changedActivity()
-    {
-        SUPER(AmbientSound, changedActivity);
-        if (this->isActive())
-            this->play();
-        else
-            this->stop();
-    }
 }
Index: code/trunk/src/orxonox/sound/AmbientSound.h
===================================================================
--- code/trunk/src/orxonox/sound/AmbientSound.h	(revision 7852)
+++ code/trunk/src/orxonox/sound/AmbientSound.h	(revision 7854)
@@ -33,6 +33,4 @@
 #include "OrxonoxPrereqs.h"
 
-#include "core/BaseObject.h"
-#include "network/synchronisable/Synchronisable.h"
 #include "BaseSound.h"
 #include "MoodManager.h"
@@ -41,18 +39,14 @@
 {
     /**
-     * The AmbientSound class is the base class for all sound file loader classes.
-     * It server as main interface to the OpenAL library.
-     *
+     * The AmbientSound class is used to play background music. It can not be placed
+     * directly in a level file, use WorldAmbientSound instead.
      */
-    class _OrxonoxExport AmbientSound : public BaseSound, public BaseObject, public Synchronisable, public MoodListener
+    class _OrxonoxExport AmbientSound : public BaseSound, public MoodListener
     {
         friend class SoundManager;
+        friend class WorldAmbientSound;
 
     public:
-        AmbientSound(BaseObject* creator);
-
-        void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-        void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
-        void changedActivity();
+        AmbientSound();
 
         void play();
@@ -73,5 +67,4 @@
     private:
         void preDestroy();
-        void registerVariables();
         float getRealVolume();
         void moodChanged(const std::string& mood);
Index: code/trunk/src/orxonox/sound/BaseSound.h
===================================================================
--- code/trunk/src/orxonox/sound/BaseSound.h	(revision 7852)
+++ code/trunk/src/orxonox/sound/BaseSound.h	(revision 7854)
@@ -41,6 +41,5 @@
     /**
      * The BaseSound class is the base class for all sound file loader classes.
-     * It server as main interface to the OpenAL library.
-     *
+     * It serves as main interface to the OpenAL library.
      */
     class _OrxonoxExport BaseSound : virtual public OrxonoxClass
Index: code/trunk/src/orxonox/sound/CMakeLists.txt
===================================================================
--- code/trunk/src/orxonox/sound/CMakeLists.txt	(revision 7852)
+++ code/trunk/src/orxonox/sound/CMakeLists.txt	(revision 7854)
@@ -1,9 +1,10 @@
 ADD_SOURCE_FILES(ORXONOX_SRC_FILES
-    AmbientSound.cc
-    BaseSound.cc
-    SoundBuffer.cc
-    SoundManager.cc
-    WorldSound.cc
-    SoundStreamer.cc
+  AmbientSound.cc
+  BaseSound.cc
+  SoundBuffer.cc
+  SoundManager.cc
+  SoundStreamer.cc
+  WorldAmbientSound.cc
+  WorldSound.cc
 )
 
Index: code/trunk/src/orxonox/sound/WorldAmbientSound.cc
===================================================================
--- code/trunk/src/orxonox/sound/WorldAmbientSound.cc	(revision 7854)
+++ code/trunk/src/orxonox/sound/WorldAmbientSound.cc	(revision 7854)
@@ -0,0 +1,96 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "WorldAmbientSound.h"
+
+#include "core/CoreIncludes.h"
+#include "core/EventIncludes.h"
+#include "core/XMLPort.h"
+#include "AmbientSound.h"
+
+namespace orxonox
+{
+    CreateFactory(WorldAmbientSound);
+
+    WorldAmbientSound::WorldAmbientSound(BaseObject* creator) : BaseObject(creator), Synchronisable(creator)
+    {
+        RegisterObject(WorldAmbientSound);
+
+        this->ambientSound_ = new AmbientSound();
+        this->registerVariables();
+    }
+
+    WorldAmbientSound::~WorldAmbientSound()
+    {
+        if (this->isInitialized())
+        {
+            this->ambientSound_->destroy();
+        }
+    }
+
+    void WorldAmbientSound::registerVariables()
+    {
+        registerVariable(this->ambientSound_->ambientSource_, ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this->ambientSound_, &AmbientSound::ambientSourceChanged));
+        registerVariable(this->ambientSound_->bLooping_,      ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this->ambientSound_, &AmbientSound::loopingChanged));
+        registerVariable(this->ambientSound_->pitch_,         ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this->ambientSound_, &AmbientSound::pitchChanged));
+        registerVariable(this->ambientSound_->bPlayOnLoad_,   ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this->ambientSound_, &AmbientSound::playOnLoadChanged));
+    }
+
+    void WorldAmbientSound::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(WorldAmbientSound, XMLPort, xmlelement, mode);
+
+        XMLPortParamExtern(WorldAmbientSound, BaseSound, static_cast<BaseSound*>(this->ambientSound_), "looping", setLooping, getLooping, xmlelement, mode);
+        XMLPortParamExtern(WorldAmbientSound, BaseSound, static_cast<BaseSound*>(this->ambientSound_), "pitch",   setPitch,   getPitch,   xmlelement, mode);
+
+        XMLPortParamExtern(WorldAmbientSound, AmbientSound, this->ambientSound_, "source",     setAmbientSource, getAmbientSource, xmlelement, mode);
+        XMLPortParamExtern(WorldAmbientSound, AmbientSound, this->ambientSound_, "playOnLoad", setPlayOnLoad,    getPlayOnLoad,    xmlelement, mode);
+    }
+
+    void WorldAmbientSound::XMLEventPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(WorldAmbientSound, XMLEventPort, xmlelement, mode);
+
+        XMLPortEventState(WorldAmbientSound, BaseObject, "play", play, xmlelement, mode);
+    }
+
+    void WorldAmbientSound::play()
+    {
+        this->ambientSound_->play();
+    }
+
+    void WorldAmbientSound::changedActivity()
+    {
+        SUPER(WorldAmbientSound, changedActivity);
+
+        if (this->isActive())
+            this->ambientSound_->play();
+        else
+            this->ambientSound_->stop();
+    }
+}
Index: code/trunk/src/orxonox/sound/WorldAmbientSound.h
===================================================================
--- code/trunk/src/orxonox/sound/WorldAmbientSound.h	(revision 7854)
+++ code/trunk/src/orxonox/sound/WorldAmbientSound.h	(revision 7854)
@@ -0,0 +1,63 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _WorldAmbientSound_H__
+#define _WorldAmbientSound_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include "core/BaseObject.h"
+#include "network/synchronisable/Synchronisable.h"
+
+namespace orxonox
+{
+    /**
+        @brief This class is used to play and control ambient sound in a level file. See AmbientSound for the
+        actual implementation of the background music player.
+    */
+    class _OrxonoxExport WorldAmbientSound : public BaseObject, public Synchronisable
+    {
+        public:
+            WorldAmbientSound(BaseObject* creator);
+            virtual ~WorldAmbientSound();
+
+            void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
+
+            virtual void changedActivity();
+
+            void play();
+
+        private:
+            void registerVariables();
+
+            AmbientSound* ambientSound_;
+    };
+}
+
+#endif /* _WorldAmbientSound_H__ */
Index: code/trunk/src/orxonox/sound/WorldSound.h
===================================================================
--- code/trunk/src/orxonox/sound/WorldSound.h	(revision 7852)
+++ code/trunk/src/orxonox/sound/WorldSound.h	(revision 7854)
@@ -38,5 +38,5 @@
 namespace orxonox
 {
-    /*
+    /**
     @brief
         The WorldSound class is to be used for sounds with position and orientation.
