studio reales proyectos programacion libro introducción incluye herramientas fundamentos fuente español código con avanzado aplicaciones java midi

reales - Ejemplo simple de Java MIDI que no produce ningún sonido



libro de android studio en español pdf (4)

Este código simple no produce ningún sonido en un par de máquinas que he usado para probarlo. Estoy ejecutando el código desde Eclipse, pero también he intentado utilizar la línea de comandos sin ningún resultado.

public static void main(String[] args) { try { Synthesizer synthesizer = MidiSystem.getSynthesizer(); synthesizer.open(); MidiChannel[] channels = synthesizer.getChannels(); channels[0].noteOn(60, 60); Thread.sleep(200); channels[0].noteOff(60); synthesizer.close(); } catch (Exception e) { e.printStackTrace(); } }

Puedo obtener sonido con éxito obteniendo un Secuenciador, agregando eventos MIDI a la secuencia y reproduciendo la secuencia, pero estoy tratando de hacer algunos efectos de música en tiempo real, que el secuenciador no admite.

¿Algunas ideas?

EDITAR CON SOLUCIÓN: Resulta que el problema es que, por defecto, el JRE no viene con un banco de sonidos (interesante, entonces, que usar el Secuenciador funcionó, pero el uso del Sintetizador no). Gracias, ¡ jmc !

Para resolver el problema, descargué un banco de sonidos de java.sun.com y lo coloqué en (en WinXP) C: / Archivos de programa / jre1.6.0_07 / lib / audio (tenía que hacer la carpeta de audio).


¿Has intentado usar un canal diferente? Puede ser este discoson te acercará a una solución ...


He probado tu código en mi máquina (Windows XP, JRE 1.6) y reproduce las notas. Quizás solo una nota es demasiado pequeña para escucharla. Intenta agregar más notas. Además, intente ajustar el volumen más alto.


Algunas instalaciones de JRE no incluyen JavaSound soundbank.gm (para ahorrar espacio) por lo que su código no tendría una fuente de sonido para disparar en esas máquinas.

Verifique la existencia del banco de sonidos en las máquinas que no funcionan. También puede poner el banco de sonidos en el mismo directorio que su archivo .class y lo encontrará.

Es posible agregar el banco de sonido o actualizar la instalación de Java en esa máquina: el dolor de la inconsistencia, lo sé :)


Solo necesito 1 acción más para dormir antes de cerrar el sintetizador:

public static void main(String[] args) { try { Synthesizer synthesizer = MidiSystem.getSynthesizer(); synthesizer.open(); MidiChannel[] channels = synthesizer.getChannels(); channels[0].noteOn(60, 60); Thread.sleep(200); channels[0].noteOff(60); Thread.sleep(200); synthesizer.close(); } catch (Exception e) { e.printStackTrace(); } }