Registrarse

[Herramienta] MAF (Midi-Asm Fixer) [GBC] Windows y Linux || 27-01-2015 : V1.1

Pum

GBCero
Buenos días, tras unos cuantos días de trabajo les traigo una herramienta pensada para el arreglo de ficheros .asm generados por el programa Midi2GSC.

Cuando creamos el fichero .asm de una MIDI para insertarlo en la ROM, tenemos que hacer ciertos arreglos a este fichero ya que ciertos aspectos no se toman en cuenta por el creador del fichero .asm.

Recuerden Ejecutarlo como administrador

Por ejemplo : Si tenemos dos notas iguales seguidas, estas notas sonarán como una nota sola, habría que meter un descanso entre estas dos notas.

Mi programa está para hacer esto y más. Tener en cuenta que este programa no te hará todo el trabajo, solo te ayudará a completarlo. Hay ciertos aspectos que tendrás que revisar manualmente.

Ahora pego los manuales de ayuda que vienen con el programa:

NOTA : Debido a ciertas complicaciones, el programa en español no tiene tildes ni la ñ, intentaré arreglar eso en el futuro.

Función 1: Separar notas iguales consecutivas. (en Beta, falta perfeccionar el algoritmo)

La idea tras esta función es separar las notas que estén consecutivas en la canción, de forma que no suenen como una más larga. (db (ntD# | 3) (db (ntD# | 2) literalmente sonará como db (ntD# | 6).

Esta función irá a través de toda la canción (o un canal específico) e incluso entre específicas barras dependiendo de lo que selecciones.

Si compruebas el archivo .asm verás lineas con frases como Channel1_Bar2: o Channel3_Bar5:, puedes poner dos barras para que el programa solo trabaje entre esas dos barras, por ejemplo si escoges el canal 2, barra 3 y barra 7, el programa buscara la correspondiente línea en el archivo de forma que comience a trabajar ahí, siguiendo nuestro ejemplo, el programa comenzara a editar tras encontrar Channel2_Bar3 hasta que encuentre Channel2_Bar7 . Esto significa que la barra numero 7 no se leerá, si quieres que se la dicha barra tendrías que haber puesto barra 3 y luego barra 8.

Después de (Opcionalmente) haber escogido las barras y el canal, el programa pedirá el método de edición. Puedes insertar descansos entre notas duplicadas, o transponer arriba o abajo las notas en posiciones pares.

Si escogiste la primera, cuando dos notas iguales están puestas consecutivamente (sin importar la duración) un descanso se insertará entre ambas notas, disminuyendo por 1 la duración de la primera nota. Si la primera nota tiene de duración 0, entonces el programa no hará nada pero te avisará de la existencia de ese caso para que lo edites tú manualmente. El programa almacena la linea que está siendo leída y la anterior. De esta forma está constantemente comparando ambas, cuando ambas contengan la misma nota, comenzará el proceso. Por ejemplo, si el programa encuentra una db (ntD# | 3) y tiene una db (ntD# | 1) en la linea anterior, insertará un descanso entre ambas y disminuirá la duración de la nota anterior por 1. Entonces acabará asi: db (ntD# | 0) db (ntRst | 0) db (ntD# | 3). Se tienen en cuenta cambios en octavas.

La segunda opción no insertará descansos, pero transpondrá para arriba las notas en posiciones pares. Esto podrá resultar en un mejor o peor resultado al sonar dependiendo de como sea la canción. Usando nuestro ejemplo anterior, cambiaríamos de db (ntD# | 3) db (ntD# | 2) a db (ntD# | 3) db (ntE | 2). Usa la misma técnica que el primer método.

La tercera opción es igual que la segunda pero las notas se transponen hacia abajo (con nuestro ejemplo conseguiríamos db (ntD# | 3) db (ntD | 2) tras aplicar la función).
Función 2: Introducir descansos dada una duración máxima de nota. (La función más útil y la que más van a utilizar

La idea tras esta función es para cuando tienes un canal o una gran parte de un canal que sabes que tiene notas muy cortas pero hay muchos descansos entre ellas, y ninguno de estos descansos se reconocen en el .asm. Por ejemplo si en un canal sabes que todas las notas duran 1 semicorchea, pero hay muchas notas que aparentemente duran más de lo que deberían ya que tendría que haber descansos entre ellas. Esta función insertará esos descansos correctamente.

La función va línea a línea comprobando cuanto dura la nota encontrada, si la duración es mayor que la cantidad dada como máxima, entonces cambiará la nota para que tenga dicha máxima duración, e insertará un descanso con el resto de la duración tras esto.Por ejemplo si tenemos db (ntB | 6) y la máxima duración es 1 (2 semicorcheas), cambiará esa nota a db (ntB | 1) db (ntRst | 4)
Función 3 : Aumenta o disminuye las octavas de un canal dado por una cantidad dada.

Una simple función, esto comprobará las octavas encontradas en el canal dado y las disminuirá/aumentara según una cantidad dada.Sin embargo la función comprueba por si las octavas se hacen demasiado pequeñas o altas, por ejemplo, si queremos disminuir las octavas de un canal en 2, pero encontramos una octava con valor 1 o 0, disminuirla en 2 pondría un valor incorrecto ya que la mínima octava es 0 y la máxima es 7. Si la función encuentra este problema saldrá de la función sin editar el archivo.
Función 4 : Lista la cantidad de semicorcheas en cada canal (Útil para controlar la repetición (loop)). Puede listar otras cosas como la max/min octava o la cantidad de semicorcheas por cada nota (en cada canal).

Esta función listará la cantidad de semicorcheas encontradas en cada canal. También listará la máxima y mínima octava encontrada. Finalmente listará cuantas semicorcheas de cada nota se han encontrado (descansos incluidos). Puedes usar estos datos para hacer cosas mas rápidamente como poner la repetición (loop) correctamente, asegurarte de que todos los canales tienen la misma cantidad de semicorcheas, etc...
Otro buen uso es para comparar los datos entre el archivo de salvado (backup) y el archivo modificado ya que la cantidad de semicorcheas no debería cambiar.
Descargas:

Linux

Español : MAF-es(Linux)

Inglés : MAF-en(Linux)

Windows

Español : MAF-es(Win)

Inglés : MAF-en(Win)

Linux

Español : MAF-es(Linux)

Inglés : MAF-en(Linux)

Windows

Español : MAF-es(Win)

Inglés : MAF-en(Win)


Cualquier error que encuentren o sugerencia que quieran hacer solo díganlo.

V1.1:
  • Finalizada la función 1. Ahora hace lo que tiene que hacer sin problemas.
  • Solucionados bastantes casos dónde el programa crashearía.
  • La función 4 es más estable y no dará errores aunque el archivo asm tenga menos de 4 canales.
  • Solucionado el problema de las tildes en la versión en español.
  • Agregado una pequeña funcionabilidad que permite reabrir el archivo simplemente pulsando Enter sin tener que reescribir el nombe del archivo.

Por hacer :
Código:
GUI
Errores conocidos:
Código:
A veces el programa creará un fichero nuevo con el mismo nombre pero sin la extensión .asm,
si esto pasa se renombra el archivo poniéndole la extensión y ya está.
[b](Solución temporal: Tras abrir el archivo, ve a la opción 8, reabre el archivo pulsando enter
y ahora este problema no debería de suceder)[/b]
 
Última edición:

Pum

GBCero
Sacada la versión 1.1

V1.1:
  • Finalizada la función 1. Ahora hace lo que tiene que hacer sin problemas.
  • Solucionados bastantes casos dónde el programa crashearía.
  • La función 4 es más estable y no dará errores aunque el archivo asm tenga menos de 4 canales.
  • Solucionado el problema de las tildes en la versión en español.
  • Agregado una pequeña funcionabilidad que permite reabrir el archivo simplemente pulsando Enter sin tener que reescribir el nombe del archivo.

Descargas en el post principal
 
Arriba