Conoscere la durata di un file Midi mediante le funzioni esterne del API di Allegro
Da Gambas-it.org - Wikipedia.
Versione del 6 giu 2024 alle 12:34 di Vuott (Discussione | contributi)
Allegro è una libreria utilizzata nella programmazione dei videogiochi e multimediale.
Attualmente vi sono due versioni della libreria Allegro: la numero 4 e la numero 5. La versione 4 di Allegro è la libreria classica, la cui API è compatibile con le versioni precedenti, anche se però non è ormai più svilupata. Essa è capace di gestire anche il Midi.
Per poter fruire delle risorse della versione 4 di Allegro, dovremo usare nelle applicazioni Gambas la libreria condivisa: "liballeg.so.4.4.2 ".
Mostriamo di seguito un possibile codice per conoscere semplicemente la durata di un file Midi:
Library "liballeg:4.4.2" Private Const SYSTEM_AUTODETECT As Integer = 0 ' int install_allegro(int system_id, int *errno_ptr, int (*atexit_ptr)()) ' Initialises the Allegro library. Private Extern install_allegro(system_id As Integer, errno_ptr As Pointer, atexit_ptr As Pointer) ' int load_midi_patches() ' Forces the MIDI driver to load the entire set of patches ready for use. ' Returns non-zero if an error occurred. Private Extern load_midi_patches() As Integer ' int, get_midi_length, (MIDI *midi)) ' Determines the total playing time of a midi, in seconds. Private Extern get_midi_length(midP As Pointer) As Integer ' void destroy_midi(MIDI *midi) ' Destroys a MIDI structure when you are done with it. Private Extern destroy_midi(midP As Pointer) ' void allegro_exit() ' Closes down the Allegro system. Private Extern allegro_exit() Public Sub Main() Dim errP, midi As Pointer Dim fileMidi As String = "/percorso/del/file.mid" install_allegro(SYSTEM_AUTODETECT, errP, 0) midi = load_midi(fileMidi) Print "File Midi: "; File.Name(fileMidi) Print "Dimensione del file: "; Stat(fileMidi).Size; " byte" Print "Durata del brano Midi: "; Time(0, 0, 0, get_midi_length(midi) * 1000) ' Va in chiusura: destroy_midi(midi) allegro_exit() End