Differenze tra le versioni di "Conoscere la durata di un file Midi mediante le funzioni esterne del API di WildMidi"

Da Gambas-it.org - Wikipedia.
 
(7 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
La libreria '''WildMidi'' consente, fra l'altro, di conoscere (anche se talvolta in modo approssimativo) la durata di un file Midi.
+
La libreria ''WildMidi'' consente, fra l'altro, di conoscere (anche se talvolta in modo approssimativo) la durata di un file Midi.
  
 
+
Per poter fruire in Gambas delle risorse dell'API di ''WildMidi'', è necessario avere installata e richiamare la libreria dinamica condivisa: "''libWildMidi.so.2.1.0''"
Per poter fruire in Gambas delle risorse dell'API di ''WildMidi'', è necessario avere installata e richiamare la libreria dinamica condivisa: "''libWildMidi.so.1.0.2''"
 
  
 
Poiché per inizializzare l'interfaccia di ''WildMidi'' è necessario richiamare un file (''freepats.cfg'' oppure ''wildmidi.cfg'') di configurazione dei campioni audio degli strumenti musicali, qualora non sia presente alcuno dei due file ''patch'' nel nostro sistema, ne verrà creato uno fittizio, primo di dati al suo interno. Sarà ugualmente accettato dalla funzione esterna ''WildMidi_Init()'', alla quale dovrà essere passato nel suo secondo argomento.
 
Poiché per inizializzare l'interfaccia di ''WildMidi'' è necessario richiamare un file (''freepats.cfg'' oppure ''wildmidi.cfg'') di configurazione dei campioni audio degli strumenti musicali, qualora non sia presente alcuno dei due file ''patch'' nel nostro sistema, ne verrà creato uno fittizio, primo di dati al suo interno. Sarà ugualmente accettato dalla funzione esterna ''WildMidi_Init()'', alla quale dovrà essere passato nel suo secondo argomento.
  
 
Mostriamo un semplice esempio:
 
Mostriamo un semplice esempio:
  Library "libWildMidi:1.0.2"
+
  Library "libWildMidi:2.1.0"
 
   
 
   
 
  Public Struct _WM_Info
 
  Public Struct _WM_Info
 
   copyright As Pointer
 
   copyright As Pointer
   current_sample As Long
+
   current_sample As Integer
   approx_total_samples As Long
+
   approx_total_samples As Integer
 
   mixer_options As Short
 
   mixer_options As Short
 +
  total_midi_time As Integer
 
  End Struct
 
  End Struct
 
   
 
   
  <FONT Color=gray>' ''WildMidi_Init  (const char *config_file, unsigned short int rate, unsigned short int options):''
+
  <FONT Color=gray>' ''int WildMidi_Init  (const char *config_file, unsigned short int rate, unsigned short int options):''
 
  ' ''Intializes "libWildMidi" in preparation for playback.''</font>
 
  ' ''Intializes "libWildMidi" in preparation for playback.''</font>
 
  Private Extern WildMidi_Init(config_file As String, rate As Short, options As Short) As Integer
 
  Private Extern WildMidi_Init(config_file As String, rate As Short, options As Short) As Integer
Riga 27: Riga 27:
 
  ' ''Get information on a midi.''</font>
 
  ' ''Get information on a midi.''</font>
 
  Private Extern WildMidi_GetInfo(handle As Pointer) As _WM_Info
 
  Private Extern WildMidi_GetInfo(handle As Pointer) As _WM_Info
 +
 +
<FONT Color=gray>' ''void WildMidi_Shutdown(void)''
 +
' ''Shuts  down  the wildmidi library, resetting data and freeing up memory used by the library.''</font>
 +
Private Extern WildMidi_Shutdown()
 
   
 
   
 
   
 
   
Riga 32: Riga 36:
 
    
 
    
 
   Dim frequenza, err As Integer
 
   Dim frequenza, err As Integer
   Dim info As New _WM_Info
+
   Dim info As _WM_Info
 
   Dim midi As Pointer
 
   Dim midi As Pointer
 
    
 
    
  <FONT Color=gray>' ''Crea un file fittizio di impostazione di campioni audio degli strumenti musicali,''
+
  <FONT Color=gray>' '''''Crea un file fittizio di impostazione di campioni audio degli strumenti musicali, per poter inizializzare comunque la libreria "libWildMidi"''':''</font>
' ''per poter inizializzare comunque la libreria "libWildMidi":''</font>
+
  File.Save("/tmp/freepats.cfg", Null)
  File.Save("/tmp/freepats.cfg", Null)
 
 
    
 
    
  frequenza = 44100
+
  frequenza = 44100
 
    
 
    
  err = WildMidi_Init("/tmp/freepats.cfg", frequenza, 0)
+
  err = WildMidi_Init("/tmp/freepats.cfg", frequenza, 0)
  If err < 0 Then Error.Raise("Errore nell'inizializzazione della libreria 'libWildMidi' !")
+
  If err < 0 Then Error.Raise("Impossibile inizializzare la libreria 'libWildMidi' !")
 
    
 
    
  midi = WildMidi_Open("<FONT Color=gray>''/percorso/del/file.mid''</font>")
+
  midi = WildMidi_Open("<FONT Color=gray>''/percorso/del/file.mid''</font>")
 
    
 
    
  info = WildMidi_GetInfo(midi)
+
  info = WildMidi_GetInfo(midi)
 
    
 
    
  Print "Durata del file Midi: ", Date(0, 0, 0, 0, 0, 0, (info.approx_total_samples / frequenza) * 1000)
+
  Print "Durata del file Midi: \e[31m", Time(0, 0, 0, (info.total_midi_time)
 +
 
 +
  WildMidi_Shutdown()
 
    
 
    
 
  '''End'''
 
  '''End'''
 
  
  

Versione attuale delle 17:53, 12 giu 2021

La libreria WildMidi consente, fra l'altro, di conoscere (anche se talvolta in modo approssimativo) la durata di un file Midi.

Per poter fruire in Gambas delle risorse dell'API di WildMidi, è necessario avere installata e richiamare la libreria dinamica condivisa: "libWildMidi.so.2.1.0"

Poiché per inizializzare l'interfaccia di WildMidi è necessario richiamare un file (freepats.cfg oppure wildmidi.cfg) di configurazione dei campioni audio degli strumenti musicali, qualora non sia presente alcuno dei due file patch nel nostro sistema, ne verrà creato uno fittizio, primo di dati al suo interno. Sarà ugualmente accettato dalla funzione esterna WildMidi_Init(), alla quale dovrà essere passato nel suo secondo argomento.

Mostriamo un semplice esempio:

Library "libWildMidi:2.1.0"

Public Struct _WM_Info
  copyright As Pointer
  current_sample As Integer
  approx_total_samples As Integer
  mixer_options As Short
  total_midi_time As Integer
End Struct

' int WildMidi_Init  (const char *config_file, unsigned short int rate, unsigned short int options):
' Intializes "libWildMidi" in preparation for playback.
Private Extern WildMidi_Init(config_file As String, rate As Short, options As Short) As Integer

' midi *WildMidi_Open (const char *midifile)
' Open  a MIDI file pointed to by midifile for processing.
Private Extern WildMidi_Open(midifile As String) As Pointer

' struct _WM_Info * WildMidi_GetInfo (midi *handle)
' Get information on a midi.
Private Extern WildMidi_GetInfo(handle As Pointer) As _WM_Info

' void WildMidi_Shutdown(void)
' Shuts  down  the wildmidi library, resetting data and freeing up memory used by the library.
Private Extern WildMidi_Shutdown()


Public Sub Main()
 
 Dim frequenza, err As Integer
 Dim info As _WM_Info
 Dim midi As Pointer
 
' Crea un file fittizio di impostazione di campioni audio degli strumenti musicali, per poter inizializzare comunque la libreria "libWildMidi":
 File.Save("/tmp/freepats.cfg", Null)
  
 frequenza = 44100
  
 err = WildMidi_Init("/tmp/freepats.cfg", frequenza, 0)
 If err < 0 Then Error.Raise("Impossibile inizializzare la libreria 'libWildMidi' !")
  
 midi = WildMidi_Open("/percorso/del/file.mid")
  
 info = WildMidi_GetInfo(midi)
  
 Print "Durata del file Midi: \e[31m", Time(0, 0, 0, (info.total_midi_time)
 
 WildMidi_Shutdown()
  
End


Riferimenti