• De a poco voy reescribiendo el manual del sintetizador de voz, por ahora puse las primeras dos paginas en un pdf, donde resume algunas caracteristicas y sale la descripcion de pines.
    http://www.pastbytes.com/apps/picsynth/ManualHR4v1.2_preliminar.pdf
     

  • Acabo de terminar de editar una version completa del manual, sigue siendo preliminar y sujeto a cambios, pero por lo menos esta el contenido completo del manual original de la v1.0, con la actualizacion correspondiente para la v1.2, una reorganizacion del texto y el nuevo estilo.
    Me parece que tendria que agregar 3 o 4 paginas mas con algunos graficos para explicar mejor la parte del tipo y nota de la voz, y la modulacion de los instrumentos, pero por ahora esto es lo que hay.
    El manual se puede bajar de aca:  http://www.pastbytes.com/apps/picsynth/ManualHR4v1.2_preliminar2.pdf
    Si alguno por milagro lo lee, se escuchan opiniones y sugerencias acerca de la facilidad o no de entender lo que explica. Tambien se aceptan opiniones y sugerencias acerca del estilo, para esto no hace falta leerlo.
     

  • Subi una version corregida del manual, el texto se lee mejor, lo formatee para que sea imprimible de ambos lados de las hojas y como para armarlo en una carpeta, y le agregue la tapa nueva.
    http://www.pastbytes.com/apps/picsynth/ManualHR4v1.2_preliminar3.pdf
     

  • Quedo muy bueno el manual , muy prolijo armado
     

  • Realmente un lujo... Tremendo laburo te estas tomando.

    Slds
     

  • Tiene que quedar como un producto terminado, y todavia falta, tengo que hacer el manual con los circuitos para las distintas plataformas, y hacer un micrositio en pastbytes.com publicando todo, incluidos los diskettes de demostracion con los fuentes en BASIC y asm. Hay trabajo para rato todavia, cuando este todo listo para subir al sitio lo puedo presentar oficialmente.
     

  • ¡Felicitaciones Jorge!. Muy buen trabajo, es muy grato ver, que alguien se tome en serio un proyecto, y que lo lleve hasta el final, cuidando los últimos detalles; la verdad, como corresponde.



     

  • Hace un tiempo estoy investigando los archivos MIDI, porque llegado a este punto puedo volver a generar la secuencia para que el sintetizador cante el himno nacional argentino, que habia calculado a mano y con conocimientos muy limitados de lectura de partituras.
    Ahora ya tengo el MIDI impreso en hexadecimal y se como leerlo, me falta un pequeño paso que es calcular la duracion exacta de cada fonema del sintetizador, y ya con eso me puedo poner a hacer un programa que lea un canal especifico de un archivo MIDI, con letra previamente asignada con algun secuenciador (la silaba correspondiente a cada nota), y genere la secuencia para que el sintetizador cante.
    El programa lo voy a hacer en C y lo voy a probar en Linux, pero me parece que podria hacerse despues en C64, copiando el .mid a diskette o SD2IEC y que el programa genere por ejemplo un listado BASIC con la secuencia para cantar.
    De paso vi que no parece muy complicado controlar el sintetizador por MIDI, pero no tengo nada MIDI, solo una interfaz para la Amiga, tendria que armar el cable DIN y la interfaz para el sintetizador, ademas de investigar algun secuenciador MIDI para Amiga.
     

  • *** Actualizacion 8-Sep-2017 ***

    Pasaron meses y veo que no actualice algunas cosas del proyecto por aca. Hace bastante que no toco nada del sintetizador, porque habia cosas fuera del codigo que habia que definir, y creo que ya mas o menos estan tomando forma final.

    Tuve un rato libre y viendo el codigo del sintetizador HR4, no hay memoria de programa libre ni para 1 instruccion, asi que decidi que voy a eliminar el soporte de joystick analogico en este sintetizador, algo que de todas maneras no estaba funcionando y no se podia terminar de arreglar por falta de memoria.

    Decidi que el sintetizador HR4 va a ser una base que se va a poder expandir, ya no va a estar limitado a ese modelo de PIC, sino que puedo hacer la version basica con el 16F648A que uso actualmente, y una version mas completa con un PIC mas grande, con soporte de joystick y algunas funciones extra. Esto me lleva a tener que agregar un comando para consultar que funciones estan disponibles por encima del modelo base.

    Veo que no lo anuncie en este hilo pero si en otros, asi que solo para que quede aca tambien, el nuevo sitio de los sintetizadores de voz con PIC es LINK

    Aparentemente hay un bug en el manejo del buffer que hace que la aventura conversacional que funciona perfectamente en la Spectrum 48K usando la salida MIC como RS232, no funcione en la TS2068. Seguramente es un tema de diferencias de velocidad en la TS que hace que el buffer se llene (cosa que no pasa en la Spectrum) y esto provoque que se cuelgue el sintetizador, por culpa de ese bug. Me interesa que funcione bien en la TS2068, asi que espero que arreglando eso se corrija el problema.

    Ya que logre usar la salida MIC de la Spectrum como la linea TX del RS232, se me ocurrio que en una de esas funcionaria la entrada EAR como RX del RS232, tengo que hacerme tiempo para armar la placa adaptadora y agregar recepcion al "driver" en asm, a 19200 bps. Anticipandome a eso, estuve definiendo un comando para consultar el estado del buffer y de reproduccion de sonido, ya que actualmente se necesitan dos lineas extra, una para saber si el buffer esta lleno y otra para saber si el sintetizador esta reproduciendo audio. Estas lineas se usan para sincronizar correctamente el soft con el sintetizador, para saber cuando enviar datos. Ahora habra un comando de 1 byte que devuelve en otro byte esa informacion. Actualmente como la Spectrum no puede saber cuando el sintetizador termino de emitir sonido, ni cuando el buffer esta lleno, todo debe hacerse a ciegas, enviando la cantidad de bytes justos y esperando un cierto tiempo antes de enviar mas. Con estas modificaciones, la Spectrum podria planificar el envio porque sabria de antemano cuanto espacio libre hay en el buffer, y se podrian hacer cosas complejas como sincronizar el video con la reproduccion de sonido, porque se sabria, con cierta tolerancia, cuando el PIC termina de emitir sonido.

    Si todos estos cambios se pueden hacer exitosamente pasaria a ser la version 1.3, y esta si seria la primera version publica, ya que tuve que poner en espera la 1.2 por no funcionar bien en la TS2068, y por otras cosas que con esta version quedarian resueltas.

     

  • *** Actualizacion 22-Sep-2017 - HR4 version 1.3 alfa 2 ***

    Bueno, pude agregar todo lo que queria y solo se perdio el soporte de joystick analogico, que como dije antes igual no estaba completo. Ahora el sintetizador HR4 esta en la version 1.3 alfa 2.

    Desde el punto de vista del hard, lo que cambia con la 1.2 es que los pines 1, 2, 17 y 18 quedan libres y configurados como salidas, para que no se requiera conectarlos con resistencias. Por el momento esos pines van a quedar sin uso. Tambien es posible ahora usar el sintetizador sin conectar las lineas CTS y PLAYING, solo se necesitan TX y RX, por lo que se puede conectar a computadoras/microcontroladores que tienen un puerto serie minimo.

    Desde el punto de vista del soft, hay unos cuantos cambios, pero permanece compatible con todo lo anterior.

    - Se agrego un chequeo que descarta los caracteres recibidos si no hay mas memoria libre en el buffer, algo bastante logico pero que no estaba contemplado porque se requeria la comunicacion con TX, RX y CTS, y no se deberia enviar mas datos cuando CTS=0. Ya que tuve problemas con un cable USB-RS232 que por alguna razon en algun momento deja de verificar CTS, era mejor agregar un control para evitar que se sobreescribian los datos en el buffer.

    - Para soportar la comunicacion con 2 lineas, se agrego el comando ENQ (ASCII 5), que devuelve un byte conteniendo el estado de la linea PLAYING en el bit 7, y en el resto la cantidad de bytes que se pueden enviar al sintetizador de forma segura, sin el riesgo de que el buffer se llene.

    - Se recupero una funcion que se habia eliminado en la version 1.2, al eliminar el jumper JP2 que determinaba si el sintetizador devolvia el eco del caracter recibido, una funcion util al controlarlo desde una terminal. En la version 1.2 esta funcion quedo permanentemente deshabilitada, y no habia forma de volver a activarla. En esta version se agregaron dos comandos, asignados a DC2 (ASCII 18) y DC4 (ASCII 20), que sirven respectivamente para habilitar y deshabilitar el eco de lo recibido. Por defecto arranca deshabilitado, por lo que si se quiere controlar el sintetizador desde una terminal, seria util habilitarlo enviando el caracter DC2.

    Para lograr esos cambios hubo que recuperar memoria de programa, y para eso se reescribio gran parte del parser. Gracias a esto se ahorro memoria suficiente como para implementar todo, y quedo memoria libre para 15 instrucciones mas. El calculo de memoria disponible para el comando ENQ fue bastante complicado, porque requeria hacer una division por 3, codigo que llevo 41 instrucciones solo para la division.

    Hay muchas cosas planeadas para agregar, pero las voy a ir probando en otros chips, no creo que en este se pueda hacer mucho mas. Tambien, aprovechando que ahora ya no son necesarias las lineas CTS y PLAYING, vi que es posible implementar el sintetizador completo en un PIC de 8 pines, sin usar cristal y con componentes minimos. Tambien quiero ampliar el lenguaje para que pueda leer castellano escrito, el sintetizador para agregar algunos fonemas faltantes, y algunos comandos para aprovechar entradas y salidas no usadas del PIC, para controlar cosas o leer sensores o botones.

     

Moderador (s): homecomputer, Selandari, ArielP, pastbytes, the woz