Introduction aux modules FMOD personnalisés

La création de plugins FMOD personnalisés permet de déverrouiller une nouvelle dimension de conception sonore et de contrôle audio interactif. Alors que FMOD Studio expédie un puissant ensemble d'effets et de filtres intégrés, chaque projet rencontre finalement une exigence acoustique unique que le traitement hors-le-sol ne peut satisfaire. Que vous ayez besoin d'une réverbération sur mesure pour une forêt de VR, d'une distorsion personnalisée pour un système d'armes ou d'un outil d'analyse spécial pour l'audio procédural, construire votre propre plugin vous donne une totale liberté sur la chaîne de signal.

Ce guide fournit une feuille de route technique pour les concepteurs de sons et les programmeurs audio qui veulent étendre FMOD avec des algorithmes personnalisés de traitement de signaux numériques (DSP). Nous couvrons tout, de la configuration SDK au déploiement final, avec des conseils pratiques sur les performances, la fixation des paramètres et les tests.

Comprendre les modules FMOD

L'architecture du plugin FMOD=2 permet aux développeurs d'injecter un traitement audio personnalisé à tout moment du graphique de mixage. Un plugin est essentiellement une bibliothèque partagée (DLL sur Windows, .so sur Linux, .dylib sur macOS) qui expose un ensemble standard d'interfaces défini dans le SDK FMOD Studio. L'application hôte charge et gère ces bibliothèques à l'exécution, de sorte que votre plugin se comporte exactement comme un effet natif.

Il y a deux types de plugins primaires :

  • Effets du PSD : Procéder à l'audio en temps réel – par exemple, égaliseurs, compresseurs, réverbérations ou filtres spectraux expérimentaux. Ils reçoivent des tampons audio, appliquent une transformation et produisent le signal traité.
  • Plugins pour objets sonores : Fonctionnez sur des métadonnées ou des données de contrôle, comme des marqueurs de synchronisation personnalisés ou une logique de spatialisation.

Le point d'orgue de cet article est les plugins DSP effet, car ils représentent le besoin de personnalisation le plus fréquent. Quel que soit le type, tous les plugins suivent le même cycle de vie: l'instantiation, le traitement, la mise à jour des paramètres et le nettoyage.

Prérequis pour la construction de plugins personnalisés

Avant d'écrire votre première ligne de code plugin, assurez-vous que vous avez les éléments fondamentaux suivants en place:

  • Connaissances C++ suffisantes – FMOD , SDK est écrit en C++ et vous attend à mettre en œuvre des méthodes virtuelles. Vous avez besoin d'une compréhension solide des pointeurs, de la gestion dynamique de la mémoire et du design orienté objet.
  • SDK FMOD Studio – Télécharger la dernière version de Site officiel de la FMOD. Le SDK comprend les en-têtes, les bibliothèques, le code de plugin et la documentation.
  • Environnement de développement – Visual Studio 2022 sous Windows, Xcode sous macOS ou une chaîne d'outils moderne GCC/Clang sous Linux. Installez les outils de construction appropriés pour votre plateforme.
  • Les fondamentaux du traitement des signaux numériques – Vous n'avez pas besoin d'un doctorat en DSP, mais vous devriez comprendre les taux d'échantillonnage, les tailles de tampon, le domaine de fréquence vs le traitement du domaine de temps, et les filtres de base. Le guide scientifique et ingénieur pour le traitement numérique des signaux est une excellente ressource. Le blog d'ingénierie de niveau d'oreille offre des explications concises sur mesure pour les programmeurs audio.
  • Familiarité avec les fondamentaux audio – Savoir comment les tampons d'échantillon, les canaux intercalés et le travail de traitement en point flottant gagneront du temps pendant le débogage.

Mise en place de l'environnement de développement

Une configuration propre empêche la construction de maux de tête plus tard. Suivez ces étapes pour configurer votre IDE pour le développement de plugin FMOD:

  1. Extraire le SDK FMOD Studio dans un répertoire connu (p. ex. .
  2. Créez un nouveau projet DLL C++. Dans Visual Studio, choisissez -Dynamic‐Link Library (DLL)-Dynamic-Link Library (DLL)-Dynamic-Link Library (DLL)-Dynamic-Link Library (DLL)-Dynamic-Link Library) ou -Dynamic-Console Application-Dynamic-Link Library (DLL)-Dynamic-Link Library (DLL)-Dynamic-Link Library (DLL)-Dynamic-Link Library)-Dynamic-Link Library (DLL)-Dynamic-Console Application-Dynamic, puis changez la configuration en DLL.
  3. Ajouter le chemin SDK à vos paramètres de projet. Pointez sur les dossiers et .
  4. Lien vers (ou la bibliothèque de plate-forme appropriée) depuis . Pour les plugins, vous avez également besoin de si vous utilisez des fonctionnalités Studio.
  5. Définissez la sortie cible dans une bibliothèque partagée (extension .dll, .so, ou .dylib) et nommez-la de façon significative, par exemple .
  6. Copiez le code de plugin exemple de comme modèle de départ. Ce fichier contient la plaque de chaudière minimale requise pour que FMOD reconnaisse le plugin.
  7. Envisagez d'utiliser CMake pour les constructions multiplateforme. FMOD fournit l'exemple CMakeLists.txt dans le dossier plugin SDK. Cela simplifie la gestion à travers Windows, macOS et Linux.

Comprendre l'API de plugin FMOD

Chaque plugin FMOD doit implémenter l'interface . L'hôte appelle ces fonctions virtuelles pour énumérer, créer et gérer le plugin:

  • – Décrivez le nombre de canaux d'entrée/sortie et le mode haut-parleur. Retournez une structure .
  • – Retourner un tableau de structures . Les paramètres sont des valeurs flottantes que le concepteur de son peut automatiser dans FMOD Studio.
  • – Immédiatement votre classe de traitement DSP. Cette méthode renvoie un pointeur à un objet .
  • – Nettoyer l'instance DSP. Vous devez supprimer toutes les ressources allouées ici.

Votre classe de traitement DSP hérite de et remplace les méthodes clés :

  • – Le cœur de votre effet. FMOD appelle cela avec un tampon d'entrée et un tampon de sortie. Effectuez votre algorithme ici. Le callback reçoit les paramètres .
  • et – Synchronisez les paramètres de FMOD Studio à votre code en temps réel. Vous recevez un index de paramètres et une valeur de flotteur.
  • – Effacer tout état interne lorsque le son redémarre ou que le graphique de mélange change.
  • – Repasser en option pour copier rapidement l'entrée vers la sortie lorsque l'effet est contourné dans Studio.

Étudier l'échantillon de plugin – il montre les signatures de la fonction exacte et inclut des commentaires pour chaque étape. API de plugin FMOD Studio chapitre, fournit la référence officielle.

Mise en œuvre d'un Algorithme DSP personnalisé

Maintenant, laissez-nous vous donner un exemple pratique : un effet stéréo subtil qui utilise l'encodage mi-side. Ceci est assez simple pour illustrer le processus mais assez intéressant pour être utile.

Algorithme

  1. Convertir le signal stéréo entrant en mi-side (M = (L+R)*0,5, S = (L-R)*0,5).
  2. Multipliez le canal latéral par un facteur de gain (commandé par un paramètre appelé -Width-).
  3. Convertir en gauche/droite (L = M+S, R = M‐S).
  4. Copiez le résultat dans le tampon de sortie.

Structure du code

Dans votre méthode , vous écrivez un code comme celui-ci (code pseudo, pas exact copy-paste):

N'oubliez pas de respecter le nombre de canaux : si l'entrée est mono, vous devez soit passer par ou créer un repli sensible. Utilisez pour connaître le nombre de canaux à l'exécution. Pensez également à gérer d'autres modes de haut-parleurs – pour un shère large, vous pouvez simplement traiter les deux premiers canaux et copier le reste.

Manipulation des paramètres

Définir un paramètre nommé -Width-- dans avec une plage de 0.0 à 2.0 et une valeur par défaut de 1.0 (sans changement). Dans , stocker la valeur dans la variable de votre membre de classe DSP. Parce que FMOD peut appeler à partir d'un fil audio, protéger les modifications de paramètre avec un spin-lock ou utiliser pour la valeur de largeur.

Compilation et enregistrement du plugin

Après avoir mis en œuvre l'algorithme, construisez votre projet pour produire la bibliothèque partagée. Sur Windows, Visual Studio va générer un fichier .dll; sur macOS, un .dylib; sur Linux, un .so.

Pour utiliser le plugin dans FMOD Studio :

  1. Copiez la bibliothèque intégrée dans un dossier que FMOD Studio scanne pour les plugins. Par défaut, FMOD Studio recherche par rapport à l'exécutable Studio, ou vous pouvez créer un chemin personnalisé via les paramètres Studio.
  2. Redémarrer FMOD Studio, ou déclencher un plugin rafraîchir via le menu Mixer.
  3. Votre effet doit apparaître dans la liste des effets sous le nom de plugin que vous avez spécifié dans . Faites glisser sur n'importe quelle piste de mixeur.
  4. Cliquez avec le bouton droit sur l'effet pour modifier les paramètres. Vous devriez voir votre curseur -Width--.

Si le plugin n'apparaît pas, vérifiez le fichier journal FMOD Studio (souvent dans ou ) pour les messages d'erreur indiquant des symboles manquants ou des versions SDK incompatibles. Une erreur courante est d'oublier d'exporter la fonction – assurez-vous que votre code inclut la définition de macro ou d'export requise.

Dépannage des problèmes communs de plugin

Même les développeurs expérimentés frappent les pièges. Voici des pièges fréquents et comment les traiter:

  • Crashes sur le chargement du plugin: Souvent causé par des versions SDK mal appariées. Assurez-vous de compiler avec la version FMOD Studio exacte que vous utilisez. Vérifiez le journal des erreurs pour les messages -versions-sympaties.
  • Pas de sortie sonore & #160;: Vérifiez que votre callback écrit effectivement à . Une surveillance commune ne fait que modifier le tampon d'entrée et oublier de copier en sortie.
  • Craquants et éclats: Habituellement en raison de dépassements de tampon ou de latence variable. Assurez-vous que votre boucle de traitement se termine dans le temps de bloc audio (généralement < 5ms). Also avoid any blocking operations inside .
  • Paramètres non mis à jour: Vérifiez votre implémentation – vous devez stocker la valeur et gérer l'index des paramètres correctement. Vérifiez également que le de votre plugin renvoie le nombre et les descriptions corrects.
  • Debug construit le travail mais la version construit l'écrasement: Parfois en raison de variables ou d'optimisations non initiales révélant un comportement non défini. Compilez avec des niveaux d'avertissement plus élevés et testez avec des désinfectants d'adresse.

Essais et débogage

Le débogage du code audio en temps réel est notoirement difficile. Utilisez ces stratégies pour attraper les problèmes tôt:

  • Exécutez le plugin dans un harnais de test autonome. Créez une petite application console qui charge FMOD Low Level et applique votre effet sur un fichier WAV. Cela vous permet de fixer un débogueur et de passer par la fonction sans la complexité d'un moteur de jeu complet.
  • Vérifier avec silence et impulsion. Feed une impulsion (un seul échantillon avec valeur 1.0, reste zéro) à travers votre plugin et s'assurer que la sortie est stable. Cela révèle des dépassements de tampon ou des valeurs NaN.
  • Utilisez le profileur intégré FMOD Studio. Le visualiseur DSP affiche l'utilisation du processeur par effet. Si votre plugin consomme trop de processeur, envisagez de simplifier l'algorithme ou d'utiliser les instructions SIMD.
  • Vérifiez les fuites de mémoire. Des outils comme Valgrind (Linux), Instruments (macOS), ou le tas de débogue CRT (Windows) vous aident à vérifier que libère correctement toute la mémoire allouée.
  • Enregistrer les événements clés. Utilisez pour écrire des messages dans le journal de débogage FMOD. Évitez ] à l'intérieur du fil audio.

Considérations relatives aux performances

FMOD s'attend à ce que les plugins fonctionnent dans des contraintes strictes en temps réel – votre callback doit être terminé avant l'arrivée du prochain tampon audio (généralement 5-10 ms à un taux d'échantillonnage de 44,1 kHz).

  • Éviter l'attribution de mémoire dans . Pré-allouer les tampons temporaires dans le constructeur ou la méthode .
  • Évitez les appels, les verrous ou les fichiers E/S à l'intérieur du fil audio. Utilisez des structures de données sans verrou pour communiquer avec l'interface utilisateur ou le fil de jeu. est votre ami pour des mises à jour de paramètres simples.
  • Utiliser des flotteurs à simple précision – une double précision est inutile pour l'audio et double la bande passante de la mémoire.
  • Leverage CPU SIMD (SSE, AVX, NEON) pour le traitement parallèle d'échantillons. bibliothèque SIMD pbat-s) peut accélérer les opérations comme la multiplication de matrice ou FFT. FMOD utilise lui-même SIMD en interne, de sorte que votre plugin bénéficiera des mêmes ensembles d'instructions.
  • Testez votre matériel cible tôt. Un plugin qui fonctionne bien sur un poste de travail développeur peut se faufiler sur une console ou un appareil mobile. Profil souvent en utilisant FMOD , le compteur CPU intégré ou des outils externes.
  • Utiliser les utilitaires de l'usine FMOD DSP – si vous devez diviser ou combiner des canaux, envisagez d'utiliser et plutôt que de tout mettre en œuvre manuellement.

Conseils de conception pour des plugins efficaces

Au-delà de la mise en œuvre technique pure, un plugin bien conçu est une joie de travailler avec les concepteurs de sons.

  • Fournir des paramètres significatifs avec des plages raisonnables – par exemple, -Mix (0 à 100%), -Cutoff (20 Hz à 20 kHz), -Resonance (0 à 100%). Utilisez des noms descriptifs qui apparaissent dans l'éditeur d'automatisation FMOD Studio.
  • Enregistrer les messages utiles – Lorsque le plugin ne parvient pas à initialiser ou à recevoir des données invalides, utilisez pour écrire dans le journal.
  • Inclure un mélange sec/humide – La plupart des effets devraient permettre le mélange entre l'audio traité et l'audio non traité. Implémenter ce paramètre en interne ou exposer un paramètre -Wet-.
  • Poignez le pontage avec grâce – Mettre en œuvre la méthode pour copier rapidement l'entrée en sortie sans traitement, en préservant le processeur lorsque l'effet est désactivé.
  • Documenter votre plugin – Créer un README ou un fichier d'aide décrivant l'algorithme, la signification de chaque paramètre et les limitations connues.
  • Nommez votre plugin uniquement – Évitez les noms génériques comme -Reverb ou -Filter. Utilisez quelque chose comme -ReverbTail ou -StereoWidenPro- pour prévenir les conflits avec les effets intégrés.

Licences et distribution

Lorsque vous distribuez un plugin FMOD personnalisé, vous devez respecter les conditions de licence de FMOD. FMOD Studio est elle-même libre de redevances pour des revenus inférieurs à un certain seuil (vérifier la Page de licence FMOD Votre plugin en tant que travail dérivé peut être soumis aux mêmes conditions s'il utilise le code SDK FMOD. Généralement, distribuer votre bibliothèque partagée compilée à côté de votre projet est très bien, mais vous ne pouvez pas redistribuer les fichiers d'en-tête SDK FMOD ou les bibliothèques au-delà de ce qui est nécessaire.

Pour les plugins propriétaires, envisagez de supprimer votre algorithme ou de le fournir en binaire précompilé uniquement. Les plugins open-source sont également accueillis par la communauté – vous pouvez les licencier sous GPL ou MIT. Si vous prévoyez de vendre votre plugin, incluez un EULA clair et fournir un support. Emballez votre plugin avec un script d'installation simple (par exemple, C Make install cible ou un script qui copie la bibliothèque dans le dossier des plugins FMOD utilisateur) améliore l'expérience utilisateur.

Expanding Your Plugin , les capacités

Une fois que vous maîtrisez les effets de base, vous pouvez explorer des fonctionnalités plus avancées:

  • Entrée de la chaîne latérale – Écoutez un flux audio supplémentaire (par exemple un tambour de démarrage) pour moduler les paramètres dynamiquement. FMOD prend en charge le routage de la chaîne latérale pour les effets DSP en ajoutant une connexion d'entrée supplémentaire à votre instance DSP.
  • Analyse du spectre – Données de fréquence de sortie à une visualisation ou l'utiliser pour conduire d'autres effets en temps réel. FMOD fournit sur des objets DSP, mais vous pouvez également implémenter votre propre FFT à l'intérieur du plugin.
  • Traitement multicanaux – Poignée 5.1, 7.1, ou audio ambisonique gracieusement. Beaucoup d'effets FMOD intégrés prennent déjà en charge ces mises en page ; votre plugin devrait aussi. Utilisez pour interroger la mise en page du canal et adapter votre algorithme.
  • Intégration avec le code de jeu – Utilisez les callbacks de paramètres Studio pour synchroniser votre état de plugins avec des variables in-game (p. ex., RPM moteur, vitesse du vent).
  • UI personnalisé – Alors que FMOD Studio affiche des curseurs génériques pour les paramètres de plugin, vous pouvez intégrer des cadres d'interface utilisateur externes en utilisant et en liant aux contrôles personnalisés.

Conclusion

La construction de plugins FMOD personnalisés est l'une des façons les plus enrichissantes de pousser l'audio interactif au-delà des solutions stock. Oui, il nécessite un confort avec C++, une bonne compréhension des principes DSP et une attention attentive aux contraintes en temps réel – mais le bénéfice est la capacité de créer une expérience audio qui est uniquement la vôtre.

Commencez par les exemples de SDK FMOD, expérimentez de petites modifications et augmentez progressivement la complexité. La communauté autour de FMOD est active; les forums et les dépôts GitHub contiennent de nombreux plugins open-source que vous pouvez étudier. Avec les étapes décrites dans cet article, vous êtes prêt à ouvrir Visual Studio, écrire votre premier callback et entendre les résultats dans FMOD Studio. La seule limite est votre imagination – et le taux d'échantillonnage.