~ZeNix~
Αρμονíα μέλου
Insertar Música Mp3
1) Introducción
¡Hola Waheros! Por fin, me presento por estos lares, ¿eh?
Bueno, como algunos ya sabréis, ando liadísimo este curso con mi primer año de Uni y ahora que teníamos un tiempo tranquilitos antes de comenzar los temidos exámenes finales, me ha embargado la nostalgia de Rom-Hackear de nuevo un poquito antes de comenzar semejante reto, la verdad
Resulta que me disponía a crear otro Hack con una historia intermedia de mi Hack principal, Pokémon Harmony, del cual tendréis noticias pronto, o eso espero.
Revisando mis queridos archivos de Rom-Hacking para comenzar dicho proyecto, me di cuenta de que tenía un tutorial en Word a medio hacer, sí, este tutorial de aquí abajito y que prometí postear hace bastante pero que bastante tiempo a personas tan ilustres como @Jo7a, @MAIDEN, @Krizalid o @Sayer301!. Como supondréis, no ha habido modo de sacar a la luz mis escasos aportes a esta comunidad, al menos hasta ahora que ya está la investigación muy avanzada ^^
En este tutorial, tan ansiado por unos y tan inane para otros, indico en poquillos pasos cómo insertar música de origen Mp3 a una Rom de GBA.
Espero que sea de vuestro agrado, chicos :blush:
2) ¿Qué necesitamos?
- La canción que deseamos insertar en formato .mp3
- Un convertidor y editor de audio
- La Rom GBA donde se insertará la canción
- Una Rom GBA limpia
- VBA
- Anvil Studio
- Sappy
- HxD
- FSF
- Un convertidor y editor de audio
- La Rom GBA donde se insertará la canción
- Una Rom GBA limpia
- VBA
- Anvil Studio
- Sappy
- HxD
- FSF
3) Preparando la canción
Partiendo de esta investigación donde muestro más detalladamente cómo editar un audio para hacerlo más liviano y cómodo para la inserción en la Rom, puedo comenzar a exponer este tutorial.
En este caso, voy a insertar la canción principal del anime de Pokémon (ole mi originalidad).
Como veis, el archivo .mp3 del que partimos es bastante más ligero que el .wav que surge de su conversión. Diréis: “pues vaya, utiliza el formato .mp3 y listo”. Ya, ojalá, pero Sappy sólo reconoce y acepta archivos .wav, aunque gracias a ello, la música .mp3 original no perderá considerable calidad.
Para transformar el .mp3 a .wav existen diversas herramientas o aplicaciones que te facilitan el proceso, incluso páginas online como Convert audio to WAV muy frecuentadas. No obstante, estas últimas no las recomiendo mucho para este tutorial.
Pues bien, antes de avanzar con la investigación, mi inocente iniciativa me lanzaba a insertar directamente el inmenso .wav que aparecía con la primera conversión del .mp3 original.
Por suerte, ya encontré diferentes maneras de reducir archivos .wav en múltiples pasos como podéis ver aquí:
A lo que más se acude para tratar de no perder una considerable cantidad de calidad sonora, es a reformas básicas como el reajuste de Hercios, minimización de los bits y la fusión de los canales que se reproducen, es decir, de Estéreo a Mono. No os preocupéis, todas estas transformaciones están bien explicadas en los últimos post de mi investigación.
Una vez terminado todo esto, nos podría resultar un archivo .wav bastante escueto, incluso podría llegar a suponer la mitad de liviano que el archivo .mp3 original. Obviamente, no de la misma calidad, pero bueno, es GBA, los avances se pagan caro (con valioso espacio, claro)
4) Preparando el archivo Midi
El presente se trata de uno de los pasos más complicados o, al menos, más laboriosos del tutorial. Tanto es así que podría causar hastío y cefalea si no se tiene algo de paciencia, pues es posible que se diera el caso de repetir este apéndice decenas de veces para considerar satisfecho el trabajo, si acaso.
Pues bien, avisados y conscientes de los riesgos (¿?), comencemos:
4.1) Adaptando y acomodando la Midi
Como habréis imaginado, las canciones de las Rom GBA se insertan en archivos .mid, pero, por suerte, los samples se instrumentan en archivos .wav. En efecto, cada nota está sonorizada por un sample, por lo tanto, aprovechando esto, podemos interpretar un sample como una canción enterita que, por supuesto, hace la función de un hipotético sample instrumental, al menos así lo considera la Rom.
Como todo sample, la canción interpretada como tal necesita una nota correspondiente que sonorizar. El quid de la cuestión radica en la longitud de dicha nota para que concuerde y armonice con el sample, a saber, la duración de ambos elementos debe ser exactamente la misma, ni más ni menos, con el propósito de que el resultado sea el óptimo.
Para tal hazaña, creo que cualquier editor de Midis serviría. El que más pulula por los foros es Anvil Studio, aunque hay muchos más. Con el fin de satisfaceros, utilizaré esta herramienta.
Para empezar, abrimos el Anvil para crear un archivo .mid nuevo. La intención es componer un Do central que sea instrumentalizado por el sample, la canción, en este caso.
Para mi Midi he creado la nota Do central, ya que, aunque Sappy acepta cualquier nota instrumentalizada, la Rom basa y centra las Midis en este Do. La figura musical también puede ser zutana, incluso dos o tropecientas vinculadas por ligaduras. Por comodidad yo sólo manejo una redonda, además, no merece la pena preocuparse por esto en una canción de poco más de un minuto.
Los problemas comienzan aquí, ahora hay que cuadrar la duración de la nota de la Midi con la durabilidad de la canción que cumple la función de sample.
Haciendo clic derecho en la canción y seleccionando Propiedades podemos visualizar la duración de la misma.
En este apartado tenemos que elegir un tempo determinado que ritme la canción y haga que dure el minuto, ocho segundos que dura mi canción.
Sin mucho trabajo, nos percatamos que la redonda a un tempo de 4 (lo mínimo que permite Anvil) dura un minuto exacto. Pues bien, para que la canción no se corte sin reproducir los ocho segundos restantes, debemos alargarla levemente.
Para ello creamos otra nota, eso sí, la misma que la precede para que puedan ser vinculadas por ligadura, otro Do central. La cuestión radica en ir probando con figuras musicales hasta que cuadre el tempo. También ayuda mucho reajustar el ritmo a voluntad y utilizar duraciones medias como el puntillo. Que encaje perfectamente es casi imposible, pero oye, hay gente muy suertuda por el mundo
Como Ahora vais a ver mi canción ha cuadrado casi perfectamente con una duración de 01:08:07. La Midi la constituyen una redonda, una negra con puntillo y una semicorchea.
Para que la canción no suene a trompicones, las notas deben sonar conjuntas y, para ello, qué mejor que las elegantes ligaduras. Vincularlas con una de ellas es sencillo:
Por cierto, antes de nada, debéis asignarle a la pista un instrumento determinado. Si vais a utilizar un VoiceGroup bastante frecuentado, recomiendo uno no muy usado, por ejemplo, Gunshot, Applause o Helicopter. Bueno, los del final.
Como yo lo voy a hacer en una Rom de prueba, no crearé un nuevo VoiceGroup y utilizaré el instrumento predeterminado, el Acoustic Grand Piano.
Como todo sample, la canción interpretada como tal necesita una nota correspondiente que sonorizar. El quid de la cuestión radica en la longitud de dicha nota para que concuerde y armonice con el sample, a saber, la duración de ambos elementos debe ser exactamente la misma, ni más ni menos, con el propósito de que el resultado sea el óptimo.
Para tal hazaña, creo que cualquier editor de Midis serviría. El que más pulula por los foros es Anvil Studio, aunque hay muchos más. Con el fin de satisfaceros, utilizaré esta herramienta.
Para empezar, abrimos el Anvil para crear un archivo .mid nuevo. La intención es componer un Do central que sea instrumentalizado por el sample, la canción, en este caso.
Para mi Midi he creado la nota Do central, ya que, aunque Sappy acepta cualquier nota instrumentalizada, la Rom basa y centra las Midis en este Do. La figura musical también puede ser zutana, incluso dos o tropecientas vinculadas por ligaduras. Por comodidad yo sólo manejo una redonda, además, no merece la pena preocuparse por esto en una canción de poco más de un minuto.
Los problemas comienzan aquí, ahora hay que cuadrar la duración de la nota de la Midi con la durabilidad de la canción que cumple la función de sample.
Haciendo clic derecho en la canción y seleccionando Propiedades podemos visualizar la duración de la misma.
En este apartado tenemos que elegir un tempo determinado que ritme la canción y haga que dure el minuto, ocho segundos que dura mi canción.
Sin mucho trabajo, nos percatamos que la redonda a un tempo de 4 (lo mínimo que permite Anvil) dura un minuto exacto. Pues bien, para que la canción no se corte sin reproducir los ocho segundos restantes, debemos alargarla levemente.
Para ello creamos otra nota, eso sí, la misma que la precede para que puedan ser vinculadas por ligadura, otro Do central. La cuestión radica en ir probando con figuras musicales hasta que cuadre el tempo. También ayuda mucho reajustar el ritmo a voluntad y utilizar duraciones medias como el puntillo. Que encaje perfectamente es casi imposible, pero oye, hay gente muy suertuda por el mundo
Como Ahora vais a ver mi canción ha cuadrado casi perfectamente con una duración de 01:08:07. La Midi la constituyen una redonda, una negra con puntillo y una semicorchea.
Para que la canción no suene a trompicones, las notas deben sonar conjuntas y, para ello, qué mejor que las elegantes ligaduras. Vincularlas con una de ellas es sencillo:
Por cierto, antes de nada, debéis asignarle a la pista un instrumento determinado. Si vais a utilizar un VoiceGroup bastante frecuentado, recomiendo uno no muy usado, por ejemplo, Gunshot, Applause o Helicopter. Bueno, los del final.
Como yo lo voy a hacer en una Rom de prueba, no crearé un nuevo VoiceGroup y utilizaré el instrumento predeterminado, el Acoustic Grand Piano.
4.2) El desafío del looping
Aunque se trata de un paso opcional, es imprescindible y uno de los más tediosos para la mayoría de las canciones. En lo que a mi tema atañe, la canción la voy a insertar en la portada, esto es, una de las pocas Midis que no prescinden de looping.
No obstante, ya que el looping es tan demandado y exigido por las canciones, explicaré cómo hacerlo.
El looping supuso uno de mis mayores obstáculos para avanzar en mi investigación, pero con ingenio y maña todo se logra.
Para un loop simple, es decir, que se repita la canción infinitamente, se debe loopear la Midi como siempre se ha hecho, es decir al modo tradicional, incluso con el propio Anvil. En muchas ocasiones, se deberá manipular el final de la canción para que al reiniciarse concuerde con el principio. Nada que un editor de canciones no pueda hacer con un simple Crop.
Ya sabéis, marcando con una Cue de corchetes al principio ([) y al final (]) y, acto seguido, guardar la canción en File > Export MIDI-format 0 file…
No os preocupéis, dejaré en la parte final de Anexos algunos enlaces a otros tutoriales que vienen bien para completar este, como el de loopear Midis.
Ahora viene cuando la matan. En muchísimas canciones, hay un preludio que introduce la canción, ¿cierto? En este caso habría que fisionar la pista original y dividirla en dos (o más) archivos .wav. Por lo tanto, la nota de la Midi también deberá estar compuesta por dos notas diferentes, la primera más corta, generalmente. La Midi tomaría la apariencia de anacrusa más nota larga. Por si faltaba algo, en múltiples ocasiones es menester que el looping se haga a la vieja usanza, es decir, con el método manual tradicional para que no haya errores típicos como el encabalgamiento o los cortes repentinos.
Mejor se ve todo con un ejemplo. Imaginemos que yo también tengo que loopear la canción, y que esta tiene una introducción de ocho segundos antes de comenzar con el estribillo o parte que queremos que se repita.
Lo mejor es figurarse que en la Midi hay dos canciones (que en parte es cierto): la introducción y la propia canción loopeada, por lo tanto, constituyen dos instrumentos diferentes, Acoustic Grand Piano y Gunshot, verbigracia. La introducción no queremos repetirla así que queda aparte del resto de notas en una pista diferente con su correspondiente instrumento asignado (Gunshot). En realidad, podría encontrarse en el mismo pentagrama si se tienen los suficientes conocimientos obre editar archivos .S, pero para no complicarnos más la vida, creamos una pista nueva con su notita corta y su instrumento.
Como ya he mencionado, la hipotética introducción tiene una duración de ocho segundos, lo que, en mi caso, corresponde a una semicorchea. Ergo, la nueva pista se tratará de una semicorchea Do central con el mismo tempo y que no loopearemos.
La canción, por otra parte, si culmina como la "mía", se podría loopear desde Anvil, formando el bucle solamente en el canal principal, es decir, el del Acoustic Grand Piano. El silencio de semicorchea, equivalente a una semicorchea, obvio, hace aguardar a la pista hasta que la introducción finaliza y solo entonces pueda empezar. Como habréis imaginado, la marca Cue final se hallaría entre dicho silencio y la blanca con puntillo que lo precede.
Como se ve claramente, he tenido que disgregar la preciosa redonda inicial para que todo encajara con el silencio de semicorchea
Finalizado esto, todo indica que la Midi ya está armonizada temporalmente con su correspondiente canción y lista para insertarse en la Rom.
5) Insertando con Sappy
Para evitar cualquier posible error inicial, recomiendo colocar todo lo necesario en una carpeta bien organizado. Es imprescindible la Rom, Sappy y sus complementos, la Midi y MPlayDef.S, aunque yo coloqué más cosas.
En primer lugar, hay que crear el archivo .S de la Midi arrastrándola hacia la herramienta mid2agb. Para esto es necesaria la presencia en la misma careta del archivo MPlayDef.S. Este .S surgido se puede editar para múltiples fines como el looping manual.
A continuación, abrimos la herramienta musical Sappy y elegimos en el menú de temas la canción que deseamos sustituir (o añadir). En mi caso, la Midi de portada.
Para comenzar a insertar, hay que tener en cuenta el tamaño de los archivos que se introducirán en el juego: el .S y el .wav. El archivo .S es insignificante en comparación son su asignado, así que cualquier dirección de la Rom con unos pocos bytes libres servirán perfectamente para insertarlo. La propia dirección de la Midi original sustituida es suficiente y de sobra.
El proceso para compilar el .S es idéntico al de una Midi ordinaria: Tasks > Assemble song > Elegir el .S > Cook it! > Sí > Close.
En cuanto a la inserción de la canción .wav con función de sample, hay que tener mucho más en cuenta el espacio que le será necesario para su inserción. Para cerciorarnos lo mejor es utilizar un Rom limpia e insertar el .wav en una dirección determinada para así comprobar la extensión que precisa con HxD (los más veteranos sabrán que corresponde al tamaño del archivo).
Una vez que tenemos la información necesaria sobre los bytes que son necesarios, buscamos con FSF una dirección libre con esta extensión. En mi caso emplearé 0x800000, ya que al ser una Rom limpia de prueba, no requiero una dirección específica.
Copiamos la dirección obtenida y, para insertar el supuesto sample nos dirigimos a Sappy y: Import Sample > Import File Name (elegimos la canción .wav) > Import Adress (pegamos la dirección copiada) > Import.
Por último, debemos asignar el instrumento escogido a la pista de la Midi ya insertada. Para ello nos dirigimos en Sappy a Edit Voice table. En ella, debemos seleccionar el número de nuestro instrumento de Anvil menos uno, por ejemplo, como yo escogí el Acoustic Grand Piano, que corresponde al número 1 en Anvil, debo seleccionar el número 0.
Estando en el número correspondiente de nuestro instrumento, en Output Device, escogemos el apartado de DirectSound. En Adress 1 pegamos la dirección donde se encuentra el sample. En Atk y Sus, escribimos 255.
En la parte de Base Note debemos seleccionar la nota de nuestra Midi en cifrado americano. Yo había compuesto la Midi con la nota Do central, así que selecciono C3, 60 – C3, para ser exactos. Los más listos, pueden jugar con el tempo y las alturas si les place
Como último paso, pinchamos en Update y después en Ok.
6) Retocar y comprobar el resultado
Ahora tan solo restaría comprobar si en la Rom suena como desearíamos (conscientes de nuestras limitaciones, claro está). SI no se da tal caso, habría que retocar la Midi y la canción hasta hartarse. Y si todavía no queda bien pues tirad la toalla, ¿qué queréis que os diga? :awesome:
Mi resultado final ha sido este:
Al tratarse de una Midi de portada, olvidé que tenía un tiempo limitado, así que la canción no se ha reproducido entera, sorry
7) Enlaces y complementos
Reducir el tamaño de .wav
Loopear a mano
Loopear con Anvil
________________________________________________
Pues esto sería todo, chicos. Soy consciente de que a primera vista el tutorial pueda parecer arduo y casi imposible, pero debéis tener en cuenta que no es resultado del trabajo de un día. Además, con perseverancia seguro que todo el mundo podría hacerlo
Con esto doy por concluida una de las pocas aportaciones que puedo otorgar a esta acogedora comunidad
Por supuesto, si algún apartado no lo comprendéis o no encontráis alguna herramienta, no dudéis en avisarme y haré lo posible por facilitároslo.
Nada más, seguramente a partir de ahora y hasta el fin del verano me pase más por aquí así que, ¡nos vemos, Waheros! :heart: