CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 15 Jul 2020 07:41

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 1 mensaje ] 
Autor Mensaje
 Asunto: MIDI Fade Out
NotaPublicado: 25 Dic 2010 18:49 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Hace algún tiempo Jenesis me pidió a ver si podía implementar un "fade out" para ficheros MIDI en AGE. Estos días he estado intentando varias formas de hacerlo, no sólo por mi cuenta sino probando código de distintas librerías.

Me temo que la conclusión a la que he llegado es que no existe una forma multiplataforma y fiable de hacer esto. Y esto no sólo se aplica a Java, sino en general.

Por lo visto, el estándar MIDI define 16 canales en los que suenan instrumentos, y existe una manera de enviar un "mensaje de control" a cada uno de los canales. Uno de los posibles mensajes de control sirve para cambiar el volumen, que puede oscilar entre 0 y 127. Así pues, en principio se podría implementar un fade-out mandando estos mensajes desde 127 hasta llegar gradualmente a cero.

El problema es que, por lo visto, parece que las implementaciones de MIDI que vienen en la mayoría de tarjetas de sonido y sistemas operativos son implementaciones parciales, y no implementan estas sutilezas o las implementan mal. Por lo que he entendido de lo que he leído, sólo las tarjetas de audio profesional se toman el MIDI un poco "en serio", las que tenemos los mortales no lo hacen.

El resultado es que he probado varias maneras de acceder a los recursos MIDI y de mandar estos mensajes, y lo he ejecutado en varias máquinas y sistemas operativos. En la gran mayoría, no va. Hay una librería muy complicada que usa distintos sintetizadores MIDI según el sistema operativo y la configuración del sintetizador, o algo así, y esa consigue funcionarme más o menos dignamente en mis equipos con Windows; pero ni siquiera es un fade out muy bueno porque más que de 127 a 0 parece como si fuera de 127 a 100, es decir, el volumen mínimo es muy grande.

Por lo que he visto esto es un problema general de MIDI, no un problema de Java, a juzgar por búsquedas en Google parece que incluso en programas como Cubase o Logic Pro los fade-out funcionan o no dependiendo de cómo tenga uno configurado el sistema operativo.

Supongo que se podría arreglar instalando algún sintetizador MIDI concreto que se sepa que soporta bien esos mensajes de control, y haciendo que Java lo usara. Pero como no parece muy justificable andar instalándole cosas al usuario en su sistema operativo, creo que al final lo más realista es aceptar que para tener un fade-out multiplataforma y fiable hay que hacerlo en audio, no en MIDI.

Supongo que ahora entiendo por qué Eliuk recomendaba pasar del MIDI y usar audio directamente :D

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 1 mensaje ] 

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM