Originariamente inviato da MItaly
1. Dipende dal parametro della midiOutOpen, di cui trovi la documentazione su MSDN.
2. Ma scusa, se devi
ricevere input da tastiera devi aprire una porta MIDI in input, non in output, quindi si usa midiInOpen specificando un callback, che viene richiamato ad ogni evento MIDI. A questo punto, dal callback, è immediato stampare gli eventi che arrivano.
Per un caso strano, ai tempi dei tempi avevo scritto un programmino che faceva esattamente questo mestiere (e, oltre a rimanere in ascolto su un'interfaccia MIDI, re-inviava ogni evento alla periferica MIDI di output predefinita); è roba che ho scritto a 15 anni per cui la qualità del codice è quella che è, comunque si vede abbastanza bene un utilizzo "di base" delle funzioni MIDI di Windows;
qui lo zip.
Ovviamente, però, per capire di cosa si parla devi leggerti la documentazione delle funzioni usate, altrimenti è un programmare "a caso"/copiando da codice già scritto, che è una pessima idea sia dal punto di vista educativo (=non impari niente), che da quello del risultato (=scrivi programmi che vanno una volta su tre

). Trovi tutta la documentazione in questione
qui.