La gestione dei file audio mediante le funzioni esterne del API di MikMod
Da Gambas-it.org - Wikipedia.
Versione del 14 ott 2015 alle 09:33 di Vuott (Discussione | contributi) (Creata pagina con "'''Mikmod''' è una libreria che supporta i seguenti formati audio: ''mod'', ''s3m'', ''it'' e ''xm''. La riproduzione audio avviene un driver audio. ''MikMod'' fornisce dive...")
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.2.0.6
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:2.0.6" ' 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