voces studio para pagina mega gratis efectos descargar ruby audio midi vst synthesizer

ruby - studio - ¿Cómo voy a interactuar programáticamente con VST(i) Plugins para sintetizar audio?



vst plugins gratis (1)

Tomemos, por ejemplo, el VSTi Triforce , de Tweakbench. Cuando se carga en cualquier host VST en el mercado, permite al host enviar una señal (presumiblemente MIDI) al VSTi. El VSTi luego procesará esa señal y emitirá audio sintetizado como creado por un instrumento de software dentro del VSTi.

Por ejemplo, al enviar un A4 (nota MIDI, creo) al VSTi causará que sintetice A sobre el medio C. Envía los datos de audio al host VST, que luego podría reproducirlos en mis parlantes o guardarlos a .wav o algún otro formato de archivo de audio.

Digamos que tengo Triforce y estoy tratando de escribir un programa en mi idioma de elección que podría interactuar con el VSTi al enviar una nota A4 para sintetizar y guardarlo automáticamente en un archivo en el sistema.

Finalmente, me gustaría poder analizar todo un archivo MIDI de una pista (usando bibliotecas establecidas y estables ya disponibles para este propósito) y enviarlo al VSTi para "renderizarlo" / sintetizarlo en un archivo de audio.

¿Cómo voy a hacer esto y en qué idioma debería buscar construir el marco central?

En última instancia, se utilizará en un proyecto basado en Ruby, por lo que cualquier sugerencia a los recursos específicos de Ruby sería agradable también.

Sin embargo, estoy tratando de entender básicamente cómo funciona la API de un VSTi . (Me he dado cuenta de que esta pregunta está muy relacionada con la cuestión de construir un host VST en primer lugar, aunque uno que solo puede guardar salidas VST para archivar y no reproducirlas, y con un alcance considerablemente menor)

Gracias de antemano por cualquier ayuda =)


Bueno, ya que lo preguntaste, el lenguaje ideal para un proyecto como este será C ++. Aunque hay envoltorios para lenguajes de alto nivel como Java y .NET para VST SDK, no pude encontrar uno para Ruby (aunque sí encontré este proyecto bastante genial que te permite programar complementos VST en Ruby ). Así que estarás atrapado haciendo algún grado de integración con C / C ++ por tu cuenta.

Dicho esto, básicamente tienes dos opciones aquí:

  1. Escriba un host VST en C ++ y ejecútelo como un proceso separado desde Ruby.
  2. Integre su código de Ruby directamente al SDK de VST y cargue los archivos DLL / Bundles del complemento directamente desde su código. Esta es probablemente la manera más limpia pero más difícil de lograr su objetivo.

Escribí un tutorial de programación de host VST en mi blog hace un tiempo atrás, que puede ser útil en cualquier caso. Detalla cómo se abre y se comunica con los complementos de VST en Mac OSX y Windows. Una vez que haya conseguido que su host cargue los complementos, debe poder enviar eventos MIDI directamente al complemento, ya sea leyéndolos desde un archivo o algún tipo de comunicación entre su código Ruby y el host VST (es decir, un tubería, conector, archivo, etc.). Si no está familiarizado con el protocolo MIDI, consulte estos enlaces:

Como ya habrás descubierto, VST es fundamentalmente un protocolo basado en bloques. Solicitas pequeños bloques de datos de audio desde el complemento y envías cualquier evento MIDI al complemento justo antes de que procese ese bloque respectivo. Asegúrese de no ignorar el campo MIDI delta; esto asegurará que el complemento comience a procesar el evento MIDI directamente en la muestra deseada. De lo contrario, el complemento sonará un poco off-tempo, especialmente en el caso de los instrumentos.

El SDK de VST también se basa en bloques de coma flotante, por lo que cualquier información que obtenga contendrá muestras individuales en el rango {-1.0 .. 1.0}. Dependiendo del formato de salida que desee, puede necesitar convertirlos a algún otro formato. Afortunadamente, parece haber un enlace de Ruby para la biblioteca de audiofile , por lo que puede enviar su salida a eso para generar un archivo AIFF / WAV apropiado.

En total, será una gran cantidad de trabajo para llegar a su objetivo final deseado, pero no es imposible de ninguna manera. ¡Buena suerte!