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.
Tópicos relacionados