2 votes

Midi virtuel et VST

Je voudrais faire un simple plugin VST qui fasse cela :

  1. analyser un flux audio (volume, rythme, etc...)
  2. a des déclencheurs sur la sortie de l'analyseur (par exemple, faire quelque chose quand le volume > seuil)
  3. générer des événements MIDI en fonction des déclencheurs

Il s'agit de pouvoir enchaîner les plugins, même s'ils ne sont pas conçus pour cela. Par exemple, je pourrais contrôler le gain d'un compresseur avec l'enveloppe d'un flux audio, simplement en connectant le MIDI OUT de mon plugin au MIDI IN du bouton de gain du compresseur.

Le problème est que je ne sais pas comment faire. Existe-t-il un support pour les connexions MIDI directes de ce type dans les VST ? Ou peut-être ai-je besoin d'une sorte de "dispositif MIDI virtuel" pour les interconnexions ?

5voto

Nik Reiman Points 16156

Votre intuition est probablement correcte ; cette tâche sera plus facile à accomplir en écrivant un dispositif MIDI virtuel plutôt qu'un plugin VST. Il est possible d'envoyer des événements MIDI à un séquenceur en utilisant l'appel sendVstEventsToHost(), mais le problème est que la documentation ne spécifie jamais comment l'appel sendVstEventsToHost() peut être utilisé. hôte est nécessaire pour réagir à ces événements. De nombreux hôtes les ignorent tout simplement, et je n'en connais aucun qui permette un routage facile d'un plugin vers un canal MIDI (peut-être plogue bidule ?).

Vous pourriez être en mesure d'accomplir ceci avec des Audio Units avec le type de plugin kAudioUnitType_Generator... bien que je n'aie jamais écrit un tel plugin, mon impression est que c'est ce que vous utiliseriez pour générer du MIDI vers l'hôte. Mais encore une fois, le problème ici est que je ne suis pas sûr de la façon dont l'hôte vous permettrait de router l'audio vers le plugin et d'accepter le MIDI de celui-ci.

De toute façon, votre idée implémentée en tant que plugin sera la plus difficile à mettre en œuvre lorsque vous voudrez standardiser son comportement pour les séquenceurs les plus utilisés. Je pense qu'un moyen bien plus simple d'accomplir ce que vous voulez est de créer un périphérique MIDI virtuel, comme vous y aviez déjà pensé, puis d'utiliser rewire pour acheminer un signal d'entrée vers votre programme.

Editar : Voici quelques ressources sur l'écriture de pilotes MIDI pour divers systèmes :

2voto

Les plugins VST ne supportent pas les connexions midi directes, ils ne peuvent avoir que des ports midi in/out.

Il est cependant toujours possible de le faire, vous avez juste besoin d'un hôte qui supporte le routage midi d'un plugin à un autre. Les hôtes modulaires tels que EnergyXT, Bidule, AudioMulch et Console excellent dans ce domaine. Ils permettent tous de router librement les signaux audio et midi (sauf qu'il n'y a pas de chemin de retour). Mais cela peut également être possible dans des hôtes avec des racks vst de style mixeur plus "traditionnel". (Par exemple, AFAIK Reaper fera suivre tout midi d'un plugin à l'autre).

0voto

obiwanjacobi Points 836

Si vous voulez construire votre plugin en .NET, jetez un coup d'oeil à VST.NET

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X