diff --git src/simutrans/descriptor/sound_desc.cc src/simutrans/descriptor/sound_desc.cc
index 5e80f5f63..911145cca 100644
--- src/simutrans/descriptor/sound_desc.cc
+++ src/simutrans/descriptor/sound_desc.cc
@@ -36,7 +36,9 @@ public:
 
 static stringhashtable_tpl<sound_ids *> name_sound;
 static bool sound_on=false;
-static std::string sound_path;
+
+const int NUM_SOUND_PATHS = 2;
+static std::string sound_path[NUM_SOUND_PATHS];
 
 sint16 sound_desc_t::compatible_sound_id[MAX_OLD_SOUNDS]=
 {
@@ -59,11 +61,12 @@ sint16 sound_desc_t::message_sound;
 
 /* init sounds */
 /* standard sounds and old sounds are found in the file <pakset>/sound/sound.tab */
-void sound_desc_t::init(const std::string &pak_dir)
+void sound_desc_t::init(const std::string &pak_dir, const std::string &addon_dir)
 {
 	// ok, now init
 	sound_on = true;
-	sound_path = pak_dir + "sound/";
+	sound_path[0] = addon_dir + "sound/";
+	sound_path[1] = pak_dir + "sound/";
 
 	tabfile_t soundconf;
 	const std::string tabfilename = pak_dir + "sound/sound.tab";
@@ -115,7 +118,13 @@ sint16 sound_desc_t::get_sound_id(const char *name)
 	}
 
 	// not loaded: try to load it
-	const sint16 sample_id = dr_load_sample((sound_path + name).c_str());
+	sint16 sample_id = NO_SOUND;
+	for(  int i=0;  i<NUM_SOUND_PATHS;  i++  ) {
+		sample_id = dr_load_sample((sound_path[i] + name).c_str());
+		if(  sample_id!=NO_SOUND  ) {
+			break;
+		}
+	}
 
 	if(sample_id==NO_SOUND) {
 		dbg->warning("sound_desc_t::get_sound_id()", "Sound \"%s\" not found", name );
diff --git src/simutrans/descriptor/sound_desc.h src/simutrans/descriptor/sound_desc.h
index af9b8daea..8faa2b227 100644
--- src/simutrans/descriptor/sound_desc.h
+++ src/simutrans/descriptor/sound_desc.h
@@ -60,7 +60,7 @@ public:
 
 	static bool register_desc(sound_desc_t *desc);
 
-	static void init(const std::string &pak_dir);
+	static void init(const std::string &pak_dir, const std::string &addon_dir);
 
 	/* return old sound id from index */
 	static sint16 get_compatible_sound_id(const sint8 nr) { return compatible_sound_id[nr&(15)]; }
diff --git src/simutrans/simmain.cc src/simutrans/simmain.cc
index 3fff1bd4e..ace18a3f4 100644
--- src/simutrans/simmain.cc
+++ src/simutrans/simmain.cc
@@ -1146,7 +1146,7 @@ int simu_main(int argc, char** argv)
 	// just check before loading objects
 	if(  !args.has_arg("-nosound")  &&  dr_init_sound()  ) {
 		dbg->message("simu_main()","Reading compatibility sound data ...");
-		sound_desc_t::init(env_t::pak_dir);
+		sound_desc_t::init(env_t::pak_dir, std::string("addons") + PATH_SEPARATOR + env_t::pak_name + PATH_SEPARATOR);
 	}
 	else {
 		sound_set_mute(true);
