[Tutorial] Maxmod, las librerías de audio de NDS.

Ver el tema anterior Ver el tema siguiente Ir abajo

[Tutorial] Maxmod, las librerías de audio de NDS.

Mensaje por Roberto258 el Sáb 21 Mayo 2011 - 1:12

Bienvenidos a este "paréntesis" de mis tutoriales de NFlib. Os preguntaréis por qué hago un tutorial aparte. La respuesta es bien sencilla: noto que NFlib no es lo suficientemente completa en lo que al audio se refiere.

Maxmod qué es y para qué sirve.

Maxmod es una librería que nos permitirá controlar abiertamente el sonido de nuestras Nintendo DS. Se utiliza como cualquier otra, como la misma NFlib, se declara al principio y añade funciones propias que nos ayudarán, y mucho, a la hora de dar más vida a nuestro homebrew.

Preparación

Esto es lo más difícil de hacer, así que estad atentos:

1- ¿Necesitamos efectos de sonido no? Coged el sonido que queráis y convertidlo al formato .wav con cualquier programa de conversión. Yo utilizaré "Switch Sound File Converter".



*Nota: Poned las opciones tal como están en la imagen.

2- Con eso nos bastará con los pequeños sonidos. Pero para la música necesitaremos algo más, el OpenMPT. Tras instalar el programa, haremos lo siguiente:

    2.1- Abrimos nuestro archivo .wav pulsando sobre File/Open.



    *Nota: Debemos especificar que es en formato .wav (como se muestra en la imagen).

    2.2- Exportamos nuestra canción ya cargada a .it pulsando sobre File/Compatibility Export



     *Nota: ¡¡Por favor!! Dejad el nombre tal cual os lo pone.

3- Ahora debemos convertir nuestros sonidos y música (sí, otra vez xD) a un fichero .bin y a otro .h. Para ello, creamos un documento de .txt nuevo y escribimos lo siguiente:

Spoiler:


C:\nds\devkitPro\devkitARM\bin\mmutil -osoundbank.bin -hsoundbank.h -d 3KU.wav 3KU.compat.it
pause


Vayamos por partes; lo primero es la ruta donde hayamos instalado el devkitpro (ver el primer tutorial). Lo segundo son 2 comandos para convertir el sonido a los ficheros .h y .bin. Lo tercero son los nombres de las canciones y sonidos que queramos convertir (podemos convertir todos los que queramos del tirón) con la extensión que tienen (.wav .it .mod o .xm).
Cuando lo hayamos escrito, le damos a Archivo/Guardar como... y ponemos en nombre convert.bat y de tipo todos los archivos.



Ya está, ahora colocamos el convert.bat donde tengamos nuestros archivos de música y damos doble click sobre él. Nos saldrán dos archivos.

En el código

Una vez tengamos convertidos los sonidos, creamos un nuevo proyecto y ponemos el soundbank.h en la carpeta source y el soundbank.bin en una carpeta dentro de nitrofiles (Ejemplo: nitrofiles/audio).
Una vez hecho esto, abrimos el archivo makefile que está en la raíz de nuestro proyecto con un editor de texto y modificamos las siguientes líneas.

Spoiler:


TARGET := $(shell basename $(CURDIR))
BUILD := build
SOURCES := source
INCLUDES := include
DATA := data  
GRAPHICS := gfx  
NITRODATA := nitrofiles
Audio              :=  Audio


Spoiler:


#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------

LIBS := -lnflib -lfilesystem -lfat -lnds9 -lmm9


*Nota: Lo que hay que modificar lo he puesto en negrita.

Una vez hecho esto, solo queda declarar la librería y el soundbank.h en el main.c, de la siguiente manera:



Reproduciendo sonidos

3 cosas:

mmInitDefault("audio/soundbank.bin");
//Cargamos el archivo de sonido

mmLoadEffect (SFX_3KU);
//Cargamos el sonido 3KU.wav, que se representa en el archivo .h como "SFX_NOMBRE (siempre en mayúsculas).

mmEffect (SFX_3KU);
//Lo reproducimos

Siguiendo esto más lo que ya sabíamos sería así:

Spoiler:
/*
-------------------------------------------------
Includes
-------------------------------------------------
*/

// Includes c/c++
#include

// Includes propietarios NDS
#include

// Includes librerias propias
#include

//Includes para manejar el audio
#include    // Maxmod definitions for ARM9
#include "soundbank.h"  // Soundbank definitions


/*
-------------------------------------------------
Main() - Bloque general del programa
-------------------------------------------------
*/

int main(int argc, char **argv) {

//Inicia el audio

   soundEnable();

//Elige el sistema de archivos

NF_SetRootFolder("NITROFS");//Elegimos nitrofiles como carpeta inicial

   //Carga el archivo de sonido

   mmInitDefault("audio/soundbank.bin");

//Carga el sonido

   mmLoadEffect (SFX_3KU);

//Lo reproduce

   mmEffect (SFX_3KU);

   // Bucle (repite para siempre)
while(1){


swiWaitForVBlank(); // Espera al sincronismo vertical

}


return 0;

}

Reproduciendo música

Es casi lo mismo que el sonido:

mmInitDefault("audio/soundbank.bin");
//Cargamos el archivo de sonido

mmLoad (MOD_3KU);
//Cargamos el sonido 3KU.it, que se representa en el archivo .h como "MOD_NOMBRE( siempre en mayúsculas).

mmStart (MOD_3KU, MM_PLAY_LOOP);
//Lo reproducimos

*Nota: existen dos tipos de reproducciones, MM_PLAY_LOOP que repetirá la canción cuando termine y MM_PLAY_ONCE que la parará.

Ejemplo:

Spoiler:


/*
-------------------------------------------------
Includes
-------------------------------------------------
*/

// Includes c/c++
#include

// Includes propietarios NDS
#include

// Includes librerias propias
#include

//Includes para manejar el audio
#include    // Maxmod definitions for ARM9
#include "soundbank.h"  // Soundbank definitions

/*
-------------------------------------------------
Main() - Bloque general del programa
-------------------------------------------------
*/

int main(int argc, char **argv) {

//Inicia el audio

   soundEnable();

//Elige el sistema de archivos

NF_SetRootFolder("NITROFS");//Elegimos nitrofiles como carpeta inicial

   //Carga el archivo de sonido

   mmInitDefault("audio/soundbank.bin");

   //Carga el audio

   mmLoad (MOD_3KU);

   //Lo reproduce

   mmStart (MOD_3KU, MM_PLAY_LOOP);

   // Bucle (repite para siempre)
while(1){

swiWaitForVBlank(); // Espera al sincronismo vertical

}

return 0;

}


Desechos

mmUnload( MOD_NOMBRE );
//Descargamos de la RAM una canción

mmUnloadEffect( SFX_NOMBRE );
//Descargamos de la RAM un sonido

Aquí concluye mi tutorial, pero si aún os quedáis con hambre, podéis leer algo más(en inglés) en la página oficial de maxmod.
______________________________________________________________________________

¡¡NOTA IMPORTANTE!!: Cuando hice el tutorial, se me olvidó añadir que también podéis usar archivos .mod de música, y no sólo .it. Os dejo una página con una gran variedad de archivos de música .mod:

http://modarchive.org
______________________________________________________________________________

Otros tutoriales nflib

1- Conceptos previos e instalación.
2- Textos: usarlos y mostrarlos.
3- Gráficos simples: fondos & sprites. Utilizar los splashes.
4- Teclas, música & cmaps.


Última edición por Roberto258 el Jue 1 Ago 2013 - 19:38, editado 1 vez
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1145
Localización : P'allá, p'allá, y luego to p'alante
Empleo/Ocio : Llevar el juego del asesino :P
Humor : Quarcástico
Opinión sobre NDS-Extra : Me Encanta
Inscripción : 28/08/2010
Reputación : 110
Puntos : 1416

Volver arriba Ir abajo

Re: [Tutorial] Maxmod, las librerías de audio de NDS.

Mensaje por pepenillo el Sáb 21 Mayo 2011 - 12:01

Lo probaré, pero segun lo he leido parece un poco dificil

pepenillo
NDS-Extrero

Masculino
Cantidad de envíos : 1765
Opinión sobre NDS-Extra : Ninguna
Inscripción : 12/08/2010
Reputación : 179
Puntos : 2532

Volver arriba Ir abajo

Re: [Tutorial] Maxmod, las librerías de audio de NDS.

Mensaje por Roberto258 el Sáb 21 Mayo 2011 - 12:46

pepenillo escribió:Lo probaré, pero segun lo he leido parece un poco dificil

Con decirte que comencé a intentar utilizarlas en diciembre del año pasado y hasta hace unas semanas seguía en un "punto muerto",Pero vamos, que para que no os pase lo mismo os lo he puesto a huevo, con imágenes, con ese programa que me costó la vida encontrar y totalmente en español, que dudo que encuentres tutoriales de esto en español.

Un saludo y recuerdo hacer cada paso con mucho cuidado.
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1145
Localización : P'allá, p'allá, y luego to p'alante
Empleo/Ocio : Llevar el juego del asesino :P
Humor : Quarcástico
Opinión sobre NDS-Extra : Me Encanta
Inscripción : 28/08/2010
Reputación : 110
Puntos : 1416

Volver arriba Ir abajo

Re: [Tutorial] Maxmod, las librerías de audio de NDS.

Mensaje por Rafael-animal el Sáb 11 Jun 2011 - 19:39

¡Al fin pude poner música en condiciones!
Muchas gracias por el tutorial =).

Rafael-animal
NDS-Junior

Masculino
Cantidad de envíos : 84
Opinión sobre NDS-Extra : Tiene que mejorar
Inscripción : 13/01/2011
Reputación : 23
Puntos : 125

Volver arriba Ir abajo

Re: [Tutorial] Maxmod, las librerías de audio de NDS.

Mensaje por ndsxl el Dom 24 Feb 2013 - 19:01

Entonces esto hace que cambiemos el sonido de la consola o como?,entiendo los pasos,pero,quiero saber para que es?,para hacer el que?
avatar
ndsxl
NDS-Mayor

Masculino
Cantidad de envíos : 250
Localización : En los más Oscuros Bosques y en los más profundos Mares...
Empleo/Ocio : rel=0&autoplay=1
Humor : Taciturno y oscuro...
Inscripción : 05/06/2010
Reputación : 8
Puntos : 450

http://www.HobTeam.com

Volver arriba Ir abajo

Re: [Tutorial] Maxmod, las librerías de audio de NDS.

Mensaje por Roberto258 el Dom 24 Feb 2013 - 20:24

ndsxl escribió:Entonces esto hace que cambiemos el sonido de la consola o como?,entiendo los pasos,pero,quiero saber para que es?,para hacer el que?

Esto es para añadir música o sonidos a tu homebrew (entiéndase homebrew como aplicación o juego creado por uno mismo) y controlarlos(reanudarlos, pararlos, subir el volumen, añadir efectos, etc...).
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1145
Localización : P'allá, p'allá, y luego to p'alante
Empleo/Ocio : Llevar el juego del asesino :P
Humor : Quarcástico
Opinión sobre NDS-Extra : Me Encanta
Inscripción : 28/08/2010
Reputación : 110
Puntos : 1416

Volver arriba Ir abajo

Re: [Tutorial] Maxmod, las librerías de audio de NDS.

Mensaje por ndsxl el Dom 24 Feb 2013 - 21:23

comprendo,gracias por solucionarmelo Smile +1
avatar
ndsxl
NDS-Mayor

Masculino
Cantidad de envíos : 250
Localización : En los más Oscuros Bosques y en los más profundos Mares...
Empleo/Ocio : rel=0&autoplay=1
Humor : Taciturno y oscuro...
Inscripción : 05/06/2010
Reputación : 8
Puntos : 450

http://www.HobTeam.com

Volver arriba Ir abajo

Re: [Tutorial] Maxmod, las librerías de audio de NDS.

Mensaje por Roberto258 el Jue 1 Ago 2013 - 19:41

¡Editado! (Es increíble que las imágenes se sigan viendo xD). Cuando hice este tutorial se me olvidó mencionar que podéis usar archivos .mod aparte de archivos .it

Os he dejado una página al final de tutorial para que descarguéis estos tipos de canciones.

¡Gracias por leer mi tuto!
avatar
Roberto258
NDS-Extrero

Masculino
Cantidad de envíos : 1145
Localización : P'allá, p'allá, y luego to p'alante
Empleo/Ocio : Llevar el juego del asesino :P
Humor : Quarcástico
Opinión sobre NDS-Extra : Me Encanta
Inscripción : 28/08/2010
Reputación : 110
Puntos : 1416

Volver arriba Ir abajo

Re: [Tutorial] Maxmod, las librerías de audio de NDS.

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.