Aunque los modelos RM2K y RM2K3 tienen la opción de comprobar cuándo finaliza un bucle de música de fondo, esto parece funcionar únicamente con archivos MIDI y MP3, y no con música en formato WAV.
Digamos que quiero crear un mapa con una introducción musical, pero que no se repita. Como no es MIDI, esto es imposible, según entiendo.
Simplemente configura la introducción como la música del mapa:

En el mapa, se crearía un evento en Proceso Paralelo y, dentro de él, se crearía una Rama Condicional con esta opción:

Dentro de él, comenzaría la música de fondo, que se repetiría en bucle y eliminaría el evento porque ya no es necesario hasta que el jugador salga y regrese a este mismo mapa:

El problema es que esto no funciona con archivos WAV, que, aunque son poco comunes, pueden ser una de las pocas maneras de incluir sonidos ambientales específicos.
Para comprobar la posición de reproducción de la música de fondo, hay una opción en las variables que reconoce el formato WAV:

Como no es posible determinar el tamaño exacto de cada canción en TICK, utilicé dos variables para la comparación. La primera se lee constantemente:
@> Control Variables: [0005:MIDI Pos.Curr] = MIDI Play Location (Tick)
El segundo valor siempre copiará el valor del primero, siempre que el primero sea mayor o igual que el segundo:
@> Conditional Branch: Variable [0005:MIDI Pos.Curr] >= Variable [0006:MIDI Pos.Dur]
@> Control Variables: [0006:MIDI Pos.Dur] = Variable [0005]
@>
: Else
@>
: Branch End
Esto significa que cuando la posición vuelva a cero, se ejecutará la excepción correspondiente a esa condición. Por lo tanto, cambio la música de fondo y luego elimino el evento:
@> Control Variables: [0005:MIDI Pos.Curr] = MIDI Play Location (Tick)
@> Conditional Branch: Variable [0005:MIDI Pos.Curr] >= Variable [0006:MIDI Pos.Dura]
@> Control Variables: [0006:MIDI Pos.Dura] = Variable [0005]
@>
: Else
@> Play BGM: 'Village1', 100, 100, 50
@> Erase Event
@>
: Branch End
@> Wait: 0.0 seconds
(Incluí el tiempo de espera simplemente por costumbre, para evitar ralentizaciones en procesadores antiguos)
Para mejorar aún más el sistema, puedes aplicar un fundido de salida rápido a la introducción y un fundido de entrada a la música en bucle:
@> Control Variables: [0005:MIDI Pos.Curr] = MIDI Play Location (Tick)
@> Conditional Branch: Variable [0005:MIDI Pos.Curr] >= Variable [0006:MIDI Pos.Dura]
@> Control Variables: [0006:MIDI Pos.Dura] = Variable [0005]
@>
: Else
@> Fadeout BGM: 1 seconds
@> Play BGM: 'Village1', 100, 100, 50, @1.0s
@> Erase Event
@>
: Branch End
@> Wait: 0.0 seconds
Sin embargo, es muy probable que no funcione como debería con la mayoría de las canciones, por lo que la mejor opción sería hacerlo durante la edición musical e incluir también un segundo de silencio al final, después del desvanecimiento
Pero, ¿cómo se logra esto con una escena o un diálogo que cambia la música, pero se desea que continúe solo después de la introducción musical? En ese caso, podemos usar un bucle para esperar a que la música termine:
@> Text: Hello Mr. Hero...
@> Play BGM: 'BossFinal_Intro', 100, 50, 50
@> Loop
@> Control Variables: [0005:MIDI Pos.Curr] = MIDI Play Location (Tick)
@> Conditional Branch: Variable [0005:MIDI Pos.Curr] >= Variable [0006:MIDI Pos.Dur]
@> Control Variables: [0006:MIDI Pos.Dur] = Variable [0005]
@>
: Else
@> Play BGM: 'BossFinal', 100, 100, 50
@> Break Loop
@>
: Branch End
@>
: Repeat Above
@> Text: This is the moment when we meet for the final battle!
Ahora bien, suponiendo que varios mapas o todas las ciudades tengan su propia introducción y no quieras tener que crear un evento de este tipo para cada mapa copiando y pegando, recuerda que el comando Eliminar evento en Eventos comunes solo funciona en RM2K3 :
