Index: /orxonox/trunk/src/lib/sound/ogg_player.cc
===================================================================
--- /orxonox/trunk/src/lib/sound/ogg_player.cc	(revision 4984)
+++ /orxonox/trunk/src/lib/sound/ogg_player.cc	(revision 4985)
@@ -20,4 +20,6 @@
 
 #include "ogg_player.h"
+
+#include "sound_engine.h"
 
 #include "debug.h"
@@ -75,4 +77,5 @@
     alSourcef (source, AL_ROLLOFF_FACTOR,  0.0          );
     alSourcei (source, AL_SOURCE_RELATIVE, AL_TRUE      );
+    alSourcef (source, AL_GAIN,            SoundEngine::getInstance()->getMusicVolume());
 }
 
Index: /orxonox/trunk/src/lib/sound/ogg_player.h
===================================================================
--- /orxonox/trunk/src/lib/sound/ogg_player.h	(revision 4984)
+++ /orxonox/trunk/src/lib/sound/ogg_player.h	(revision 4985)
@@ -19,5 +19,5 @@
 
 
-#define BUFFER_SIZE (16384 * 4)
+#define BUFFER_SIZE (4096 * 4)
 
 
Index: /orxonox/trunk/src/lib/sound/sound_engine.cc
===================================================================
--- /orxonox/trunk/src/lib/sound/sound_engine.cc	(revision 4984)
+++ /orxonox/trunk/src/lib/sound/sound_engine.cc	(revision 4985)
@@ -28,7 +28,7 @@
 #include "resource_manager.h"
 #include "debug.h"
+#include "ini_parser.h"
 
 using namespace std;
-
 
 //////////////////
@@ -110,5 +110,5 @@
     alSourcei (this->sourceID, AL_BUFFER,   this->buffer->getID());
   alSourcef (this->sourceID, AL_PITCH,    1.0      );
-  alSourcef (this->sourceID, AL_GAIN,     1.0      );
+  alSourcef (this->sourceID, AL_GAIN,     SoundEngine::getInstance()->getEffectsVolume() );
   alSourcei (sourceID, AL_LOOPING,  AL_FALSE     );
 }
@@ -239,4 +239,19 @@
   alutExit();
 }
+
+/**
+ * loads the settings of the SoundEngine from an ini-file
+ * @param iniParser the IniParser of the inifile
+ */
+void SoundEngine::loadSettings(IniParser* iniParser)
+{
+  const char* musicVolume = iniParser->getVar(CONFIG_NAME_MUSIC_VOLUME, CONFIG_SECTION_AUDIO, "80");
+  this->musicVolume = atof(musicVolume)/100.0;
+
+  const char* effectsVolume = iniParser->getVar(CONFIG_NAME_EFFECTS_VOLUME, CONFIG_SECTION_AUDIO, "80");
+  this->effectsVolume = atof(effectsVolume)/100.0;
+}
+
+
 
 /**
Index: /orxonox/trunk/src/lib/sound/sound_engine.h
===================================================================
--- /orxonox/trunk/src/lib/sound/sound_engine.h	(revision 4984)
+++ /orxonox/trunk/src/lib/sound/sound_engine.h	(revision 4985)
@@ -16,4 +16,5 @@
 class PNode;
 template<class T> class tList;
+class IniParser;
 
 
@@ -75,4 +76,6 @@
     inline static SoundEngine* getInstance() { if (!singletonRef) singletonRef = new SoundEngine();  return singletonRef; };
 
+    void loadSettings(IniParser* iniParser);
+
     SoundSource* createSource(const char* fileName, PNode* sourceNode = NULL);
 
@@ -81,4 +84,9 @@
     void setDopplerValues(ALfloat dopplerFactor, ALfloat dopplerVelocity);
 
+
+    /** @returns the Music Volume in % */
+    inline float getMusicVolume() { return this->musicVolume; };
+    /** @returns the Effects Volume in % */
+    inline float getEffectsVolume() { return this->effectsVolume; };
 
     void update();
@@ -106,5 +114,6 @@
     static SoundEngine*      singletonRef;             //!< Reference to this class
 
-
+    float                    musicVolume;              //!< the maximum volume of the music in % (0f,1f]
+    float                    effectsVolume;            //!< the maximum volume of sound-effects in % (0f,1f]
     PNode*                   listener;                 //!< The listener of the Scene
     tList<BaseObject>*       bufferList;               //!< A list of buffers
Index: /orxonox/trunk/src/orxonox.cc
===================================================================
--- /orxonox/trunk/src/orxonox.cc	(revision 4984)
+++ /orxonox/trunk/src/orxonox.cc	(revision 4985)
@@ -177,4 +177,6 @@
   // SDL_Init(SDL_INIT_AUDIO);
   SoundEngine::getInstance()->initAudio();
+
+  SoundEngine::getInstance()->loadSettings(this->iniParser);
   return 0;
 }
