Bobby Sixkilla
19/09/2006, 00h25
Krawall, Les Mods Et Les Wavs...
Auteur : Greeeg
Vous voulez de la musique et du son dans votre démo ou votre jeu ? Voici le topic idéal pour vous !
(toujours pas de capture d'écran... ça viendra)
Sommaire:
I. Avant de coder
1.1) C'est quoi un module ?
1.2) C'est quoi Krawall ?
1.3) Convertir un mod en .s3m
1.4) Convertir un wav en .s3m
II. Maintenant il est temps de coder
2.1) Jouer un mod en musique de fond
2.2) Jouer un ou plusieurs wav
A venir:
III. Exemple de code complet...
I. Avant de coder
1.1) C'est quoi un module ?
Les modules (.mod, .xm, .s3m, .it...), sont des fichiers musicaux qui reprennent le principe des piste des midi (.mid) mais qui contiennent en plus des samples (réalisés par exemple à partir de .wav), ce qui permet d'obtenir une musique plus riche et variée pour une taille réduite. La tonalité de ces samples peut être d'ailleurs modifiée.
Ce format a fait son apparition sur les Amiga. Malgré la popularisation de format de compression du type .mp3, il subsite encore dans le monde du PC grace à une scène spécifique originale et plutôt axée techno...
On peut créer soi même ses modules grace à des logiciel appelés "tracker", ou en trouver sur le net si la musique (la musique c'est pas le truc de tout le monde).
Quand on parle de module, on utilise le raccourci "mod", à ne pas confondre avec le format .mod qui est un type de mod au même titre que le .s3m, le .xm et le .it (vous suivez ?)...
1.2) C'est quoi Krawall ?
Site officiel : http://mind.riot.org/krawall/
Krawall est une librairie couplée à un convertisseur qui permet d'insérer des modules de type .s3m et .xm dans un projet GBA... Pour ce tutorial je me concentrerai sur le .s3m, le .xm jouissant de beaucoup moins de possibilité dans Krawall...
Les fichiers .s3m sont relativement peu répandus sur le net, mais heureusement certains trackers permettent d'en créer soit même ou à partir d'autres mod.
Le plus facile d'utilisation est sans doute Modplug Tracker (modplug.com) que je vous conseille de télécharger si vous voulez continuer ce tutorial (je vous prend par la gorge là...).
1.3) Convertir un mod en .s3m
Utilité: Pour jouer de la musique de fond, des intros, des jingles musicaux...
- Tout simplement ouvrir un module déja existant: File>Open
- Sur l'onglet [General] de la fenêtre principale, cliquez sur [Change] (juste à coté de Song Type) et sélectionnez .s3m.
- Cliquez sur OK et la conversion se fait... Vous risquez d'avoir des messages d'erreurs selon le type de fichier mod source... réécouter donc si la conversion n'a pas trop dégradé la chanson...
1.4) Convertir un wav en .s3m
Utilité: Pour ajouter des effets sonores au jeu, des voix digitalisées...
- Tout simplement créer un module: New>Open
- Cliquer sur l'onglet [sample] et importer un wav. (On peut aussi ouvrir directement un wav grace à New>Open)
- Comme le sample doit faire 8363 Hz, il faut ruser un peu pour convertir (une facon plus traditionnelle foire d'après plusieurs post dans les forums de HAM). Il faut le convertir en .mod, fermer ce .mod (si on ne ferme pas il va rester à l'ancien échantillonnage), reouvrir le .mod.
- Convertir en s3m...
Si votre projet contient plusieurs sons, il faut tous les mettre dans le même .s3m plutot que de faire un s3m par wav... Pour cela, il faut cliquer sur l'onglet [sample] et importer plusieurs wav... Assurer vous qu'il soit en 8363 Hz (sinon refaites la ruse en passant par un .mod intermédiaire...) et sauver le s3m.
II. Maintenant il est temps de coder
2.1) Jouer un mod en musique de fond
Dans votre code:
Il faut d'abord inclure le fichier module.h:
#include "modules.h"
Puis initialiser Krawall au début:
kragInit(KRAG_INIT_STEREO);
Puis spécifier les interruptions pour qu'il puisse fonctionner correctement:
ham_StartIntHandler(INT_TYPE_TIM1,&kradInterrupt);
ham_StartIntHandler(INT_TYPE_VBL,&vblFunc);
et dans votre fonction vbl:
void vblFunc(){
kramWorker();
}
Pour les non utilisateur de HAM, il faut utiliser kradInterrupt(); et l'associer à un timer qui rafraichit toutes les 4 ou 8 frames (par exemple voir la fonction VBL dans les tutos Afdac de Napo7).
Puis enfin lancer le morceau ou vous voulez dans votre code...
krapPlay(&mod_module1,KRAP_MODE_LOOP,1);
- KRAP_LOOP_MODE signifie que le module sera joué en boucle... (sinon utilisez KRAP_MODE_JINGLE ou KRAP_MODE_SONG, mais je sais pas encore la différence entre ces 2 là)
Si votre musique est en boucle krapStop () l'arrêtra, krapPause() la mettra en pause et krapUnpause() la reprendra.
Dans le makefile:
Il faut modifier le make file pour spécifier que vous utilisez Krawall, si il est enregistré (dans la plupart des cas, non) et quel module vous importez.
USE_KRAWALL=yes
KRAWALL_IS_REGISTERED=no
KRAWALL_FILES= module1.s3m module2.s3m //(attention pas de virgule !)
2.2) Jouer un ou plusieurs wav
Quand il va compiler, Krawall va mettre dans un tableau tous les samples de tous les .s3m dans l'ordre du makefile. Par exemple si vous avez une musique de fond background.s3m qui contient 6 instruments( donc 6 samples) et un sound.s3m contenant votre son à activer (et que vous les mettez dans cet ordre dans le makefile) , pour l'appeller vous insererez le code suivant:
kramPlay(samples[ 6 ], TRUE, 0);
- dans le tableau sample il s'agit de la 7e case, donc "6" car le C commence à zero
- TRUE signifie qu'il s'agit d'un sfx c'est à dire un effet sonore.
- la 3e valeur dans la fonction est un zero, si on met autre chose ça marche aussi, j'ai pastrop compris ce que c'est mais bon ça marche !
Si vous savez pas du tout quel est le numéro de sample de votre sons, ou si vous avez plein de sons partout... faites comme moi (c'est comme ca que j'ai découvert comment ça marchait...):
x=0;
if(F_CTRLINPUT_A_PRESSED && A_OK){
A_OK=0;
x++;
kramPlay(samples[ x ], TRUE, 0);
}
if(!F_CTRLINPUT_A_PRESSED){
A_OK=1;);
}
Et notez le nombre de fois que vous avez appuyé sur A pour entendre le bon sample et vous avez la position du tableau (moins 1 car en C on commence à zero, oui je sais je me répète...). Les faibles en calcul mental afficheront ce nombre à l'écran avec des tiles textes ou la fonction texte si vous utilisez Ham...
Voilà le minimum vital pour utiliser Krawall. N'hésitez pas à consulter les docs de cet excellent soft car il a énormement de possibilité (volumes, fades, fréquences...). Un exemple de HAM vous montrera comment jouer des musiques de fond (si vraiment vous avez rien compris...).
____________________________
sources: HAM Forum (http://www.ngine.de/site/modules.php?name=Forums), doc Krawall et exemples HAM
remerciements: Kyros et Lestat (pour le tracker modplug et d'autres infos interessantes)
Auteur : Greeeg
Vous voulez de la musique et du son dans votre démo ou votre jeu ? Voici le topic idéal pour vous !
(toujours pas de capture d'écran... ça viendra)
Sommaire:
I. Avant de coder
1.1) C'est quoi un module ?
1.2) C'est quoi Krawall ?
1.3) Convertir un mod en .s3m
1.4) Convertir un wav en .s3m
II. Maintenant il est temps de coder
2.1) Jouer un mod en musique de fond
2.2) Jouer un ou plusieurs wav
A venir:
III. Exemple de code complet...
I. Avant de coder
1.1) C'est quoi un module ?
Les modules (.mod, .xm, .s3m, .it...), sont des fichiers musicaux qui reprennent le principe des piste des midi (.mid) mais qui contiennent en plus des samples (réalisés par exemple à partir de .wav), ce qui permet d'obtenir une musique plus riche et variée pour une taille réduite. La tonalité de ces samples peut être d'ailleurs modifiée.
Ce format a fait son apparition sur les Amiga. Malgré la popularisation de format de compression du type .mp3, il subsite encore dans le monde du PC grace à une scène spécifique originale et plutôt axée techno...
On peut créer soi même ses modules grace à des logiciel appelés "tracker", ou en trouver sur le net si la musique (la musique c'est pas le truc de tout le monde).
Quand on parle de module, on utilise le raccourci "mod", à ne pas confondre avec le format .mod qui est un type de mod au même titre que le .s3m, le .xm et le .it (vous suivez ?)...
1.2) C'est quoi Krawall ?
Site officiel : http://mind.riot.org/krawall/
Krawall est une librairie couplée à un convertisseur qui permet d'insérer des modules de type .s3m et .xm dans un projet GBA... Pour ce tutorial je me concentrerai sur le .s3m, le .xm jouissant de beaucoup moins de possibilité dans Krawall...
Les fichiers .s3m sont relativement peu répandus sur le net, mais heureusement certains trackers permettent d'en créer soit même ou à partir d'autres mod.
Le plus facile d'utilisation est sans doute Modplug Tracker (modplug.com) que je vous conseille de télécharger si vous voulez continuer ce tutorial (je vous prend par la gorge là...).
1.3) Convertir un mod en .s3m
Utilité: Pour jouer de la musique de fond, des intros, des jingles musicaux...
- Tout simplement ouvrir un module déja existant: File>Open
- Sur l'onglet [General] de la fenêtre principale, cliquez sur [Change] (juste à coté de Song Type) et sélectionnez .s3m.
- Cliquez sur OK et la conversion se fait... Vous risquez d'avoir des messages d'erreurs selon le type de fichier mod source... réécouter donc si la conversion n'a pas trop dégradé la chanson...
1.4) Convertir un wav en .s3m
Utilité: Pour ajouter des effets sonores au jeu, des voix digitalisées...
- Tout simplement créer un module: New>Open
- Cliquer sur l'onglet [sample] et importer un wav. (On peut aussi ouvrir directement un wav grace à New>Open)
- Comme le sample doit faire 8363 Hz, il faut ruser un peu pour convertir (une facon plus traditionnelle foire d'après plusieurs post dans les forums de HAM). Il faut le convertir en .mod, fermer ce .mod (si on ne ferme pas il va rester à l'ancien échantillonnage), reouvrir le .mod.
- Convertir en s3m...
Si votre projet contient plusieurs sons, il faut tous les mettre dans le même .s3m plutot que de faire un s3m par wav... Pour cela, il faut cliquer sur l'onglet [sample] et importer plusieurs wav... Assurer vous qu'il soit en 8363 Hz (sinon refaites la ruse en passant par un .mod intermédiaire...) et sauver le s3m.
II. Maintenant il est temps de coder
2.1) Jouer un mod en musique de fond
Dans votre code:
Il faut d'abord inclure le fichier module.h:
#include "modules.h"
Puis initialiser Krawall au début:
kragInit(KRAG_INIT_STEREO);
Puis spécifier les interruptions pour qu'il puisse fonctionner correctement:
ham_StartIntHandler(INT_TYPE_TIM1,&kradInterrupt);
ham_StartIntHandler(INT_TYPE_VBL,&vblFunc);
et dans votre fonction vbl:
void vblFunc(){
kramWorker();
}
Pour les non utilisateur de HAM, il faut utiliser kradInterrupt(); et l'associer à un timer qui rafraichit toutes les 4 ou 8 frames (par exemple voir la fonction VBL dans les tutos Afdac de Napo7).
Puis enfin lancer le morceau ou vous voulez dans votre code...
krapPlay(&mod_module1,KRAP_MODE_LOOP,1);
- KRAP_LOOP_MODE signifie que le module sera joué en boucle... (sinon utilisez KRAP_MODE_JINGLE ou KRAP_MODE_SONG, mais je sais pas encore la différence entre ces 2 là)
Si votre musique est en boucle krapStop () l'arrêtra, krapPause() la mettra en pause et krapUnpause() la reprendra.
Dans le makefile:
Il faut modifier le make file pour spécifier que vous utilisez Krawall, si il est enregistré (dans la plupart des cas, non) et quel module vous importez.
USE_KRAWALL=yes
KRAWALL_IS_REGISTERED=no
KRAWALL_FILES= module1.s3m module2.s3m //(attention pas de virgule !)
2.2) Jouer un ou plusieurs wav
Quand il va compiler, Krawall va mettre dans un tableau tous les samples de tous les .s3m dans l'ordre du makefile. Par exemple si vous avez une musique de fond background.s3m qui contient 6 instruments( donc 6 samples) et un sound.s3m contenant votre son à activer (et que vous les mettez dans cet ordre dans le makefile) , pour l'appeller vous insererez le code suivant:
kramPlay(samples[ 6 ], TRUE, 0);
- dans le tableau sample il s'agit de la 7e case, donc "6" car le C commence à zero
- TRUE signifie qu'il s'agit d'un sfx c'est à dire un effet sonore.
- la 3e valeur dans la fonction est un zero, si on met autre chose ça marche aussi, j'ai pastrop compris ce que c'est mais bon ça marche !
Si vous savez pas du tout quel est le numéro de sample de votre sons, ou si vous avez plein de sons partout... faites comme moi (c'est comme ca que j'ai découvert comment ça marchait...):
x=0;
if(F_CTRLINPUT_A_PRESSED && A_OK){
A_OK=0;
x++;
kramPlay(samples[ x ], TRUE, 0);
}
if(!F_CTRLINPUT_A_PRESSED){
A_OK=1;);
}
Et notez le nombre de fois que vous avez appuyé sur A pour entendre le bon sample et vous avez la position du tableau (moins 1 car en C on commence à zero, oui je sais je me répète...). Les faibles en calcul mental afficheront ce nombre à l'écran avec des tiles textes ou la fonction texte si vous utilisez Ham...
Voilà le minimum vital pour utiliser Krawall. N'hésitez pas à consulter les docs de cet excellent soft car il a énormement de possibilité (volumes, fades, fréquences...). Un exemple de HAM vous montrera comment jouer des musiques de fond (si vraiment vous avez rien compris...).
____________________________
sources: HAM Forum (http://www.ngine.de/site/modules.php?name=Forums), doc Krawall et exemples HAM
remerciements: Kyros et Lestat (pour le tracker modplug et d'autres infos interessantes)