Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[TUTORIAL] Musique de romance

Répondre
Avatar du membre
Akadis
Adepte de Grondemarteau
Araignée éclipsante
Messages : 1224
Enregistré le : lun. 28 avr. 2003, 10:58
Localisation : Bordeaux
Contact :
Statut : Hors ligne

[TUTORIAL] Musique de romance

.

Message par Akadis »

Pour comprendre ce tutorial il est nécessaire de connaitre un peu les scripts et d'utiliser le tp2 pour compiler tous ses scripts. Donc de savoir ce qu'est un fichier .baf, ce qu'est un fichier .bcs et de connaitre leur lien.

Introduction
Pour commencer il faut savoir qu'il n'y a que trois sortes de musique dans BG2 : les musiques d'ambiance, de combat et de romance (le reste sont des sons qui ne sont pas gérés de la même manière).
Elles sont composées d’un fichier .mus et de fichiers .acm. Le fichier mus se trouve dans le dossier music et les fichiers acm dans un sous dossier portant le même nom que le fichier mus. Enfin ces musiques sont référencées par un numéro dans le fichier songlist.2da.
La complexité des musiques est dans l’ordre croissant : romance, ambiance et combat. Ici, il ne sera question que des musiques de romance.
Il existe différentes méthodes pour installer une musique, celle qui est exposée ici est la plus lente mais la plus compacte en terme de taille de fichiers tout en étant relativement fidèle à la technique utilisée dans le jeu original pour les personnages romançables.
Pour ce tutorial l’exemple qui sera pris sera celui du mini-mod écrit pour l’occasion : Deecy-Music. Cliquez sur ce lien pour le télécharger

I - Choix et encodage de la musique
  • Il faut choisir un musique ou un extrait de musique qui fasse environ 60 secondes.
  • Il faut ensuite doubler sa vitesse.
  • Enfin l’encoder en ogg (codec comparable au mp3 mais qui a l’avantage d’être ouvert, libre et dégagé de tout brevet).
Toutes ces manipulations peuvent être faites avec le logiciel gratuit Audacity.Cliquez sur ce lien pour le télécharger sur la page officielle
Il faut choisir un nom de 7 caractères maximum (préfixe éventuel inclus) pour la musique. Exemple : E_DeMus.ogg (E_ est le préfixe, De signifie Deecy, Mus est pour musique).
L’objet de ce tutorial n’étant pas Audacity, voici brièvement la fonction permettant de :
  1. Couper éventuellement la musique afin qu’elle fasse 60 secondes. On peut soit sélectionner les parties à enlever puis faire Edition/Effacer, soit sélectionner le morceau à garder et faire Edition>Ne garder que la sélection.
  2. Si le morceau choisi est au milieu d’une piste originale, on peut utiliser les fonctions Effets>Fondre en ouverture et Effets>Fondre en fermeture afin d’augmenter et diminuer progressivement le volume en début et en fin du morceau. Il faut sélectionner la zone concernée avant d’appliquer l’effet.
  3. Doubler la vitesseEdition>Sélectionner>Tout sélectionner puis, Effet>changer la vitesse entrer 100.00 en pourcentage de modification puis cliquer sur OK.
  4. Encoder en oggFichier>Exporter comme Ogg Vorbis sous le nom choisi, suivi du caractère A majuscule. Exemple : E_DeMusA.ogg

II – Insertion de la musique dans la base du jeu
  • Il faut rajouter la ligne de code suivante dans le script à l'endroit où l'on veut lancer la musique :
    PlaySong(991274)
    où 991274 est un nombre de votre choix de préférence à 6 chiffres et commençant par 99.
  • Ensuite, il faut écrire le fichier mus, c'est un simple fichier texte qui comporte les 3 lignes suivantes :
[INDENT]
E_DeMus
1
A @TAG END
La ligne 1 doit être le nom choisi pour la musique et les lignes 2 et 3 restent les mêmes. Il faut l'enregistrer sous le nom choisi, suivi de l'extension .mus. Exemple : E_DeMus.mus[/INDENT]
  • Dans le fichier tp2 il faut ajouter les lignes suivantes
    // Création de dossier de la musique
    MKDIR ~music/E_DeMus~
    ADD_MUSIC ~E_DeMus~ ~Deecy/E_DeMus.mus~

    COMPILE ~Deecy/E_DeeSrc.baf~
    COPY ~override/E_DeeSrc.bcs~ ~Deecy/E_Deecy.bcs~

    COPY ~Deecy/E_Deecy.bcs~ ~override~
    REPLACE_TEXTUALLY 991274 ~%E_DeMus%~
    Dans tout ce code il faut remplacer :
  • E_DeMus par le nom de la musique
  • Deecy par le nom du dossier du mod
  • E_DeeSrc par le nom du fichier source du script
  • E_Deecy par le nom du fichier compilé du script, tel qu'il est décrit dans le fichier cre du personnage.
NB : Pour le script, il est impératif que le nom du fichier source soit différent du nom du fichier compilé.[INDENT]MKDIR ~music/E_DeMus~ crée le dossier dans lequel sera copié le fichier acm.

ADD_MUSIC ~E_DeMus~ ~Deecy/E_DeMus.mus~ ajoute la musique dans le fichier songlist.2da et lui affecte un numéro de référence.

COMPILE ~Deecy/E_DeeSrc.baf~ compilation du fichier source du script
COPY ~override/E_DeeSrc.bcs~ ~Deecy/E_Deecy.bcs~ copie du script compilé vers le dossier Deecy en le renommant E_Deecy

COPY ~Deecy/E_Deecy.bcs~ ~override~
REPLACE_TEXTUALLY 991274 ~%E_DeMus%~ copie le script compilé en remplaçant 991274 par le numéro de référence de la musique dans le songlist.2da.

[/INDENT]IIICopie et décodage des fichiers
Il faut maintenant décompresser les fichiers ogg en fichiers acm. Il n'existe pas (à ma connaissance) de logiciel, en ligne de commande, qui le fasse directement. Il faut donc en utiliser deux successivement : un décodeur ogg-->wav et un encodeur wav-->acm.
Pour le ogg-->wav, on peut utiliser le oggdec Cliquez sur ce lien pour accéder à son téléchargement
Pour le wav-->acm on peut utiliser le snd2acm qu'on peut trouver dans la rubrique Sound de cette page
Il faut ensuite placer les fichiers oggdec.exe et snd2acm.exe dans le dossier du mod.
Les actions de copie et de décompression ne sont pas directement lancées par le tp2 mais par un fichier de commande (aussi appelé batch) qui est appelé par le tp2. Il a l'extension .bat
Fichier install-mus.bat commenté, les lignes commençant par rem sont des commentaires :
@echo off

rem Affichage de "Install music"
echo Install music

rem Décodage du fichier musique de ogg->wav
Deecy\oggdec -w Deecy\E_DeMusA.wav Deecy\E_DeMusA.ogg

rem Encodage du wav->acm directement dans le répertoire approprié
Deecy\snd2acm -wav Deecy\E_DeMusA.wav music\E_DeMus\E_DeMusA.acm

rem Suppression des fichiers temporaires
del Deecy\E_DeMusA.wav

rem Affichage de "Music intalled"
echo Music intalled
Il faut remplacer
  • Deecy par le nom du dossier du mod
  • E_DeMus par le nom du fichier de la musique
  • E_DeMusA par le nom donné au fichier ogg
Le fichier tp2 appelle ce fichier de commande avec l'instruction :
AT_INTERACTIVE_EXIT ~Deecy/Install-mus.bat~
A la désinstallation du module, il faut supprimer le dossier créé dans music ainsi que ce qu'il contient. Là encore on utilise un fichier de commande.
Fichier uninstall-mus.bat commenté, les lignes commençant par rem sont des commentaires :
@echo off

rem Afficher "Uninstall music"
echo Uninstall music

rem Suppression du fichier
del music\E_DeMus\E_DeMusA.acm

rem Suppression du dossier E_DeMus
rd music\E_DeMus

rem Afficher "Music uninstalled"
echo Music uninstalled
Il faut remplacer :
  • E_DeMus par le nom du fichier de la musique
  • E_DeMusA par le nom donné au fichier ogg
Le fichier tp2 appelle ce fichier de commande avec l'instruction :
AT_INTERACTIVE_UNINSTALL ~Deecy/Uninstall-mus.bat~
Désolé pour toutes les fautes d'orthographe. J'attends vos commentaires et suggestions avec impatience.

EDIT
Les listings des fichiers install.bat et uninstall.bat ont été remplacé par le version simplifié proposé par Isaya dans le post #4 ci-dessous.
Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
Responsable de la maintenance du mod
Kim
Graoumf
Statut : Hors ligne
.

Message par Graoumf »

Quelles fautes d'orthographe ? :tongue:
Belle initiative en tout cas, et même si je ne suis pas modder, cela m'a paru très clair et très détaillé.
Avatar du membre
phoeunix
Goule
Messages : 471
Enregistré le : mer. 13 févr. 2008, 13:00
Localisation : Nice
Statut : Hors ligne
.

Message par phoeunix »

Merci pour ce tutorial qui servira certainement à pas mal de gens, moi le premier ;)

Je l'ai lu rapidement, il est clair et bien fait, tout baigne ! :)
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Excellente initiative. Il y a très peu de documents sur ce sujet. Et même la documentation de WeiDU ne dit rien sur ADD_MUSIC !

J'ai quelques suggestions de forme. Tu peux alléger de façon significative les fichiers bat. Par rapport à d'anciens mods, une version récente d'oggdec (celle qu'on obtient par le lien que tu as donné) permet d'indiquer le nom du fichier wav après décodage. De même on peut indiquer des chemins dans les noms de fichiers ce qui permet d'éviter toutes les étapes de copie et de suppression de fichiers. Au final, le fichier d'installation peut se résumer à ça :
@echo off

rem Affichage de "Install music"
echo Install music

rem Décodage du fichier musique de ogg->wav
Deecy\oggdec -w Deecy\E_DeMusA.wav Deecy\E_DeMusA.ogg

rem Encodage du wav->acm directement dans le répertoire approprié
Deecy\snd2acm -wav Deecy\E_DeMusA.wav music\E_DeMus\E_DeMusA.acm

rem Suppression des fichiers temporaires
del Deecy\E_DeMusA.wav

rem Affichage de "Music intalled"
echo Music intalled
Quant au fichier de désinstallation, le gain est moindre mais tu peux économiser les changements de répertoires
@echo off

rem Afficher "Uninstall music"
echo Uninstall music

rem Suppression du fichier
del music\E_DeMus\E_DeMusA.acm

rem Suppression du dossier E_DeMus
rd music\E_DeMus

rem Afficher "Music uninstalled"
echo Music uninstalled
Sur le fond, à savoir l'ajout d'une musique de romance, je voudrais apporter quelques précisions et proposer une alternative, basée sur ce tutorial.

Dans Baldur's Gate II, le nombre total de musique dans le jeu est de 100, dont 84 sont déjà utilisées. Cette limite s'établit à partir du fichier SONGLIST.2DA, auquel l'instruction ADD_MUSIC essaie d'ajouter la nouvelle musique. Depuis longtemps les moddeurs sont confrontés à un problème pour l'ajout de musique lorsqu'il y a déjà un grand nombre de mods installés ou lorsque des gros mods ont déjà squatté toutes les places disponibles. Avec BGT, c'est encore plus critique.
Les musiques définies dans un fichier mus ont de nombreux usages : les combats, les musiques de fond notamment. Le fichier mus fonctionne comme une sorte de playlist de fichiers acm et permet aussi d'indiquer de boucler à la fin.

Il existe une alternative pour les musiques de romance, pour lesquelles le bouclage n'est pas vraiment indispensable (à moins que le joueur ne fasse une pause pour réfléchir longuement aux différentes répliques du dialogue). Elle consiste à utiliser PlaySound au lieu de PlaySong. Cette méthode a plusieurs avantages :
  • elle permet d'utiliser un fichier wav et non un fichier acm
  • comme on n'ajoute pas de fichier mus, l'installation est plus simple
  • le fait de ne pas avoir besoin de convertir le fichier son au format ACM ouvre la porte à la création d'une version Mac du mod (il semble qu'il n'y ait pas d'outil de conversion pour Mac)
  • et, le meilleur pour la fin, on est certain que notre musique sera présente dans le jeu, quelle que soit la surcharge du fichier des musiques
Il semble que de nombreux mods utilisent cette méthode. Le tutorial cité prend l'exemple de Kelsey et j'ai aussi constaté qu'un tutoriel de création de PNJ utilisait cette solution.

Le principe consiste à réutiliser un numéro de musique non utilisé par le jeu mais que ADD_MUSIC n'utilise pas non plus. Le fichier SONGLIST.2DA commence ainsi :
2DA V1.0
****
Name RESOURCE
0 No_music ****
1 Area0011 MX0011.MUS
Concrètement, la musique numéro 0 n'est pas utilisé (la colonne RESOURCE ne désigne pas un fichier MUS). L'idée du tutorial dont j'ai indiqué le lien est d'utiliser la musique 0 comme moyen d'arrêter une musique en cours (celle de la zone par exemple) pour éviter qu'elle ne se déroule en parallèle de celle qu'on veut lancer avec la commande PlaySound. Il s'agit de créer un fichier MUS composé d'un blanc et qui s'arrête tout de suite (pas de boucle) et qui constitue ainsi une musique "vide". Il suffit alors, pour lancer sa propre musique, de lancer ce fichier musique, puis de lancer le son qui contient notre propre musique.
Dans le script, il faut donc indiquer, au lieu de PlaySong(991274) :
PlaySong(0)
PlaySound("E_DeMusA")
La première ligne lance la "musique" d'arrêt. La deuxième lance le fichier WAV contenant la musique du mod et qui doit se trouver pour cela dans le répertoire Override (ce qui obligera à modifier la procédure d'installation).

Pour mettre en place la musique "vide", il suffit de créer un fichier MUS, appelons-le VIDE.MUS, contenant :
Blank
1
A @TAG END
Le contenu est important et ne doit pas être modifié. Le sous-répertoire "Blank" (première ligne) du répertoire music contient un fichier "BlankA.acm" (le "A" sur la troisième ligne) qui génère le son blanc. END indique que la musique s'arrête juste après.

Pour modifier la ligne 0 du fichier SONGLIST.2DA, on remplacera le bloc
// Création de dossier de la musique
MKDIR ~music/E_DeMus~
ADD_MUSIC ~E_DeMus~ ~Deecy/E_DeMus.mus~

COMPILE ~Deecy/E_DeeSrc.baf~
COPY ~override/E_DeeSrc.bcs~ ~Deecy/E_Deecy.bcs~

COPY ~Deecy/E_Deecy.bcs~ ~override~
REPLACE_TEXTUALLY 991274 ~%E_DeMus%~
par celui-ci
// Copie du fichier musique, supposons qu'il soit dans le répertoire Deecy
COPY ~Deecy/VIDE.mus~ ~music~
COPY_EXISTING ~songlist.2da~ ~override~
SET_2DA_ENTRY 0 2 3 ~VIDE.MUS~

// Ne pas oublier le script (désormais c'est plus simple puisqu'on n'a pas à patcher le numéro de musique)
COMPILE ~Deecy/E_DeeSrc.baf~
Remarque : dans d'autres circonstances, cette pratique consistant à écraser une ligne du fichier 2DA par la notre serait à proscrire. En effet, si un autre mod a modifié cette ligne pour son propre usage, nous risquons d'empêcher son fonctionnement. En pratique, si tous les mods de romance modifient cette même ligne pour ajouter leur fichier MUS basé sur le même contenu, peu importe le nom du fichier, la musique 0 provoquera un arrêt de la musique en cours et c'est bien l'effet souhaité.

Pour finir, les fichiers d'installation et de désinstallation deviennent légèrement plus simples.
Installation
@echo off

rem Affichage de "Install music"
echo Install music

rem Décodage du fichier musique de ogg->wav
Deecy\oggdec -w override\E_DeMusA.wav Deecy\E_DeMusA.ogg

rem Affichage de "Music intalled"
echo Music intalled
Désinstallation
@echo off

rem Afficher "Uninstall music"
echo Uninstall music

rem Suppression du fichier
del override\E_DeMusA.wav

rem Afficher "Music uninstalled"
echo Music uninstalled
Il n'y a plus besoin d'inclure le programme snd2acm dans le mod.

Je précise que ces informations sont basées sur le tutorial cité et que je n'ai pas testé ce contenu via une installation. N'hésitez pas à me signaler les erreurs en cas de problème.
Avatar du membre
Akadis
Adepte de Grondemarteau
Araignée éclipsante
Messages : 1224
Enregistré le : lun. 28 avr. 2003, 10:58
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par Akadis »

Le composant pack du moddeur heureux de BG2FixPack installe une musique vide comme l'explique Isaya, donc pour les mods qui requièrent ce composant, il n'est pas vraiment utile de la réinstaller.
Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
Responsable de la maintenance du mod
Kim
Répondre

Retourner vers « Guides »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité