• Por el momento no importa mucho que no quede un canal libre, ya que lo de que cante eran solo pruebas, no va a estar disponible esa opcion en este programa porque requiere mas parametros (nota y duracion) en cada sonido. Probablemente mas adelante mejore un poco esa version cantada haciendo alguna otra cosa de fondo como mover algun sprite, para que se vea que es un programa que puede integrarse a otro, como por ejemplo un juego.
    De todas maneras lo de los 3 canales es solo durante el sonido SH, por lo que si se programa cuidadosamente se puede eliminar la musica durante ese instante y podria no notarse.
    El programa lo probaste en la C64 o el emulador?
     

  • Para el que quiera experimentar un poco, hice un .prg con el motor de sintesis separado, se pasa apenas de los 2K. La forma de usarlo es bien primitiva, pero sirve para ir probando. Se puede acceder desde BASIC o incorporar el codigo ejecutable en un programa assembler, para cada sonido hay que hacer un SYS o JSR segun corresponda.
    Adjunto va un zip con el .prg y un texto conteniendo la tabla de las direcciones para cada uno de los sonidos y espacios, por ejemplo para reproducir la palabra "saludos", donde la U seria acentuada y la O tendria tono bajo por ser fin de oracion, el codigo BASIC seria:

    10 print"saludos"
    20 sys50826:sys49246:sys50158:sys51171:sys49853:sys51087:sys50826

    Hay que cargar el SYNTH64 ENGINE.PRG, inicializarlo con SYS 49152, y ya se puede usar desde el BASIC, como dije un tanto primitivo pero es una solucion temporal para ir probandolo.
    Me olvidaba, parece que hay que ejecutar NEW despues de cargarlo, sino no deja hacer nada en el BASIC.

    ]synth64engine.zip[/file]
     

  • Acabo de terminar el analizador ASCII y de comandos, en principio era una traduccion del assembler del PIC, pero despues lo simplifique un poco y reduje varias veces, no es tan completo ni eficiente como el codigo del PIC pero esta mas que bien. Quedaria convertirlo en un comando BASIC, pero por ahora hice una version de prueba donde pueden directamente tipear las frases y el programa las habla, como las versiones anteriores, tienen que cargarlo con ,8,1 y ejecutarlo con SYS 49152

    Los comandos posibles son:

    Vocales normales: A E I O U
    Vocales acentuadas (tono mas alto): A+ E+ I+ O+ U+
    Vocales de fin de oracion (tono mas bajo): A- E- I- O- U-
    Consonantes: B CH D F G J K L M N P R R2 S T SH
    Espacio auxiliar (32 ms): ' (apostrofe)
    Espacio entre palabras (50 ms): espacio
    Espacio de 100 ms: , (coma)
    Espacio de 250 ms: ; (punto y coma)
    Espacio de 1 segundo: . (punto)

    Notas:
    La G suena siempre igual, como en Gato, no como en Giro, para este ultimo caso hay que usar J.
    La R fuerte (RR) se representa directamente como R, la R suave se representa como R2.
    Para las letras compuestas hay que combinar sonidos, como Ñ = NI, X = KS, etc.

    Me olvidaba, hay dos comandos extendidos que estaban en la version del PIC y los agregue tambien aca, no tienen mucha utilidad en esta version pero si la va a tener cuando se convierta en comando BASIC, son los comandos /0 y /1, que emiten dos tipos de beep. Puede ser util en aplicaciones BASIC cuando se quiera emitir algun aviso sin tener que complicarse la vida con POKEs.


    ]synth64_interactivo.zip[/file]
     

  • Va una captura de como se ve el programa:



    Se pueden ver tres frases tipeadas, la primera es un intento animal de imitar a HAL9000 con la frase "I'm sorry, Dave. I'm afraid I can't do that". Como sea que se tipee queda mal, pero es lo que hay. biglaugh.png
    Si lo quieren probar, el texto es:  a+im soo+ri;de+ib;a+imafre+id aike+ntdu+da-t
    Eso se puede cortar y pegar en el VICE directamente.
    La segunda es una cuenta regresiva con un beep al final, el texto es:
    die+s.nue+be.o+cho.sie+te.se+is.si+nko.kua+tro.tre+s.do+s.u+no.se+r2o-./0
    Probando eso me di cuenta que habia un error en el fonema CH, ya esta corregido pero lo voy a subir despues que termine de revisar si hay mas errores.
    La tercera es la frase de prueba que uso siempre, el texto es:
    salu+dos,komunida+d de retrokomputasio+n
    Tambien probe lo del acento cordobes que habia probado en el PIC, no suena tan bien pero se nota, la frase era "sintetizador de voz cordobes", y el texto:
    sinteti-saa+do-r dee+ bos ko-rdoo+be+s
    Lo probe en la C64 y anda igual que en el emulador, pero el audio de mi sintonizador es un desastre, voy a tener que reconectar los cables y pasar directamente la salida de la C64 a los parlantes de PC, ya que ahora pasa a traves del sintonizador.
    Tambien encontre un error en el . (punto), que emite un espacio de 1 segundo pero despues una A, eso tambien esta corregido, por ahora se puede poner ; en vez de punto, aunque es un espacio de 1/4 de segundo.
     

  • Ya esta una version con los errores corregidos, ademas presionando RETURN sin ingresar nada mas, se repite el ultimo texto, y tipeando como primer caracter la flecha izquierda (la que esta a la izquierda de la tecla 1), se sale del programa. Una vez que se sale, se puede hacer cualquier cosa en el BASIC y volver a ejecutarlo con SYS 49152, mientras no se borren los 4K que empiezan en esa direccion. Tambien se reproduce un mensaje en el arranque: "retrocomputacion.com, synth64 alfa 2. sintetizador listo"

    ]synth64_interactivo.zip[/file]
     

  • muy buena la ultima version ! , me falta probarlo en la maquina real y probar como se escucha ..
     

  • Estuve arreglando cosas del codigo para que quede mas ordenado, ademas de que ahora la coma emite un silencio de 256ms y el punto y coma uno de 400ms, para compatibilizarlo con la version del PIC. Como no queria sacar una version nueva solo por cambios menores, le agregue otra caracteristica que ya tenia pero no era seleccionable por el usuario, se agregaron dos comandos que se pueden intercalar en medio de una frase y sirven para alternar entre dos tonos de voz. Por defecto el programa usa el tono de voz mas alto, se puede usar el comando < para que cambie al tono menor, y > para que vuelva al mayor, modificando el tono del texto que sigue al comando, y quedandose seleccionado en los ingresos siguientes. En el arranque ahora habla la frase usando los dos tonos de voz. Tambien termine el manual del programa, explica eso y todo lo demas, va todo en un solo archivo. El manual esta en pdf.
    

    ]synth64demo.zip[/file]
     

  • Bueno, creo que esta va a ser la ultima version, o al menos por un tiempo.
    Habia reubicado el codigo al area de programas BASIC para que se facilite hacer un cargador, es decir que tenga una linea BASIC con la instruccion SYS correspondiente para que se pueda simplemente cargar el programa y ejecutar con RUN. Si bien era un cambio para mejor, no me parecio suficiente para agregar una nueva version con dos dias de diferencia, asi que agregue un sonido mas, ejecutable con el comando extendido /2, que emite un sonido como de error critico o alarma, se puede usar como alarma si se colocan varios seguidos como en la secuencia /2/2/2/2/2. Este sonido ya estaba en la version del PIC, asi que ahora los programas se parecen mas, aunque la calidad de sonido todavia esta muy lejos de la del PIC. Tambien reforme el manual para que refleje esos cambios, e hice otra version llamada synth64 intro, que muestra en el arranque la imagen del logo del sitio antes de entrar al programa normal. Esta version es identica en funcionalidad, solo cambia lo de la presentacion y que ocupa mucha mas memoria. En el zip van incluidas ambas versiones y el manual en pdf.

    ]synth64intro.zip[/file]
     

  • Ahora el sintetizador incorpora sonido digitalizado! shades.png
    La historia viene asi:
    El otro dia, a pesar de que era 17 de octubre, me decidi a probar un cambio radical en el programa. biglaugh.png
    Queria saber que tal salian los sonidos digitalizados con el SID, ya que escuche muchas demos y en su gran mayoria no me convencio la calidad del sonido, sabiendo que un minimo de 4 bits, a pesar de lo limitado, tenia que sonar mejor que lo que hay hecho. Se que algunas demos usan sonido digitalizado mientras hacen otras cosas, en cuyo caso es perdonable que la calidad no sea tan buena, pero en muchas demos se anula la pantalla y aun asi el sonido es mediocre.
    Empece probando con una onda diente de sierra y vi que variaba por la interrupcion del VIC al procesador, ademas de la interrupcion del teclado, asi que tuve que deshabilitar ambas. Pude luego probar con un sonido de 8 bits tomando solo los 4 bits mas significativos, lo cual efectivamente reduce el sonido a 4 bits ya que divide el volumen por 16, y para mi sorpresa la calidad fue mejor que la esperada. Asi fue que empece a hacer pruebas con distintos metodos, y despues de unas cuantas pruebas me encontre con las diferencias drasticas entre el SID6581 y el SID8580. Yo hice el programa para funcionar en el 8580, y me generaba todo tipo de ruidos no deseados en el 6581, por lo cual tuve que experimentar con distintos tipos de filtros y analizar la salida del emulador donde vi que el 6581 me invierte la señal y por lo tanto arruinaba el metodo usado. Despues de horas de lucha con los SID termine definiendo los parametros necesarios para cada chip, y tuve que agregar una rutina de deteccion para hacer los ajustes iniciales segun el SID que tuviera la maquina. Ese codigo de deteccion no es mio pero no se el nombre del autor como para agregarlo a los creditos.
    Para hacer la historia corta, ese mismo dia tuve el sintetizador con 8 sonidos digitalizados, conservando algunas consonantes como sonidos "analogicos". Los sonidos fueron convertidos desde los sonidos fuente del proyecto PIC, que se encuentran en 16 bits y 44KHz, escalados a una cantidad de muestras arbitraria para este sintetizador, y almacenados dentro del programa. Para tener estos 8 sonidos digitalizados se requirio la impresionante cantidad de memoria de 256 bytes! (Para una ZX81 es mucho). wink.png
    Lo que siguio a eso fue optimizar el programa para eliminar codigo repetido, ya que habia pasado la barrera de los 4K y queria que volviera a ocupar menos de eso, tambien trabaje en la transicion entre sonidos analogicos y digitales, ya que implica cambios drasticos de volumen y de tipo de filtro, lo que genera clicks indeseables en el sonido.
    El programa, a pesar de que la interfaz es la misma, pasa a llamarse Synth64 Digi, por lo cual empezo nuevamente por la version alfa 1, y actualmente va por alfa 2.
    Si se tiene un 6581 el sonido tiene el doble de volumen que con el 8580, pero los sonidos analogicos siguen saliendo al mismo volumen, lo cual me obligo a aumentarlos al 100% de volumen, cuando algunos se reproducian al 25%, ya que en el 6581 sonaban tan bajos en comparacion a los digitales que no se notaban. El problema es que en el 8580, donde lo digitalizado suena mas bajo, lo analogico sigue sonando igual, por lo cual en el 6581 suena mas normal y en el 8580 los sonidos como S o R se notan mas de lo que deberian. Se puede hacer alguna compensacion de volumen bajandolo en el 8580 pero ya es demasiado detalle y no quiero que vuelva a pasarse de los 4K. Actualmente el programa ocupa 3906 bytes de memoria, tengo igual 190 bytes para usar por si surge algo.
    Adjunto el programa para que lo prueben, pero seria util que alguien diga algo. biglaugh.png
    Como que no tiene mucha gracia publicar versiones intermedias para que nadie haga de alfa o betatester, o que lo hagan pero no comenten los resultados. wink.png
    El mensaje que habla al inicio es: retrocomputacion.com, Synth64 Digi Alfa 2, sintetizador listo.
    En comandos seria: retrokomputasio+n pu+nto ko+m;si+nt sese+ntaikua+tro di+ji,a+lfa do+s.<sintetisado+r li+sto->


    ]synth64digi.zip[/file]
     

  • Muy bueno !!! Y el chiste radical de 10 ! Es increible, en casa lo voy a probar.
     

Moderador (s): thierry, homecomputer, Selandari, pastbytes, Durandal