Le plug-in Audio Modulation permet de contrôler dynamiquement les paramètres audio à virgule flottante, tels que le volume et le tangage, à partir des systèmes Component et Blueprint.
Le plug-in Audio Modulation est désactivé par défaut. Pour l'activer, procédez comme suit :
Sélectionnez Modifier > Plug-ins pour ouvrir le panneau Plug-in.
Utilisez la barre de recherche pour trouver le plug-in.
Cochez la case correspondante.
Redémarrez l'Unreal Editor.
Types de ressources
Cinq types de ressource différents offrent la fonctionnalité de modulation audio.
| Type de ressource | Description |
|---|---|
Paramètres qui fournissent le contexte sur la manière dont une valeur de modulation se normalise, s'affiche et se mélange avec d'autres valeurs. | |
Connecteurs qui référencent un paramètre de modulation. | |
Modulateurs permettant d'appliquer plusieurs valeurs de bus de contrôle à la fois. | |
Connecteurs-modulateurs hybrides qui remappent plusieurs valeurs de bus de contrôle en une seule valeur de sortie. | |
Connecteurs-modulateurs hybrides qui génèrent des valeurs au fil du temps. |
Vous pouvez utiliser ces ressources pour créer la base de votre pipeline de modulation avant de le connecter à une destination de modulation de point de terminaison.
Pour créer une ressource de modulation audio, procédez comme suit :
Dans le navigateur de contenu, cliquez sur le bouton Ajouter.
Sous Audio > Modulation, sélectionnez le type de ressource de votre choix.
Paramètres de modulation
Les paramètres de modulation fournissent le contexte sur la manière dont une valeur de modulation se normalise, s'affiche et se mélange avec d'autres valeurs.
Chaque paramètre de modulation possède les propriétés de base suivantes (en plus d'autres selon la classe) :
Valeur de paramètre par défaut : la valeur de modulation par défaut. Il s'agit d'une valeur de contournement qui doit être définie afin de ne pas modifier une entrée lorsqu'un modulateur référençant ce paramètre est mélangé avec un autre. Mathématiquement, la valeur doit être sélectionnée pour que la fonction de mixage soit effectivement réduite à une fonction d'identité lorsqu'elle est définie comme une entrée.
Nom d'affichage de l'unité : l'unité à afficher pour les références dans l'Unreal Editor. Ces informations sont destinées uniquement au développement, car elles sont supprimées des compilations empaquetées.
Plusieurs classes de paramètres de modulation intégrées prennent en charge divers cas d'utilisation, notamment le mixage de volume et la manipulation de fréquence.
Le plug-in Audio Modulation inclut des ressources de paramètres de modulation prêtes à l'emploi pour les paramètres les plus courants, tels que le volume et le tangage.
Pour les afficher dans le navigateur de contenu, procédez comme suit :
Cliquez sur le bouton Paramètres.
Activez Afficher le contenu du moteur et Afficher le contenu du plug-in.
Accédez à All/Engine/Plugins/Audio Modulation Content.
À propos des valeurs de modulation
Les valeurs de modulation sont converties en deux espaces de valeur :
Unité : la valeur en unités associée au paramètre de modulation. Par exemple, les décibels (dB) pour un paramètre Modulation de volume. Les valeurs d'unité sont mappées vers des valeurs normalisées.
Normalisé : valeur comprise dans une plage normalisée comprise entre 0,0 et 1.0 pour un passage et un mixage uniformes.
Les valeurs de modulation sont combinées lorsque plusieurs modulateurs sont reliés à une même destination de modulation. Leur combinaison dépend du paramètre de modulation associé. Voici quelques exemples de la gestion du mixage par certains types de paramètres de modulation intégrés :
Volume : les réductions de volume s'additionnent. Par exemple, si deux bus de contrôle ont respectivement des valeurs de -6 dB et -12 dB, le volume de la destination de modulation sera réglé sur -18 dB.
Fréquence du filtre passe-haut : la valeur maximale est sélectionnée. Par exemple, si deux bus de contrôle ont des valeurs de 1000 Hz et 500 Hz, la fréquence du filtre passe-haut de la destination de modulation est réglée sur 1000 Hz.
Fréquence du filtre passe-bas : la valeur minimale est sélectionnée. Par exemple, si deux bus de contrôle ont les valeurs 1000 Hz et 500 Hz, la fréquence du filtre passe-bas de la destination de modulation est réglée sur 500 Hz.
Créer des classes de paramètres de modulation personnalisées
Vous pouvez créer votre propre classe de paramètre de modulation en héritant de la classe de base USoundModulationParameter et en implémentant les fonctions suivantes :
GetMixFunction : fonction devant renvoyer une fonction qui mélange une valeur d'entrée et de sortie.
GetUnitConversionFunction : fonction devant renvoyer une fonction qui transforme une valeur en espace unitaire.
GetNormalizedConversionFunction : fonction devant renvoyer une fonction qui transforme une valeur en espace normalisé.
Pour plus d'informations, consultez la référence de l'API C++ pour la modulation audio.
Bus de contrôle
Les bus de contrôle sont des connecteurs qui référencent un paramètre de modulation. Ils peuvent être :
Utilisés par les mixages de bus de contrôle et les générateurs de modulation pour des opérations de modulation.
Référencés et remappés par des correctifs de paramètres.
En principe, il est recommandé de créer un bus de contrôle pour chaque catégorie de sons que vous souhaitez moduler. La catégorie peut être générale, comme les effets sonores (CB_SFX), ou spécifique, comme les sons d'attaque (CB_Attacks). Dans cet exemple, un son de coup d'épée pourrait inclure les deux bus de contrôle dans son pipeline de modulation.
Propriétés du bus de contrôle
| Propriété | Description |
|---|---|
Contourner | Si cette propriété est activée, le bus de contrôle envoie la valeur par défaut du paramètre à toutes les destinations de modulation associées. Le bus de contrôle reste actif dans tous les cas. |
Paramètre | Le paramètre de modulation à utiliser. La valeur par défaut du paramètre de modulation donné est utilisée comme valeur par défaut pour ce bus de contrôle. |
Remplacer l'adresse | Si cette option est activée, vous pouvez modifier la propriété Adresse. |
Adresse | Le nom de référence interne (utilisé par certaines fonctions de blueprint). Le nom de la ressource est utilisé par défaut, mais il peut être modifié en activant la propriété Remplacer l'adresse. |
Générateurs | Une matrice de générateurs de modulation pilotant le bus de manière algorithmique. |
Mixages de bus de contrôle
Les mixages de bus de contrôle sont des modulateurs qui permettent de :
Influencer plusieurs valeurs de bus de contrôle à la fois.
Moduler avec des bus de contrôle partagés par d'autres mixages de bus de contrôle.
Utiliser des profils de mixage pour tester et ajuster le son en temps réel.
Propriétés de mixage de bus de contrôle
| Propriété | Description |
|---|---|
Activer le mixage | [Bouton] Active le mixage à l'index de profil spécifié dans tous les mondes actifs. |
Désactiver tous les mixages | [Bouton] Désactive tous les mixages dans tous les mondes actifs. |
Désactiver le mixage | [Bouton] Désactive le mixage à l'index de profil spécifié dans tous les mondes actifs. |
Charger le mixage depuis le profil | [Bouton] Charge le mixage à l'index de profil indiqué. Cela remplace les paramètres présents dans le mixage. Les profils de mixage sont chargés depuis les fichiers |
Enregistrer le mixage dans le profil | [Bouton] Enregistre le mixage dans l'index de profil donné. Cela remplace les paramètres présents dans cet index. Les profils de mixage sont enregistrés dans les fichiers |
Mixage solo | [Bouton] Désactive tous les autres mixages et active le mixage à l'index de profil spécifié dans tous les mondes actifs. Tests dans l'éditeur uniquement. |
Index du profil | L'index (entier) du profil de mixage ciblé par les boutons de profil. Chaque profil de mixage est assorti d'une matrice de phases de modulation qui déterminent la manière dont les destinations de modulation connectées sont modulées. |
Étapes de mixage | Une matrice de références de bus de contrôle et d'informations de mixage associées. |
Étapes de mixage > Bus | Le bus de contrôle via lequel la valeur est envoyée. |
Étapes de mixage > Valeur | La valeur à envoyer via le bus de contrôle. La valeur peut être définie en unités ou directement sur la valeur normalisée. |
Étapes de mixage > Temps d'attaque | La durée (en secondes) entre la valeur par défaut du paramètre de modulation et la valeur donnée lorsque le mixage est activé. |
Étapes de mixage > Temps de libération | La durée (en secondes) entre la valeur donnée et la valeur par défaut du paramètre de modulation lorsque le mixage est désactivé. |
Durée | Lorsque la valeur est supérieure ou égale à 0, le mixage lance un chronomètre dès son activation. Lorsque le chronomètre atteint la valeur Durée définie, le mixage se désactive. |
Redéclencher lors de l'activation | Contrôle le comportement d'un mixage déjà activé. Si la propriété est réglée sur False, elle n'a aucun effet (hormis la réinitialisation du chronomètre Durée). Lorsqu'elle est réglée sur True, le mixage rétablit les valeurs par défaut de toutes les étapes et s'active, ce qui permet aux attaques de se déclencher à nouveau. Ce comportement est semblable au redéclenchement d'une enveloppe. |
Les boutons de profil de mixage disponibles dans le panneau Détails du mixage de bus de contrôle permettent d'ajuster et de tester votre mixage dans Play in Editor (PIE) en temps réel. Toutefois, l'implémentation finale du contrôle du mixage doit être effectuée dans Blueprint.
Les propriétés des mixages de bus de contrôle ont été mises à jour et certaines fonctions impliquant ces derniers disposent d'entrées pour les nouvelles variables Durée et Redéclenchement sur activation :
Correctifs de paramètres
Les correctifs de paramètres sont des connecteurs-modulateurs hybrides qui fonctionnent de deux manières principales :
Ils transforment une ou plusieurs valeurs de bus de contrôle en une seule valeur de sortie.
Vous pouvez les utiliser pour personnaliser les courbes de valeur des bus de contrôle, ce qui est utile pour remapper des valeurs et créer différents effets de fondu.
Affecter un correctif de paramètre avec plusieurs bus de contrôle à une destination de modulation revient à configurer chaque bus de contrôle vers la destination de modulation.
Propriétés des correctifs de paramètres
| Propriété | Description |
|---|---|
Contourner | Si cette option est activée, le correctif envoie la valeur par défaut du paramètre à toutes les destinations de modulation associées. Le correctif de paramètre reste actif dans tous les cas. |
Paramètre | Le paramètre de modulation détermine le mixage des bus de contrôle (dans la matrice Entrées. |
Entrées | Une matrice de références de bus de contrôle et d'informations de transformation associées. La sortie de chacune de ces entrées est mélangée à l'aide de la fonction de mixage du correctif de paramètre de modulation. En l'absence de bus de contrôle dans la matrice, le correctif envoie la valeur par défaut du paramètre à toutes les destinations de modulation associées |
Entrées > Échantilloner-et-maintenir | Si cette option est activée, la valeur du bus de contrôle est enregistrée lors de l'initialisation du correctif de paramètre et conservée pendant toute sa durée de vie. |
Entrées > Type de courbe | La courbe à appliquer lors du remappage des valeurs normalisées du bus de contrôle [0,0 - 1,0]. Parmi les options figurent :
|
Entrées > Bus | Le bus de contrôle d'entrée. |
Générateurs de modulation
Les générateurs de modulation sont des modulateurs-connecteurs hybrides qui génèrent des valeurs au fil du temps. Vous pouvez les utiliser pour la modulation en les réglant sur les propriétés Bus de contrôle ou Destination de la modulation.
Le plug-in fournit des implémentations pour les types suivants :
Oscillateur basse fréquence (LFO) : génère des valeurs en fonction des oscillations d'une forme d'onde donnée, comme le sinus ou le carré.
Suiveur d'enveloppe : génère des valeurs basées sur l'amplitude d'un bus audio donné.
Enveloppe AD : génère des valeurs basées sur une enveloppe attaque-dégradation donnée.
Créer des générateurs de modulation personnalisés
Vous pouvez créer vos propres générateurs de modulation avec les modèles de génération de code fournis pour la classe USoundModulationGenerator, qui génère le code standard nécessaire à la création et à l'inscription d'un générateur.
Pour créer une classe USoundModulationGenerator, procédez comme suit :
Sélectionnez Outils > Nouvelle classe C++.
Sélectionnez Toutes les classes dans la fenêtre Choisir la classe parente.
Sélectionnez SoundModifierGenerator sous SoundModifierBase.
Vous devez implémenter les fonctions suivantes :
GetValue: doit renvoyer une valeur normalisée, mise en cache et sans unité, comprise entre 0,0 et 1,0. Cette valeur est fournie aux destinations de modulation d'écoute.Update: doit implémenter le calcul de la valeur en cache de l'image suivante.
Vous pouvez également implémenter les fonctions suivantes :
IsBypassed: doit renvoyer une valeur booléenne selon que la valeur du générateur doit être incluse dans les calculs de destination. Par défaut, la valeur de la propriété decontournement générée par USoundModulationGeneratorest transmise à l'Unreal Audio Engine.GetDebugValues: doit fournir une matrice de chaînes par instance de générateur à afficher à l'exécution au moyen de la famille de commandes de débogageau.Debug.SoundModulatorsdans les versions non livrées.GetDebugCategories: doit fournir une matrice statique de noms de champs correspondant aux valeurs fournies par ces instances.
Pour plus d'informations, consultez la référence de l'API C++ pour la modulation audio.
Destinations de modulation
Une destination de modulation est un point de terminaison connecté à un objet audio qui fournit une valeur float de base (dans les unités données) que les ressources de modulation audio moduleront.
Les objets suivants possèdent des destinations de modulation :
Ondes sonores
Sources MetaSound
Composants audio
Composants de synthèse
Classes Son
Sous-mixages
Effets sources (BitCrusher et Chorus uniquement)
Vous trouverez les destinations de modulation de chaque objet audio pris en charge dans le panneau Détails sous Modulation. Chaque objet répertorie les types de destinations de modulation pris en charge qui déterminent la propriété modulée, comme le volume ou le tangage.
Pour utiliser une destination de modulation, activez la case à cocher modulation associée, puis ajoutez le connecteur de votre choix (bus de contrôle, générateur de modulation ou correcteur de paramètres) à la matrice.
Options de routage des destination de modulation
Certaines destinations de modulation, comme celles des composants audio, fournissent des options de routage basées sur l'héritage. Un objet enfant peut hériter du routage de modulation d'un objet parent. Plus précisément, les composants audio peuvent hériter de la ressource Son associée, et les sons peuvent hériter de la classe Son associée.
| Option de routage | Description |
|---|---|
Désactiver | Désactive le routage de modulation. |
Hériter | Hérite du routage de modulation de l'objet parent. Il s'agit de l'option par défaut, car la configuration de la modulation est généralement effectuée dans les classes Son. |
Remplacer | Remplace le routage de modulation de l'objet parent par les paramètres spécifiés. |
Union | Utilise le routage de modulation hérité de l'objet parent et les paramètres spécifiés. Si le même modulateur est présent dans les deux ensembles, le calcul n'est effectué qu'une seule fois. |
Intégration de MetaSounds
Le plug-in Audio Modulation fournit les nœuds MetaSound suivants :
Get Modulator Value : renvoie la valeur de modulateur donnée, normalisée ou en espace unitaire.
Mix Modulators : renvoie une valeur de paramètre mixte entre deux modulateurs donnés, normalisée ou en espace unitaire.
Pour plus d'informations sur le système MetaSound, consultez la documentation MetaSounds.
Modulation audio et simultanéité
Une variable CVar permet à la modulation du volume sur les sources d'influencer l'option Arrêter le plus silencieux de la simultanéité. Elle s'appelle :
au.Concurrency.IncludeVolumeModulation
Pour rechercher le menu, double-cliquez sur la ressource Simultanéité, dans l'onglet Simultanéité, sous Règle de résolution.
Lorsque sa valeur est réglée sur 0, la modulation de volume n'est pas incluse dans l'évaluation de la simultanéité.
Si elle est réglée sur 1, la modulation de volume est incluse pour les sons ponctuels, mais pas pour les sons en boucle.
Si elle est réglée sur 2, la modulation de volume est incluse pour tous les sons.
Résumé de l'API Blueprint
Avec Blueprint, vous pouvez créer et contrôler dynamiquement votre pipeline de modulation et l'utiliser pour piloter d'autres systèmes, tels que le gameplay ou les effets visuels.
La plupart des fonctions Blueprint associées à la modulation audio se trouvent sous Audio > Modulation. Le tableau ci-dessous vous donne un aperçu général des fonctions disponibles.
| Fonction | Variantes | Description |
|---|---|---|
Activer... | Bus de contrôle de mixage | Active l'objet fourni. |
Effacer… | Toutes les valeurs globales du mixage de bus de contrôle, Valeur globale du mixage de bus de contrôle, Modulateur | Rétablit les valeurs par défaut des paramètres de bus fournis ou les dissocie. |
Créer… | Générateur d'enveloppe AD, Bus de contrôle, Mixage de bus de contrôle, Étape de mixage de bus de contrôle, Générateur de suiveur d'enveloppe, Générateur de LFO, Destination du modulateur, Destination de modulation | Crée un objet avec les valeurs par défaut fournies. Pour la destination de modulation, les bus de contrôle et les générateurs référencent leurs destinations ; cet objet devient donc l'une des références. Les bus de contrôle et les générateurs ne sont actifs que si le nombre de références est supérieur à 0. |
Désactiver… | Tous les mixages de bus de contrôle, Mixage de bus de contrôle | Désactive l'objet fourni. |
Obtenir le modulateur | S.O. | Récupère le modulateur de la destination de modulation donnée. |
Obtenir la valeur du modulateur | S.O. | Obtenir la valeur normalisée du modulateur donné. |
Obtenir les modulateurs de la destination | S.O. | Récupère la liste des modulateurs actuellement appliqués à une destination de modulation. |
Obtenir la valeur du modulateur surveillé | S.O. | Récupère la valeur de la valeur du modulateur surveillé de l'objet Destination de modulation donné. |
Le mixage de bus de contrôle est-il actif | S.O. | Vérifie si le mixage de bus de contrôle donné est actif. |
Charger le mixage de bus de contrôle depuis le profil | S.O. | Charge le mixage de bus de contrôle d'un profil dans une définition de mixage UObject, désérialisé à partir d'un fichier |
Enregistrer le mixage de bus de contrôle dans le profil | S.O. | Enregistre un mixage de bus de contrôle dans un profil, sérialisé dans un fichier |
Définir... | Mixage de bus de contrôle, Mixage de bus de contrôle par filtre, Valeur globale du mixage de bus de contrôle, Modulateur surveillé | Définit les propriétés de l'objet fourni. La variante Définir le mixage de bus de contrôle par filtre permet d'utiliser un filtrage d'adresses de type OSC. |
Mettre à jour… | Mixage de bus de contrôle, Modulateur | Valide les mises à jour depuis l'objet fourni au thread audio. |
Ajouter un routage de modulation | S.O. | Ajoute l'ensemble de modulateurs spécifié au composant audio. Il en résulte une union logique, ce qui évite l'ajout de modulateurs dupliqués. Pour remplacer complètement les paramètres existants, utilisez Définir le routage de modulation. |
Supprimer le routage de modulation | S.O. | Supprime l'ensemble donné de modulateurs du composant audio. Une soustraction logique des ensembles est effectuée pour conserver les modulateurs qui ne sont pas inclus dans l'ensemble donné. |
Des fonctions utiles sont également disponibles en dehors du groupe Audio > Modulation. En particulier, les fonctions Obtenir les modulateurs et Définir le routage de modulation fournissent des surcharges pour les composants audio et les composants de synthèse. Elles peuvent être utilisées pour obtenir ou définir les destinations de modulation d'un composant.
Pour plus d'informations, consultez la référence de l'API Blueprint pour la modulation audio.
À propos des UObjects et des proxys
Lorsque vous travaillez avec des composants et des ressources de modulation audio, vous modifiez généralement les valeurs des UObjects. Toutefois, la modulation audio n'utilise pas directement les UObjects pour le traitement, et ce pour deux raisons.
Les UObject s'exécutent sur le thread du jeu.
Les UObjects peuvent être supprimés lors du nettoyage de la mémoire à des moments hors du contrôle du système de modulation audio.
Par conséquent, les valeurs définies dans les UObjects sont envoyées aux objets du système de modulation audio sur le thread de rendu audio. Ceci est important à retenir, car certaines fonctions Blueprint modifient l'UObject, tandis que d'autres modifient l'objet proxy du système de modulation audio.
Lorsqu'une fonction modifie uniquement la valeur de l'UObject, vous devez appeler une fonction Blueprint Mettre à jour pour transmettre ces modifications au proxy. De plus, si vous appelez une fonction qui ne modifie pas la valeur de l'UObject, puis une autre pour mettre à jour le proxy, la valeur de l'UObject remplacera le proxy.
Bien que la modulation audio s'exécute sur le thread de rendu audio, elle s'exécute au taux de blocs, non au taux d'échantillonnage.