Differenze tra le versioni di "Inviare dati grezzi Midi attraverso il subsistema RawMidi"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Il sistema Alsa consente di inviare dati Midi grezzi ad un dispositivo Midi esterno mediante il suo subsistema ''RawMidi''. <FONT color=Red><B>Pagina in costruzione</b></f...')
 
Riga 1: Riga 1:
 +
===Premessa===
 
Il sistema Alsa consente di inviare dati Midi grezzi ad un dispositivo Midi esterno mediante il suo subsistema ''RawMidi''.
 
Il sistema Alsa consente di inviare dati Midi grezzi ad un dispositivo Midi esterno mediante il suo subsistema ''RawMidi''.
 +
 +
Nella elaborazione del codice bisognerà, ovviamente, richiamare la [[Extern:_richiamare_funzioni_esterne_a_Gambas|libreria estrena]] di Alsa, attualmente ''libasound.so.2.0.0'', che in Gambas richiameremo così:
 +
Library "libasound:2"
 +
e conseguentemente dichiarare attraverso la parola ''Extern'' le funzioni di Alsa necessarie.
 +
 +
Per scrivere dati MIDI, è necessario innanzitutto chiamare la funzione
 +
''int snd_rawmidi_open (snd_rawmidi_t **in_rmidi, snd_rawmidi_t **out_rmidi, const char *name, int mode)''
 +
passandogli così il nome dell'hardware della scheda, del dispositivo e del sub-dispositivo desiderato. Quella funzione restituirà un ''handle'' (maniglia) che è possibile utilizzare per chiamare le successive funzioni esterne necessarie di Alsa.
 +
<BR>Detta funzione in Gambas sarà così dichiarata:
 +
Private Extern snd_rawmidi_open(in_rmidi As Pointer, out_rmidi As Pointer, name As String, mode As Integer) As Integer
 +
laddove il parametro ''in_rmidi'', trattandosi in questo caso di <SPAN style="text-decoration:underline">inviare</span> dati Midi, sarà posto a zero.
 +
 +
 +
L'altra funzione esterna essenziale è quella che consentirà di inviare i dati grezzi ad un dispositivo Midi esterno:
 +
ssize_t snd_rawmidi_write(snd_rawmidi_t * rawmidi, const void * buffer, size_t size)
 +
che in Gambas sarà dichiarata così:
 +
Private Extern snd_rawmidi_write(in_rmidi As Pointer, buffer As Pointer, size As Integer) As Integer
 +
A questa funzione esterna si passa l'<I>handle</i>, ricevuto dalla funzione ''snd_rawmidi_open'', l'indirizzo di un buffer contenente alcuni dati MIDI, e la quantità di dati da inviare ogni volta.
 +
  
  

Versione delle 17:26, 13 lug 2013

Premessa

Il sistema Alsa consente di inviare dati Midi grezzi ad un dispositivo Midi esterno mediante il suo subsistema RawMidi.

Nella elaborazione del codice bisognerà, ovviamente, richiamare la libreria estrena di Alsa, attualmente libasound.so.2.0.0, che in Gambas richiameremo così:

Library "libasound:2"

e conseguentemente dichiarare attraverso la parola Extern le funzioni di Alsa necessarie.

Per scrivere dati MIDI, è necessario innanzitutto chiamare la funzione

int snd_rawmidi_open (snd_rawmidi_t **in_rmidi, snd_rawmidi_t **out_rmidi, const char *name, int mode)

passandogli così il nome dell'hardware della scheda, del dispositivo e del sub-dispositivo desiderato. Quella funzione restituirà un handle (maniglia) che è possibile utilizzare per chiamare le successive funzioni esterne necessarie di Alsa.
Detta funzione in Gambas sarà così dichiarata:

Private Extern snd_rawmidi_open(in_rmidi As Pointer, out_rmidi As Pointer, name As String, mode As Integer) As Integer

laddove il parametro in_rmidi, trattandosi in questo caso di inviare dati Midi, sarà posto a zero.


L'altra funzione esterna essenziale è quella che consentirà di inviare i dati grezzi ad un dispositivo Midi esterno:

ssize_t snd_rawmidi_write(snd_rawmidi_t * rawmidi, const void * buffer, size_t size)

che in Gambas sarà dichiarata così:

Private Extern snd_rawmidi_write(in_rmidi As Pointer, buffer As Pointer, size As Integer) As Integer

A questa funzione esterna si passa l'handle, ricevuto dalla funzione snd_rawmidi_open, l'indirizzo di un buffer contenente alcuni dati MIDI, e la quantità di dati da inviare ogni volta.



Pagina in costruzione