Class Sonido
java.lang.Object
Sonido
SONIDO - La caja de musica del juego (clase del profesor).
Todo suena con MIDI, que viene incluido en el JDK. Dos maneras:
- EFECTOS programados: una melodia es un ARREGLO de numeros. Nota 60 = Do central; 62 = Re; 64 = Mi; 65 = Fa; 67 = Sol; 69 = La; 71 = Si; 72 = Do agudo. Sumar 12 sube una octava. Crear un efecto nuevo = copiar un metodo y cambiar los numeros.
- MUSICA de fondo: un archivo .mid en la carpeta musica/. Pueden DESCARGAR un .mid de internet o GENERARLO con una IA y ponerlo ahi: el secuenciador lo toca en bucle por su cuenta, sin detener el juego.
Si el computador no tiene audio, todo falla EN SILENCIO y el juego sigue normal: por eso cada metodo valida y usa try-catch.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic MidiChannelEl canal 0 del sintetizador, listo para tocar notas.static booleanConfiguracion del jugador: efectos activos (tecla E).static booleanConfiguracion del jugador: musica de fondo activa (tecla M).static StringLa ultima musica pedida, para reanudarla al reactivar la tecla M.static SequencerEl secuenciador que reproduce los archivos .mid por su cuenta.static SynthesizerEl sintetizador MIDI (los efectos suenan por aqui). -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidPrende o apaga los efectos (tecla E); tocar() revisa la bandera.static voidPrende o apaga la musica de fondo (tecla M).static voidapagar()Cierra el sintetizador y el secuenciador al salir del juego.static voidDetiene la musica de fondo (se puede reanudar con alternarMusica).static voiderror()Dos notas graves: clave incorrecta, candado cerrado.static voidexito()Arpegio ascendente: abrir el cofre, logros.static voidgolpe()Nota seca y grave: chocar con un muro.static voidiniciar()Abre el sintetizador una sola vez, al iniciar el juego.static voidmusicaFondo(String ruta) Reproduce un archivo .mid en bucle sin detener el juego (el secuenciador toca por su cuenta).static voidrecoger()"Pling" corto: guardar algo en el inventario.static voidtocar(int[] notas, int duracionMs) Toca las notas del arreglo, una tras otra, si hay audio y los efectos estan activados.static voidvictoria()La fanfarria del final del juego.
-
Field Details
-
sintetizador
El sintetizador MIDI (los efectos suenan por aqui). -
canal
El canal 0 del sintetizador, listo para tocar notas. -
secuenciador
El secuenciador que reproduce los archivos .mid por su cuenta. -
musicaActiva
public static boolean musicaActivaConfiguracion del jugador: musica de fondo activa (tecla M). -
efectosActivos
public static boolean efectosActivosConfiguracion del jugador: efectos activos (tecla E). -
rutaMusica
La ultima musica pedida, para reanudarla al reactivar la tecla M.
-
-
Constructor Details
-
Sonido
public Sonido()
-
-
Method Details
-
iniciar
public static void iniciar()Abre el sintetizador una sola vez, al iniciar el juego. Si el equipo no tiene audio, el canal queda en null y el juego continua sin sonido. -
exito
public static void exito()Arpegio ascendente: abrir el cofre, logros. -
recoger
public static void recoger()"Pling" corto: guardar algo en el inventario. -
error
public static void error()Dos notas graves: clave incorrecta, candado cerrado. -
golpe
public static void golpe()Nota seca y grave: chocar con un muro. -
victoria
public static void victoria()La fanfarria del final del juego. -
tocar
public static void tocar(int[] notas, int duracionMs) Toca las notas del arreglo, una tras otra, si hay audio y los efectos estan activados.- Parameters:
notas- las notas MIDI (60 = Do central; +12 por octava).duracionMs- cuanto dura cada nota, en milisegundos.
-
musicaFondo
Reproduce un archivo .mid en bucle sin detener el juego (el secuenciador toca por su cuenta). Si el archivo no existe o esta danado, simplemente no hay musica.- Parameters:
ruta- el archivo MIDI, por ejemplo "musica/ambiente.mid".
-
detenerMusica
public static void detenerMusica()Detiene la musica de fondo (se puede reanudar con alternarMusica). -
alternarMusica
public static void alternarMusica()Prende o apaga la musica de fondo (tecla M). Si estaba sonando se pausa; al prenderla de nuevo continua donde iba (o arranca desde cero si nunca habia sonado). -
alternarEfectos
public static void alternarEfectos()Prende o apaga los efectos (tecla E); tocar() revisa la bandera. -
apagar
public static void apagar()Cierra el sintetizador y el secuenciador al salir del juego. Sin esto el programa no termina: los dispositivos MIDI abiertos mantienen vivo el proceso.
-