• No, sintetizador de voz, como el SAM de la C64 o el sintetizador de la Amiga, genera fonemas grabados, analice voces grabadas y capture las partes caracteristicas y repetitivas, despues se van combinando ondas digitalizadas, una detras de otra, en algunos casos dos sonidos mezclados tocandose a la vez, y tuve que hacer un generador de ruido para mezclarlo con algunas ondas, por ejemplo para letras como S o F. Las ondas digitalizadas estan dentro del mismo PIC, como tablas de valores.

    Que bueno que esta eso! Como le entrabas los datos? con un teclado de PC? Los fonemas son los mismos que las letras (menos la H) o era como el SAM que tenias que escribir de una forma rara? Usabas una eprom para la tabla de sonidos?

    Me acuerdo de un chabon que fue al Agujerito Sin Fin con una C64 y un guante conectado al port de expansion paralelo, que por cada dedo tenia un contacto (o algo asi), entonces con el guante le enviada letras por codigo (no se si binario, porque no todas las 32 combinaciones son faciles) a un programa basic, y el SAM hablaba. Era una maquina para mudos!

     Aca va una foto de mi reloj. La carpinteria no fue facil (ni quedo muy linda) tiene un acrilico rojizo, y abajo una cartulina negra con un agujero por cada led, para mejorar el contraste. Hablando del Agujerito sin fin, esos 300 agujeritos en la cartulina fueron una tortura. Yo en otro vida creo que fui un chino en una planta de produccion, me meto a hacer cada cosa!!

        Saludos
       MARCOS  
    Imagen023 001
     

  • en una pagina vi los dos jueguitos en PIC. Nada mas que a estos se les podía conectar uno o dos chostins analogico, de los que son compatible con atari, commodore y msx.

    Iba a armar uno, pero me hacía falta el programador de PIC, acto seguido, compré los componentes para armar uno, pero nunca lo terminé. Soy malisimo con la soldadura, y por qué?, porque me di cuenta de que mi soldador ya tiene la punta hecha mierda y sin punta... cry.

    Asi que un día de estos me tengo que comprar la punta seramica: Alguno tiene idea de cuanto está??.


    Yo me compre hace poco un soldador de marca (goot) pero no me ascuerdo el precio. Ponele unos 20$ uno de otra marca, o menos. Pregunta en varios negocios en Parana antes de comprarlo, tal vez te ahorres 5$.

    Yo me hice el Pic Pong el año pasado, que usa 2 joysticks de atari/C64. No son analogitos, son digitales, y si no tenes, no hacen falta, te los haces con switches (5, 1 boton y 4 direcciones, usan 6 cables, uno comun y las 5 entradas) en la misma placa, o en una expansion, o le adaptas uno de nintendo, sega... usen la imaginacion!!!

    Me andubo bien de una, y me dio ganas de hacer otras cosas en video, pero me trabe porque no es tan directo. Miren la pagina del chabon, explica bien la salida de video.

    Si tienen alguna duda para hacer la placa, pregunten
    Aca tienen fotos (consejo: usen conectores RCA para circuito impreso, en cable asi como este queda horrible)

         Saludos
        MARCOS  

    Imagen028
     

  • Aca del lado de abajo. Consejo: Si van a trabajar con wirewrap, no sean amarretes como yo, dejen mas espacio. Una placa toda apretada como esta es un quilombo para trabajar, mas si no tenes un diagrama de donde hubicar los componentes y vas improvizando. Deberia ser el doble de ancho para trabajar bien, para dedicar la mente a cosas utiles, y no a ver como resolver un puente.

    Uno de estos dias me compro una camara mejor  :-[
    Imagen030
     

  • Que bueno que esta eso! Como le entrabas los datos? con un teclado de PC? Los fonemas son los mismos que las letras (menos la H) o era como el SAM que tenias que escribir de una forma rara? Usabas una eprom para la tabla de sonidos?


    Los fonemas son en castellano, o mas en bien argentino (uso B y V como el mismo sonido), asi que es bastante simple, el SAM usa sonidos en ingles, y tiene muchisimos mas fonemas que el castellano. No implemente una interfaz externa, aunque tenia pensado usar SPI o I2C y enviarle los "fonemas" que serian codigos de 8 bits. El sintetizador es parte de una aplicacion especifica y por lo tanto tiene como fonemas, ademas de las letras, los tonos telefonicos, los silencios de distinta duracion, y algun otro sonido que quiera agregar en el futuro. Como dije, las tablas de ondas estan dentro del PIC como tablas de saltos, eso fue lo que mas costo, compactarlo lo mas posible, el programa anda cerca de los 4K (en palabras de PIC, no en bytes), que incluye las tablas (los "wavs" por decirlo de una manera mas entendible).
    Tuve que usar un PIC de 8K para que me quede algo para el resto del programa. En un futuro pensaba hacerlo una aplicacion separada para poder usarlo en alguna maquina como C64, Spectrum, MSX. Lo que me queda pendiente es un algoritmo de escalado para hacer la transposicion de las ondas a otras notas dentro de 4 octavas.
    El sintetizador implementa fonemas para las vocales acentuadas y para el final de oracion (el tono mas grave en la ultima silaba antes del punto), pero si uno quiere puede usar los fonemas sin acento y hablar mas roboticamente, sin entonacion.

    Me acuerdo de un chabon que fue al Agujerito Sin Fin con una C64 y un guante conectado al port de expansion paralelo, que por cada dedo tenia un contacto (o algo asi), entonces con el guante le enviada letras por codigo (no se si binario, porque no todas las 32 combinaciones son faciles) a un programa basic, y el SAM hablaba. Era una maquina para mudos!


    Eso me hubiera gustado verlo, mas adelante quiero ver la posibilidad de aumentar la calidad del sonido con memoria externa. Lo del guante supongo que estara basado en algo parecido a esas maquinas portatiles que usaban en los 80s para tomar notas, que en vez de un teclado completo usaban 5 o 6 botones manejables con una mano, en uno de los fasciculos de Mi Computer sale una. Eso tambien me interesa para otras aplicaciones, pero yo pense en usar alguna variacion del sistema Braille para tipear.

    Aca va una foto de mi reloj. La carpinteria no fue facil (ni quedo muy linda) tiene un acrilico rojizo, y abajo una cartulina negra con un agujero por cada led, para mejorar el contraste. Hablando del Agujerito sin fin, esos 300 agujeritos en la cartulina fueron una tortura. Yo en otro vida creo que fui un chino en una planta de produccion, me meto a hacer cada cosa!!


    Y asi es la calentura, yo tambien me meti a hacer cosas de las que quedo un prototipo, bastante desastroso esteticamente por supuesto, pero funcional, y lleno de parches de modificaciones posteriores, pero son cosas que haces una vez por la curiosidad y que no volverias a repetir. Igual se ve muy bien, la logica de los numeros es de 7 segmentos? Digo no creo que controles cada led en particular desde el PIC, seguramente hay varios leds que estan cableados juntos.
     


  • Como dije, las tablas de ondas estan dentro del PIC como tablas de saltos, eso fue lo que mas costo, compactarlo lo mas posible, el programa anda cerca de los 4K (en palabras de PIC, no en bytes), que incluye las tablas (los "wavs" por decirlo de una manera mas entendible).

    claro! sino como andaba el SAM con la poca RAM de la C64. No pense
    en eso. Que guardas, frecuencias y duraciones?
    Desconosco casi todo sobre digitalizacion de voces, pero todo lo relacionado con sonido esta bueno, es uno de mis siguientes pasos para meterme en electronica, por lo menos hacer una musiquita con el pic con una onda no cuadrada.


    Lo que me queda pendiente es un algoritmo de escalado para hacer la transposicion de las ondas a otras notas dentro de 4 octavas.

    Queres que el PIC cante? me vuelvo loco si lo haces!


    Y asi es la calentura, yo tambien me meti a hacer cosas de las que quedo un prototipo, bastante desastroso esteticamente por supuesto, pero funcional, y lleno de parches de modificaciones posteriores, pero son cosas que haces una vez por la curiosidad y que no volverias a repetir. Igual se ve muy bien, la logica de los numeros es de 7 segmentos? Digo no creo que controles cada led en particular desde el PIC, seguramente hay varios leds que estan cableados juntos.


     ;D Claro que controlo cada led! Los caracteres estan dibujados en una tabla dentro del PIC punto x punto. Lo complicado de tener semejante matriz es el laburo de soldarla con wirewrap, alambrecitos y cables planos, pero me gusto hacerlo, no me arrepiento, es mas, unos meses despues hice con la misma tecnica un tetris de 20*10, que todavia le estoy debiendo la parte del sonido que la patee para mas adelante.

     Abajo posteo unas fotos del reloj por dentro. Fijate que la placa la pinte de negro, pero al final tube que meterla una mascara de cartulina para mejorar el contraste, y lo tuve que hacer 2 veces, porque cuando le fui a poner la primera, me di cuenta que esta placa de prototipo era poco standart, en vez de en pulgadas esta en cm (2.5 mm entre agujero en vez de 2.54, un integrado de 40 patas no entra ni a palos, menos mi cartulina agujereada)

        Saludos
       MARCOS
    Relos1
     


  • claro! sino como andaba el SAM con la poca RAM de la C64. No pense
    en eso. Que guardas, frecuencias y duraciones?
    Desconosco casi todo sobre digitalizacion de voces, pero todo lo relacionado con sonido esta bueno, es uno de mis siguientes pasos para meterme en electronica, por lo menos hacer una musiquita con el pic con una onda no cuadrada.


    Veamos, el sintetizador lo pense para hacer dos cosas, voz y tonos telefonicos, para ahorrarme chips flash con mensajes grabados, y chips generadores de DTMF, la generacion es completamente digital, digamos que tecnicamente no se puede considerar un sintetizador, ya que usa sonidos almacenados, pero por otra parte, varios sonidos requieren procesar ondas grabadas manipulando volumen o mezclandolas con sonidos generados por programa como el ruido modulado. El programa esta hecho para funcionar como tarea de fondo, por lo tanto tiene que ser mas o menos predecible en consumo de CPU, en este caso envia audio de 8 bits a 8KHz. El PIC permite generar señales de hasta 10 bits de resolucion, no recuerdo ahora cual es la frecuencia de muestreo maxima con esa resolucion, pero segun la calidad tiene que trabajar a 20MHz y dedicarse exclusivamente a eso. Si te interesa investigar, lo que uso es la salida PWM que tienen los PICs mas nuevos (el 16F877 tiene 2 salidas de esas), eso es modulacion de ancho de pulso, poniendole un filtro RC a la salida tenes un conversor digital/analogico, es la misma teoria que usan las fuentes conmutadas para regular tension.
    El SAM no se bien que tecnica usa, pero creo que no aprovecha al 100% el SID, ya que el programa salio para Apple II (requeria una placa con conversor D/A), Apple Lisa, Atari 8 bits y C64, y el sonido en todas esas maquinas es bastante diferente entre si, por lo que supongo que el algoritmo era en gran parte portable y generico. Igual puede que me equivoque y en cada plataforma hayan hecho un algoritmo optimizado para esa maquina.
    En mi caso la frecuencia de un sonido lo determina la cantidad de muestras que tenga, y se repite las veces que me diga la tabla de propiedades de ese fonema. Basicamente, el programa se ejecuta 8000 veces por segundo y en cada ejecucion tiene que generar el siguiente numero de 8 bits que va a ir a la salida de audio, hay una lista de reproduccion de fonemas en memoria (que es lo que tendria que recibir en el futuro desde afuera), segun el fonema que sea se lo implementa tocando un sonido repetidamente, tocando varios otros fonemas (fonemas compuestos por otros), generando un fonema completamente por programa, o una mezcla de todo (combinando varios fonemas en sucesion, a la vez que se mezcla por sonidos generados por programa). Todo este lio de combinar cosas existentes es precisamente para ahorrar memoria reutilizando ondas parecidas para formar otras nuevas.
    La digitalizacion se hace en la PC, luego se filtra, se analiza, se elimina lo que no sirve, se centra y maximiza la onda, se reduce la calidad y luego se copian los valores a una tabla en el PIC, asi que eso no tiene mucha ciencia, el tema es saber que grabar y con que quedarse de la onda.

    Queres que el PIC cante? me vuelvo loco si lo haces!

    Bueno, la idea era que el programa sirva tambien para tocar ondas basicas, senoidal, triangular, etc., y que se pudiera hacer transposiciones para tocarlas en distintas notas y octavas, pero tambien se me ocurrio que tocando las vocales en distintas notas se podria hacer cantar al programa, aunque eso no es algo que tenga prioridad por el momento, algun dia lo voy a hacer solo para darme el gusto.
    La idea era separar el sintetizador en el futuro para que funcione como chip de sonido basico para aplicaciones generales.

    Claro que controlo cada led! Los caracteres estan dibujados en una tabla dentro del PIC punto x punto. Lo complicado de tener semejante matriz es el laburo de soldarla con wirewrap, alambrecitos y cables planos, pero me gusto hacerlo, no me arrepiento, es mas, unos meses despues hice con la misma tecnica un tetris de 20*10, que todavia le estoy debiendo la parte del sonido que la patee para mas adelante.


    Es una locura ese reloj, todo un presupuesto en leds, supongo que vas barriendo permanentemente, una fila o columna a la vez, y un digito a la vez. La base de tiempo la sacas del reloj de 4MHz usando uno de los timers con prescaler?
     


  • Si te interesa investigar, lo que uso es la salida PWM que tienen los PICs mas nuevos (el 16F877 tiene 2 salidas de esas), eso es modulacion de ancho de pulso, poniendole un filtro RC a la salida tenes un conversor digital/analogico...

    No sabia de esas salidas, y no es la primera vez que me pasa: Me hice una rutinas re jodidas para enviar y recibir datos por puerto serial a 56Kb, todas con la interrupcion de timer en la 16F877, y a esa velocidad no andaban del todo bien, entraba basura cada tanto, ademas que me quitaba tiempo de ejecucion con otro periferico que estaba controlando a la vez (una impresora de tickets). Un dia buscando otra cosa en el datasheet, veo que tiene viene con UART interna!!   >:(  Que bronca que me dio ese dia!!


    El SAM no se bien que tecnica usa, pero creo que no aprovecha al 100% el SID, ya que el programa salio para Apple II (requeria una placa con conversor D/A), Apple Lisa, Atari 8 bits y C64, y el sonido en todas esas maquinas es bastante diferente entre si, por lo que supongo que el algoritmo era en gran parte portable y generico. Igual puede que me equivoque y en cada plataforma hayan hecho un algoritmo optimizado para esa maquina.

    Calculo que no usa las voces del SID, sino que genera ondas cambiando el volumen, como esa rutina que reproducia el audio de los casetes desde el datassete. No se porque pienso esto, pero siempre me dio esa impresion.

    De sintetizacion de voz humana la verdad que no se nada. Aca en el trabajo habia un libro dedicado al tema, y siempre pensaba en leerlo. Cuando por fin lo agarre, estaba en chino! lo habia traido mi jefe de cuando estudiaba en taiwan (aclaro que la tapa estaba en ingles y tenia afuera caracteres en chino, pero otros libros que trajo tambien y estaban en ingles adentro).


    Bueno, la idea era que el programa sirva tambien para tocar ondas basicas, senoidal, triangular, etc., y que se pudiera hacer transposiciones para tocarlas en distintas notas y octavas, pero tambien se me ocurrio que tocando las vocales en distintas notas se ...


    Lindo chiche!  ;)
    Estos dias estoy muy disperso, me puse a convertir mis computadoras a NTSC y temine dedicando una monton de tiempo a leer sobre standarts de video y osas por el estilo, algo que no manejo bien desde la base (inductancias, osciladores, RC, etc), y toco un poco de cada cosa en otros proyectos electronicos que tengo por la mitad y otras tantas cosas no electronicas que tengo incompletas tiradas por toda la casa.
    Cuando me organice un poco, retomo la lectura de teoria de electronica, y voy por los amplificadores y sonido!! recien ahi voy a considerar que se algo de electronica. Quiero hacerme un pic que toque music a traves de un SID que tengo y despues hacer que el pic sea una especie de SID en si mismo.


    Es una locura ese reloj, todo un presupuesto en leds, supongo que vas barriendo permanentemente, una fila o columna a la vez, y un digito a la vez. La base de tiempo la sacas del reloj de 4MHz usando uno de los timers con prescaler?


    La bolsita de 100 leds en www.quiwi.com.ar estaba algo asi como 6-7 pesos, no es tan caro. El problema que compre los mas baratos, habia otros mas por bolsita de 100 (no me acuerdo si difusos o los otros) un poquito mas caros, que tal vez me dieran mejores resultados.  Los otros leds grosos, que se ven re bien de cualquier angulo se venden por unidad, y ahi ni a palos, como 200$/300$ en leds para un reloj como este.
    Barrer la pantalla no es dificil, tenes una tabla de caracteres en rom, dibujados columna por columna, y una tabla en ram con que caracter va en cada lugar (de a 5 columnas). El loop de dibujo por cada columna saca que caracter va en la columna actual de la RAM, y que columna dentro de ese caracter y el diseño lo saca de la ROM. Avanzar una columna es re facil, le envias la señal de clock a los Shift 74HC164, y listo, ya podes dibujar la siguiente columna.

    El reloj usa un cristal de 4Mhz, que el timer lo toma como 1Mhz, despues se divide por el preescaler y el contador TRM0 (que da lainterrupcion cuando pasa de 0 a 0xff). No recuerdo por que valores los divido, pero la idea era que quede un numero entero de interrupciones por segundo.
    Luego la interrupcion actualiza una variable que cuando esa varible llega a un valor, se suma un segundo, despues de 60 segundos 1 minuto y asi.... La parte mas jodida estaba en el pasaje de mes y calculo de dia de la semana en base a la fecha y con el tema de bisiestos ( suprised  me olvide de fijarme si tomo bien el bisiesto, mas tarle lo tengo qure ver!!!!)

    Lo deje andando un dia para ver cuando atrasaba/adelantaba, y andaba joya, ni en segundo en un dia (un dia son 86400 segundos) asi que el cristal tiene un margen de error menor a 0.01%.

            Saludos
           MARCOS
     

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