Una segunda prueba mas exacta, en realidad asi salio originalmente, pero a la mitad de la velocidad, asi que lo arregle cambiando todas las notas una octava mas arriba. De paso se acerca mas al midi, que esta una octava mas arriba de esta prueba, y 2 octavas por encima de la anterior.
pastbytes
Esta es la secuencia de comandos que ejecuta para generar esta prueba:
(B30)
(N36C06)/4(N38C55)/4/4(N36C19)/4(N33C15)/4(N34C16)/4(N36C19)/4(N2BC77)/4
(N34C16)/4(N33C15)/4(N31C13)/4(N2BC11)/4(N28C0E)/4(N26C0D)/4(N23C0B)/4(N21C09)/4(N31C13)/4(N26C0D)/4(N2BC22)/4(N26C0D)/4(N28C0E)/4(N2BC11)/4(N31C13)/4(N2BC11)/4(N28C0E)/4(N26C0D)/4(N24C0B)/4(N33C15)/4(N24C0B)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N28C0E)/4
(N26C0D)/4(N36C19)/4(N34C16)/4(N38C1C)/4(N36C19)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N28C0E)/4(N26C0D)/4(N24C0B)/4(N26C0D)/4(N28C0E)/4(N2BC15)/4(N31C18)/4(N34C21)/4(N36C1F)/4(N31C18)/4(N2BC18)/4(N3BC55)/4(N39C1E)/4(N38C1C)/4(N36C19)/4(N34C16)/4(N31C13)/4(N2BC11)/4
(N29C0F)/4(N28C0E)/4(N26C0D)/4(N24C0B)/4(N23C0B)/4(N22C0A)/4(N2BC37)/4(N2AC04)/4(N28C04)/4(N27C03)/4(N26C0D)/4(N25C0C)/4(N26C0D)/4(N2AC10)/4(N29C0F)/4(N2AC10)/4(N31C13)/4(N30C12)/4(N31C13)/4(N34C16)/4(N2BC11)/4(N31C13)/4(N33C15)/4(N34C16)/4(N38C1C)/4(N36C19)/4(N38C1C)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N31C13)/4(N33C15)/4
(N36C19)/4_(N34C16)/4(N31C13)/4(N29C0F)/4(N2AC10)/4(N26C0D)/4(N31C13)/4(N2AC10)/4(N36C19)/4(N31C13)/4(N3AC20)/4(N36C19)/4(N39C1E)/4(N36C19)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N31C13)/4(N26C0D)/4(N28C0E)/4(N24C16)/4
Parece que siempre hay margen para seguir haciendo milagros.
pastbytes
Hace tiempo que pensaba para que podria servir en este proyecto la memoria EEPROM que tienen los PIC. Esta memoria se usa para guardar la configuracion de algun programa, algo asi como los parametros de la BIOS de la PC, en el sintetizador la unica utilidad que le vi es permitir en algun momento que el usuario programe frases y se las asigne a entradas, de forma tal que no haga falta otro microcontrolador o computadora para controlarlo. Uno podria tener un par de frases grabadas y conectar el chip a sensores o pulsadores que las activarian.
Pero no se me ocurrio ningun otro uso, y eso de las frases requiere demasiado codigo para algo que no usaria todo el mundo.
Lo que si pense hace tiempo es que en el futuro permitiria que se pudiera enviar al chip una o dos ondas a RAM para tener instrumentos a medida, algo asi como se hace con un archivo mod. Pero esto si requeria rutinas que recien ahora estan implementadas, aunque no hay espacio en memoria para hacerlo en este momento. Sin embargo, ayer se me ocurrio una combinacion de las dos cosas, por que no usar la memoria EEPROM para almacenar tablas de ondas?
Lo que hice fue modificar la rutina del instrumento 1 para que leyera desde EEPROM en lugar de hacerlo desde la memoria de programa, lo cual libero como 70 posiciones, y me permitio reorganizar los comandos de instrumentos, ahora el comando /3 llama al bajo y el comando /4 llama a un organo. Estaba en duda de si usar organo o guitarra electrica, y opte por organo por tener una utilidad mas amplia, aunque ya no pueda tocar humo sobre el agua.
Habia un problema con la definicion de los comandos de instrumentos, que era una limitacion de la poca memoria disponible, pero ahora que se libero un poco pude implementarlo como corresponde. Antes el comando /3 reproducia el sonido de bajo con modulacion de una envolvente de nota configurable, y el comando /4 hacia lo mismo pero sin la envolvente. Esto restringia la cantidad de comandos de instrumentos posibles, ya que quedarian /5 y /6 para un segundo instrumento, /7 y /8 para un tercero, y ya no entrarian mas a menos que aceptara digitos en hexadecimal. Como sea, no estaba bien definido, asi que ahora hay un comando de configuracion Mx, que es el primero que agrego con parametro booleano, el parametro puede ser 0 o 1, si se envia M0, a partir de ahi todos los instrumentos funcionan sin envolvente, y si se envia M1, empiezan a funcionar con envolvente.
De esta manera ahora solo hace falta configurar el modo y con los mismos dos comandos /3 y /4 ya tenemos dos instrumentos distintos, con margen para agregar 5 mas, si hubiera memoria de programa. En la EEPROM todavia hay lugar para una onda mas.
Desde afuera el unico cambio aparente es el comando de activacion/desactivacion de la envolvente, que simplemente es una forma diferente de controlarlo, y el agregado de un segundo instrumento, pero el hecho de usar la EEPROM en lugar de la memoria de programa tiene otra ventaja importante: que cualquiera con un programador de PIC puede crear sus propias ondas y regrabar solo la EEPROM de datos del chip para tener dos instrumentos personalizados.
Aca va un mp3 con la misma secuencia anterior, pero esta vez con el segundo instrumento (organo), y por cierto, es de un tema de Seru Giran.
Tambien tiene agregados algunos comandos de volumen para que los sonidos no terminen abruptamente, como dije antes, es una especie de ADSR casero.