Se trata de poder reproducir un sonido por todos los frames, con "loop", desde un fichero externo y pudiéndose variar el volumen.-----------------
Caso 1: Sin extensiones externas.Creamos una carpeta nueva, en nuestro caso:
sonido_01En ella crearemos nuestro .mfa, en nuestro caso:
sonido_01.mfaCreamos una subcarpeta donde alojar nuestros ficheros de audio, en nuestro ejemplo:
subcarpeta:
oggfichero de sonido:
b.oggla ruta "relativa" para nuestro fichero de audio será por tanto:
"ogg\b.ogg"-----------
En este caso 1, vamos a utilizar el objeto interno
sound, en los eventos, el que tiene el icono de un altavoz.
Como queremos que se reproduzca el sonido a partir de un fichero externo, escogemos alguna opción que ponga la palabra "file". Como queremos que se reproduzca en bucle...
escogemos la siguiente opción:
[Tienes que estar registrado y conectado para ver esa imagen]Ahora nos mostrará la posibilidad de escoger el fichero de audio.
Si lo escogemos, nos almacenará una referencia absoluta del tipo... c:\blabla\blabla...\b.ogg
Esto no interesa, pues a la hora de distribuirlo, no encontrará el fichero.
Por tanto hay que poner una ruta "relativa", para ello pulsamos el botón "Expression"
[Tienes que estar registrado y conectado para ver esa imagen]Y aquí escribimos la ruta relativa:
"ogg\b.ogg" (incluyendo las comillas).
Tan sólo nos queda marcar en las propiedades de la aplicación "play sounds over frames" en la pestaña de runtime.
Variación del volumen: Usaremos la tecla "+" para subirlo y "-" para bajarlo. Lo ponermos en la parte de eventos globales para no tener que repetirlo en todos los frames. (suponiendo que queremos que se pueda variar el volumen en todos los frames).
El ejemplo, incluyendo mfa: sonido_01
Teclas del ejemplo:
esc : salir
+ : subir volumen
- : bajar volumen
Notas: El MMF (tanto el .mfa, como el .exe ...) tiene en cuenta las rutas "relativas" a partir de su ubicación.
El volumen varía entre 0 y 100. Por defecto es 100. Si se quiere que empiece a sonar con un valor distinto, tan sólo hay que indicarselo en el mismo evento que va a lanzar el sonido.
Caso 2: Con Active Direct Show.Este caso es similar al anterior, por lo que solo mencionamos los cambios.
1. Cargamos la extensión, que nos pedirá un fichero, pero no le damos ninguno.
2. En eventos, hay que hacer un load (referencia relativa), indicar el looping y el play.
3. En las propiedades del objeto, indicarle que lo ejecute a través de los frames.
4. De nuevo, la variación del volumen la ponemos en los global events.
Ejemplo, incluyendo mfa: sonido_02
Teclas del ejemplo:
esc : salir
+ : subir volumen
- : bajar volumen
Notas: El loop, con esta extensión, tiene una pequeña demora, bastante molesta.
No sé si tiene solución ni si es igual para todos, dado que hace uso del
ffdshow, que debe estar presente en el Windows.
La muestra de sonido es más corta, para apreciar ese "molesto" retraso en el loop.
Caso 3: Con la extensión ONU.Necesitamos dos extensiones del paquete de extensiones ONU.
1.
Onu audio controller. Este es el centro de control de todo el paquete.
2.
Onu engineer-ogg. Porque vamos a reproducir un fichero de audio .ogg.
Particularidades de esta extensión.
a. Se hace uso del concepto de "Deck", que viene a ser un "módulo".
b. El sonido se reproduce en todos los frames por defecto.
c. Para que el "Volumen" pueda variarse en todos los frames, se necesita que la extensión
onu audio controller esté en cada frame.
d. El resto es idéntico a los casos anteriores, aplicados a este objeto.
Ejemplo incluyendo mfa: sonido_03
Teclas del ejemplo:
esc : salir
+ : subir volumen
- : bajar volumen
Notas: Las teclas para el volumen, también las ponemos en el global events, como en los casos anteriores.
Aquí vemos que el loop es perfecto.
La extensión es muy versátil y funcional.
Como siempre, esto se irá ampliando con el tiempo.