Benissimo..
Se hai risolto buon per te 
Anche se non capisco perché hai dichiarato due volte l'oggetto "loop"
codice:
loop = new Sound(apertura);
loop = new Sound(suono);
.. non ha senso.. :master:
Comunque nel mentre ho elaborato una funzione per il fade automatico utilizzando la classe tween, applicabile a qualsiasi oggetto sound e con possibilità di specificare vari parametri..
Potrebbe tornare utile a qualcuno..
Codice PHP:
// creo degli oggetti sound applicandoli a dei mc contenitori
var suono1 = new Sound(_root.createEmptyMovieClip("snd1", 1));
var suono2 = new Sound(_root.createEmptyMovieClip("snd2", 2));
//
// associo dei campioni che ho inserito in libreria con proprietà di concatenamento
suono1.attachSound("campione 1");
suono2.attachSound("campione 2");
//
// funzione soundFade (oggetto sound, volume iniziale, volume finale, durata del fade, [azione])
var soundFade:Function = function (snd:Object, ini:Number, end:Number, duration:Number, action:Boolean):Void {
trace(snd._name)(snd.fade) && (snd.fade.stop());
(ini == null) ? ini=snd.getVolume() : snd.setVolume(snd.vol);
(action == "start") && (snd.start());
snd.fade = new mx.transitions.Tween(snd, "vol", mx.transitions.easing.Regular.easeOut, ini, end, duration, true);
snd.fade.onMotionChanged = function() {
snd.setVolume(snd.vol);
};
if (action == "stop") {
snd.fade.onMotionFinished = function() {
snd.stop();
};
}
};
// ----------------------------------------------------
// varie modalità di applicazione della funzione soundFade
//
// fade-in da 0 a 100 in 4 secondi con start dell'oggetto sound indicato
soundFade(suono1, 0, 100, 4, "start");
//
// fade-out dal volume corrente a 0 in 5 secondi con stop al termine
soundFade(suono1, null, 0, 5, "stop");
//
// fade da 20 a 80 in mezzo secondo
soundFade(suono1, 20, 80, .5);
//
// mix tra due tracce in 10 secondi
suono1.start();
soundFade(suono1, 100, 0, 10, "stop");
soundFade(suono2, 0, 100, 10, "start");