Class Sonido


public class Sonido extends Object
SONIDO - La caja de musica del juego (clase del profesor).

Todo suena con MIDI, que viene incluido en el JDK. Dos maneras:

  1. 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.
  2. 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

    Fields
    Modifier and Type
    Field
    Description
    El canal 0 del sintetizador, listo para tocar notas.
    static boolean
    Configuracion del jugador: efectos activos (tecla E).
    static boolean
    Configuracion del jugador: musica de fondo activa (tecla M).
    static String
    La ultima musica pedida, para reanudarla al reactivar la tecla M.
    static Sequencer
    El secuenciador que reproduce los archivos .mid por su cuenta.
    El sintetizador MIDI (los efectos suenan por aqui).
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    Prende o apaga los efectos (tecla E); tocar() revisa la bandera.
    static void
    Prende o apaga la musica de fondo (tecla M).
    static void
    Cierra el sintetizador y el secuenciador al salir del juego.
    static void
    Detiene la musica de fondo (se puede reanudar con alternarMusica).
    static void
    Dos notas graves: clave incorrecta, candado cerrado.
    static void
    Arpegio ascendente: abrir el cofre, logros.
    static void
    Nota seca y grave: chocar con un muro.
    static void
    Abre el sintetizador una sola vez, al iniciar el juego.
    static void
    Reproduce un archivo .mid en bucle sin detener el juego (el secuenciador toca por su cuenta).
    static void
    "Pling" corto: guardar algo en el inventario.
    static void
    tocar(int[] notas, int duracionMs)
    Toca las notas del arreglo, una tras otra, si hay audio y los efectos estan activados.
    static void
    La fanfarria del final del juego.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • sintetizador

      public static Synthesizer sintetizador
      El sintetizador MIDI (los efectos suenan por aqui).
    • canal

      public static MidiChannel canal
      El canal 0 del sintetizador, listo para tocar notas.
    • secuenciador

      public static Sequencer secuenciador
      El secuenciador que reproduce los archivos .mid por su cuenta.
    • musicaActiva

      public static boolean musicaActiva
      Configuracion del jugador: musica de fondo activa (tecla M).
    • efectosActivos

      public static boolean efectosActivos
      Configuracion del jugador: efectos activos (tecla E).
    • rutaMusica

      public static String 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

      public static void musicaFondo(String ruta)
      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.