Differenze tra le versioni di "La gestione dei file audio mediante le funzioni esterne del API di MikMod"

Da Gambas-it.org - Wikipedia.
Riga 4: Riga 4:
  
  
Per poter fruire delle risorse di ''MikMod'' in Gambas è necessario avere installata e richiamare la libreria dinamica condivisa: ''libmikmod.so.2.0.6''
+
Per poter fruire delle risorse di ''MikMod'' in Gambas è necessario avere installata e richiamare la libreria dinamica condivisa: ''libmikmod.so.3.3.0''
  
  
Riga 10: Riga 10:
 
==Riproduzione audio mediante un'applicazione "''a riga di comando''"==
 
==Riproduzione audio mediante un'applicazione "''a riga di comando''"==
 
Mostriamo di seguito un esempio per eseguire un file audio, tra quelli supportati dalla libreria ''MikMod'', mediante un'applicazione ''a riga di comando'':
 
Mostriamo di seguito un esempio per eseguire un file audio, tra quelli supportati dalla libreria ''MikMod'', mediante un'applicazione ''a riga di comando'':
  Library "libmikmod:2.0.6"
+
  Library "libmikmod:3.3.0"
 
   
 
   
 
  <FONT Color=gray>' ''void MikMod_RegisterAllDrivers(void)''
 
  <FONT Color=gray>' ''void MikMod_RegisterAllDrivers(void)''
Riga 90: Riga 90:
 
    
 
    
 
  '''End'''
 
  '''End'''
 
  
  

Versione delle 06:28, 13 lug 2020

Mikmod è una libreria che supporta i seguenti formati audio: mod, s3m, it e xm.

La riproduzione audio avviene un driver audio. MikMod fornisce diversi driver audio e consente di aggiungere e selezionare un proprio driver audio.


Per poter fruire delle risorse di MikMod in Gambas è necessario avere installata e richiamare la libreria dinamica condivisa: libmikmod.so.3.3.0


Riproduzione audio mediante un'applicazione "a riga di comando"

Mostriamo di seguito un esempio per eseguire un file audio, tra quelli supportati dalla libreria MikMod, mediante un'applicazione a riga di comando:

Library "libmikmod:3.3.0"

' void MikMod_RegisterAllDrivers(void)
' Registers all the available drivers.
Private Extern MikMod_RegisterAllDrivers()

' void MikMod_RegisterAllLoaders(void)
' Registers all the available module loaders.
Private Extern MikMod_RegisterAllLoaders()

' int MikMod_Init(const CHAR *parameters)
' Performs the library initialization.
Private Extern MikMod_Init(parameters As String) As Integer

' MODULE* Player_Load(const CHAR* filename, int maxchan, BOOL curious)
' Loads a music module.
Private Extern Player_Load(filename As String, maxchan As Integer, curious As Boolean) As Pointer

' void Player_Start(MODULE* module)
' Starts the specified module playback.
Private Extern Player_Start(module As Pointer)

' BOOL Player_Active(void)
' Returns whether the module player is active or not.
Private Extern Player_Active() As Boolean

' void MikMod_Update(void)
' Updates the sound.
Private Extern MikMod_Update()

' void Player_Stop(void)
' Stops the currently playing module.
Private Extern Player_Stop()

' void Player_Free(MODULE* module)
' Stops the module if it is playing and unloads it from memory.
Private Extern Player_Free(module As Pointer)

' const char* MikMod_strerror(int errnum)
' Associates a descriptive message to an error code.
Private Extern MikMod_strerror(errnum As Integer) As String

' void MikMod_Exit(void)
' Deinitializes the sound hardware and frees all the memory and resources used by MikMod.
Private Extern MikMod_Exit()


Public Sub Main()

 Dim md As Pointer
 Dim err, MikMod_errno As Integer
 
' Registra tutti i driver necessari:
   MikMod_RegisterAllDrivers()
   
' Registra tutti i loader di modulo:
   MikMod_RegisterAllLoaders()
   
' Inizializza la libreria:
   err = MikMod_Init(Null)
   If err Then Error.Raise("Impossibile inizializzare la libreria MikMod: " & MikMod_strerror(MikMod_errno))
   
' Carica il modulo sonoro:
   md = Player_Load("/percorso/del/file/audio", 64, False)
   If IsNull(md) Then Error.Raise("Impossibile caricare il modulo sonoro: " & MikMod_strerror(MikMod_errno))
   
' Avvia il modulo sonoro:
   Player_Start(md)
   
   While Player_Active()
     MikMod_Update()
   Wend
   
   Player_Stop()
   Player_Free(md)
   
' Chiude la libreria:
   MikMod_Exit()
  
End


Riferimenti