Compartilhar 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 obter 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 thru. 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 por meio de . Um aplicativo em um sistema desse tipo poderia conectar o dispositivo de entrada MIDI a esse dispositivo por meio de e conectar o dispositivo MIDI por meio de quantos dispositivos de saída MIDI forem necessários. Para obter mais informações sobre drivers, consulte a documentação do driver de dispositivo windows.

Usando mensagens para gerenciar a gravação MIDI

As mensagens a seguir podem ser enviadas para um procedimento de retorno de chamada de janela ou 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. (Essa mensagem é usada para todas as mensagens MIDI, exceto mensagens exclusivas do sistema.)
MM_MIM_ERROR Enviado quando uma mensagem MIDI inválida é recebida. (Essa 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 é 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 um aplicativo não está processando mensagens MIM_DATA rápido o suficiente para acompanhar o driver de 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 MIDIHDR que identifica o buffer para mensagens exclusivas do sistema. O buffer pode não ser completamente preenchido, pois o tamanho das mensagens exclusivas do sistema geralmente não é conhecido antes de ser gravado e porque buffers cujo tamanho total pode conter a maior mensagem esperada devem ser alocados. Para determinar a quantidade de dados válidos presentes no buffer, use o membro dwBytesRecorded da estrutura MIDIHDR .

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

Você pode definir sua própria função de retorno de chamada para gerenciar a gravação para dispositivos de entrada MIDI. A função de retorno de chamada é documentada como MidiInProc.

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

Valor Significado
MIM_CLOSE Enviado quando o dispositivo é fechado usando a função midiInClose .
MIM_DATA Enviado quando uma mensagem MIDI completa é recebida (essa mensagem é usada para todas as mensagens MIDI, exceto mensagens exclusivas do sistema).
MIM_ERROR Enviado quando uma mensagem MIDI inválida é recebida (essa 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 é preenchido com dados exclusivos do sistema.
MIM_LONGERROR Enviado quando uma mensagem exclusiva do sistema MIDI inválida é recebida.
MIM_MOREDATA Enviado quando um aplicativo não está processando mensagens MIM_DATA rápido o suficiente para acompanhar o driver de 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 dos dados de instância que foram passados 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 for concluído com um bloco de dados, você poderá limpo e liberar o bloco de dados.

Gravando áudio MIDI