Los ultimos dias anduve planificando futuros proyectos, estos son los momentos donde se pasa en limpio todo lo aprendido. El sintetizador con PIC del que partio todo no estaba completo, faltaban muy pocos sonidos para terminarlo, en medio del desarrollo interplataforma pude resolver lo que faltaba, pero todavia tengo que volver al programa original para completarlo.
Ironicamente, las ultimas reformas que le hice al proyecto con PIC antes de emprender el camino de la version por software, fueron para poder utilizarlo como sintetizador y placa de sonido basica para la ZX81, y al final termine haciendo un programa que lo reemplaza. Sin embargo, la calidad no es la misma, y el PIC permite seguir trabajando en SLOW porque admite que se le envie una frase entera lo mas rapido posible y continua trabajando por su cuenta. Falta realizar el escalado de ondas, que tengo hecho en teoria y empece a codificar en una version experimental para C64 hace unos dias, pero la deje en pausa porque tengo demasiadas cosas en mente para realizar.
Como habia hecho la version para el modulo Zon X, que agrega un AY-3-8912 a la ZX81, mande un email al webmaster de zx81.de, donde hablan de hacer sintesis de voz con la expansion que trae el PSG, pero no me respondio, asi que me registre en el foro. Resulto que habia bastante interes en programas de voz y sonido en general que usaran el PSG, hay unos cuantos que tienen expansiones varias compatibles con Zon X. Por supuesto que el sintetizador en castellano no les sirve de mucho, asi que investigue un poco sobre sintetizadores en ingles y el chip SP0256-AL2 resuelve bastante bien el problema. Este chip creo que no se fabrica mas hace bastante, pero sigue siendo muy buscado para proyectos electronicos, habia visto hace un tiempo que alguien hizo una simulacion con un PIC y memorias EPROM, si mal no recuerdo usaba una bestialidad de memoria, como 64K o algo por el estilo. Tambien vi ahora que usan mucho las capturas de ese chip para hacer musica electronica con sonido retro.
Como ya tenia la hoja de datos del chip me puse a revisarlo y vi factible modificar el sintetizador para generar los 59 alofonos de los que dispone. Pude reducir unos cuantos a cerca de 42 bytes de tablas de ondas, otros triplican esto, otros se generan con ruido (por programa), pero me quedan un monton para analizar. Tomando que me ocupen un promedio de 100 bytes cada sonido, tendriamos 5900 bytes solo para eso, y faltaria el codigo del analizador de comandos, que ahora tendria que usar comandos de 3 o 4 letras para conservar los nombres de la hoja de datos, algo que el chip no tenia porque usaba un numero para cada alofono. El procesador de comandos debe ocupar entre 2 y 3K, lo que dejaria el programa ocupando cerca de 9K, si no surge alguna complicacion extra que haga que algun sonido ocupe mas de lo planeado. Este tamaño me parece excesivo ya que limita bastante la memoria para BASIC, pero dudo mucho que se pueda reducir a menos de 7K, aunque va a requerir algun tipo de milagro informatico.
Estoy haciendo todo a 9500Hz y 4 bits para que cuando este terminado tenga por arte de magia las versiones Spectrum 48K, Spectrum 128K, ZX81, ZX81+PSG, TS2068 y MSX1. Lo que es la portabilidad del soft.
Para la version C64 voy a tener que renderizar todo de nuevo a 7812.5Hz, asi que esta version va a ser mucho mas compacta, hay que tener en cuenta que ahora el programa TAV64 ocupa menos de 4K e incluye la impresion en tiempo real del texto procesado y la interfaz del usuario, mientras que las versiones Z80 ocupan un minimo de 5000 bytes y no incluyen interfaz ni imprimen el texto, aunque emiten sonido en una frecuencia de muestreo mayor. Puede que la version C64 termine en alrededor de 6K, pero por ahora es todo especulacion.
La desventaja de esta version en ingles es que mi conocimiento de la pronunciacion es muy basico, por lo que no puedo hacer magia reemplazando un sonido con otro completamente distinto (en forma de onda) pero que suena igual al oido, lo que limita mi capacidad de compresion ya que me obliga a mantener el sonido lo mas parecido posible al original.
Ademas de este tema, tengo renderizadas las ondas para un sintetizador de sonido natural, que esta hecho para C64 pero es solo para desarrollo (es decir que no lo voy a publicar) que va a terminar implementado en un PIC18, tambien me queda terminar el sintetizador original con PIC16, y empezar una nueva version, copia casi directa de estas versiones para computadoras, que correria en un PIC16F683 de 8 pines, sin siquiera cristal, llevaria solamente una resistencia y un capacitor para la salida de audio, y soportaria RS232 como el otro. Quedaria agregar un chip adaptador como el MAX232 si se quiere conectar a un RS232 real, o un chip que adapte a USB (de los que agregan un puerto serie a la PC por usb).
Asi que voy a ir haciendo las cosas de a poco, mientras tanto, seria bueno si alguien esta registrado en sitios de habla castellana, que publiquen la web ahora que esta todo en un solo sitio (www.pastbytes.com/apps/tav) para que haya pruebas, criticas y sugerencias de la mayor cantidad posible de gente antes de sacar las versiones 1.0 de todos los programas. Prefiero que se pruebe lo mas posible antes de sacar formalmente la primera version, y no tengo ganas de andar registrandome en mas sitios, me parece que si un dia me golpeo la cabeza con algo voy a perder el acceso a unos cuantos sitios de tantas claves que tengo que recordar.