Index: /code/branches/sound5/src/orxonox/sound/AmbientSound.cc
===================================================================
--- /code/branches/sound5/src/orxonox/sound/AmbientSound.cc	(revision 6732)
+++ /code/branches/sound5/src/orxonox/sound/AmbientSound.cc	(revision 6733)
@@ -183,28 +183,5 @@
         if(this->soundstreamthread_ == boost::thread())
             COUT(2) << "Sound: Failed to create thread." << std::endl;
-
-        if (alIsSource(this->audioSource_)) // already playing or paused
-        {
-            // Sound was already playing or paused because there was a source acquired
-            assert(this->isPlaying() || this->isPaused());
-            alSourcePlay(this->audioSource_);
-            if (int error = alGetError())
-                COUT(2) << "Sound: Error playing sound: " << getALErrorString(error) << std::endl;
-            if (this->isPaused())
-                alSourcePause(this->audioSource_);
-        }
-        else // No source acquired so far, but might be set to playing or paused
-        {
-            if (this->isPlaying() || this->isPaused())
-                doPlay();
-            if (this->isPaused())
-            {
-                doPause();
-            }
-        }
-
-        this->updateVolume();
-        this->setPitch(this->getPitch());
-        this->setLooping(this->getLooping());
+       
         alSource3f(this->audioSource_, AL_POSITION,  0, 0, 0);
         alSource3f(this->audioSource_, AL_VELOCITY,  0, 0, 0);
Index: /code/branches/sound5/src/orxonox/sound/SoundStreamer.cc
===================================================================
--- /code/branches/sound5/src/orxonox/sound/SoundStreamer.cc	(revision 6732)
+++ /code/branches/sound5/src/orxonox/sound/SoundStreamer.cc	(revision 6733)
@@ -44,4 +44,7 @@
     {
         COUT(4) << "Sound: Creating thread for " << dataStream->getName() << std::endl;
+
+        alSourcei(audioSource, AL_BUFFER, 0);
+
         // Open file with custom streaming
         ov_callbacks vorbisCallbacks;
@@ -101,7 +104,19 @@
         }
 
+        alSourcei(audioSource, AL_LOOPING, AL_TRUE);
+
+        alSourcePlay(audioSource);
+        if(ALint error = alGetError())
+            COUT(2) << "Sound: Could not start ambient sound" << std::endl;
+
         while(true) // Stream forever, control through thread control
         {
-            int processed;
+
+            int info;
+            alGetSourcei(audioSource, AL_SOURCE_STATE, &info);
+            if(info == AL_PLAYING)
+                COUT(4) << "Sound: " << dataStream->getName() << " is playing." << std::endl;
+            else
+                COUT(4) << "Sound: " << dataStream->getName() << " is not playing." << std::endl;
 
             if(alcGetCurrentContext() == NULL)
@@ -111,22 +126,16 @@
             }
 
+            int processed;
             alGetSourcei(audioSource, AL_BUFFERS_PROCESSED, &processed);
             if (ALint error = alGetError())
                 COUT(2) << "Sound: Warning: Couldn't get number of processed buffers: " << getALErrorString(error) << std::endl;
+            COUT(4) << "Sound: processed buffers: " << processed << std::endl;
 
             if(processed > 0)
             {
-                COUT(4) << "Sound: " << processed << std::endl;
                 ALuint* buffers = new ALuint[processed];
                 alSourceUnqueueBuffers(audioSource, processed, buffers);
                 if (ALint error = alGetError())
                     COUT(2) << "Sound: Warning: Couldn't unqueue buffers: " << getALErrorString(error) << std::endl;
-
-                int info;
-                alGetSourcei(audioSource, AL_SOURCE_STATE, &info);
-                if(info == AL_PLAYING)
-                    COUT(4) << "Sound: " << dataStream->getName() << " is playing." << std::endl;
-                else
-                    COUT(4) << "Sound: " << dataStream->getName() << " is not playing." << std::endl;
 
                 for(int i = 0; i < processed; i++)
@@ -171,5 +180,5 @@
                 return;
             }
-            msleep(100); // perhaps another value here is better
+            msleep(50); // perhaps another value here is better
         }
     }
