Sound Tutorial

Tutoriel à propos des sons avec MicroLua.

Introduction

Cette page est directement extraite du tutoriel sur le son de la 3.0 prerelease.

Comment jouer des sons

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

Banques de sons

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 inin et lancez et lancez convert.batconvert.bat. Le programme créera deux fichiers: . Le programme créera deux fichiers: soundbank.binsoundbank.bin et et soundbank.hsoundbank.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 }}}

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 soundbank.binsoundbank.bin (par exemple), il faut utiliser:
Sound.loadBank("soundbank.bin")
Sound.loadBank("soundbank.bin") }}}

Modules

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) }}}

Sons courts (effets spéciaux)

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) }}}

Décharger la banque de sons

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!