Autor Tema: sintetizador con pic16f877a y sid6581  (Leído 5983 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
sintetizador con pic16f877a y sid6581
« en: 02 de Enero de 2008, 19:55:39 »
hola
aqui estoy enfarrangao en otro juguete, esta vez se trata de un sintetizador para guitarra basado en el sid 6581, iré poniendo los post con los avances, la info que encuentre relacionada y para debatir ideas o aportes que quieran hacer  :mrgreen:

datasheets del sid diferentes modelos
web en castellano con infomacion del sid

de momento estoy haciendo un mastil de guitarra para sujetar tres cuerdas, que por cada sid hay tres sintetizadores, ya ampliare a 6 cuerdas con dos sids, si es que suena decentemente, si no le pondremos un nombre raro y a decir que es un nuevo instrumento. La idea es analizar la frecuencia aprox de cada cuerda y confeccionar una formula para copiarlos en los registros de frecuencia de cada oscilador del sid, de esta forma generar las notas. le estoy montando una pastilla activa por cuerda con disparadores de schmith para cuadrar la señal de cada una por separado y con un multiplexador seleccionar que cuerda se va a tratar; deberia ser un multiplexador digital ya que paso la señal por los disparadores o el 4051 analogico vale??
para manejar los registros de control del sid, voy a utilizar la plaquilla que me mandaran con él (a ver si llega) utiliza registros de desp. 74595 para cargar los datos de la direccion a escribir y los datos, ademas me sobran dos salidas del primer registro, que se pueden puentear a la linea CS de cada sid para seleccionar a cual de los dos se quiere acceder y asi no se utilizan mas lineas del micro y solo dos registros de desplazamiento

la placa que voy a usar para el 16f877 es esta core

para las entradas de los botones y encoders utiliza reg 74165 a estos se conectan los pulsadores, cada entrada coincide con cada registro del sid de esta forma poniendo a 0 la entrada 5 del tercer registro 74165 activa el oscilador en diente de sierra. para los registros de de cuatro bits como el de ataque o decay (entre los dos forman uno de ocho) hay que montar un encoder a un contador asc/desc de cuatro salidas, estas se conectan a las entradas del registro de desp para modificar los valores de 0-16 cada cuatro bits  si conoceis si existen encoder con salida en binario me quitaria los contadores que aun no he elegido.

os dejo lo que he ido haciendo, impaciente por pillar el sid. de momento el programa solo hace la rutina de entrada de datos y sacarlos al sid para configurarlo, todavia no he empezado con la frecuencia de las cuerdas, tengo que terrminar de montar las pastillas. pero si le quieren ir dando un vistasho al programa ahí está

gracias y un saludo
« Última modificación: 04 de Enero de 2008, 09:16:25 por alogic.on »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: sintetizador con pic16f877a y sid6581
« Respuesta #1 en: 03 de Enero de 2008, 06:46:48 »
Interesante proyecto, alogic.on, aunque se me escapan muchas cosas.

Entiendo que cada cuerda vibra a una frecuencia determinada, ¿y el volumen del sonido es la amplitud?, ¿y todo eso lo capturarás con el PIC?  :shock:

Desconectado Flugplatz

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 279
    • Mi canal de YouTube
Re: sintetizador con pic16f877a y sid6581
« Respuesta #2 en: 03 de Enero de 2008, 08:55:19 »
Vaya lujo de chip!!! Un sintetizador analógico de tres voces completo en un solo chip!!!

Esto de la electrónica no para de alucinarme continuamente... Todavía recuerdo mis principios en electrónica intentando hacer VCOs... VCAs... y VCFs... Y a mi que cuando salió el POLISIX me parecía un a pasada!! y resulta que con el paso de los años alguien metió casi un Poly-800 en un solo chip!!! o casi dos MS-20!!!

Y que habrá ahora? según esta foto, están fabricados a mediados de los 80 (semana 23 del año 84)

Un pregunta por simple curiosidad.

Alogic.on, ¿donde  se supone que has conseguido ese chip?... Parece un chip descatalogado.

Manolo, a ver si es esto lo que quiere hacer Alogic.on...

Por lo que parece, la única función del pic es recibir el sonido que produce la cuerda, convertirlo en la nota musical correspondiente (DO=440Hz), y en base a eso, manejar esta pasada de chip para generar la música. O sea, que la guitarra está siendo solo el interface de entrada; igual que en un sintetizador lo son las teclas.
« Última modificación: 03 de Enero de 2008, 09:11:35 por Flugplatz »
Mi canal de YouTube

Un saludo desde Madrid

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: sintetizador con pic16f877a y sid6581
« Respuesta #3 en: 03 de Enero de 2008, 09:36:48 »
Citar
¿y todo eso lo capturarás con el PIC?  Shocked
hola, espero que si,  siendo tu quien me lo dice, me tira atras todas mis espectativas :? :? no crees que a 20 Mhz le de tiempo a analizar tres frecuencias diferentes, y la amplitud de la nota, el controlador para midi que monte utiliza 64 potenciometros  (tiempo de adquisicion+t. de conversion+mas salvado del resultado de la conversion en eeprom+envio de tres bytes por la usart de 64 canales+un telado de 80 pulsdores......) y le da tiempo mas que de sobra,tambien he visto proyectos de gente que usa un 16f877 para hacer efectos;no se que frecuencia de muestreo alcanzaran, desde luego no creo que sea 24bit/192khz que es a la que trabajan las mejores targetas de sonido, como pro-tools o motu, pero se defienden, que tiempo minimo podria usar para medir una frec ; si es necesario puedo enlazar varios pic por i2c unos se dedican a analizar y otro manejaria un sid pero no creo que sea necesario ya un comodore hacia musica con él ¿a que frecuencia de trabajo se movia este pequeñin? :shock: viva la musica retro de 8 bit :mrgreen:
en el datasheet del sid la frecuencia maxima que exponen en la tabla temperada(pag 10) es de 395.106Hz

FREQ LO/FREQ HI (Registros 00,01):

Juntos, estos registros forman un número de 16-bits que controla linearmente la frecuencia del oscilador 1. La frecuencia se determina mediante al siguiente ecuación:

Fout = (Fn * Fclk / 16777216) Hz

Donde Fn es el número de 16-bit en los registros de frecuencia y Fclk es el reloj del sistema aplicado a la entrada ø2 (pin 6). Para un reloj standard de 1.0 MHz, la frecuencia esta dada por:

Fout = (Fn * 0.059604645) Hz

Notese que la resolución de frecuencia del SID es suficiente para cualquier escala de entonación y permite el glisado de nota a nota (portamento) sin saltos discernibles en la frecuencia.

PW LO/PW HI (Registros 02,03)

Juntos estos registros forman un número de 12-bit (bits 4-7 de PW HI no se usan) que controla linearmente el ancho del pulso (ciclo útil) de la forma de onda pulso del oscilador 1. El ancho del pulso es determinado por la siguiente ecuación:

PWout = (PWn/40.95) %

Donde PWn es el número de 12-bit en los registros de ancho de pulso.
La resolucón del ancho del pulso permite que se variada suavemente sin saltos discernibles. La forma de onda pulso debe ser seleccionada para el oscilador 1 para que el valor de estos registros tenga algún efecto audible. Valores de 0 o 4095 ($FFF) en estos registros producira una salida constante de CC, mientras que un valor de 2048 ($800) producira una onda cuadrada [Un valor de 4095 no producira una salida constante de CC]


estos son los registros que quiero manejar, con la frec los registros 0 y 1 y con la amplitud al ancho de pulso, aunque se le pone un mando y se regula igual para todas. creo que sera cuestion de probar
para los registros frec_lo,frec_hi se hace la cuenta trabajando a 1Mhz; fn=66288 es igual a una frecuencia de 395.106Hz supongo que para rellenar estos registros tendre que dividir la frec de la cuerda por 0.059604645 y asi obtengo el nº de 0 a ffff asi el sid lo vuelve a reconvertir a la frec original, pero estoy pensando en que este dato puede ser "engañado" en la rutina para contar la frecuencia, variando el tiempo que tarda el programa en adquirir la frec puedo variar el tiempo hasta que coincida con los valores para el sid, o alguna otra ilogica forma que se me ocurrira  :-)
 
Citar
igual que en un sintetizador lo son las teclas.
efectivamente :mrgreen: :mrgreen:
no os he contado que por si acaso, le he puesto dentro del mastil un cablecillo a cada traste, que si bien puede usarse para reconocer que traste se ha pisado utilizandolo como un teclado de resistencias en serie.a ver si lo acabo y le saco unas fotillos para que lo veais, de todas formas si se os ocurre alguna otra forma, aun estoy a tiempo de añadir otro sistema para reconocer la nota

un saludo y gracias

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: sintetizador con pic16f877a y sid6581
« Respuesta #4 en: 03 de Enero de 2008, 10:06:09 »
aps, se me olvidaba fue por un post de Nocturno http://www.todopic.com.ar/foros/index.php?topic=899.msg8409#msg8409 el que me pico el gusanillo de hacer algo que manejase sonido con un pic, habia pensado hacer algun efecto como esos que exponen en el post. pero mi cabeza empezo a ver posibilidades infinitas usando uno de estos sintes , no para efectos, pero si se me lleno de como hacer algo que sonase en funcion de la fecuencia analizada, de esta forma se podria conectar desde una flauta con mas contras que pros o un violin igual que la guitarra que estoy haciendo posibilidades y formas de hacerlo habrá como resultados en google   :-)

un saludo y gracias

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: sintetizador con pic16f877a y sid6581
« Respuesta #5 en: 03 de Enero de 2008, 12:22:24 »
Hola, estoy dando las gracias que a mi jefe se le ha roto la fregoneta y hoy pinta Rita  :-/ con algo mas de tiempo que otros dias, seguire tecleando  :mrgreen: creo haber echo las rutinas que faltaban solo queda ajustar tiempos y hacer alguna cuentecilla con los resultados, estoy pensando que al ajustar el retraso del timer, cuanto menos tiempo le de menos veces incrementara el timer haciendo que la frec de salida del sid sea mas lenta y puede usarse como control de tono regulable, si hago con un mando variaciones en un loop de retraso. que les parece, afinado de una guitarra por soft  :D es una idea, la otra es releer todos los libros que tengo por aqui, sobre fourier, tiempos,...  :? me pongo verde pero al tajo a ver que encuentro  :-)
de momento les dejo el asm por si le quieren echar un ojo

un saludo y gracias

« Última modificación: 05 de Enero de 2008, 20:41:25 por alogic.on »

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: sintetizador con pic16f877a y sid6581
« Respuesta #6 en: 05 de Enero de 2008, 20:50:12 »
hola,
voy a ir cambiando el archivo de descarga en este post. de esta forma evito enguarrinas mas de lo que esta,
le he puesto el control de frecuencia regulado con un pote y recolocado todas las direcciones. esta mas menos el esquema para isis y poder ir probando el soft, lo que veo imposible es simular es el sid, en si solo he puesto en el circuito donde iría conectado a los registros de desp.
solucionado problema con las entradas de los registros de desplazamiento ahora el byte de entrada es igual al de salida en los registros, creo es problema del proteus pero todo se andara  :shock: cuando me envien el sid. que ya es reyes coñe¡¡¡
configurado el modulo pwm a 1 Mhz para sincronizar el sid, pin 16,rc1; a la patilla6, @2 ya no es necesario montar el cristal en el modulo del sid

un saludo y gracias
« Última modificación: 06 de Enero de 2008, 12:19:00 por alogic.on »

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: sintetizador con pic16f877a y sid6581
« Respuesta #7 en: 03 de Marzo de 2008, 15:48:47 »
Hola alogic.on:

Aparte de los chips SID hay otros que no sean tan dificiles de conseguir?

Javicho.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: sintetizador con pic16f877a y sid6581
« Respuesta #8 en: 03 de Marzo de 2008, 15:58:49 »
Deben existir, pero no los conozco. Estos tienen ademas otra ventaja: la capsula DIP!

El fin de semana comence a dibujar el PCB del esquema que postee mas arriba. Espero en unos dias poder terminarlo.

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: sintetizador con pic16f877a y sid6581
« Respuesta #9 en: 03 de Marzo de 2008, 16:22:30 »
El archivo DSN no me abre en el orcad no se porque.
Estas usando el SID 6581? en que tienda lo compraste o lo sacaste de algún lado?
Se podrá hacer lo mismo con circuiteria analoga usando puros CMOS y controlado por pic?
Debo suponer que aitopes, alogic.on y Ariel es la misma persona?

Javicho.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: sintetizador con pic16f877a y sid6581
« Respuesta #10 en: 03 de Marzo de 2008, 16:57:50 »
Debo suponer que aitopes, alogic.on y Ariel es la misma persona?

Hola!

Solo Aitopes y Ariel somos la misma cosa. De dia soy Ariel, y de noche me pongo la malla elastizada roja y soy mr. Increible.  :D :D
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: sintetizador con pic16f877a y sid6581
« Respuesta #11 en: 03 de Marzo de 2008, 17:10:49 »
La malla roja la usa metida en la cola... :mrgreen: :mrgreen:
Es una especie de cola less heroica.
Ariel se esta postulando para la tira Heroes!!! :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: sintetizador con pic16f877a y sid6581
« Respuesta #12 en: 03 de Marzo de 2008, 18:41:01 »
hola
valgame, que te hizo pensar que somos el mismo  :D :D
Citar
Estas usando el SID 6581? en que tienda lo compraste o lo sacaste de algún lado?
puedes encargar el sid en la tienda de SmashTV o en la de Mike o en ebay tienes commodore64 baratos

Citar
El archivo DSN no me abre en el orcad no se porque.
por que es para proteus isis, no para orcad
Citar
Se podrá hacer lo mismo con circuiteria analoga usando puros CMOS y controlado por pic?

claro que si hay quien ha montado estos chips en cpfga, pld, o como se llame ya no me acuerdo, era uno de los links de la wiki pero tambien puedes hacer un sinte analogico controlado por pic o comprar otros que existen como soundgine

un saludo

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: sintetizador con pic16f877a y sid6581
« Respuesta #13 en: 03 de Marzo de 2008, 21:00:57 »
Las disculpas por la confusión.

La pagina de Mike no abre y en la pagina de SmashTV dice: Note 1: SID (6581 or 8580) not listed here - you have to take it from an old C64 ... parece que no lo venden, bueno el dia que me decida a meterme de lleno en eso buscaré mas pero igual me interesa lo del sintetizador.

Javicho.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: sintetizador con pic16f877a y sid6581
« Respuesta #14 en: 04 de Marzo de 2008, 16:49:17 »
pos te va a tocar buscar un viejo C64 en ebay, los venden muy baratos. si no hay otras opciones como el soungine, o el de las antiguas soundblaster pro, un xoxbox... y multitud de proyectos en internet de sintes analogicos
un saludo