Partilhar via


Gerenciando MIDI Thru

Você pode conectar um dispositivo de entrada MIDI diretamente a um dispositivo de saída MIDI para que, quando o dispositivo de entrada receber uma mensagem MIM_DATA, o sistema envie uma mensagem com os mesmos dados de evento MIDI para o driver de dispositivo de saída. Para conectar um dispositivo de saída MIDI a um dispositivo de entrada MIDI, use a função midiConnect.

Para alcançar o melhor desempenho possível com várias saídas, um aplicativo pode optar por fornecer uma forma especial de driver de saída MIDI, chamado de driver através. Embora o sistema permita que apenas um dispositivo de saída MIDI seja conectado a um dispositivo de entrada MIDI, vários dispositivos de saída MIDI podem ser conectados a um driver de passagem. Uma aplicação em tal sistema poderia conectar o dispositivo de entrada MIDI a este dispositivo MIDI thru e conectar o dispositivo MIDI thru a tantos dispositivos de saída MIDI quanto necessário. Para obter mais informações sobre os drivers "thru", consulte a documentação sobre drivers de dispositivos do Windows.

Usando mensagens para gerenciar a gravação MIDI

As mensagens a seguir podem ser enviadas para uma janela ou procedimento de retorno de chamada de thread para gerenciar a gravação MIDI.

Valor Significado
MM_MIM_CLOSE Enviado quando um dispositivo de entrada MIDI é fechado usando a função midiInClose.
MM_MIM_DATA Enviado quando uma mensagem MIDI completa é recebida. (Esta mensagem é usada para todas as mensagens MIDI, exceto mensagens exclusivas do sistema.)
MM_MIM_ERROR Enviado quando uma mensagem MIDI inválida é recebida. (Esta mensagem é usada para todas as mensagens MIDI, exceto mensagens exclusivas do sistema.)
MM_MIM_LONGDATA Enviado quando uma mensagem completa exclusiva do sistema MIDI é recebida ou quando um buffer foi preenchido com dados exclusivos do sistema.
MM_MIM_LONGERROR Enviado quando uma mensagem exclusiva do sistema MIDI inválida é recebida.
MM_MIM_MOREDATA Enviado quando uma aplicação não está a processar as mensagens MIM_DATA com rapidez suficiente para corresponder ao driver do dispositivo de entrada.
MM_MIM_OPEN Enviado quando um dispositivo de entrada MIDI é aberto usando a função midiInOpen.

 

Um parâmetro wParam e um parâmetro lParam estão associados a cada uma dessas mensagens. O parâmetro wParam sempre especifica o identificador de um dispositivo MIDI aberto. O parâmetro lParam não é usado para as mensagens MM_MIM_CLOSE e MM_MIM_OPEN.

Para a mensagem MM_MIM_LONGDATA, lpMidiHdr especifica um endereço de uma estrutura de MIDIHDR que identifica o buffer para mensagens exclusivas do sistema. O buffer pode não estar completamente preenchido, porque o tamanho das mensagens exclusivas do sistema geralmente não é conhecido antes de ser gravado e porque os buffers cujo tamanho total pode conter a maior mensagem esperada devem ser alocados. Para determinar a quantidade de dados válidos presentes no buffer, utilize o membro dwBytesRecorded da estrutura MIDIHDR.

Usando uma função de retorno de chamada para gerenciar a gravação MIDI

Pode definir a sua própria função de call back para gerir a gravação para dispositivos de entrada MIDI. A função callback está documentada como MidiInProc.

As mensagens a seguir podem ser enviadas para o parâmetro wMsg da função de retorno de chamada do MidiInProc.

Valor Significado
MIM_CLOSE Enviado quando o dispositivo é fechado usando a função midiInClose.
MIM_DATA Enviado quando uma mensagem MIDI completa é recebida (esta mensagem é usada para todas as mensagens MIDI, exceto mensagens exclusivas do sistema).
MIM_ERROR Enviado quando uma mensagem MIDI inválida é recebida (esta mensagem é usada para todas as mensagens MIDI, exceto mensagens exclusivas do sistema).
MIM_LONGDATA Enviado quando uma mensagem completa exclusiva do sistema MIDI é recebida ou quando um buffer foi preenchido com dados exclusivos do sistema.
MIM_LONGERROR Enviado quando uma mensagem exclusiva do sistema MIDI inválida é recebida.
MIM_MOREDATA Enviado quando uma aplicação não está a processar mensagens MIM_DATA suficientemente rápido para acompanhar o driver do dispositivo de entrada.
MIM_OPEN Enviado quando o dispositivo de entrada MIDI é aberto usando a função midiInOpen.

 

Essas mensagens são semelhantes às enviadas para funções de procedimento de janela, mas os parâmetros são diferentes. Um identificador do dispositivo MIDI aberto é passado como um parâmetro para a função de retorno de chamada, juntamente com a palavra dupla de dados de instância que foi passada usando midiInOpen.

Para a mensagem MIM_LONGDATA, lpMidiHdr especifica um endereço de uma estrutura MIDIHDR que identifica o buffer para mensagens exclusivas do sistema. O buffer pode não estar completamente preenchido. Para determinar a quantidade de dados válidos presentes no buffer, use o membro dwBytesRecorded da estrutura MIDIHDR.

Depois que o driver de dispositivo terminar com um bloco de dados, você poderá limpar e liberar o bloco de dados.

Gravação de áudio MIDI