How about deactivating the objects while outside the view?
That way it wouldn't be a collision based event, moreso just a if I'm on the same screen as Link kinda deal.
Also, you'd really only need two objects for every "doorway" between two zones.
Or you guys are suggesting the following:
I don't know if you can use ds_grid with GM8.1 Lite, but you could use that to break down your map into chunks. After that, you can assign them ids, then check the ID of the location where Link is located and play music accordingly.
//Create the grid
musicGrid=ds_grid_create(room_width,room_height)
//This part will require some thought.
for(iX=0;iX<=room_width;iX+=1)
{
for(iY=0;iY<=room_height;iY+=1)
{
ds_grid_set(musicGrid,iX,iY,"bgmForest");
}
}
//In Link's step event.
//This bottom part should work in theory, if not some IF THEN ELSE will do, that may give you more control over the fading.
sound_play(ds_grid_get(musicGrid,Link.x,Link.y));