Index: /code/branches/presentation2/src/orxonox/sound/BaseSound.cc
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/BaseSound.cc	(revision 6269)
+++ /code/branches/presentation2/src/orxonox/sound/BaseSound.cc	(revision 6270)
@@ -62,5 +62,5 @@
     BaseSound::~BaseSound()
     {
-        this->setSource("");
+        this->setSource(std::string());
         if (GameMode::playsSound() && alIsSource(this->audioSource_))
             alDeleteSources(1, &this->audioSource_);
@@ -191,13 +191,5 @@
             return;
 
-        // Get DataStream from the resources
-        shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(source);
-        if (fileInfo == NULL)
-        {
-            COUT(2) << "Sound: Warning: Sound file '" << source << "' not found" << std::endl;
-            return;
-        }
-
-        this->soundBuffer_ = SoundManager::getInstance().getSoundBuffer(fileInfo);
+        this->soundBuffer_ = SoundManager::getInstance().getSoundBuffer(this->source_);
         if (this->soundBuffer_ == NULL)
             return;
Index: /code/branches/presentation2/src/orxonox/sound/SoundBuffer.cc
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/SoundBuffer.cc	(revision 6269)
+++ /code/branches/presentation2/src/orxonox/sound/SoundBuffer.cc	(revision 6270)
@@ -40,22 +40,31 @@
 namespace orxonox
 {
-    SoundBuffer::SoundBuffer(shared_ptr<ResourceInfo> fileInfo)
-        : fileInfo_(fileInfo)
+    SoundBuffer::SoundBuffer(const std::string& filename)
+        : filename_(filename)
         , audioBuffer_(AL_NONE)
     {
-        if (this->fileInfo_ == NULL)
+        if (this->filename_.empty())
             ThrowException(General, "SoundBuffer construction: fileInfo was NULL");
-        DataStreamPtr dataStream = Resource::open(this->fileInfo_);
 
-        std::string extension(this->fileInfo_->basename.substr(this->fileInfo_->basename.find_last_of('.') + 1));
+        // Get resource info
+        shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(filename);
+        if (fileInfo == NULL)
+        {
+            COUT(2) << "Sound: Warning: Sound file '" << filename << "' not found" << std::endl;
+            return;
+        }
+        // Open data stream
+        DataStreamPtr dataStream = Resource::open(fileInfo);
+
+        std::string extension(this->filename_.substr(this->filename_.find_last_of('.') + 1));
         if (getLowercase(extension) == "ogg")
         {
             // Try ogg loader
-            this->loadOgg(dataStream);
+            this->loadOgg(fileInfo, dataStream);
         }
         else
         {
             // Try standard OpenAL loader
-            this->loadStandard(dataStream);
+            this->loadStandard(fileInfo, dataStream);
         }
     }
@@ -77,12 +86,12 @@
     }
 
-    void SoundBuffer::loadStandard(DataStreamPtr dataStream)
+    void SoundBuffer::loadStandard(const shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream)
     {
         // Read everything into a temporary buffer
-        char* buffer = new char[this->fileInfo_->size];
-        dataStream->read(buffer, this->fileInfo_->size);
+        char* buffer = new char[fileInfo->size];
+        dataStream->read(buffer, fileInfo->size);
         dataStream->seek(0);
 
-        this->audioBuffer_ = alutCreateBufferFromFileImage(buffer, this->fileInfo_->size);
+        this->audioBuffer_ = alutCreateBufferFromFileImage(buffer, fileInfo->size);
         delete[] buffer;
 
@@ -115,5 +124,5 @@
     }
 
-    void SoundBuffer::loadOgg(DataStreamPtr dataStream)
+    void SoundBuffer::loadOgg(const shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream)
     {
         char inbuffer[256*1024];
Index: /code/branches/presentation2/src/orxonox/sound/SoundBuffer.h
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/SoundBuffer.h	(revision 6269)
+++ /code/branches/presentation2/src/orxonox/sound/SoundBuffer.h	(revision 6270)
@@ -44,5 +44,5 @@
 
     public:
-        SoundBuffer(shared_ptr<ResourceInfo> fileInfo);
+        SoundBuffer(const std::string& filename);
         ~SoundBuffer();
 
@@ -52,6 +52,6 @@
         unsigned int getSize() const;
 
-        shared_ptr<ResourceInfo> getFileInfo() const
-            { return this->fileInfo_; }
+        const std::string& getFilename() const
+            { return this->filename_; }
 
         void setPooling(bool val)
@@ -61,8 +61,8 @@
 
     private:
-        void loadStandard(DataStreamPtr dataStream);
-        void loadOgg(DataStreamPtr dataStream);
+        void loadStandard(const shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream);
+        void loadOgg(const shared_ptr<ResourceInfo>& fileInfo, DataStreamPtr dataStream);
 
-        shared_ptr<ResourceInfo> fileInfo_;
+        std::string filename_;
         ALuint audioBuffer_;
         std::list<shared_ptr<SoundBuffer> >::iterator poolIterator_;
Index: /code/branches/presentation2/src/orxonox/sound/SoundManager.cc
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/SoundManager.cc	(revision 6269)
+++ /code/branches/presentation2/src/orxonox/sound/SoundManager.cc	(revision 6270)
@@ -528,9 +528,9 @@
     }
 
-    shared_ptr<SoundBuffer> SoundManager::getSoundBuffer(shared_ptr<ResourceInfo> fileInfo)
+    shared_ptr<SoundBuffer> SoundManager::getSoundBuffer(const std::string& filename)
     {
         shared_ptr<SoundBuffer> buffer;
         // Check active or pooled buffers
-        SoundBufferMap::const_iterator it = this->soundBuffers_.find(fileInfo->group + '/' + fileInfo->filename);
+        SoundBufferMap::const_iterator it = this->soundBuffers_.find(filename);
         if (it != this->soundBuffers_.end())
         {
@@ -549,5 +549,5 @@
             try
             {
-                buffer.reset(new SoundBuffer(fileInfo));
+                buffer.reset(new SoundBuffer(filename));
                 buffer->poolIterator_ = this->effectsPool_.end();
             }
@@ -557,5 +557,5 @@
                 return buffer;
             }
-            this->soundBuffers_[fileInfo->group + '/' + fileInfo->filename] = buffer;
+            this->soundBuffers_[filename] = buffer;
         }
         return buffer;
@@ -567,5 +567,5 @@
         if (buffer.use_count() != 2)
             return;
-        SoundBufferMap::iterator it = this->soundBuffers_.find(buffer->fileInfo_->group + '/' + buffer->fileInfo_->filename);
+        SoundBufferMap::iterator it = this->soundBuffers_.find(buffer->getFilename());
         if (it != this->soundBuffers_.end())
         {
@@ -580,5 +580,5 @@
                     this->effectsPool_.pop_back();
                     // Remove from buffer map too
-                    SoundBufferMap::iterator itDel = this->soundBuffers_.find(bufferDel->fileInfo_->group + '/' + bufferDel->fileInfo_->filename);
+                    SoundBufferMap::iterator itDel = this->soundBuffers_.find(bufferDel->getFilename());
                     if (itDel != this->soundBuffers_.end())
                         this->soundBuffers_.erase(itDel);
Index: /code/branches/presentation2/src/orxonox/sound/SoundManager.h
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/SoundManager.h	(revision 6269)
+++ /code/branches/presentation2/src/orxonox/sound/SoundManager.h	(revision 6270)
@@ -100,5 +100,5 @@
         bool getMute(SoundType::Value type); // tolua_export
 
-        shared_ptr<SoundBuffer> getSoundBuffer(shared_ptr<ResourceInfo> fileInfo);
+        shared_ptr<SoundBuffer> getSoundBuffer(const std::string& filename);
         void releaseSoundBuffer(const shared_ptr<SoundBuffer>& buffer, bool bPoolBuffer);
 
