Index: code/branches/sound/cmake/LibraryConfig.cmake
===================================================================
--- code/branches/sound/cmake/LibraryConfig.cmake	(revision 2983)
+++ code/branches/sound/cmake/LibraryConfig.cmake	(revision 2984)
@@ -111,6 +111,6 @@
 FIND_PACKAGE(OGRE  1.4 EXACT REQUIRED)
 FIND_PACKAGE(ENet  1.1       REQUIRED)
-#FIND_PACKAGE(Ogg             REQUIRED)
-#FIND_PACKAGE(Vorbis          REQUIRED)
+FIND_PACKAGE(Ogg             REQUIRED)
+FIND_PACKAGE(Vorbis          REQUIRED)
 FIND_PACKAGE(ALUT            REQUIRED)
 FIND_PACKAGE(ZLIB            REQUIRED)
Index: code/branches/sound/src/orxonox/sound/SoundBase.cc
===================================================================
--- code/branches/sound/src/orxonox/sound/SoundBase.cc	(revision 2983)
+++ code/branches/sound/src/orxonox/sound/SoundBase.cc	(revision 2984)
@@ -26,4 +26,5 @@
  *
  */
+#include <vector>
 #include <AL/alut.h>
 #include <vorbis/vorbisfile.h>
@@ -71,5 +72,5 @@
             ALenum error = alGetError();
             if(error == AL_INVALID_VALUE)
-                COUT(2) << "OpenAL: Invalid sound position" << std::endl;
+                COUT(2) << "Sound: OpenAL: Invalid sound position" << std::endl;
 
             Vector3 vel = this->entity_->getVelocity();
@@ -77,5 +78,5 @@
             error = alGetError();
             if(error == AL_INVALID_VALUE)
-                COUT(2) << "OpenAL: Invalid sound position" << std::endl;
+                COUT(2) << "Sound: OpenAL: Invalid sound velocity" << std::endl;
 
             Quaternion orient = this->entity_->getOrientation();
@@ -84,5 +85,5 @@
             error = alGetError();
             if(error == AL_INVALID_VALUE)
-                COUT(2) << "OpenAL: Invalid sound position" << std::endl;
+                COUT(2) << "Sound: OpenAL: Invalid sound direction" << std::endl;
         }
     }
@@ -133,8 +134,8 @@
     bool SoundBase::loadFile(std::string filename) {
         filename = Core::getMediaPathString() + "/audio/" + filename;
-        COUT(3) << "OpenAL ALUT: loading file " << filename << std::endl;
+        COUT(3) << "Sound: OpenAL ALUT: loading file " << filename << std::endl;
         this->buffer_ = alutCreateBufferFromFile(filename.c_str());
         if(this->buffer_ == AL_NONE) {
-            COUT(2) << "OpenAL ALUT: " << alutGetErrorString(alutGetError()) << std::endl;
+            COUT(2) << "Sound: OpenAL ALUT: " << alutGetErrorString(alutGetError()) << std::endl;
             if(filename.find("ogg", 0) != std::string::npos)
             {
@@ -149,5 +150,5 @@
         alSourcei(this->source_, AL_BUFFER, this->buffer_);
         if(alGetError() != AL_NO_ERROR) {
-            COUT(2) << "OpenAL: Error loading sample file" << std::endl;
+            COUT(2) << "Sound: OpenAL: Error loading sample file" << std::endl;
             return false;
         }
@@ -160,9 +161,46 @@
         return state;
     }
-    
+
     ALuint SoundBase::loadOggFile(std::string filename)
     {
-        // just a dummy
-        return AL_NONE;
+        COUT(2) << "Sound: Trying fallback ogg loader";
+
+        char inbuffer[4096];
+        std::vector<char> outbuffer;
+        OggVorbis_File vf;
+        int eof = false;
+        int current_section;
+
+        FILE* f = fopen(filename.c_str(), "rb");
+
+        if(ov_open(f, &vf, NULL, 0) < 0)
+        {
+            COUT(2) << "Sound: libvorbisfile: File seems not to be an Ogg Vorbis bitstream" << std::endl;
+            ov_clear(&vf);
+            return AL_NONE;
+        }
+
+        while(!eof)
+        {
+            long ret = ov_read(&vf, inbuffer, sizeof(inbuffer), 0, 2, 1, &current_section);
+            if (ret == 0)
+            {
+                eof = true;
+            }
+            else if (ret < 0)
+            {
+                COUT(2) << "Sound: libvorbisfile: error reading the file" << std::endl;
+                ov_clear(&vf);
+                return AL_NONE;
+            }
+            else
+            {
+                outbuffer.insert(outbuffer.end(), inbuffer, inbuffer + sizeof(inbuffer));
+            }
+        }
+        
+        ov_clear(&vf);
+
+        return alutCreateBufferFromFileImage(&outbuffer, outbuffer.size());
     }
 } // namespace: orxonox
Index: code/branches/sound/src/orxonox/sound/SoundManager.cc
===================================================================
--- code/branches/sound/src/orxonox/sound/SoundManager.cc	(revision 2983)
+++ code/branches/sound/src/orxonox/sound/SoundManager.cc	(revision 2984)
@@ -46,13 +46,13 @@
         if(!alutInitWithoutContext(NULL,NULL))
         {
-            COUT(2) << "OpenAL ALUT: " << alutGetErrorString(alutGetError()) << std::endl;
+            COUT(2) << "Sound: OpenAL ALUT: " << alutGetErrorString(alutGetError()) << std::endl;
         }
         else
         {
-            COUT(4) << "OpenAL ALUT version:" << alutGetMajorVersion() << "." << alutGetMinorVersion() << std::endl;
-            COUT(4) << "OpenAL ALUT supported MIME types:" << alutGetMIMETypes(ALUT_LOADER_BUFFER) << std::endl;
+            COUT(4) << "Sound: OpenAL ALUT version:" << alutGetMajorVersion() << "." << alutGetMinorVersion() << std::endl;
+            COUT(4) << "Sound: OpenAL ALUT supported MIME types:" << alutGetMIMETypes(ALUT_LOADER_BUFFER) << std::endl;
             if(SoundManager::device_s == NULL)
             {
-                COUT(3) << "OpenAL: Open sound device..." << std::endl;
+                COUT(3) << "Sound: OpenAL: Open sound device..." << std::endl;
                 SoundManager::device_s = alcOpenDevice(NULL);
             }
@@ -60,18 +60,18 @@
             if(SoundManager::device_s == NULL)
             {
-                COUT(2) << "OpenAL: Could not open sound device" << std::endl;
+                COUT(2) << "Sound: OpenAL: Could not open sound device" << std::endl;
             }
             else
             {
-                COUT(3) << "OpenAL: Sound device opened" << std::endl;
+                COUT(3) << "Sound: OpenAL: Sound device opened" << std::endl;
                 this->context_ = alcCreateContext(SoundManager::device_s, NULL);
                 if(this->context_ == NULL)
                 {
-                    COUT(2) << "OpenAL: Could not create sound context" << std::endl;
+                    COUT(2) << "Sound: OpenAL: Could not create sound context" << std::endl;
                 }
                 else
                 {
                     if(alcMakeContextCurrent(this->context_) == AL_TRUE)
-                        COUT(3) << "OpenAL: Context " << this->context_ << "loaded" << std::endl;
+                        COUT(3) << "Sound: OpenAL: Context " << this->context_ << "loaded" << std::endl;
                 }
             }
@@ -127,5 +127,5 @@
         ALenum error = alGetError();
         if(error == AL_INVALID_VALUE)
-            COUT(2) << "OpenAL: Invalid listener position" << std::endl;
+            COUT(2) << "Sound: OpenAL: Invalid listener position" << std::endl;
 
         // update listener orientation
@@ -140,5 +140,5 @@
         error = alGetError();
         if(error == AL_INVALID_VALUE)
-            COUT(2) << "OpenAL: Invalid listener orientation" << std::endl;
+            COUT(2) << "Sound: OpenAL: Invalid listener orientation" << std::endl;
 
         // update sounds
