<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://www.gambas-it.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Introduzione_al_subsistema_RawMidi</id>
	<title>Introduzione al subsistema RawMidi - Cronologia</title>
	<link rel="self" type="application/atom+xml" href="https://www.gambas-it.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Introduzione_al_subsistema_RawMidi"/>
	<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Introduzione_al_subsistema_RawMidi&amp;action=history"/>
	<updated>2026-10-23T06:30:43Z</updated>
	<subtitle>Cronologia della pagina su questo sito</subtitle>
	<generator>MediaWiki 1.39.15</generator>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Introduzione_al_subsistema_RawMidi&amp;diff=13373&amp;oldid=prev</id>
		<title>Vuott: Creata pagina con '==Introduzione== Il sistema Alsa consente di gestire mediante il suo subsistema ''RawMidi'' dati Midi puri, grezzi, privi di temporizzazione e semplicemente strutturati second...'</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Introduzione_al_subsistema_RawMidi&amp;diff=13373&amp;oldid=prev"/>
		<updated>2013-07-15T14:27:21Z</updated>

		<summary type="html">&lt;p&gt;Creata pagina con &amp;#039;==Introduzione== Il sistema Alsa consente di gestire mediante il suo subsistema &amp;#039;&amp;#039;RawMidi&amp;#039;&amp;#039; dati Midi puri, grezzi, privi di temporizzazione e semplicemente strutturati second...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Introduzione==&lt;br /&gt;
Il sistema Alsa consente di gestire mediante il suo subsistema ''RawMidi'' dati Midi puri, grezzi, privi di temporizzazione e semplicemente strutturati secondo il protocollo Midi, sia in entrata che in uscita da/verso un dispositivo Midi esterno (ad esempio una tastiera).&lt;br /&gt;
&lt;br /&gt;
In particolare l'interfaccia ''RawMidi'' permette di accedere al ''[http://it.wikipedia.org/wiki/Bus_%28informatica%29 bus]'' Midi della scheda audio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==La Libreria Alsa==&lt;br /&gt;
Per poter utilizzare le funzioni dell'[http://it.wikipedia.org/wiki/Application_programming_interface API] di Alsa, è necessario [[Extern:_richiamare_funzioni_esterne_a_Gambas|individuare la Libreria]] contenente tali funzioni.&lt;br /&gt;
&amp;lt;BR&amp;gt;Attualmente la libreria condivisa .so accessibile di Alsa è ''libasound.so.2.0.0'', che in Gambas richiameremo così:&lt;br /&gt;
 Library &amp;quot;libasound:2&amp;quot;&lt;br /&gt;
e conseguentemente dichiarare attraverso la parola Extern le funzioni di Alsa necessarie. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aprire una connessione con il subsistema ''RawMidi''==&lt;br /&gt;
L'operazione essenziale e basilare, che deve essere svolta, è quella di aprire la connessione con l'interfaccia ''RawMidi'' di Alsa attraverso un ''handle'', (''maniglia''), per poter successivamente instaurare ogni altro rapporto.&lt;br /&gt;
&amp;lt;BR&amp;gt;La funzione esterna adatta per la creazione di questo ''handle'' è:&lt;br /&gt;
 ''int snd_rawmidi_open (snd_rawmidi_t **in_rmidi, snd_rawmidi_t **out_rmidi, const char *name, int mode)''&lt;br /&gt;
laddove:&lt;br /&gt;
* ''**in_rmidi'': è una variabile di tipo ''puntatore'' che rappresenta l'&amp;lt;I&amp;gt;handle&amp;lt;/i&amp;gt; del subsistema ''RawMidi'' per la lettura dei dati Midi in entrata. Se l'apertura sarà in scrittura, questo parametro andrà posto a ''Null'';&lt;br /&gt;
* ''**out_rmidi'': è una variabile di tipo ''puntatore'' che rappresenta l'&amp;lt;I&amp;gt;handle&amp;lt;/i&amp;gt; del subsistema ''RawMidi'' per la scrittura dei dati Midi in uscita. Se l'apertura sarà in lettura, questo parametro andrà posto a ''Null'');&lt;br /&gt;
* ''*name'': è una variabile di tipo ''stringa'' che rappresenta il nome dell'&amp;lt;I&amp;gt;handle&amp;lt;/i&amp;gt; dell'interfaccia ''RawMidi''. Esso è sostanzialmente composto dall'identificativo della scheda audio (''Card''), del dispositivo Midi (''Device'') e del sottodispositivo (''Subdevice''), ad esempio: ''hw:2,0,0''. L'individuazione esatta di questa stringa potrà essere effettuata agevolmente, dopo aver connesso il dispositivo Midi esterno al calcolatore, osservando la denominazione del file-device ''/dev/snd/midiCnDn'', dove ''Cn'' è il numero identificativo della Scheda audio e ''Cn'' è il numero identificativo del dispositivo virtuale;&lt;br /&gt;
* ''mode'': è un ''flag'' che rappresenta la modalità di apertura dell'interfaccia ''RawMidi''.   |[[#Note|1]]|&lt;br /&gt;
&amp;lt;BR&amp;gt;Questa funzione basilare in Gambas potrà essere così dichiarata:&lt;br /&gt;
 Private Extern snd_rawmidi_open(in_rmidi As Pointer, out_rmidi As Pointer, name As String, mode As Integer) As Integer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
[1] Oltre al valore zero, ne sono previsti anche altri più specifici, così spiegati dalla documentazione tratta da internet (Craig Stuart Sapp):&lt;br /&gt;
&amp;lt;BR&amp;gt;« ''Using SND_RAWMIDI_NONBLOCK flag for snd_rawmidi_open() or snd_rawmidi_open_lconf() instruct device driver to return the -EBUSY error when device is already occupied with another application. This flag also changes behaviour of snd_rawmidi_write() and snd_rawmidi_read() returning -EAGAIN when no more bytes can be processed.''&lt;br /&gt;
&amp;lt;BR&amp;gt;''Using SND_RAWMIDI_APPEND flag (output only) instruct device driver to append contents of written buffer - passed by snd_rawmidi_write() - atomically to output ring buffer in the kernel space. This flag also means that the device is not opened exclusively, so more applications can share given rawmidi device. Note that applications must send the whole MIDI message including the running status, because another writting application might break the MIDI message in the output buffer.''&lt;br /&gt;
&amp;lt;BR&amp;gt;''Using SND_RAWMIDI_SYNC flag (output only) assures that the contents of output buffer specified using snd_rawmidi_write() is always drained before the function exits. This behaviour is the same as snd_rawmidi_write() followed immediately by snd_rawmidi_drain().'' »&lt;/div&gt;</summary>
		<author><name>Vuott</name></author>
	</entry>
</feed>