2009-03-31 10 views
2

Je voudrais faire un simple plug-in VST qui fait cela:midi virtuel et VSTs

  1. analyser un flux audio (volume, beat, etc ...)
  2. a triggers sur la sortie de l'analyseur (par exemple, faire quelque chose lorsque le volume> seuil)
  3. génèrent des événements MIDI sur la base des déclencheurs

Ceci doit être en mesure de plug-ins de la chaîne, même si elles 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 la sortie MIDI OUT de mon plugin à l'entrée 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 comme celle-ci dans les VST? Ou peut-être ai-je besoin d'une sorte de "périphérique MIDI virtuel" pour les interconnexions?

Répondre

5

Votre intuition ici est probablement correcte; cette tâche sera plus facile à accomplir en écrivant un périphérique MIDI virtuel au lieu d'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'hôte est requis pour réagir à ces événements. Beaucoup d'hôtes les ignorent tout simplement, et je ne peux certainement pas en imaginer un qui permette un routage facile depuis un plugin vers un canal MIDI (peut-être un bidule de mode?). Vous pourriez être en mesure d'accomplir ceci avec Audio Units avec le type de plugin kAudioUnitType_Generator ... bien que je n'aie jamais écrit un tel plugin, mon impression était que c'est ce que vous utiliseriez pour générer du MIDI sur l'hôte. Mais encore une fois, le problème ici est que je ne suis pas sûr de savoir comment l'hôte vous permettrait de router l'audio vers le plugin et d'accepter le MIDI. En tout cas, votre idée implémentée en tant que plugin sera la plus difficile à implémenter si vous voulez standardiser son comportement pour les séquenceurs les plus utilisés. Je pense qu'un moyen beaucoup plus facile d'accomplir ce que vous voulez est de créer un périphérique MIDI virtuel, comme vous l'avez déjà pensé, puis d'utiliser rewire pour router un signal d'entrée vers votre programme.

Modifier: Voici quelques ressources sur l'écriture de pilotes MIDI pour différents systèmes:

+0

Merci pour les précisions. Des pointeurs sur l'écriture d'un tel périphérique virtuel? Googling "virtual midi" renvoie quelques sharewares ringards des années 90, et je ne peux pas trouver de documentation sur la façon d'écrire un tel pilote. –

2

plugins VST ne prennent pas en charge les connexions midi directs, ils ne peuvent avoir midi ports d'entrée/sortie.

Il est toujours possible de le faire cependant, vous avez juste besoin d'un hôte qui supporte le routage midi d'un plugin à l'autre. Les hôtes modulaires tels que EnergyXT, Bidule, AudioMulch et Console excellent ici. Ils permettent tous d'acheminer librement les signaux audio et midi (sauf les chemins de retour). Mais il peut également être possible dans les hôtes avec des racks vst de style mélangeur plus «traditionnels». (Par exemple, AFAIK Reaper transmettra tout midi d'un plug-in à l'autre.)

+0

Est-ce ce qui se passe dans Ableton Live, lorsque vous ajoutez d'abord un plugin MIDI (c'est-à-dire un transposeur). Et puis est en mesure d'ajouter un instrument après? –