Differenze tra le versioni di "La gestione mediante le funzioni esterne del API di Canberra"

Da Gambas-it.org - Wikipedia.
Riga 10: Riga 10:
 
Mostriamo di seguito un semplice codice per l'esecuzione di file audio ''wav'' e ''ogg'':
 
Mostriamo di seguito un semplice codice per l'esecuzione di file audio ''wav'' e ''ogg'':
 
  '''Private''' Const CA_PROP_MEDIA_FILENAME As String = "media.filename"
 
  '''Private''' Const CA_PROP_MEDIA_FILENAME As String = "media.filename"
 +
'''Private''' ca As Pointer
 
   
 
   
 
   
 
   
Riga 37: Riga 38:
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
  Dim ca As Pointer
 
 
   Dim err As Integer
 
   Dim err As Integer
 
   Dim nomefile As String = "/percorso/del/file/audio"
 
   Dim nomefile As String = "/percorso/del/file/audio"

Versione delle 20:37, 13 set 2013

Canberra è una libreria che mette a disposizione funzioni e risorse utilizzate principalmente per l'esecuzione di suoni nel caso vengano sollevati eventi (click, avvio di programma, chiusura di finestre ed applicazioni, etc). Per questa ragione è progettata per eseguire file non eccessivamente grandi, aventi dimensioni non superiori a circa 65 Mbyte.
Un suono-evento viene attivato tramite libcanberra chiamando la funzione ca_context_play () su un oggetto ca_context creato in precedenza.

I formati di file audio supportati sono soltanto: .wav e .ogg .


Per utilizzare le risorse di Canberra nella propria applicazione, si dovrà richiamare l'attuale libreria libcanberra.so.0.2.5.


Mostriamo di seguito un semplice codice per l'esecuzione di file audio wav e ogg:

Private Const CA_PROP_MEDIA_FILENAME As String = "media.filename"
Private ca As Pointer


Library "libcanberra:0.2.5"

' int ca_context_create (ca_context **c)
' Create an (unconnected) context object.
Private Extern ca_context_create(c As Pointer) As Integer

' const char * ca_strerror (int code)
' Converts a numerical error code as returned by most libcanberra API functions into a human readable error string.
Private Extern ca_strerror(code As Integer) As String

' int ca_context_open (ca_context *c)
' Connect the context to the sound system.
Private Extern ca_context_open(c As Pointer) As Integer

' int ca_context_play (ca_context *c, uint32_t id, ...)
' Play one event sound
Private Extern ca_context_play(c As Pointer, id As Integer, cpmf As String, sfile As String, nl As String) As Integer

' int ca_context_destroy (ca_context *c)
' Destroy a (connected or unconnected) context object.
Private Extern ca_context_destroy(c As Pointer) As Integer


Public Sub Button1_Click()

 Dim err As Integer
 Dim nomefile As String = "/percorso/del/file/audio"


   err = ca_context_create(VarPtr(ca))
   If err < 0 Then Error.Raise("Impossibile creare un contesto media: " & ca_strerror(err))
   
   err = ca_context_open(ca)
   If err < 0 Then Error.Raise("Impossibile aprire un contesto media: " & ca_strerror(err))
   
   err = ca_context_play(ca, 0, CA_PROP_MEDIA_FILENAME, nomefile, Null)
   If err < 0 Then Error.Raise("Impossibile eseguire il file audio: " & ca_strerror(err))

End


Public Sub Button2_Click()

 Dim err As Integer

' Arresta l'esecusione del file audio, e cancella il contesto media:
   err = ca_context_destroy(ca)
   If err < 0 Then Error.Raise("Impossibile arrestare il file audio: " & ca_strerror(err))

End




Riferimenti