cuanto mas lo miras, mas posibilidades de encontrar como optimizar el codigo tenes, ponete una meta y deja lo otro para la V2Este parece un proyecto fractal, cuanto mas lo miro mas detalles le encuentro.
pastbytes
Corregi las cosas que me faltaban, que no eran errores sino ajustar los comandos permitidos por el parser a los sonidos agregados, ya que el parser aun tenia una definicion bastante antigua y habia un par de comandos que faltaba agregar, es largo de explicar y no vale la pena, no era algo que afectara al funcionamiento.
Queda un solo cambio para hacer de los planeados, que tampoco afecta, es un cambio minimo para que al ejecutar el comando para detener inmediatamente un sonido, no lo haga al instante sino que espere a terminar el ciclo de onda actual, lo cual lo retrasa unas pocas muestras pero el sonido termina suavemente y no salen clicks. Esto es usado normalmente cuando se controla el PIC en tiempo real, como en el caso del programa con el piano, que cada vez que se pulsa una tecla detiene el sonido actual y emite el nuevo.
Lo gracioso de todo esto, es que corregi varias cosas y en lugar de perder espacio logre espacio como para 80 instrucciones mas, ahora caben 165 contiguas, y 7 mas que no se pueden usar.
Esto hace que si bien con el ultimo arreglo quede finalizado, tenga la tentacion de agregar un segundo canal de sonido, no puede ser nada complejo desde el punto de vista del codigo, tiene que aprovechar las rutinas existentes del sintetizador de voz y el motor de sonido, asi que puede tener restricciones, pero la idea es que tome menos de una semana hacerlo, seguramente va a tomar mas tiempo planearlo que hacerlo.
La forma mas simple seria dejar el sintetizador monofonico y simplemente agregar dos instrumentos que funcionarian como fonemas pero emitiendo por ejemplo sonido de organo y bajo. Si todo se complica probablemente haga eso, pero tal vez lo mejor seria agregar un sintetizador de sonido independiente que genere ondas simples como triangular y/o diente de sierra, y funcione a la vez con el sintetizador de voz. Habria un comando para activar o desactivar el segundo canal, aunque el PIC lo procesaria siempre, solo que sonaria o no. Si se habilita ese canal, el audio pasaria a tener 7 bits por canal y por lo tanto la mitad de volumen, pero se podria cantar con acompañamiento.
Si ocurre algun milagro, por ahi se pueda tener la segunda opcion pero con la posibilidad de usar tambien una onda digitalizada (cada onda ocupa 66 posiciones de memoria), o implementar alguna forma basica de volumen o ADSR.