lunes, 29 de abril de 2019

Simphony. Programa musical

Mi participación en el  II Concurso de Programas MSX (1986), Simphonyorganizado por Sony España, y cuyo premio se falló en 1987. Es una aplicación musical programada en ensamblador para ordenadores MSX1, y que cuenta con un pequeño cargador escrito en BASIC. Conseguí uno de los terceros premios de 100.000 ptas, bastante dinero para la época, que utilicé para comprarme un Sony HB-700S (yo el dinero ni lo vi, ya me llegó en especie). En la siguiente imagen aparece la nota de prensa con los resultados publicados en MSX Club de Programas nº 28 (1987).


Este juego lo hice con 16 años, e iba aprendiendo ensamblador a la vez que lo desarrollaba. Estaba bien para aquella época, pero con un poco más de experiencia y documentación se podría haber hecho algo más fino. Como nota anecdótica, el ordenador MSX en el que lo desarrollé tenía solo 16Kb de RAM, y tuve que pedir prestada una ampliación de memoria para poder ensamblarlo. Y el programa para ensamblar estaba escrito en BASIC. Y, por supuesto, nada de depurador. En aquella época todo lo escribía en papel, depuración también en papel, y cuando ya estaba más o menos clara la cosa, a picar tecla y a hincharse a cuelgues.

Poner el programa en marcha de nuevo ha sido un poco locura. No conservo nada de él, excepto el listado anexo al contrato que firmé con Sony. Más de 20 páginas en ensamblador sin etiquetas y una página en BASIC. Una vez descartada la opción del escaseado con OCR (por la poca fiabilidad en el reconocimiento de números hexadecimales), me puse manos a la obra tecleando el programa desde cero. El código BASIC lo tecleé directamente en el ordenador MSX. El código ensamblador, después de haber probado distintas combinaciones en el propio ordenador MSX, al final me decanté por hacerlo en mi Mac. Para ello usé el editor Geany, el ensamblador Glass (aprovecho para dar las gracias a su desarrollador), y el emulador OpenMSX.

Después de un laborioso proceso de depuración y etiquetado, conseguí hacerlo funcionar (y de paso solucionar algunos fallos del programa original). Desde luego nada que ver con el proceso de trabajo en los 80, que era muy muy penoso. No se si ahora tendría la fuerza de voluntad para desarrollar en esas condiciones. Me ha resultado muy entretenido volver a programar en ensamblador del Z80 después de 30 años. Está claro que es como montar en bicicleta.

El programa es de un uso relativamente sencillo. Tenemos dos teclados en pantalla (de dos y una octavas), y utilizamos el teclado del ordenador para tocas las notas, y en todo momento se nos marca cual es en los teclados de la pantalla. Además, dispone de varias opciones para aplicar algunos efectos de sonido y acompañamientos. El programa puede hacer sonar hasta tres notas simultáneamente (una por cada teclado mas el acompañamiento), debido a que ese es el número máximo soportado por el PSG de MSX. Tenemos opciones para grabar y reproducir las notas tocadas. Además, podemos salvar y cargar dichas secuencias en cinta.

Tanto el código fuente como los ejecutables están disponibles en GitHub:

https://github.com/humbertomb/mymsx/tree/master/simphony1

1 comentario:

  1. Para ser un chaval quien lo programó, tiene muchísimo mérito. Quizás fue un acierto por parte de Humberto niño viendo lo que es el Synthesizer msx konami, hoy.. Uno de sus programas más exclusivos y valorados. Enhorabuena niño Humberto!!

    ResponderEliminar