Bonjour à tous, ce petit tuto va vous apprendre à utiliser le nouvel onglet
Audio qui a été instauré dans la nouvelle version d'
AGS. Cet onglet est assez simple, mais surtout plutôt pratique. Tout d'abord, parlons des disponibilités et des limites audios :
1) Formats disponibles :AGS vous autorise à importer un large choix d'extensions audio :
- .ogg ;
- .wav (non compressé) ;
- .mp3 ;
- .MIDI ;
- .xod ;
- .xm ;
- .it ;
- .s3m ;
- .voc.
Attention vous êtes limités à un seul fichier audio .MIDI à la fois !Il est conseillé d'utiliser des fichiers
OGG Vorbis pour avoir un meilleur ratio qualité/poids et de plus c'est une extension entièrement gratuite (encore heureux
).
2) L'onglet Audio :Vous avez 3 dossiers :
Types,
Music et
Sounds :
A) Types :Les types vous permettent de définir les rôles de vos fichiers audio, 3 groupes sont déjà créés :
Ambient Sound,
Music et
Sound. Tous les fichiers audio de type
Ambient Sound auront la particularité de se répéter en boucle, comme des sons ambiants ; tandis que les type
Music ne pourront se jouer qu'un seul à la fois (un
channel seulement pour ne pas qu'il y ait plusieurs musiques simultanément, ce qui serait bizarre vous vous en doutez).
Vous pouvez ajouter vos propres
types audio, comme par exemple "Cinématique" ou encore "Bruitages" ; pour cela faites clic-droit sur
Types puis
New audio type. Une fois que vous créez un type, sélectionnez-le pour laisser apparaître les propriétés :
Vous avez 6 cellules dont 4 paramétrables. D'abord les 2 qui servent à rien :
ScriptID et
TypeID, leur présence permet uniquement de vous indiquer les noms des types, ici le
ScriptID de mon type
Cinematique est
eAudioTypeCinematique et son
ID est 4, un petit code pour les curieux s'impose :
- Spoiler:
- Code:
-
if(aCSIntro.Type == eAudioTypeCinematique) // Si la musique de CutScene d'intro est de type Cinematique ?
{
aCSIntro.Play(eAudioPriorityLow); // Alors on la joue en faible priorité
}
On peut très bien utiliser l'ID, rien ne change :
- Code:
-
if(aCSIntro.Type == 4) // eAudioTypeCinematique = 4
{
aCSIntro.Play(eAudioPriorityLow);
}
Le seul intérêt d'employer le
ScriptID est lorsque l'on veut faire des boucles.
Crossfade tracks : Quand le quota de canaux disponibles est atteint pour ce type audio, la prochaine piste appelée remplacera la dernière en cours.
MaxChannels : Vous permet de limiter le nombres simultané de pistes dans ce type audio précis, par exemple il ne peut y avoir qu'une seul piste pour les musiques, mais un nombre illimité de canaux pour les sons (auquel cas il faut mettre 0 dans la cellule).
Name : Vous permet de renommer le type.
VolumeReductionWhileSpeechPlaying : Cette propriété est assez intéressante, elle permet de réduire en pourcentage les pistes quand des speeches (donc lors d'un dialogue) sont lancés. Cela permet notamment au joueur de bien entendre les doublages aux dépends de la musique par exemple. Si vous ne voulez pas que les pistes soient réduites, mettez 0%.
3) Importer des fichiers audio :Voici le plus important du cours tout de même, pour importer des fichiers audio vous devez faire clic-droit sur l'onglet
Audio ou l'un de ses dossiers pour directement les ranger :
Music,
Sounds ou ceux que vous aurez créés, puis
Add audio file(s)... :
Sélectionnez votre ou vos fichiers audio sur votre disque dur puis cliquez sur
Ouvrir.
Votre fichier est importé et un dossier
AudioCache s'est créé dans le dossier de votre jeu. Il permettra à
AGS de générer les fichiers audio dans le dossier
Compiled une fois que vous aurez créer l'
.EXE du jeu.
Dans
AGS, votre piste figure sois dans l'onglet
Audio, ou dans le dossier que vous aviez choisi. Ça dépend en gros de l'endroit où vous avez importé le fichier.
Un lecteur vous permet notamment d'écouter votre piste, pour vérifier si c'est bien celle-ci, et surtout pour vous prouver que ça marche ; je sais pas si vous aussi vous en avez eu des problèmes avec les fichiers multimédias, en tout cas moi ça marchait rarement et je savais jamais si c'était à cause du format ou de la programmation...
Bref maintenant plus de soucis
4) Configuration d'une piste :Après l'importation, la
configuration ! Rassurez-vous, pas grand chose à faire, voire même rien du tout
!
Sélectionnez la piste fraîchement importée, voici les nouvelles propriétés :
BundlingType : InGameEXE permet d'insérer les données de la piste directement dans l'
.EXE du jeu pour que vous puissiez protéger vos créations ; tandis que
InSeperateVOX créera un fichier indépendant.
Cache File Name : Vous indique le nom de la piste dans le dossier cache.
DefaultPriority : Permet de contrôler la priorité de lancement de la piste, sauf si le script intervient.
DefaultRepeat : Permet de lancer la piste en boucle ou non.
DefaultVolume : Permet de contrôler le volume initial.
FileType : Vous informe du format de la piste.
Last Modified : Je vois pas l'intérêt d'expliquer ça...
ScriptName : Vous pouvez entrer le
script name de la piste, mettez un 'a' au début afin de bien distinguer vos éléments.
SourceFileName : Vous indique le dossier auquel vous avez importé le fichier.
Type : Vous permet d'indiquer de quel type de piste il s'agit.
5) Jouer une piste :Pour lancer une musique ou un son, il suffit tout juste d'utiliser la commande
Play() :
- Code:
-
aIntro.Play();
Vous pouvez également indiquer la priorité de la piste :
- Code:
-
aIntro.Play(eAudioPriorityVeryHigh);
Et pour arrêter la piste, utilisez la fonction
Stop() :
- Code:
-
aIntro.Stop();
6) Le petit programmeur en herbe :D'autre propriétés et classes sont à votre disposition.
AudioClip est le type de
aIntro par exemple.
Vous avez donc la classe
AudioChannel qui permet de créer le canal audio avec votre piste quand elle est en cours de lecture :
- Code:
-
AudioChannel *canal = aIntro.Play();
Vous pouvez alors savoir la durée en milliseconde de la piste avec la propriété
LengthMs, l'
ID du channel, savoir si la piste est en cours de lecture avec
IsPlaying.
Vous pouvez également influer le niveau sonore des enceintes avec la propriété
Panning, de -100 à 100 pour l'enceinte gauche ou l'enceinte droite, 0 permet d'avoir le même niveau.
PlayingClip vous permet de savoir si une piste particulière se trouve dans un canal, si le canal ne contient pas de piste, il retourne
null.
Position et
PositionMs pour connaître... la position en milliseconde de la piste.
Seek() permet d'aller directement à un certain passage de la piste, en milliseconde toujours.
SetRoomLocation() permet d'indiquer l'endroit d'où provient le son.
Volume permet de régler le volume, bien évidement et
Stop() de stopper la piste.