Karoshi MSX Community

Foros de Desarrollo (Español) => Desarrollo => Mensaje iniciado por: pastbytes en 14 de Marzo de 2013, 09:50:30 am



Título: Sintetizador de voz en español por RS232
Publicado por: pastbytes en 14 de Marzo de 2013, 09:50:30 am
Este tema esta relacionado con este otro de hace 1 año atras: http://karoshi.auic.es/index.php?topic=2248
Algunos pocos sabran que hice una serie de sintetizadores de voz para varias plataformas de 8 bits, usables desde BASIC. Esos programas, bastante experimentales por cierto, eran una simplificacion extrema del proyecto original que corria en un microcontrolador PIC y se controlaba por RS232. No hice mucho mas en las versiones por soft, llamadas TAV (texto a voz), porque no soy programador de Spectrum o MSX, ni de Z80 siquiera, ese sintetizador fue el primer y ultimo proyecto que hice con Z80. Ya que me habia diversificado demasiado para el tiempo del que disponia, y habiendo quedado 3 versiones sin siquiera empezar (Amstrad CPC, Atari ST y Commodore 16 / Plus/4), decidi concentrarme en mejorar el proyecto original por hard, el cual habia llegado a probar en Spectrum 48K con Interface 1, Commodore 64 y Epson HX-20 (mi MSX no tiene RS232).
Un año despues de mi incursion en los micros de 8 bits, y dos versiones de hard mas tarde, puedo presentar una version casi final del chip. El proyecto TAV se baso en la version 2 del sintetizador con PIC, luego de eso hubo una version 3 que avanzo hasta darme cuenta de que no era realizable con una calidad satisfactoria de la manera en que lo habia encaminado, por lo que a medio camino se convirtio en la actual version 4.
El sintetizador emite sonido digital de 8 bits a 8680 Hz, apenas un poco mas de lo que se conoce como calidad telefonica, pero suficiente para la voz. El programa es basicamente un secuenciador con buffer de recepcion, lo que permite enviar rafagas de informacion al chip y seguir procesando de manera independiente. Para controlarlo se requiere un puerto RS232 con una linea TX para enviar datos (el chip devuelve lo recibido por RX, pero esta linea no es necesaria), y una entrada para leer la señal CTS desde el chip, la que indica al ordenador que temporalmente no puede aceptar mas datos. Es decir que el chip puede conectarse a cualquier ordenador que disponga de una salida y una entrada TTL, como por ejemplo un puerto de joystick programable como salida.
Aqui se puede ver un video probando la placa, que consta de un PIC16F648A a 20MHz, un MAX232 para adaptar de TTL a RS232 (+-12V), y sus componentes asociados:  http://www.youtube.com/watch?v=h2DKORl6hak (http://www.youtube.com/watch?v=h2DKORl6hak)
La placa es bien minimalista, si se conectara a un MSX por el puerto de joystick o a un Spectrum +2 seguramente bastaria con el PIC, el cristal de 20MHz, 3 capacitores, una resistencia y un conector de salida de audio. En la prueba se usa el PC para enviarle un texto preescrito con los comandos en ASCII, a traves de un programa emulador de terminal a 1200bps.
El led rojo indica que se esta reproduciendo sonido, el azul que esta a su lado indica cuando se activa CTS (buffer de recepcion lleno), y el azul que esta mas alejado es una linea de debug que indica cuando se esta enviando un comando de modificacion de voz.
El texto de prueba quedo un poco improvisado porque queria probar tanto la nota como el tipo de voz, el tipo de voz y la nota se pueden cambiar en el mismo rango, desde la nota C1 hasta la nota C4, pero uno define la nota a la que se emite la voz, y el otro define el tipo de voz, mas alta o mas baja. Se puede ver que se usan dos tipos de voz y ambas pueden cantar las mismas notas de las 3 octavas, solo que con distinto tono de voz (como dos personas distintas).
Ya tendre que intentar conectar la placa al puerto de joystick del unico MSX que tengo, un Talent DPC-200 (MSX1) con alguna rutina en ensamblador para enviar la secuencia a 1200bps.



Título: Re: Sintetizador de voz en español por RS232
Publicado por: aorante en 14 de Marzo de 2013, 10:23:08 am
Felicidades por el proyecto!
Es impresionante!  :D


Título: Re: Sintetizador de voz en español por RS232
Publicado por: j4mk3 en 14 de Marzo de 2013, 10:24:18 pm
Impresionante es poco !! :o :o :o :o :o :o

¿Que viavilidad tiene este hardware sonoro por el port de joystick para un posible videojuego ?
¿Exige el soft mucho tiempo de CPU para el refresco del buffer ? ::)


Título: Re: Sintetizador de voz en español por RS232
Publicado por: pastbytes en 15 de Marzo de 2013, 12:19:59 am
La idea es precisamente que sirva como expansion de sonido, el buffer es interno, el chip comienza a ejecutar la secuencia apenas la recibe, y va almacenando en el buffer, se puede enviar rafagas de informacion y seguir procesando en el MSX sin preocuparse del sonido, mientras se emita mas informacion a tiempo cuando se este terminando de reproducir lo del buffer. Se puede ir enviando datos cada tanto, evitando que se vacie el buffer, y no se notaria ninguna interrupcion, es posible tener el chip sonando continuamente. En el caso de hacer un juego que lo use, habria que sincronizar de alguna manera el codigo para enviar un byte a 1200 bps, 8N1, eso no seria muy complicado de hacer ya que se puede enviar un byte cada tanto y es lo suficientemente lento para el Z80 como para hacer otras cosas en medio del envio del byte.
El proyecto originalmente era solo sintesis de voz en español, pero con el tiempo decidi incluir funciones de sintetizador musical, las primeras pruebas de eso es el hecho de que cante, adaptar el chip para que genere musica solo implicaria agregar un par de "fonemas" que en lugar de voz representen ondas basicas, como triangular, cuadrada, etc. El metodo que se usa para darle una nota a la voz es el de aplicarle una onda envolvente a una frecuencia determinada, por lo que ya tenemos ondas y envolvente, tambien la generacion de ruido esta implementada, se usa para generar los fonemas S, T, SH, F, CH y J. En resumen, es un secuenciador complejo aplicado en este caso a la generacion de voz.
Lamentablemente tuve que desistir de la parte musical, mi idea era tener voz y un canal basico de sonido extra, que permitiera hacer melodias simples y algun efecto sonoro (disparos, pasos, explosiones), pero tambien queria mantenerme en ese modelo particular de PIC, y por cuestiones de falta de memoria tuve que dejarlo solo en voz. El chip tiene solo 4K para el programa, pero es facil de conseguir y cuesta menos de 5 dolares, tampoco se usan muchos componentes extra, el diseño esta pensado para poder armarse en gran escala de ser necesario. La placa que se ve en el video ni siquiera tiene hecho el circuito impreso, es una placa generica armada con cables.
La decision que tuve que tomar por el limite de memoria del chip, es que este proyecto se queda sin funciones musicales, implementado en un PIC16, y ahora empiezo a migrar el programa a un PIC18, que tiene 32K para programa (y para agregar muchas mas tablas de ondas), el doble de velocidad, y algunas instrucciones nuevas que optimizarian bastante el programa. El nuevo proyecto esta definido como un sintetizador musical de 4 canales de 8 bits a 26KHz de muestreo, con varios tipos de onda basicos, algunos instrumentos mas elaborados, y la voz como un instrumento mas.
Con ambos proyectos se pueden hacer algunas variaciones, por ejemplo si conecto el chip directo al bus del Z80, el espacio ahorrado en el codigo de recepcion y transmision serie se puede utilizar para agregar un soporte basico de sonido y ruido, aunque igual seria monofonico. Lo mismo si se conecta al puerto paralelo. En el proyecto con PIC18, estoy estudiando la posibilidad de hacer una version con MIDI y otra para el puerto serie que usan los perifericos del Commodore 64.
Si interesa el tema, de este mensaje en adelante se puede leer un poco de esta version del sintetizador, y hay algunos mp3s con pruebas varias para escuchar:
http://www.retrocomputacion.com/e107_plugins/forum/forum_viewtopic.php?59536.20#post_77250
Un poco mas arriba de ese mensaje hay una foto con la placa actual, junto a la placa sin adaptador a RS232, que como se ve es bien minimalista, esa se conecta al puerto del usuario del Commodore 64, que incluye un puerto RS232 pero TTL por lo que no es necesaria la adaptacion de voltajes. Para MSX tendria que armarse una placa similar pero conectada al puerto de joystick o al paralelo.
En ese mismo tema tambien se puede seguir todo el desarrollo de las versiones 2 y 3.


Título: Re: Sintetizador de voz en español por RS232
Publicado por: pastbytes en 16 de Marzo de 2013, 10:30:10 am
Otro video de prueba, generando voz robotica, y con un poco de imaginacion, musica y efectos.  ;)

http://www.youtube.com/watch?v=YVDSw3bjCP4


Título: Re: Sintetizador de voz en español por RS232
Publicado por: pastbytes en 26 de Septiembre de 2013, 10:09:46 pm
Por falta de tiempo todavia no pude hacer una demo en BASIC para MSX, pero hubo algunos avances, en estos meses pude agregar al sintetizador un generador de ruido y varios instrumentos musicales, incluso uno programable por el usuario, aunque el sonido sigue siendo monofonico.
Hice una placa de prueba para MSX conectada al puerto de joystick, y funciona bien usando esta rutina que simula RS232:
http://hotbit.blogspot.com.es/2008/01/serial-bitbang-19200-bauds-na-porta-de.html
La rutina soporta varias velocidades, yo la probe a 19200 bps, la misma velocidad que use en una prueba con ZX Spectrum con la salida RS232 de la Interface 1.
En este video se puede ver la demostracion de Spectrum, en MSX tiene que funcionar exactamente igual, la Interface 1 muestra cambios de color en el borde de la pantalla cuando esta transfiriendo datos, asi que les da una idea de que tanto proceso requiere el sintetizador. Como es basicamente un secuenciador, solo hace falta enviarle datos cada tanto, y no es necesario andar temporizando, ya que de eso se encarga el propio sintetizador.
El video es este: http://www.youtube.com/watch?v=Au8V4iX4EPg

Y aca se pueden ver unas fotos de la placa del sintetizador conectada a mi Talent DPC-200, que es MSX1, se puede apreciar que los componentes usados son minimos:

(http://www.retrocomputacion.com/e107_files/public/1380099565_75_FT59536_epsn3482s.jpg)

(http://www.retrocomputacion.com/e107_files/public/1380099565_75_FT59536_epsn3483s.jpg)

(http://www.retrocomputacion.com/e107_files/public/1380099565_75_FT59536_epsn3484s.jpg)

(http://www.retrocomputacion.com/e107_files/public/1380099565_75_FT59536_epsn3485s.jpg)

En cuanto me haga tiempo para hacerle una interfaz a la rutina de transmision para usarla desde el BASIC, con lectura de la linea CTS incluida, voy a hacer algun video de prueba.


Título: Re:Sintetizador de voz en español por RS232
Publicado por: pastbytes en 01 de Octubre de 2013, 02:16:10 am
Modifique un juego en BASIC para MSX, que fue presentado por DamianWorf en la competencia Retrospectiva 2012, e hice un video probandolo con la placa del sintetizador a 19200 bps.
El juego usaba la orden PLAY para emitir los sonidos, y esperaba a que terminara la reproduccion antes de continuar, por lo que estaba sincronizado con el sonido, para poder hacer lo mismo con el sintetizador, agregue la conexion de la salida PLAYING de la placa a una entrada de direccion del joystick, por lo que ahora se puede saber cuando el chip termina de reproducir sonido.
En el video tambien se prueba la voz en el menu principal, mostrando que a pesar de ser un secuenciador, dispone de comandos para detener el sonido y borrar el buffer, que es lo que se hace cada vez que se cambia de opcion.
El video se puede ver aca: http://www.youtube.com/watch?v=DWPktgs_d4A


Título: Re:Sintetizador de voz en español por RS232
Publicado por: MsxKun en 01 de Octubre de 2013, 06:10:02 pm
Modifique un juego en BASIC para MSX, que fue presentado por DamianWorf en la competencia Retrospectiva 2012, e hice un video probandolo con la placa del sintetizador a 19200 bps.
El juego usaba la orden PLAY para emitir los sonidos, y esperaba a que terminara la reproduccion antes de continuar, por lo que estaba sincronizado con el sonido, para poder hacer lo mismo con el sintetizador, agregue la conexion de la salida PLAYING de la placa a una entrada de direccion del joystick, por lo que ahora se puede saber cuando el chip termina de reproducir sonido.
En el video tambien se prueba la voz en el menu principal, mostrando que a pesar de ser un secuenciador, dispone de comandos para detener el sonido y borrar el buffer, que es lo que se hace cada vez que se cambia de opcion.
El video se puede ver aca: http://www.youtube.com/watch?v=DWPktgs_d4A

Mola :)


Título: Re:Sintetizador de voz en español por RS232
Publicado por: Mortimer en 01 de Octubre de 2013, 09:26:06 pm
Me alegra mucho ver que este proyecto tan interesante sigue adelante :D


Título: Re:Sintetizador de voz en español por RS232
Publicado por: pastbytes en 14 de Mayo de 2014, 07:23:14 pm
Revivo este tema porque tenia curiosidad de saber que tan util podia ser el sintetizador para musica en tiempo real, ya que hasta ahora lo usaba como secuenciador, y para esto me hice un programa controlador en BASIC que puede leer notas en dos octavas desde el teclado y enviar los comandos por el puerto de joystick al sintetizador.
Esta es una captura de la interfaz del programa:

(http://www.retrocomputacion.com/e107_files/public/1399679704_75_FT84787_pianomsx.jpg)

El resultado fue que el sintetizador funciona muy bien, pero el BASIC no tiene la velocidad suficiente para tocar algo con fluidez. Por supuesto se podria mejorar escribiendo el programa en ensamblador o C, pero no creo que tenga alguna utilidad, por el momento me basta con haberlo probado asi. Hay que recordar que las funciones de sintesis de ruido y sonido son muy basicas porque fueron agregadas a ultimo momento y solo gracias a haber optimizado el sintetizador de voz, porque no habia memoria de programa para implementarlas. Tal vez si valga la pena hacer un mejor programa para un sintetizador mas avanzado.
En el BASIC tuve unas cuantas complicaciones, la principal fue la repeticion automatica de teclas que no encontre como deshabilitar, y me obligo a usar algunos trucos para enviar los comandos al PIC solamente al presionar y al soltar la tecla, lo cual hace que se tenga un retardo desde que se suelta la tecla hasta que se pueda presionar otra.
La idea inicial era leer el teclado de forma directa con alguna rutina en asm para poder presionar varias teclas simultaneas y tocar los acordes como arpegios (porque el sintetizador solo tiene un canal de sonido), pero lei que la lectura directa puede variar segun el modelo de MSX.
Para no hacer esto tan largo, probe el programa en un MSX1 y luego probe otra version para Commodore Plus/4. Hice un video de la version para Plus/4 porque no tengo lugar para armar el MSX en un lugar adecuado para filmarlo, pero la version de MSX funciona exactamente igual, con la unica diferencia de que usa las teclas de funcion mientras que en el Plus/4 se tienen que usar ademas las teclas de cursor.
Musicalmente el video es un desastre, queda claro que para la musica no sirvo.  ;D
Lo unico que hago es probar distintas notas variando los parametros del sintetizador, le agregue anotaciones para entender mejor lo que se va haciendo. El sonido sale por el altavoz del monitor.
El video se puede ver aqui: https://www.youtube.com/watch?v=1uZiPfPafdo


Título: Re:Sintetizador de voz en español por RS232
Publicado por: pastbytes en 22 de Diciembre de 2014, 01:06:07 pm
Aunque estoy un poco desaparecido del mundo de MSX, este proyecto siguio avanzando, aunque no tan rapido como querria. El sintetizador de este tema ya quedo finalmente en la version 1.0, y pude darme el gusto de probarlo en un juego de accion, aunque sea accion en camara lenta.  ;D
No lo probe en MSX porque me descargue montones de juegos en BASIC y no habia ninguno que tuviera la velocidad suficiente y donde se pudiera agregar voz de forma que lo complementara.
Pero si encontre un juego para el Commodore Plus/4 donde la voz quedaba bien, el video se puede ver aqui:  https://www.youtube.com/watch?v=iDFFgrF5bGQ (https://www.youtube.com/watch?v=iDFFgrF5bGQ)
Si algun dia encuentro algun juego en MSX-BASIC que se adapte a la voz y que sea interesante para probar, tal vez lo intente.
Otra cosa que ocurrio en todo este tiempo es que empece una nueva version del sintetizador de voz, que por ahora se llama HR5, a diferencia del HR4, que emite sonido a 8680Hz, este emite a 15625Hz y esta implementado con un PIC16F886, que tiene el doble de memoria de programa (8Kx14 bits) y dos salidas de sonido independientes. Esta version tiene renderizadas las ondas de la voz e instrumentos en mejor calidad, soporta una octava extra, y por ahora emite lo mismo en los dos canales de la salida estereo, pero la intencion es que soporte dos canales de musica en una salida y un canal de voz en la otra.
Me arme una placa de este sintetizador para ir probando en MSX, pero esta vez de forma compacta, soldada directamente al conector DB9 para no usar un cable. Y para probar el funcionamiento, cargue de nuevo el juego REC de DamianWorf, y el piano en BASIC que hice para el sintetizador HR4. Es una prueba breve, no muy detallada, solo la hice para mostrar el MSX funcionando con la placa, y de paso para mostrar el programa de piano que solo mostre en version Commodore Plus/4.
El video se puede ver aqui:  https://www.youtube.com/watch?v=D92n-QcibqY (https://www.youtube.com/watch?v=D92n-QcibqY)



Título: Re:Sintetizador de voz en español por RS232
Publicado por: mohai en 29 de Diciembre de 2014, 10:47:21 am
Muy interesante el proyecto.
Se nota que con el nuevo PIC, el sonido suena menos sintético.
Si consigues que los instrumentos suenen de manera decente y sea polifónico, manteniendo un bajo precio, creo que podría ser un interfaz muy interesante.
Las primeras pruebas no parecen sorprendentes. Lo mismo se había hecho ya por software.
¿Conoces el juego Cobra's Arc?

Tengo una duda: ¿El control de volumen y envolventes lo hace el PIC directamente?

Saludos


Título: Re:Sintetizador de voz en español por RS232
Publicado por: pastbytes en 02 de Enero de 2015, 06:22:26 am
Si conozco el juego Cobra's Arc, todo el mundo parece idealizarlo, pero no se entiende mucho de lo que dice. La interfaz me parece mas interesante que la parte de la voz, es un juego bien pensado graficamente. No es porque sea mio, pero me parece que mi sintetizador de voz por soft TAVMSX es mejor que el de ese juego, tengo que arreglar el codigo para que todas las versiones para las diferentes plataformas sean iguales y luego publicar el codigo fuente, hay alguien esperando eso para hacer una version para Amstrad CPC. Mi sintetizador emite sonido de 4 bits por el AY y es facilmente portable a otras plataformas con ese chip de sonido, o cualquier otro capaz de emitir sonido digitalizado.
La ventaja de hacerlo por hard es que se pueden hacer juegos de accion dejando la voz sonando con el PIC como coprocesador, a diferencia de las versiones por soft que no pueden hacer otra cosa simultaneamente, o por lo menos lo dificultan bastante. Esta nueva version deberia terminar con dos canales de musica/ruido y un canal de voz simultaneos, por ahora recien esta empezando el desarrollo, ademas es probable que la version final se conecte directo al bus del Z80 y no simulando RS232 como la version actual. Pero esa decision todavia no esta tomada, si decido conectarlo al bus, tambien pensaba incorporarle un conector para tarjetas SD, con la posibilidad de usar instrumentos digitalizados grabados en la tarjeta, pero tal vez eso quede para la siguiente version que ya seria mucho mas potente.
Con respecto al control de volumen y envolventes, lo hace el PIC por soft, perdiendo resolucion en el proceso, si bajas el volumen a la mitad tendras audio de 7 bits. Lo interesante de hacerlo por soft es que puedes cargar una onda propia en el instrumento 7 y usar esa onda de 119 muestras como envolvente.


Título: Re:Sintetizador de voz en español por RS232
Publicado por: MsxKun en 05 de Enero de 2015, 11:24:53 am
Si conozco el juego Cobra's Arc, todo el mundo parece idealizarlo, pero no se entiende mucho de lo que dice

Hombre, el Cobra's no usa ningun chip de sonido del MSX para generar las voces, solo el PPI :)


Título: Re:Sintetizador de voz en español por RS232
Publicado por: pastbytes en 05 de Enero de 2015, 08:35:53 pm
Sin duda que es un gran logro tecnico lo del Cobra's Arc, pero visto del lado del usuario es solo una curiosidad, quiero decir que si pones a un ciego a jugarlo no entiende nada.
Son cosas muy diferentes, mi intencion es lograr un buen promedio entre inteligibilidad y costos, y ademas que se pueda usar de forma paralela a la ejecucion de un juego, sin ocupar el procesador en generar la voz. Todavia queda un largo camino hasta que este terminado, pero el chip final va a ser una mezcla entre un SCC, un SID y algo del sonido del Amiga, aunque va a tener una interfaz directa al estilo tracker, me refiero a que va a aceptar comandos del estilo de los trackers mas comunes, por lo que solo habria que hacer una rutina que envie los comandos al chip 50 o 60 veces por segundo, usando un puerto de E/S para escribir y dos para leer.
Por cierto, aunque esto no es de MSX, el resultado seria el mismo pero con 40 columnas y menos colores de texto (ya que solo dispongo de un MSX1). Ya voy a hacer un video probandolo en el MSX cuando lo tenga listo, pero por ahora se puede ver una prueba en el Commodore 128, en modo de 80 columnas, es una aventura conversacional en BASIC donde el chip habla el texto:  https://www.youtube.com/watch?v=XyTJEdFo6Z8


Título: Re:Sintetizador de voz en español por RS232
Publicado por: pastbytes en 07 de Febrero de 2015, 03:54:45 pm
Ya pude portar la aventura conversacional a MSX usando el modulo de voz, se puede ver un video de la prueba aqui:  https://www.youtube.com/watch?v=jseZghuhmbc
Queda para arreglar algunos detalles en el texto, pero ya funciona.
La placa es mas compacta porque le solde directamente el conector DB9, sin usar un cable como en la otra version.


Título: Re:Sintetizador de voz en español por RS232
Publicado por: x1pepe en 23 de Noviembre de 2015, 10:55:10 pm
Hola, me gustaría montarme ese cacharrillo en mi MSX, molo mucho  :griel:.
He entrado en tu página pero no he visto listado de componentes ni esquema electrónico, lo puedes facilitar?
Sigue con este proyecto!  :busy:


Título: Re:Sintetizador de voz en español por RS232
Publicado por: pastbytes en 10 de Enero de 2016, 11:42:47 pm
Como pasa el tiempo, casi paso 1 año.   :o
No hubo demasiados avances con el sintetizador HR5, que siempre fue experimental, mas bien me dedique a probar textos para ir mejorando la pronunciacion y naturalidad de la voz. Sin embargo seguia sin ser demasiado inteligible, sin tener el texto escrito en pantalla era dificil seguir lo que decia.
Afortunadamente, el mes pasado encontre una forma de mejorarlo combinando ese sintetizador con otro que habia diseñado hacia unos años pero que quedo nada mas que en el proyecto. Ahora la voz se entiende mucho mas, y volvi a probar los programas para MSX adaptados a este sintetizador, se nota que la voz mejoro, aunque todavia le falta trabajo para que este proyecto quede en una version definitiva.
Aca se puede ver el video de las pruebas en MSX:  https://www.youtube.com/watch?v=bVWhbYiDAgs
Y en este otro se pueden escuchar textos mas complejos, enviando los comandos desde un PC:  https://www.youtube.com/watch?v=v_nZW_bEc1M

Con respecto al armado del sintetizador, el manual se puede descargar aqui:  http://www.pastbytes.com/apps/picsynth/ManualHR4.zip
En el mismo esta el esquema electrico y el manual de uso.
Lo que no esta disponible todavia es el binario para grabar el microcontrolador PIC16F648A que se requiere para hacerlo funcionar, lo tengo que publicar tal vez de aca a un par de meses, necesito resolver otras cosas antes de publicarlo.
El que va a estar disponible es el sintetizador HR4, no asi los HR5 y el nuevo HD1.


Título: Re:Sintetizador de voz en español por RS232
Publicado por: x1pepe en 13 de Enero de 2016, 09:41:24 pm
Gracias   ;)


Título: Re:Sintetizador de voz en español por RS232
Publicado por: pastbytes en 12 de Noviembre de 2016, 04:22:59 am
Bueno, paso mas tiempo del que esperaba, pero ya hay una version del sintetizador del voz HR4 para distribuir.
En este tiempo me dedique a arreglar la v1.0, y luego decidi hacer unos cambios, que derivaron en la v1.1. Lamentablemente hice unos cambios en la conexion al puerto de joystick, ya que agregue un comando para que el sintetizador reporte el modelo y la version del firmware, algo que permitiria poder hacer distintas versiones del sintetizador, por ejemplo para el puerto de joystick, o centronics, o cartucho. Al tener un comando para reportar el modelo, el soft podria consultar esto al puerto de joystick 1, al 2, al puerto centronics, etc., y de esa manera detectar si hay un sintetizador conectado, y a que puerto debe acceder para controlarlo.
Paralelamente a ese desarrollo, segui desarrollando el sintetizador HD1, y agregue una entrada para conectar un joystick analogico de PC, o 2 paddles/potenciometros con 2 botones. Decidi entonces esperar para publicar el HR4 v1.1, y terminar de implementar la lectura de joystick en el HD1. para una vez terminado ver si podia hacerlo tambien en el HR4.
No pude hacerlo funcionar en el HR4 por falta de memoria de programa, pero decidi dejar asignados los pines para que cuando se implemente en el futuro, solo haga falta actualizar el firmware para activarlo.
La version actual del sintetizador HR4 es la 1.2, el plano ahora es este:

(http://www.retrocomputacion.com/e107_files/public/1478505088_75_FT84787_microsintmsx1.gif)

Durante el desarrollo del sintetizador HD1, pude lograr controlarlo a 57600 bps, y tambien recibir datos a esa velocidad, ademas de compartir el "RS232" con un modulo wifi ESP8266. Basado en ese diseño, que probe en un Commodore 64, asigne los pines del puerto de joystick de MSX para que en el futuro se pueda hacer lo mismo. Por eso es que hay dos señales, RTS y DTR/SEL, que se utilizarian con un modulo wifi.
En el sintetizador HR4 v1.2 volvi a utilizar la salida TX en el mismo pin del conector de joystick, por lo que aunque el circuito y los pines del PIC cambian, el poco soft de demostracion existente que utiliza el sintetizador funciona sin cambios.
En este video se puede ver una prueba rapida de la nueva placa:  https://www.youtube.com/watch?v=h3C_XnbxJek
Y aqui unas fotos de la nueva placa conectada al MSX:

(http://www.retrocomputacion.com/e107_files/public/1478685036_75_FT84787_103_1500s.jpg)

(http://www.retrocomputacion.com/e107_files/public/1478685037_75_FT84787_103_1501s.jpg)

(http://www.retrocomputacion.com/e107_files/public/1478685037_75_FT84787_103_1504s.jpg)

(http://www.retrocomputacion.com/e107_files/public/1478685037_75_FT84787_103_1505s.jpg)

(http://www.retrocomputacion.com/e107_files/public/1478685037_75_FT84787_103_1507s.jpg)

Por ahora esta en una version alfa, por eso el que quiera armarse uno me puede contactar y le envio el binario del firmware para poder grabar el PIC.
El software de demostracion tambien esta disponible, no lo subi a ninguna parte pero si alguien lo necesita lo publico, tanto los programas en BASIC como el .bin del "driver" que simula RS232 a 19200 bps por el puerto de joystick, y el codigo asm del mismo.


Título: Re:Sintetizador de voz en español por RS232
Publicado por: S0Y en 13 de Noviembre de 2016, 12:14:07 pm
¡Magnífico y sorprendente trabajo, enhorabuena!  :o


Título: Re:Sintetizador de voz en español por RS232
Publicado por: pastbytes en 24 de Marzo de 2017, 07:44:23 am
Tengo un poco abandonado este hilo, hubo unas cuantas novedades en estos meses:
- Hice una version preliminar del manual actualizado, formateado para imprimir. Se puede descargar desde este enlace:
http://www.pastbytes.com/apps/picsynth/ManualHR4v1.2_preliminar3.pdf (http://www.pastbytes.com/apps/picsynth/ManualHR4v1.2_preliminar3.pdf)
- Rehice mi sitio web pastbytes.com, sin contenido nuevo, pero con otra organizacion de directorios para poder crear un nuevo sitio para el sintetizador de voz.
- Ahora toda la informacion del sintetizador HR4 y los futuros de la serie, estara en http://www.pastbytes.com/microsint
- Entrando en el sitio de microsint, se puede consultar todo el manual seleccionando HR4 en los iconos superiores, una vez ahi se puede navegar las secciones del manual con los iconos azules.

Ademas, ultimamente estuve rehaciendo una secuencia que hice hace años para que el sintetizador de voz cante. La prueba la hice primero controlando el sintetizador desde un Commodore 64, a 57600 bps, pero ahora ya pude portar el programa a MSX-BASIC.
Se usa la misma pequeña rutina que envia bytes a 19200 bps por el puerto de joystick, en este caso la rutina esta contenida en lineas DATA dentro del programa BASIC, por lo que solo es necesario cargar y ejecutar HIMNO.BAS
La cancion que canta es el himno nacional argentino, simplemente porque es lo suficientemente antigua para no tener problemas de copyrights, y porque en los 80s escuche al sintetizador de voz SAM para Commodore 64 cantar el himno de EEUU, por lo que mi sintetizador de voz tenia que cantar el de Argentina.
Se podria adaptar cualquier cancion si se tiene una secuencia MIDI o alguna composicion en un tracker, en mi caso yo use un mod de Amiga que hizo uctumi, un musico argentino que compone para Commodore 64 y Amiga.

Aqui se puede ver el video de la prueba en MSX:
https://www.youtube.com/watch?v=0PvK0QFE-lc

Subire los programas del diskette de demostracion del sintetizador de voz al sitio de microSint en cuanto tenga tiempo, pero si alguien los quiere antes para ver como son las secuencias o los comandos, los adjunto aqui.