Dans ce tutoriel, vous apprendrez à créer de la musique procédurale en utilisant MetaSounds. Vous allez créer une musique de fond de manière procédurale pour votre jeu d'aventure.
MetaSounds est un système audio haute performance qui permet de générer des sources sonores à l'aide d'un système basé sur des nœuds, similaire au système de programmation visuelle Blueprint.
Avant de commencer
Assurez-vous de bien comprendre les sujets abordés dans la documentation
Principes de base des blueprints, par exemple, l'ajout et la connexion de nœuds.
Créer de la musique procédurale avec MetaSounds
Vous allez commencer par créer une ressource MetaSound. Procédez comme suit :
Accédez au navigateur de contenu, puis au dossier Contenu > AdventureGame > Artiste > Audio.
Dans le dossier Audio, créez un dossier appelé Musique.
Faites un clic droit dans le dossier Musique et sélectionnez Audio > Source du MetaSound.
Nommez cette ressource
MS_BGM, qui signifie MetaSound Background Music (musique de fond MetaSound).Ouvrez la ressource.
La ressource s'ouvre dans l'éditeur MetaSound. Dans la nouvelle fenêtre qui s'ouvre, le graphique comporte trois nœuds : Input, Output On Finished et Input Out Mono.
Le déclencheur Input est exécuté lors de la lecture de cette source audio. Un MetaSound commence toujours par un nœud Input.
Le déclencheur Output On Finished est exécuté pour arrêter la lecture de la source. Si vous interrompez l'audio à partir d'un autre emplacement, notamment un blueprint, il n'est pas nécessaire d'utiliser ce nœud pour arrêter la lecture de la source audio. Dans ce cas, vous utiliserez un blueprint pour démarrer et arrêter le son, de sorte que vous n'ayez pas à utiliser ce nœud.
Le nœud Output Out Mono représente la sortie audio finale du graphique MetaSound, qui achemine tous les signaux audio en amont vers une sortie mono (à canal unique). Tous les nœuds qui y sont reliés sont ainsi mixés et envoyés au moteur en tant que sortie du son.
Définir le tempo et le rythme musicaux
Commencez par créer les nœuds pour définir le tempo et le rythme de la musique. Procédez comme suit :
Faites glisser la broche du nœud Input et ajoutez un nœud Trigger Repeat.
Sur le nœud Trigger Repeat, faites glisser la broche Period et ajoutez un nœud BPM To Seconds. Définissez le paramètre Divisions de la note entière sur 16.
Sur le nœud BPM To Seconds, faites glisser la broche BPM et sélectionnez Promouvoir vers l'entrée du graphique.
Dans le panneau Membres en haut à gauche de l'écran, renommez le nœud Input de BPM en Note In.
Dans le panneau Détails, définissez la valeur par défaut du nœud Note In sur 60. Vous pouvez également modifier cette valeur en bas du nœud.
Faites glisser la broche RepeatOut du nœud Trigger Repeat et ajoutez un nouveau nœud Trigger Counter.
Sélectionnez le nœud Trigger Counter et définissez Réinitialiser le compteur sur 8.
Cette section détermine le tempo et le rythme. Vous pouvez éventuellement mettre en surbrillance les quatre nœuds que vous avez ajoutés, à savoir Trigger Counter, Trigger Repeat, BPM To Seconds et Input, puis appuyer sur C pour ajouter une boîte de commentaire contenant tous les nœuds. Nommez cette boîte Tempo et rythme.
Générer une mélodie
Vous allez ensuite créer la fonctionnalité qui génère la mélodie en utilisant le tempo et le rythme que vous avez définis. Procédez comme suit :
À partir du nœud Trigger Counter :
Faites glisser la broche On Trigger et ajoutez un nœud Random Get (Float:Array).
Faites glisser la broche On Reset du nœud Trigger Counter et reliez-la à la broche Reset du nœud Random Get.
Faites glisser la broche In Array du nœud Random Get et ajoutez un nœud Scale to Note Array.
Faites glisser la broche Scale Degrees du nœud Scale to Note Array, sélectionnez Promouvoir vers l'entrée du graphique et nommez-la Scale.
Faites glisser la broche Seed du nœud Random Get, puis ajoutez un nœud Random (Int).
Faites glisser la broche Next du nœud Random (Int), puis reliez-la à la broche On Reset du nœud Trigger Counter.
Cette section génère la mélodie. Ici aussi, vous pouvez mettre en surbrillance tous les nouveaux nœuds et ajouter une boîte de commentaire nommée Génération de mélodie.
Synthétiser la mélodie
Vous allez à présent façonner le son de cette mélodie en créant la synthèse, c'est-à-dire en convertissant les notes de mélodie générées en son audible. Procédez comme suit :
Faites glisser la broche Value du nœud Random Get, puis ajoutez un nœud Add (Float).
Sur le nœud Add, modifiez la valeur de la deuxième broche d'entrée de 0 à 48.
Faites glisser la broche Exec du nœud Add et ajoutez un nœud MIDI To Frequency (Float).
Faites glisser la broche Out Frequency du nœud MIDI To Frequency (Float) et ajoutez un nœud Sine.
Faites glisser la broche de sortie Audio du nœud Sine et ajoutez un nœud Add (Audio).
Ajoutez un autre nœud Sine et reliez-au à ce nœud Add. Faites glisser l'autre broche d'entrée du nœud Add, puis ajoutez un nœud Sine.
Sur le nouveau nœud Sine, faites glisser la broche Frequency et ajoutez un nœud MIDI To Frequency (Float).
Faites glisser la broche MIDI In du nœud MIDI To Frequency, puis ajoutez un nœud Add (Float).
Sur le nœud Add :
Reliez la première broche d'entrée au nœud Add, lui-même relié au premier nœud Sine.
Faites glisser la deuxième broche d'entrée et sélectionnez Promouvoir vers l'entrée du graphique. Nommez-la Detune.
Sélectionnez l'entrée Detune puis, dans le panneau Détails, définissez sa plage sur 0 et 12.
Dans le panneau Détails, définissez la valeur par défaut sur 12.
Vous avez maintenant synthétisé la mélodie devant être générée. Vous pouvez à nouveau ajouter une boîte de commentaire pour cette nouvelle section et la nommer Synthèse.
Façonner le son à l'aide d'une enveloppe
Vous allez maintenant ajouter une enveloppe pour déterminer l'évolution du son dans le temps, en contrôlant son début, sa durée et son fondu de sortie pour obtenir un résultat plus naturel.
Pour ajouter une enveloppe, procédez comme suit :
Accédez à la section de génération de mélodie que vous avez créée précédemment (si vous avez ajouté une boîte de commentaire, celle-ci doit s'appeler Génération de mélodie). À partir du nœud Random Get (Float:Array), faites glisser la broche On Next et ajoutez un nœud AD Envelope (Audio). Déplacez ce nouveau nœud après les deux nœuds Sine que vous avez ajoutés dans la section Synthèse.
Faites glisser la broche Out Envelope et ajoutez un nœud Multiply (Audio).
Faites glisser la deuxième broche d'entrée de ce nœud Multiply et reliez-la à la broche de sortie du nœud Add (Audio) auquel vous avez relié les deux nœuds Sine.
Sur le nœud AD Envelope (Audio), définissez le paramètre Temps de dégradation sur 0,2.
Faites glisser la broche de sortie du nœud Multiply (Audio) et reliez-la au nœud Output Out Mono qui se trouve déjà dans la source du MetaSound.
Appuyez maintenant sur le bouton Lecture de la barre d'outils située en haut de la fenêtre Source du MetaSound. La musique générée de manière procédure joue en continu.
Pour en savoir plus sur la création de musique procédurale dans l'Unreal Engine, consultez la page Creating Procedural Music with MetaSounds.
Jouer la musique dans le jeu avec des blueprints
Avant de poursuivre, vous allez créer un blueprint qui joue la musique de fond du niveau.
Étant donné que ce blueprint sera ajouté au niveau mais qu'il n'a pas de représentation visuelle, il est nécessaire d'ajouter un composant Panneau d'affichage au blueprint. Ce composant ajoute un sprite 2D qui le rend visible dans l'éditeur afin que vous puissiez le localiser lors de la modification de votre niveau, mais il ne sera pas visible dans le jeu.
Pour créer le blueprint de musique de fond, procédez comme suit :
Accédez au navigateur de contenu, puis au dossier Contenu > AdventureGame > Artiste > Audio > Musique.
Faites un clic droit et créez une nouvelle classe de blueprint dérivée de la classe parente Acteur. Nommez-la BP_BGM (BGM est l'acronyme anglais de Blueprint Background Music, qui signifie "musique de fond de blueprint").
Dans le panneau Composants, cliquez sur Ajouter et ajoutez un composant Panneau d'affichage. Dans le panneau Détails, vous constatez que le sprite est défini sur S_Actor par défaut. Vous pouvez modifier le sprite ou le laisser tel quel.
Accédez à l'onglet Graphique d'événements pour commencer à créer la fonctionnalité.
Faites glisser le nœud Event BeginPlay et ajoutez un nœud Branch.
Sur le nœud Branch, faites glisser la broche Condition et sélectionnez Promouvoir vers la variable. Nommez cette variable Active. Cette variable sera utilisée pour déterminer si cette source audio est active ou non.
Dans la liste Variables du panneau My Blueprints, cliquez sur l'icône d'œil en regard de la variable Active ; une icône d'œil ouvert s'affiche, indiquant que la variable est publique et modifiable dans l'éditeur de niveau.
Compilez le blueprint et utilisez le panneau Détails pour vous assurer que la valeur par défaut de la variable Active est définie sur true (activée).
Faites glisser la broche True du nœud Branch, puis ajoutez un nœud Play Sound 2D.
Sur le nœud Play Sound 2D, utilisez le menu déroulant et définissez la broche Sound sur MS_BGM.
Dans le nœud Play Sound 2D, cliquez sur la flèche vers le bas pour développer les options du nœud. Faites glisser la broche Volume Multiplier et sélectionnez Promouvoir vers la variable.
Cliquez sur l'icône d'œil de la variable pour la rendre publique et modifiable, compilez le blueprint, et définissez sa valeur par défaut sur 0,5.
Enregistrez et compilez votre blueprint.
La partie "2D" du nœud Play Sound 2D indique que le son sera joué indépendamment de la position du joueur dans le niveau. En d'autres termes, il n'est pas spatialisé dans l'espace 3D. La distance et la direction n'ont donc aucune incidence sur la façon dont le joueur l'entend.
Tester votre musique dans le jeu
Vous pouvez maintenant revenir à l'éditeur de niveau et ajouter le blueprint BP_BGM dans votre niveau.
Sélectionnez l'acteur BP_BGM dans le niveau puis, dans le panneau Détails, assurez-vous que les deux variables que vous avez ajoutées sont correctement configurées : la variable Active doit être activée et la variable Multiplicateur de volume doit être définie sur 0,5.
Vous pouvez tester différentes valeurs pour le multiplicateur de volume pour savoir celles qui fonctionnent le mieux pour votre projet. Étant donné qu'il s'agit de la musique de fond, il est conseillé de régler son volume à un niveau moins élevé afin qu'elle reste discrète.
Maintenant, jouez au jeu. Vous devriez entendre la musique de fond que vous avez créée.
Pour continuer
Dans le prochain module, vous apprendrez à ajouter des effets sonores dynamiques de bruits de pas à votre personnage joueur, qui diffèrent en fonction du type de sol sur lequel le personnage se déplace.