He creado una versión de aplicación independiente de un proyecto que hasta ahora solo era una VST/unidad de audio. Estoy proporcionando soporte de audio a través de rtaudio.entrada midi en tiempo real y sincronización con audio
Me gustaría agregar soporte MIDI usando rtmidi pero no me queda claro cómo sincronizar las partes de audio y MIDI.
En VST/audiounit land, estoy acostumbrado a eventos MIDI que tienen una marca de tiempo que indica su desplazamiento en muestras desde el inicio del bloque de audio.
rtmidi proporciona un tiempo delta en segundos desde el evento anterior, pero no estoy seguro de cómo debo tomar esos eventos y cómo puedo calcular su tiempo en relación con la muestra actual en el hilo de audio.
¿Cómo hacen los hosts de complementos esto?
Entiendo cómo los eventos se pueden muestrear con precisión en la reproducción, pero no está claro cómo podrían ser precisos para la muestra al usar la entrada en tiempo real.
rtaudio me da una función de devolución de llamada. Me ejecutaré en un tamaño de bloque bajo (32 muestras). Supongo que pasaré un puntero a una instancia rtmidi como la parte de datos de usuario de la devolución de llamada y luego llamaré a midiin-> getMessage (mensaje &); dentro de la devolución de llamada de audio, pero no estoy seguro de si esto es sensible a los subprocesos.
Muchas gracias por cualquier consejo que me puedan dar
MIDI nunca será preciso con la muestra, ni debe serlo. La información MIDI es relativamente lenta. – Brad