|
|
(2 versioni intermedie di uno stesso utente non sono mostrate) |
Riga 1: |
Riga 1: |
− | E' possibile ottenere da Alsa alcune informazioni di carattere generale riguardo ai Client, alle Porte e ad altro.
| + | #REDIRECT [[Alsa_e_Gambas:_Ottenere_informazioni_da_ALSA]] |
− | | |
− | Per raccogliere tali informazioni, si adopereranno, ovviamente, diverse funzioni di Alsa.
| |
− | | |
− | | |
− | ==Dimensione del ''buffer'' di uscita degli eventi Midi Alsa==
| |
− | Innanzitutto, possiamo conoscere la dimensione in byte del ''buffer'' di uscita degli eventi Midi Alsa con la seguente funzione:
| |
− | size_t snd_seq_get_output_buffer_size(snd_seq_t * seq)
| |
− | che dichiareremo in Gambas nel modo seguente:
| |
− | <FONT color=#B22222>Private Extern snd_seq_get_output_buffer_size(seq As Pointer) As Integer</font>
| |
− | Tale funzione esterna ritorna un intero che è appunto la dimensione in byte del ''buffer''.
| |
− | | |
− | | |
− | ==Dimensione del ''buffer'' di entrata degli eventi Midi Alsa==
| |
− | size_t snd_seq_get_input_buffer_size(snd_seq_t * seq)
| |
− | che dichiareremo in Gambas nel modo seguente:
| |
− | <FONT color=#B22222>Private Extern snd_seq_get_input_buffer_size(seq As Pointer) As Integer</font>
| |
− | Tale funzione esterna ritorna un intero che è appunto la dimensione in byte del ''buffer''.
| |
− | | |
− | | |
− | ==Informazioni generali su ''Client'', ''Porte'' ed altro==
| |
− | Si potranno ottenere altre informazioni generali, ma bisognerà raccoglierle da Alsa innanzitutto richiamando la funzione esterna
| |
− | int snd_seq_system_info(snd_seq_t * seq, snd_seq_system_info_t * info)
| |
− | laddove in particolare la variabile ''info'' è un puntatore ad una ''Struttura''. Utilizzeremo, dunque, anche noi una ''Struttura'', formata da 6 elementi tutti di tipo Integer.
| |
− | Dichiareremo in Gambas questa funzione esterna nel modo seguente:
| |
− | <FONT color=#006400>' ''Ovviamente avremo dapprima dichiarato anche una "Struttura" (che qui chiameremo "infStrutt")''
| |
− | ' ''ed una corrispondente variabile (che chiameremo "info" e che ritroveremo nei paragrafi seguenti di questa pagina) del tipo di quella "Struttura"''</font>
| |
− |
| |
− | <FONT color=#B22222>Private Extern snd_seq_system_info(seq As Pointer, info As infStrutt) As Integer</font>
| |
− | Tale funzione esterna ritorna un intero che se è uguale a zero la chiamata ha avuto successo.
| |
− | <BR>Come già detto, con questa funzione si ottengono informazioni di sistema del sequencer di Alsa.
| |
− | | |
− | | |
− | ===Numero massimo di Canali===
| |
− | int snd_seq_system_info_get_channels(snd_seq_system_info_t * info)
| |
− | che dichiareremo in Gambas nel modo seguente:
| |
− | <FONT color=#B22222>Private Extern snd_seq_system_info_get_channels(info As infStrutt) As Integer</font>
| |
− | Tale funzione esterna ritorna il numero massimo di canali disponibili.
| |
− | | |
− | | |
− | ===Numero massimo di ''Client''===
| |
− | int snd_seq_system_info_get_clients(snd_seq_system_info_t * info)
| |
− | che dichiareremo in Gambas nel modo seguente:
| |
− | <FONT color=#B22222>Private Extern snd_seq_system_info_get_clients(info As infStrutt) As Integer</font>
| |
− | Tale funzione esterna ritorna il numero massimo di ''Client'' creabili.
| |
− | | |
− | | |
− | ===Numero massimo di Porte===
| |
− | int snd_seq_system_info_get_ports(snd_seq_system_info_t * info)
| |
− | che dichiareremo in Gambas nel modo seguente:
| |
− | <FONT color=#B22222>Private Extern snd_seq_system_info_get_ports(info As infStrutt) As Integer</font>
| |
− | Tale funzione esterna ritorna il numero massimo di porte creabili.
| |
− | | |
− | | |
− | ===Numero attuale di ''Client'' creati===
| |
− | int snd_seq_system_info_get_cur_clients(snd_seq_system_info_t * info)
| |
− | che dichiareremo in Gambas nel modo seguente:
| |
− | <FONT color=#B22222>Private Extern snd_seq_system_info_get_cur_clients(info As infStrutt) As Integer</font>
| |
− | Tale funzione esterna ritorna il numero di ''Client'' di Alsa in quel momento creati ed attivi.
| |
− | | |
− | | |
− | ===Numero massimo di ''code'' creabili===
| |
− | int snd_seq_system_info_get_queues(snd_seq_system_info_t * info)
| |
− | che dichiareremo in Gambas nel modo seguente:
| |
− | <FONT color=#B22222>Private Extern snd_seq_system_info_get_queues(info As infStrutt) As Integer</font>
| |
− | Tale funzione esterna ritorna il numero massimo di ''code'' (''queue'') di eventi Midi Alsa creabili.
| |
− | | |
− | | |
− | ===Numero attuale di ''code'' di eventi Midi Alsa create===
| |
− | int snd_seq_system_info_get_cur_queues(snd_seq_system_info_t * info)
| |
− | che dichiareremo in Gambas nel modo seguente:
| |
− | <FONT color=#B22222>Private Extern snd_seq_system_info_get_cur_queues(info As infStrutt) As Integer</font>
| |
− | Tale funzione esterna ritorna il numero di ''code'' di eventi Midi Alsa in quel momento create.
| |
− | | |
− | | |
− | ===Dimensione del contenitore delle informazioni===
| |
− | size_t snd_seq_system_info_sizeof(void)
| |
− | che dichiareremo in Gambas nel modo seguente:
| |
− | <FONT color=#B22222>Private Extern snd_seq_system_info_sizeof() As Integer</font>
| |
− | Tale funzione esterna ritorna un intero che è appunto la dimensione in byte del contenitore delle informazioni raccolte.
| |
− | | |
− | | |
− | ===Alternativa alle funzioni esterne===
| |
− | In alternativa all'uso di queste funzioni esterne, è possibile - mediante la gestione della variabile del tipo della ''Struttura'' dichiarata - richiamare i vari campi della ''Struttura'' medesima contenenti i diversi valori sopra esposti.
| |