Pues en teoria... un generador sencillo de sonidos, es usando un par de senos en Z, de manera que se modifica W para obtener dos senos de diferente frecuencia, y al sumarlos, tenemos un sonido con una fundamental y una armónica.
Audio = z K1 sin(ω T1) z K2 sin(ω T2)
---------------------- + -----------------------
z2 − 2 z cos(ω T1) + 1 z2 − 2 z cos(ω T2) + 1
T1 y T2 son las constantes que modifican la frecuencia de ambas frecuencias
K1 y K2 modifican la amplitud de cada una.
Voy repasar mi transformada z, pero me parece muy interesante y muy apropiado para ser programado, Gracias
Yo también estoy diseñando un generador de sonidos simple con un PIC16F876A...lo de la transformada Z no es mala idea, pero si creen poder modelar a assembler (ó C) una función tan compleja? y en un PIC de medio rango (16F84)???
El problema de memoria se soluciona de varias maneras:
Para manipular en tiempo real el sonido que estes generando:
1 - usando la RAM (no alcanza).
2- Usando RAM Externa (si alcanzaría, pero siempre se borrarian los datos)
Solamente para Reproducir Sonidos:
1 - Usando la EEPROM (no alcanza).
2 - Usando La Memoria FLash como Tabla de datos (solo 8bit por linea, y ademas esta el problema de las tablas mayores a 255, y la paginacion....cosa que es solucionable).
3 - Usando la memoria FLASH pero leyéndola directamente como su fuera la EEPROM (14bit por linea), si cada muestra es de 8 bit (1 Byte), se obtendrian 7168 Bytes si se tienen unas 4k lineas de FLASH [(4096x14bit)/8Bit]
Con la solucion 3 hay nuevos inconvenientes:
- uno es que la lectura o escritura desde la FLASH es un poco diferente a la de la EEPROM (se deben escribir 4 lineas de codigo al tiempo)
- Habría que empaquetar los 14 bit en 2 Registros y acomodar los 2 bit faltantes desde la siguiente lectura.
- habría que evitar la ejecución de las lineas de código con las muestras de sonido... también hay que tener en cuenta la paginación de memoria (no se si realmente importe)
- habría que ver los tiempos de lectura cuando se usa la FLASH....
- también hay que mirar si el PIC soporta Auto-lectura/escritura .,....bastante trabajo pero creo que valdría la pena probarlo..
Salu2