Veran, quiero  para mi juego hacer efectos de sonido cuyo volumen cambia segun la "distancia" del jugador.
Digamos que creo una bomba, la cual tendra esta función:

ae=audio_emitter_create()
audio_emitter_position(ae,x,y,0)


Luego la hago explotar:

audio_play_sound_on(ae,explota,0,1)

Y finalmente, debo quitar el emisor de sonido:

audio_emitter_free(ae)

Hasta aquí todo bien. Pero la cosa es que no quiero simplemente eliminar un emisor de sonido, digamos que quiero con una sola linea de código eliminarlos todos, algo que podria querer hacer tras un cambio de room para asegurarme de que no me olvido de eliminar ninguno de los emisores.
¿Como podría lograrlo?

Para eliminar todos de golpe necesitas hacer tu script personalizado para borrar todos y cada uno de los emisores creados. Los cuales, antes debieran listarse dentro de, valga la redundancia, una lista. Esto para tener el registro de todos los emisores que se hayan creado.
Lo más práctico es utilizar las ds_list, porque crecen automáticamente, y se puede utilizar para recorrer enteramente la lista.

Primero deberías crear un script, que haga 2 cosas:
1) crear la lista si no existe.
2) crear un emisor y guardarlo en la lista.
3) devolver el emisor creado.
Puedes llamarlo simplemente crear_emisor_de_sonido();
Lo ideal sería crear una variable global antes para que obtenga el ID de la ds_list, dentro del script:
Luego, operas normalmente:
ae=crear_emisor_de_sonido()
audio_emitter_position(ae,x,y,0)

o:
audio_play_sound_on(ae,explota,0,1)

Luego creas el escript para borrar todos los emisores, el cual debería trabajar así:
1) recorrer la lista
2) obtener cada emisor y borrarlo
Lo cual puedes llamarlo borrar_todos_los_emisores();

Y finalmente deberías borrar la lista como tal, cuando ya no hagan falta emisores en tu juego:
ds_list_destroy(global.laListaDeEmisores )

Así que no hay una opción tipo audio_emitter_free(all) o algo así que me haga las cosas fáciles.
En fin, montare el vector para la lista de emisores.