Ricevere dati grezzi Midi attraverso il subsistema RawMidi
Da Gambas-it.org - Wikipedia.
Versione del 12 lug 2013 alle 19:11 di Vuott (Discussione | contributi) (Creata pagina con 'Vediamo un esempio molto semplice per ricevere dati grezzi Midi attraverso il sibsistema '''RawMidi''' di Alsa. Library "libasound:2" <Font color=gray>' ''nt snd_rawmidi_o...')
Vediamo un esempio molto semplice per ricevere dati grezzi Midi attraverso il sibsistema RawMidi di Alsa.
Library "libasound:2" ' nt snd_rawmidi_open (snd_rawmidi_t **in_rmidi, snd_rawmidi_t **out_rmidi, const char *name, int mode) --> Apre una nuova connessione al'interfaccia "RawMidi" Private Extern snd_rawmidi_open(in_rmidi As Pointer, out_rmidi As Pointer, name As String, mode As Integer) As Integer ' ssize_t snd_rawmidi_read (snd_rawmidi_t *rmidi, void *buffer, size_t size) --> Legge dati Midi grezzi da un flusso Midi Private Extern snd_rawmidi_read(in_rmidi As Pointer, buffer As Pointer, size As Integer) As Integer ' const char * snd_strerror (int errnum) --> Ritorna il messaggio per un codice Errore Private Extern snd_strerror(errore As Integer) As String Public Sub Form_Open() Dim err As Integer Dim SND_RAWMIDI_SYNC As Integer = 4 ' 0x0004 -> Flag per la modalità di apertura: "Write sync mode" Dim EAGAIN As Integer = 11 ' Try again Dim midiin, buffer, status As Pointer Dim nome_porta As String = "hw:2,0,0" Dim bufStr As Stream Dim dato As Byte err = snd_rawmidi_open(VarPtr(midiin), Null, nome_porta, SND_RAWMIDI_SYNC) If err < 0 Then Error("Impossibile aprire il MIDI input: %s", snd_strerror(err)) buffer = Alloc(SizeOf(gb.Byte)) bufStr = Memory buffer For Read While (err <> - EAGAIN) err = snd_rawmidi_read(midiin, buffer, 1) If err < 0 Then Error("Impossibile leggere dal MIDI input: %s", snd_strerror(err)) Else If err >= 0 Then Seek #bufStr, 0 Read #bufStr, dato ' Vediamo in console i dati Midi grezzi ricevuti (compreso in questo caso il dato relativo all'evento "Active Sensing": Print dato Endif Endif Wend End
Pagina in costruzione !