Le système de bus audio de Godot 4 est puissant, mais bas niveau : il gère le volume, les effets et le routage, pas la notion d'« état de jeu » ni les fondus enchaînés. Ce tutoriel construit cette couche à partir de zéro, à partir d'une partition exportée depuis Mowjera, pour aboutir à un autoload AudioManager réutilisable dans tous vos futurs projets.
Ce que vous aurez à la fin
Un singleton (autoload) qui expose une seule fonction — transition_to(state_name) — et gère le crossfade entre un nombre quelconque d'états musicaux en boucle, au sample près, sans aucune coupure audible.
Étape 1 : exporter une partition pour Godot
Depuis la page de détail d'une partition Mowjera, cliquez sur Get bundle. Le ZIP contient un dossier godot/ avec Mowjera.gd, et un dossier stems/ avec un fichier WAV par piste et par état :
Mowjera_MaPartition/
godot/
Mowjera.gd
stems/
Explore_melody.wav
Explore_bass.wav
Combat_melody.wav
Combat_bass.wav
...Étape 2 : importer l'audio avec le bouclage activé
Godot ne boucle pas les fichiers WAV par défaut. Pour chaque stem :
- Sélectionnez le fichier dans le dock FileSystem.
- Ouvrez l'onglet Import.
- Sous Loop Mode, choisissez Forward.
- Cliquez sur Reimport.
Oublier cette étape est la première cause d'un « clic » audible à chaque bouclage d'une piste censée boucler proprement.
Étape 3 : ajouter l'autoload
- Copiez
godot/Mowjera.gddans le dossierscripts/de votre projet. - Allez dans Project → Project Settings → Autoload.
- Ajoutez le script et nommez-le
AudioManager.
Étape 4 : déclencher les transitions depuis le code de gameplay
func _on_enemy_spotted():
AudioManager.transition_to("Combat")
func _on_area_cleared():
AudioManager.transition_to("Explore")
func _on_boss_defeated():
AudioManager.transition_to("Victory")L'autoload se charge de faire disparaître en fondu les nœuds AudioStreamPlayer de l'ancien état pendant que ceux du nouvel état montent en volume, le tout calé sur la prochaine mesure au tempo (BPM) de votre partition — exactement la même logique de crossfade que Mowjera prévisualise en temps réel dans l'éditeur en ligne.
Pièges spécifiques à Godot
- AudioStreamPlayer vs AudioStreamPlayer2D/3D : pour une musique de fond non positionnelle, utilisez le nœud
AudioStreamPlayerclassique, pas les variantes 2D/3D — celles-ci atténuent le son selon la distance, ce qui n'est pas ce que vous voulez pour une musique d'ambiance. - Routage des bus : dirigez tous les lecteurs musicaux vers un bus dédié « Music » (et non « Master »), afin que les joueurs puissent régler séparément le volume de la musique et des effets sonores dans le menu des options.
- Templates d'export : les fichiers WAV peuvent faire gonfler la taille de votre build final. Pour une version prête à shipper, envisagez de ré-exporter les stems en Ogg Vorbis (qualité 0,7) — l'importateur de Godot gère la conversion, et le bouclage continue de fonctionner correctement.
Tester le crossfade
Lancez votre scène, déclenchez un changement d'état, et écoutez au casque. Si vous entendez brièvement la mélodie « en double » avant que l'ancien état ne s'éteigne complètement, c'est normal — c'est le crossfade qui fait son travail. Si vous entendez une coupure nette ou un clic, vérifiez que les stems des deux états partagent exactement le même BPM et la même longueur de boucle (Mowjera le garantit automatiquement ; des stems retouchés à la main, non).
Parcourez les partitions adaptatives du marketplace Mowjera — chacune est livrée avec un bundle Godot prêt pour ce workflow.