Tutoriel à propos des sons avec MicroLua.
Cette page est directement extraite du tutoriel sur le son de la 3.0 prerelease.
Microlua 3 vous permet de jouer des sons de type "modules" et des effets sonores (
sound effects en anglais, abrégés
SFX).
- Modules supportés: MOD, XM, S3M, IT
- SFX supportés: WAV
Vous ne pouvez pas jouer ces fichiers directement avec
MicroLua, vous devez d'abord créer une banque de sons.
Pour ce faire, vous pouvez utiliser le
Soundbank Maker tool (outil de fabrication de banques de sons), inclus dans la distribution de
MicroLua 3. Mettez tous vos fichiers de musique que vous voulez utiliser dans le dossier
in
in
et lancez
et lancez
convert.bat
convert.bat
. Le programme créera deux fichiers:
. Le programme créera deux fichiers:
soundbank.bin
soundbank.bin
et
et
soundbank.h
soundbank.h
. Le premier est la banque de son: un fichier contenant tous les fichiers mods et sfx. Le second n'est pas utilisé par MicroLua mais peut vous aider à identifier vos mods et sfx grâce à leur ID.
Exemple: soundbank.h
{{{
#define SFX_AMBULANCE 0 // ID du SFX ambulance
#define SFX_BOOM 1 // ID du SFX Boom
#define MOD_KEYG_SUBTONAL 0 // ID du module Keyg Subtonal
#define MOD_PURPLE_MOTION_INSPIRATION 1 // ID du module Purple Motion
#define MOD_REZ_MONDAY 2 // ID du module Rez monday
#define MSL_NSONGS 3
#define MSL_NSAMPS 67
#define MSL_BANKSIZE 70
}}}
== Utiliser les banques de sons dans un script ==
Premièrement, vous devez charger la banque de données. La banque de données n'est jamais chargée entièrement en mémoire donc la banque de sons peut être de très grande taille.
Pour charger un fichier
. Le premier est la banque de son: un fichier contenant tous les fichiers mods et sfx. Le second n'est pas utilisé par
MicroLua mais peut vous aider à identifier vos mods et sfx grâce à leur ID.
Exemple: soundbank.h
#define SFX_AMBULANCE 0 // ID du SFX ambulance
#define SFX_BOOM 1 // ID du SFX Boom
#define MOD_KEYG_SUBTONAL 0 // ID du module Keyg Subtonal
#define MOD_PURPLE_MOTION_INSPIRATION 1 // ID du module Purple Motion
#define MOD_REZ_MONDAY 2 // ID du module Rez monday
#define MSL_NSONGS 3
#define MSL_NSAMPS 67
#define MSL_BANKSIZE 70
#define SFX_AMBULANCE 0 // ID du SFX ambulance
#define SFX_BOOM 1 // ID du SFX Boom
#define MOD_KEYG_SUBTONAL 0 // ID du module Keyg Subtonal
#define MOD_PURPLE_MOTION_INSPIRATION 1 // ID du module Purple Motion
#define MOD_REZ_MONDAY 2 // ID du module Rez monday
#define MSL_NSONGS 3
#define MSL_NSAMPS 67
#define MSL_BANKSIZE 70
}}}
Premièrement, vous devez charger la banque de données. La banque de données n'est jamais chargée entièrement en mémoire donc la banque de sons peut être de très grande taille.
Pour charger un fichier
soundbank.bin
soundbank.bin
(par exemple), il faut utiliser:
Sound.loadBank("soundbank.bin")
Sound.loadBank("soundbank.bin")
}}}
Maintenant, nous voulons jouer un module, par exemple le module
Purple Motion (dont l'ID est 1, voir plus haut).
Sound.loadMod(1) -- Charge le module en mémoire
Sound.startMod(1, PLAY_ONCE) -- Joue le module une fois. On peut utiliser PLAY_LOOP pour le jouer en boucle
Sound.loadMod(1) -- Charge le module en mémoire
Sound.startMod(1, PLAY_ONCE) -- Joue le module une fois. On peut utiliser PLAY_LOOP pour le jouer en boucle
}}}
Vous pouvez bien sûr arrêter, mettre en pause, modifier le volume... Regardez la documentation pour de plus amples informations.
Maintenant, à la fin de notre script, il faut décharger le module de la mémoire avec:
Sound.unloadMod(1)
Sound.unloadMod(1)
}}}
Jouer un son court (SFX) est un peu différent. Premièrement nous avons besoin de charger le son en mémoire. Nous voulons jouer le son
Boom (ID=1):
Sound.loadSFX(1) -- Voir plus haut encore une fois pour l'ID
Sound.loadSFX(1) -- Voir plus haut encore une fois pour l'ID
}}}
Maintenant, nous pouvons le jouer:
handle = Sound.startSFX(1) -- Joue le son et retourne une référence vers ce son
handle = Sound.startSFX(1) -- Joue le son et retourne une référence vers ce son
}}}
Cette référence vous permet de faire quelques effets sur le son comme changer le volume. Regardez la documentation pour plus d'exemples et de détails.
Et pour le décharger de la mémoire à la fin du script:
Sound.unloadSFX(1)
Sound.unloadSFX(1)
}}}
Finalement, n'oubliez pas de décharger la banque de sons de la mémoire:
Sound.unloadBank()
Sound.unloadBank()
}}}
Vous pouvez maintenant utiliser une autre banque de sons!