diff --git a/src/lua_infolib.c b/src/lua_infolib.c
index d1bbf96e960c2b84b5ec21e6f2785029ede50ebc..914ff16301fb04a03b62f71b791b544825242e74 100644
--- a/src/lua_infolib.c
+++ b/src/lua_infolib.c
@@ -945,6 +945,9 @@ static int musicinfo_get(lua_State *L)
 
 	switch (field)
 	{
+	case musicinfor_name:
+		lua_pushstring(L, music->name);
+		return 1;
 	case musicinfor_dummyval:
 		lua_pushinteger(L, music->dummyval);
 		return 1;
@@ -969,6 +972,9 @@ static int musicinfo_set(lua_State *L)
 
 	switch (field)
 	{
+	case musicinfow_name:
+		music->name = luaL_checkstring(L, 1);
+		break;
 	case musicinfow_dummyval:
 		music->dummyval = luaL_checkinteger(L, 1);
 		break;
diff --git a/src/sounds.h b/src/sounds.h
index 438d53b9291a2ead7c2b20e9d60c52994e6cc132..824a010c152655c2cdd32c448f8393ae9d1d3a24 100644
--- a/src/sounds.h
+++ b/src/sounds.h
@@ -119,7 +119,7 @@ extern musicinfo_t S_music[];
 // Identifiers for all music in game.
 //
 
-#define NUMMUSFREESLOTS 800
+#define NUMMUSFREESLOTS 256
 
 // Music list (don't edit this comment!)
 typedef enum