*** HR4 V1.0 beta 8 *** (ultima version final, se parece al Final Cartridge) A ver como resumo los ultimos avances, hice un monton de cambios en estos dos dias, incluso algunos que tuve que descartar y reescribir de cero para que quedaran mas practicos de usar.
Estuve experimentando con la envolvente y llegue a la conclusion de que si la envolvente tiene el mismo rango de frecuencia que las notas (de C0 a C5), una gran parte no tiene utilidad, la envolvente lo que hace es modular el sonido en amplitud (ring modulation), variando el volumen de la onda base de acuerdo a otra onda. Buscando valores adecuados para los periodos de la envolvente decidi que iba a agregar 2 rangos seleccionables, para poder seguir usando la envolvente como efecto (en el rango alto) y como envolvente de forma similar al ADSR del SID o las envolventes del PSG. La idea era que pudiera ir bajando la nota de la envolvente, y por lo tanto aumentando la duracion del ciclo, hasta llegar al minimo, donde podria pasar al rango bajo y continuar bajando durante 5 octavas mas. El rango alto va de 8ms a 244ms, el bajo va desde 244ms a 10s. Originalmente el rango alto era el mismo que para las notas de los instrumentos, pero decidi bajarlo 2 octavas (4 veces), y el rango bajo divide adicionalmente por 32 (/128 con respecto a las notas de los instrumentos).
Tuve que renombrar el comando Bon, que definia la nota de la onda base de la voz, porque para no agregar tanto codigo uso esos mismos osciladores del sintetizador de voz, y el significado de los numeros en voz y en sonido pasa a ser diferente, por lo que le puse un nombre generico al comando ya que ahora no significa Base. El comando pasa a ser Zon, donde por ejemplo Z10 seria octava 1, nota 0 (C0).
Aparte de agregar un rango mas bajo para la envolvente, tuve que crear los comandos para configurarla, ahi entra el comando Mx, que antes solamente permitia habilitar (M1) o deshabilitar (M0) la envolvente de los instrumentos. Ahora tiene 5 modos de operacion:
M0 Deshabilita la envolvente en los instrumentos
M1 Habilita envolvente con rango alto (oscilador principal /4)
M2 Habilita envolvente con rango bajo (oscilador principal /128)
M3 Igual que M1, pero la envolvente se repite solo durante un ciclo
M4 Igual que M2, pero la envolvente se repite solo durante un ciclo
Los modos M3 y M4 son utiles para simular ataque y decaimiento, ya que no son repetitivos, y el volumen queda congelado hasta que termine la duracion de la nota.
Ademas de esto, pude agregar un comando Ex, que define que envolvente de 3 posibles se usara:
E0 Envolvente por defecto, triangular con 1/4 creciente y 3/4 decreciente
E1 Envolvente diente de sierra siempre decreciente (empieza desde 255)
E2 Envolvente diente de sierra siempre creciente (empieza desde 0)
Hay bastante variedad para hacer efectos, si se usa la envolvente 2 es util para bateria o instrumentos de cuerda, mientras que la envolvente 2 es util para simular vientos. La 0 es un punto medio. Regulando la nota de la envolvente se ajusta la duracion, la envolvente corre libre mientras dure la nota, ya sea ciclicamente (modos M1 y M2) o emitiendo solo un ciclo (modos M3 y M4). Si se usa envolvente de un solo ciclo y la duracion es menor que la nota/ciclos del instrumento, quedara en silencio hasta que la nota termine. Parece complicado pero es cuestion de experimentacion, ya no hace falta ir tocando manualmente el volumen para hacer efectos, sino que se compone en principio como instrumentos de sonido continuo y luego se configura la envolvente para darle el sonido adecuado.
La verdad que con los cambios y reducciones de codigo drasticas que tuve que hacer seria un milagro que no hubiera algun error, pero hasta ahora todo lo que probe parece funcionar correctamente, optimice todo lo que pude y aun con todo esto quedan 5 posiciones de memoria libres. Encontre que el parser desperdiciaba mucho espacio, estaba optimizado para velocidad aunque repitiera codigo, y si bien se puede reducir mas, ya casi habria que reescribirlo. No quedo mas espacio para agregar otro instrumento, aunque tenga el espacio en EEPROM para almacenarla, y tambien para agregar alguna otra envolvente (de las 3, una esta almacenada porque se usa para la voz, y las dos de diente de sierra son calculadas).
Ahora me tengo que poner a escribir un manual, tambien tengo que hacer algun video, pero hay tantas cosas para probar que tendria que escribir algunas secuencias interesantes, lo que va a llevar un tiempo.
Con lo que esta agregado ya se puede hacer de todo, musica, voz y efectos de sonido, ahora hay que ver como conectarlo a las maquinas de 8 bits.