:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Développement Amateur :: > Tutoriels

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 18/09/2006, 23h25   #1
Bobby Sixkilla
Maître Chinpoko-extra-mon
 
Date d'inscription: 10/11/2005
Localisation: Palaiseau (Rive sud)
Messages: 6 465
Voir les codes amis Nintendo DS
Par défaut Krawall, les mods et les wavs...

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:

Code:
#include "modules.h"
Puis initialiser Krawall au début:

Code:
kragInit(KRAG_INIT_STEREO);
Puis spécifier les interruptions pour qu'il puisse fonctionner correctement:

Code:
ham_StartIntHandler(INT_TYPE_TIM1,&kradInterrupt);
ham_StartIntHandler(INT_TYPE_VBL,&vblFunc);
et dans votre fonction vbl:
Code:
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...

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.

Code:
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:

Code:
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...):

Code:
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, doc Krawall et exemples HAM
remerciements: Kyros et Lestat (pour le tracker modplug et d'autres infos interessantes)

Dernière modification par Bobby Sixkilla ; 18/09/2006 à 23h31.
Bobby Sixkilla est déconnecté   Réponse avec citation

Publicité

Vieux 03/04/2008, 13h52   #2
injection18
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Haute Normandie 76 LH
Messages: 693
Par défaut

Citation:
Envoyé par Bobby Sixkilla Voir le message
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).
savez vous ou je peux retrouver ces informations svp ?

qu'entends-tu par 4 ou 8 frames ? 4 ou 8 VBLANK ?
injection18 est déconnecté   Réponse avec citation
Vieux 03/04/2008, 14h56   #3
Dr.Vince
Administrateur
 
Date d'inscription: 10/11/2005
Messages: 4 963
Voir les codes amis Nintendo DS Voir les codes amis Wii
Par défaut

Krawall c'est assez merdique, la qualité des sons est vraiment mauvaise

je te conseille plus le lecteur ADCPM de Nrx
__________________
Projets Abandonnés: [Arcomage Advance] [Puzznic] [PA Card Games] [Blob Runner]
Projet en cours: [Ne plus abandonner de projet...]
Dr.Vince est déconnecté   Réponse avec citation
Vieux 03/04/2008, 15h08   #4
Yodajr
Administrateur
 
Date d'inscription: 09/11/2005
Messages: 3 750
Par défaut

Dépend, si tu as une musique en s3m bien foutue, krawall la joue impec
Y'a soucis effectivement quand tu veux ajouter des sons en wav, car il faut les intégrer comme samples à un s3m, donc les descendre à 8KHz

Dans ce cas vince a bien raison, j'utilise depuis peu le lecteur ADPCM d'Nrx et même si la rom est plus grosse au final, ça vaut le coup

Il y a aussi ASS, qui permet les 2 (lire des modules et des wav bonne qualité)
Yodajr est déconnecté   Réponse avec citation
Vieux 03/04/2008, 15h18   #5
injection18
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Haute Normandie 76 LH
Messages: 693
Par défaut

ok merci pour vos conseils je vais peut etre abandonner krawall alors ....
injection18 est déconnecté   Réponse avec citation
Vieux 03/04/2008, 20h34   #6
Bobby Sixkilla
Maître Chinpoko-extra-mon
 
Date d'inscription: 10/11/2005
Localisation: Palaiseau (Rive sud)
Messages: 6 465
Voir les codes amis Nintendo DS
Par défaut

Perso, j'aime bien AAS. Je n'ai jamais testé l'outil de Nrx.
__________________
"Un pour l'argent, deux pour le spectacle et trois pour le cailloux" un putain d'énergumène
Bobby Sixkilla est déconnecté   Réponse avec citation
Vieux 03/04/2008, 20h45   #7
injection18
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Haute Normandie 76 LH
Messages: 693
Par défaut

finalement je me suis tourné vers le lecteur ADPCM de Nrx, c'est parfait pour ce que je veux faire et c'est tres simple d'utilisation (merci Nrx au passage )
injection18 est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Publicité



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h54.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #16 par l'association vBulletin francophone
Design par Ass-Itch, DJP et Dr.Vince