J'essaie de construire un petit programme qui héberge des effets VST et je voudrais numériser un dossier pour les dlls plugin.
Je sais comment trouver toutes les DLL mais maintenant j'ai les questions suivantes: p>
PS: S'il y a une bibliothèque qui peut faire tout cela pour moi, merci de me le faire savoir. P>
3 Réponses :
Comment déterminer un plugin VST? P>
Une fois que vous avez trouvé MAIN / VSTPLUGINMAIN ... Appelez-le!
Si ce qui est retourné est null, ce n'est pas une VST.
Si ce qui est retourné, c'est un pointeur sur les octets "vstp" (voir Le vstpluginmain renvoie un pointeur sur une structure d'affecte. Vous devrez regarder cette structure. P>
effet ou instrument? Les VST Shell sont plus complexes: P>
catégorie sera kplugCategshell p>
Soutenir la cando "shellcategory". p>
Utilisez effshellgetnextplugin pour énumérer. p>
par exemple, répondez à audiomastercurrentaid dans votre rappel avec l'ID que vous voulez. p> vstint32 magique; ///
Affect :: Drapeaux | (effllagssynth = 1 << 8) code> p>
Merci d'avoir répondu. Il y a juste quelque chose que je ne comprends pas complètement. Supposons que je trouve une DLL qui n'est pas un plugin, mais des exportations "principales" (qui semblent un nom assez commun ...), puis en retourne quelque chose. Est-ce que je ne vais pas avoir des problèmes si j'essaie de déré à la recherche de "VSTP"?
Potentiellement. Vous vérifieriez certainement si le pointeur était non nul. Vous pouvez également envisager de vérifier si votre rappel a été appelé. Il serait peu logique qu'un utilisateur ait stocké une DLL malveillante dans leur dossier VSTPlugins.
@DaveGamble Yea, ma principale préoccupation était un code malveillant. Bonne réponse!
Si vous souhaitez développer votre application d'hôte VST dans .net Jetez un coup d'oeil à vst.net p>
@Dave Gamble a cloué, mais je voulais ajouter quelques objets sur les plugins VST Shell, car ils sont un peu difficiles à travailler avec.
Pour déterminer si une VST est un plug-in shell, envoie le si vous voulez réellement charger un plugin dans une coquille VST, c'est un peu plus délicieux. . Premièrement, votre hôte doit gérer le parce que cela Callback est fabriqué avant em> la fonction principale renvoie (et donc, avant de délivre un effectplugcategory code> opcode sur le répartiteur du plug-in. S'il renvoie
kplugcategshell code>, il s'agit d'un plug-in shell. Pour obtenir la liste des sous-plug-ins dans la coquille, appelez essentiellement
effshellgetnextplugin code> jusqu'à ce qu'il renvoie 0. Exemple de code SNIPPIT (adapté à partir d'un hôte VST de travail ): p>
AudiomasterCurrentaid code> OPCODE dans le rappel hôte. Lorsque vous appelez la méthode de la VST
VSTPLUGINMAIN () CODE> pour instancier le plug-in, il appellera le rappel hôte avec cet opcode et demandera l'identifiant unique qui doit être chargé. P>
Aeffect * code> à votre hôte), cela signifie que vous devrez probablement stocker l'ID de plug-in Shell Pour charger dans une variable globale, puisque vous ne pourrez pas enregistrer un pointeur sur des données significatives dans
VOI * User code> du champ code> eeffect code> struct à temps pour qu'il soit réussi à vous dans le rappel de l'hôte. p> p>
Seriez-vous prêt à partager une partie de votre code d'hôte? Essayer de créer un hôte de la VST moi-même, aucune idée où commencer.
@DanielroDrigues J'ai un hôte VST open source chez github.com/Teragonaudio/mrswatson