Você está aqui: C++ ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Aprenda a usar a função midiOutOpen() do Windows para abrir o dispositivo de saída MIDIQuantidade de visualizações: 1286 vezes |
Antes de tocarmos uma nota MIDI ou até mesmo um grupo de eventos MIDI, precisamos entender como abrir o dispositivo de saída MIDI. Para isso podemos usar a função midiOutOpen() da API do Windows. Essa função possui a seguinte assinatura:MMRESULT midiOutOpen( LPHMIDIOUT phmo, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen ); O parâmetro LPHMIDIOUT aponta para um handle do tipo HMIDIOUT, o qual nos permite identificar o dispositivo MIDI aberto. O parâmetro uDeviceID identifica a saída MIDI que vai ser aberta. O parâmetro dwCallback representa uma função de callback ou um gerenciador de eventos. O parâmtro dwInstance representa dados de instância do usuário para a função de callback. O parâmetro fdwOpen é uma flag de callback para abrir o dispositivo. Os valores válidos são: CALLBACK_EVENT, CALLBACK_FUNCTION, CALLBACK_NULL, CALLBACK_THREAD e CALLBACK_WINDOW. Veja um trecho de código no qual usamos a função midiOutOpen() para abrir o dispositivo de saída MIDI e então usamos midiOutClose() para fechá-lo. Não se esqueça que você precisa do Windows SDK instalado. Para este exemplo eu usei o Visual Studio 2017 (com a biblioteca winmm.lib referenciada nas dependências adicionais de entrada do veiculador - linker). #include <cstdlib> #include <iostream> #include <windows.h> using namespace std; int main(int argc, char *argv[]) { unsigned int erro; // guarda o erro caso algo dê errado HMIDIOUT saida; // handle para o dispositivo de saída MIDI. // vamos abrir o dispositivo de saída MIDI erro = midiOutOpen(&saida, MIDI_MAPPER, 0, 0, CALLBACK_NULL); if (erro != MMSYSERR_NOERROR) { printf("Não foi possível abrir o mapeador MIDI: %d\n", erro); } else { printf("Mapeador MIDI aberto com sucesso\n"); } // agora vamos fechar o dispositivo de saída MIDI midiOutClose(saida); system("PAUSE"); return EXIT_SUCCESS; } Veja que aqui eu forneci o valor MIDI_MAPPER para o parâmetro uDeviceID. MIDI_MAPPER representa o dispositivo padrão. Porém, se você tiver mais de um dispositivo de saída MIDI instalado, poderá referenciá-los pelos valores 0, 1, 2, 3, etc. Execute o código e veja o resultado. Se você vir a mensagem "Mapeador MIDI aberto com sucesso" então seu dispositivo de saída MIDI foi acessado e está pronto para receber mensagens. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |