Autor Tema: Sintetizador musical con PIC controlado por un Plus/4  (Leído 3902 veces)

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 556
  • SYS 0
    • Ver Perfil
Sintetizador musical con PIC controlado por un Plus/4
« en: Mayo 14, 2014, 03:21:41 »
Esto esta relacionado con el tema http://retroinvaders.com/commodoremania/foro/index.php/topic,576.msg10123.html#msg10123 pero como no tiene que ver con Commodore 64 lo publico en este foro.
Resumo para el que no sabe de que se trata, hace un tiempo hice un sintetizador de voz con un microcontrolador PIC16F648A, a medida que fue avanzando el proyecto se agrego la posibilidad de cantar, y luego se le agregaron funciones de sintetizador musical. Las funciones de ruido y sonido son realmente muy basicas, porque el PIC solo dispone de 4K de programa y 256 bytes de RAM, ni siquiera cabian en la memoria inicialmente, y solo despues de varias optimizaciones se pudieron agregar.
Si bien ya hice muchas pruebas enviandole comandos para generar voz y musica, tenia curiosidad de saber que tan bien podria funcionar como sintetizador musical controlado en tiempo real, por lo cual se me ocurrio hacer un programa para MSX, ya que el BASIC es potente y permitia desarrollar algo rapidamente. Aun asi tuve bastantes complicaciones, la principal es la repeticion automatica de las teclas, ya que la idea era disparar un sonido cuando se presionara una tecla, y detenerlo cuando se liberara. Con la auto repeticion lo que ocurria era que automaticamente se liberaba y presionaba la tecla desde el sistema repetidamente, lo que llevo a usar algunos trucos para detectar cuando estaba realmente presionada.
Una vez que quedo el programa funcionando, se me ocurrio probarlo en el Plus/4, que tiene un buen BASIC y una UART, asi que hice una adaptacion del programa para MSX, y tenia el mismo problema de la repeticion, que por suerte se puede deshabilitar con un POKE. El nuevo problema luego de deshabilitar la repeticion de teclas fue que la instruccion GET ya no lee mas teclas mientras esta presionada, es decir solo lee la tecla cuando se presiona, y despues no se puede saber en que momento se libera. Para esto tuve que recurrir a leer una direccion de memoria para darme cuenta cuando no habia ninguna tecla presionada. El programa funciono muy bien, pero tanto en la version para MSX como en la version para Plus/4 hay un retardo entre tecla y tecla, que los hace impracticos para tocar musica, sin embargo sirven para experimentar con distintos parametros del sintetizador.
Esta es una captura de la version para MSX, donde se tiene que usar un solo color de texto para toda la pantalla, a menos que se use un modo bitmap:



Y esta es una captura de la version para Plus/4:



Hice un video probando el programa, de musica no se nada asi que solo pruebo notas al azar cambiando distintos parametros, volumen, octava, instrumento, modo de modulacion, tipo y duracion de envolvente. Como dije, las funciones musicales son muy basicas, el programa del PIC esta dedicado en su mayoria a sintetizar voz, si algun dia tengo tiempo lo usare en algun juego.

Sintetizador HR4 controlado desde Commodore Plus/4
« última modificación: Mayo 14, 2014, 03:24:39 por pastbytes »

marcos64

  • Commodore Master
  • *****
  • Mensajes: 2970
    • Ver Perfil
    • http://marcos64.orgfree.com/
Re:Sintetizador musical con PIC controlado por un Plus/4
« Respuesta #1 en: Mayo 14, 2014, 09:30:17 »
Curiosos inventos que haces  :D

Al estar programado en BASIC es normal que la latencia sea alta, tendrias que recurir al codigo maquina para reducirla y seguro que obtienes unos valores adecuados. Aunque, como es normal, complicaria mucho la programacion.
http://marcos64.orgfree.com/
Actualizacion 22/4/2018: Actualizada Load'N'Run numero 5 con nuevos TAPs y PRGs.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Sintetizador musical con PIC controlado por un Plus/4
« Respuesta #2 en: Mayo 14, 2014, 13:31:07 »
Ese video cambiaría muchísimo si consiguieras aalguien que sepa de música y tocara algunas melodías!!
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 556
  • SYS 0
    • Ver Perfil
Re:Sintetizador musical con PIC controlado por un Plus/4
« Respuesta #3 en: Mayo 14, 2014, 16:47:44 »
Igual no se podria tocar nada interesante, hay que tocar como empleado publico que tipea en maquina de escribir mecanica con dos dedos. Se me ocurre que podria existir algun compilador de BASIC para Plus/4, encontre un par pero no tuve tiempo de probarlos, tal vez asi mejoraria un poco, lo que mas lo retrasa creo que es la impresion en pantalla.
El video asi como esta no dice mucho, la idea es agregarle unos subtitulos para explicar que parametros voy cambiando, no encontre la manera de que se viera todo, es importante lo que se ve en pantalla porque indica que es lo que se envia al PIC, pero tambien lo es mostrar que secuencias de teclas se necesitan, pero la pantalla apenas se nota.

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 556
  • SYS 0
    • Ver Perfil
Re:Sintetizador musical con PIC controlado por un Plus/4
« Respuesta #4 en: Mayo 14, 2014, 19:32:36 »
Ya esta actualizado el video con anotaciones, ahora se entiende mucho mas.