Para no abrir un nuevo tema, y como por el momento no tiene mucho que ver con Commodore, actualizo aca el estado del proyecto del sintetizador por hard. En estos meses hubo bastantes avances, lo primero es que complete el sintetizador de voz, agregue jumpers de configuracion para que pueda conectarse por RS232 a 4 velocidades distintas: 1200, 9600, 19200 y 57600 bps. Tambien ahora el eco de lo recibido se puede deshabilitar con un jumper, ya que es util solamente en el caso de controlar el chip desde una terminal, y agregue otro jumper para poder deshabilitar el mensaje de arranque, tanto hablado como de texto, lo que hace que se pueda integrar dentro de otros proyectos.
El cambio mas importante en estos meses fue que pude agregar tanto un generador de ruido como uno de sonido, con varios instrumentos incluidos. El sonido sigue siendo monofonico, pero se puede generar tanto voz como sonido en las octavas 0 a 5, aunque para la voz no tiene mucho sentido fuera de las octavas 1 a 3. Las ondas que se pueden usar para generar sonido son: bajo, organo, guitarra electrica, y una cuarta onda que es definible por el usuario, pero viene precargada con la definicion de una onda cuadrada. Ese ultimo instrumento se reproduce desde la RAM del chip, y se puede definir con una secuencia de 66 bytes que representan la tabla de ondas del sonido, que se puede enviar en cualquier momento mediante un comando.
Ademas de los instrumentos se dispone de un generador de ruido, que igual que el generador de sonido permite controlar la frecuencia por notas musicales, en el caso del ruido se puede ajustar en 3 octavas, en el caso del sonido en 6. Tanto al ruido como al sonido se le puede asignar envolventes, tambien de duracion/frecuencia programable, con 4 formas de onda distintas (triangular, diente de sierra descendente, diente de sierra ascendente, y onda definida por el usuario) y en dos modos posibles: envolvente ciclica (se repite continuamente mientras dure el sonido), o envolvente unica (se reproduce una unica vez).
Todavia no hice una prueba en Commodore 64, ya que como siempre probaba todo primero ahi, esta vez decidi empezar por otras plataformas. La primera prueba la hice en mi CZ Spectrum con Interface 1, que incorpora RS232. Este es el video, donde se puede ver tambien un par de fotos de la placa conectada:
Demo de sintetizador HR4 en CZ Spectrum 48K
La segunda prueba la hice conectando el sintetizador directamente al puerto de joystick en MSX, usando una rutina que simula una transmision RS232 a niveles TTL, por lo cual el circuito se simplifica bastante, al no tener que usar un MAX232 para adaptar los voltajes. La rutina de transmision se llama directamente desde el BASIC pasandole una cadena como parametro, por lo que es facil adaptar un programa para que soporte al sintetizador.
Para la prueba modifique un juego en BASIC y le agregue voz y sonido, no es una prueba muy espectacular pero sirve para darse una idea de como se usaria en un programa mas elaborado. El juego usaba la orden PLAY para emitir el sonido, que en MSX toca una secuencia como "tarea de fondo", y se puede consultar tambien desde BASIC el estado de la reproduccion para saber cuando se completo la secuencia. Para hacer lo mismo con el sintetizador, le tuve que conectar la salida PLAYING del chip a una entrada del puerto de joystick, de forma que con la orden STICK (que chequea el estado del joystick) se puede saber si se termino de reproducir la secuencia enviada. De esta manera, adaptar juegos de MSXBASIC cambiando de PLAY al sintetizador es bastante simple, con la salvedad de que el sintetizador es monofonico y el AY-3-8910 tiene 3 canales de sonido. Tambien probe el comando para detener la secuencia inmediatamente y borrar el buffer, lo que es util por ejemplo al recorrer un menu, como se puede apreciar en el video:
Demo de sintetizador HR4 en MSX
Aca se puede ver la placa conectada:


Los dos videos los hice capturando la salida de video compuesto de cada maquina y la salida de sonido del sintetizador.
En Commodore quiero hacer alguna prueba en C64, otra en Plus/4, y una ultima en C128 en modo 128, en principio usando el puerto del usuario, que para RS232 es compatible en los tres modelos por lo que se usaria la misma placa, pero en Plus/4 se pueden obtener velocidades de hasta 19200 bps, mientras que en C64/128 se usaria 1200 bps.
Ademas de esto ya hice un manual preliminar que ni tiempo tuve de revisar, y se puede descargar aqui:
http://www.pastbytes.com/apps/picsynth/ManualHR4.zipEl circuito para MSX es este:

El puerto en MSX es diferente que en Commodore, pero seguramente se puede hacer algo similar, todavia no se si es mejor conectar el chip por un puerto de joystick o usar el puerto del usuario. Lo mas practico seria el puerto del usuario, pero conseguir los conectores no es tan facil, al menos por aca, vi que los venden en ebay a 75 dolares por 100 conectores, lo que es un muy buen precio, pero no creo que la aduana deje entrar 100 conectores sin tomarlo como una importacion comercial. Por esta razon puede convenir mas usar el puerto de joystick, pero tambien es una complicacion tener que andar conectando y desconectando la placa.
Por ultimo, para ayudar a probar en tiempo real las funciones del sintetizador, y para generar secuencias simples, hice un programa para Windows, que tiene esta interfaz:

Aca se puede ver un video de una de las primeras versiones, mucho mas simple, de cuando el chip no tenia generador de ruido y sonido:
Sintetizador de voz HR4 (2013) - Beta 1
Estuve buscando alguna aventura conversacional que no fuera muy complicada de modificar, pero por lo visto no hay nada que sirva, ya que para poder hacer una prueba rapida deberia cumplir demasiadas condiciones, como que deberia estar en BASIC en lo posible y no ser un programa muy largo, porque hay que duplicar la cantidad de texto almacenado (el texto original para pantalla y el texto fonetico para la voz). Me parece que va a ser mas practico hacer o modificar algun juego simple, ya que no pretendo pasarme meses desarrollando un juego si la intencion es solamente probar el chip.