Compartir a través de


Administrar MIDI Thru

Puede conectar un dispositivo de entrada MIDI directamente a un dispositivo de salida MIDI para que cuando el dispositivo de entrada reciba un mensaje de MIM_DATA , el sistema envía un mensaje con los mismos datos de eventos MIDI al controlador del dispositivo de salida. Para conectar un dispositivo de salida MIDI a un dispositivo de entrada MIDI, use la función midiConnect .

Para lograr el mejor rendimiento posible con varias salidas, una aplicación puede elegir proporcionar una forma especial de controlador de salida MIDI, denominada controlador thru. Aunque el sistema solo permite que un dispositivo de salida MIDI esté conectado a un dispositivo de entrada MIDI, se pueden conectar varios dispositivos de salida MIDI a un controlador thru. Una aplicación de este tipo de sistema podría conectar el dispositivo de entrada MIDI a este dispositivo thru y conectar el dispositivo MIDI a tantos dispositivos de salida MIDI como sea necesario. Para obtener más información sobre los controladores thru, consulte la documentación de Device-Driver de Windows.

Usar mensajes para administrar la grabación MIDI

Los siguientes mensajes se pueden enviar a un procedimiento de devolución de llamada de ventana o subproceso para administrar la grabación MIDI.

Valor Significado
MM_MIM_CLOSE Se envía cuando se cierra un dispositivo de entrada MIDI mediante la función midiInClose .
MM_MIM_DATA Se envía cuando se recibe un mensaje MIDI completo. (Este mensaje se usa para todos los mensajes MIDI excepto los mensajes exclusivos del sistema).
MM_MIM_ERROR Se envía cuando se recibe un mensaje MIDI no válido. (Este mensaje se usa para todos los mensajes MIDI excepto los mensajes exclusivos del sistema).
MM_MIM_LONGDATA Se envía cuando se recibe un mensaje completo exclusivo del sistema MIDI o cuando se ha rellenado un búfer con datos exclusivos del sistema.
MM_MIM_LONGERROR Se envía cuando se recibe un mensaje exclusivo del sistema MIDI no válido.
MM_MIM_MOREDATA Se envía cuando una aplicación no procesa MIM_DATA mensajes lo suficientemente rápido como para mantenerse al día con el controlador de dispositivo de entrada.
MM_MIM_OPEN Se envía cuando se abre un dispositivo de entrada MIDI mediante la función midiInOpen .

 

Un parámetro wParam y un parámetro lParam están asociados a cada uno de estos mensajes. El parámetro wParam siempre especifica el identificador de un dispositivo MIDI abierto. El parámetro lParam no se usa para los mensajes MM_MIM_CLOSE y MM_MIM_OPEN .

Para el mensaje de MM_MIM_LONGDATA , lpMidiHdr especifica una dirección de una estructura MIDIHDR que identifica el búfer para los mensajes exclusivos del sistema. Es posible que el búfer no se rellene por completo, ya que el tamaño de los mensajes exclusivos del sistema normalmente no se conoce antes de grabarse y porque los búferes cuyo tamaño total puede contener el mensaje esperado más grande deben asignarse. Para determinar la cantidad de datos válidos presentes en el búfer, use el miembro dwBytesRecorded de la estructura MIDIHDR .

Uso de una función de devolución de llamada para administrar la grabación MIDI

Puede definir su propia función de devolución de llamada para administrar la grabación de dispositivos de entrada MIDI. La función de devolución de llamada se documenta como MidiInProc.

Los mensajes siguientes se pueden enviar al parámetro wMsg de la función de devolución de llamada MidiInProc .

Valor Significado
MIM_CLOSE Se envía cuando el dispositivo se cierra mediante la función midiInClose .
MIM_DATA Se envía cuando se recibe un mensaje MIDI completo (este mensaje se usa para todos los mensajes MIDI excepto los mensajes exclusivos del sistema).
MIM_ERROR Se envía cuando se recibe un mensaje MIDI no válido (este mensaje se usa para todos los mensajes MIDI excepto para los mensajes exclusivos del sistema).
MIM_LONGDATA Se envía cuando se recibe un mensaje completo exclusivo del sistema MIDI o cuando se ha rellenado un búfer con datos exclusivos del sistema.
MIM_LONGERROR Se envía cuando se recibe un mensaje exclusivo del sistema MIDI no válido.
MIM_MOREDATA Se envía cuando una aplicación no procesa MIM_DATA mensajes lo suficientemente rápido como para mantenerse al día con el controlador de dispositivo de entrada.
MIM_OPEN Se envía cuando se abre el dispositivo de entrada MIDI mediante la función midiInOpen .

 

Estos mensajes son similares a los enviados a las funciones de procedimiento de ventana, pero los parámetros son diferentes. Un identificador del dispositivo MIDI abierto se pasa como parámetro a la función de devolución de llamada, junto con la doble palabra de los datos de instancia que se pasaron mediante midiInOpen.

Para el mensaje de MIM_LONGDATA , lpMidiHdr especifica una dirección de una estructura MIDIHDR que identifica el búfer para los mensajes exclusivos del sistema. Es posible que el búfer no esté completamente lleno. Para determinar la cantidad de datos válidos presentes en el búfer, use el miembro dwBytesRecorded de la estructura MIDIHDR .

Una vez finalizado el controlador de dispositivo con un bloque de datos, puede limpiar y liberar el bloque de datos.

Grabación de audio MIDI