Differenze tra le versioni di "La gestione dei file MIDI mediante le funzioni esterne del API di VLC"

Da Gambas-it.org - Wikipedia.
Riga 9: Riga 9:
  
 
===Esempio con applicazione grafica===
 
===Esempio con applicazione grafica===
  '''Private''' inst As Pointer
+
  Private inst As Pointer
  '''Private''' mp As Pointer
+
  Private mp As Pointer
 
   
 
   
 
   
 
   
 
  Library "libvlc:5.4.0"
 
  Library "libvlc:5.4.0"
 +
 +
Private Enum libvlc_NothingSpecial = 0,
 +
        libvlc_Opening,
 +
        libvlc_Buffering,
 +
        libvlc_Playing,
 +
        libvlc_Paused,
 +
        libvlc_Stopped,
 +
        libvlc_Ended,
 +
        libvlc_Error
 
   
 
   
 
  <FONT color=gray>' ''libvlc_instance_t * libvlc_new (int argc, const char *const *argv)''
 
  <FONT color=gray>' ''libvlc_instance_t * libvlc_new (int argc, const char *const *argv)''
 
  ' ''Create And initialize a libvlc instance.''</font>
 
  ' ''Create And initialize a libvlc instance.''</font>
  '''Private''' Extern libvlc_new(argc As Integer, argv As String) As Pointer
+
  Private Extern libvlc_new(argc As Integer, argv As String) As Pointer
 
   
 
   
 
  <FONT color=gray>' ''libvlc_media_t * libvlc_media_new_path (libvlc_instance_t *p_instance, const char *path)''
 
  <FONT color=gray>' ''libvlc_media_t * libvlc_media_new_path (libvlc_instance_t *p_instance, const char *path)''
 
  ' ''Create a media for a certain Midi file path.''</font>
 
  ' ''Create a media for a certain Midi file path.''</font>
  '''Private''' Extern libvlc_media_new_path(p_instance As Pointer, path As String) As Pointer
+
  Private Extern libvlc_media_new_path(p_instance As Pointer, path As String) As Pointer
 
   
 
   
 
  <FONT color=gray>' ''libvlc_media_player_t * libvlc_media_player_new_from_media (libvlc_media_t *p_md)''
 
  <FONT color=gray>' ''libvlc_media_player_t * libvlc_media_player_new_from_media (libvlc_media_t *p_md)''
 
  ' ''Create a Media Player object from a Media.''</font>
 
  ' ''Create a Media Player object from a Media.''</font>
  '''Private''' Extern libvlc_media_player_new_from_media(p_md As Pointer) As Pointer
+
  Private Extern libvlc_media_player_new_from_media(p_md As Pointer) As Pointer
 
   
 
   
 
  <FONT color=gray>' ''int libvlc_media_player_play (libvlc_media_player_t * p_mi)''
 
  <FONT color=gray>' ''int libvlc_media_player_play (libvlc_media_player_t * p_mi)''
 
  ' ''Play the Midi file.''</font>
 
  ' ''Play the Midi file.''</font>
  '''Private''' Extern libvlc_media_player_play(p_mi As Pointer) As Integer
+
  Private Extern libvlc_media_player_play(p_mi As Pointer) As Integer
 
   
 
   
 
  <FONT color=gray>' ''void libvlc_media_player_stop (libvlc_media_player_t * p_mi)''
 
  <FONT color=gray>' ''void libvlc_media_player_stop (libvlc_media_player_t * p_mi)''
 
  ' ''Stop the Midi file''</font>
 
  ' ''Stop the Midi file''</font>
  '''Private''' Extern libvlc_media_player_stop(p_mi As Pointer)
+
Private Extern libvlc_media_player_stop(p_mi As Pointer)
 +
 +
<FONT color=gray>' ''libvlc_time_t libvlc_media_player_get_time(libvlc_media_player_t * p_mi)''
 +
  ' ''Get the current movie time (in ms).''</font>
 +
Private Extern libvlc_media_player_get_time(p_mi As Pointer) As Integer
 +
 +
<FONT color=gray>' ''libvlc_state_t libvlc_media_player_get_state(libvlc_media_player_t *p_mi)''
 +
' ''Get current movie state.''</font>
 +
Private Extern libvlc_media_player_get_state(p_mi As Pointer) As Integer
 
   
 
   
 
  <FONT color=gray>' ''void libvlc_media_player_release (libvlc_media_player_t * p_mi)''
 
  <FONT color=gray>' ''void libvlc_media_player_release (libvlc_media_player_t * p_mi)''
 
  ' ''Release a media_player after use Decrement the reference count of a media player object.''</font>
 
  ' ''Release a media_player after use Decrement the reference count of a media player object.''</font>
  '''Private''' Extern libvlc_media_player_release(p_mi As Pointer)
+
  Private Extern libvlc_media_player_release(p_mi As Pointer)
 
   
 
   
 
  <FONT color=gray>' ''libvlc_release (libvlc_instance_t * p_instance)''
 
  <FONT color=gray>' ''libvlc_release (libvlc_instance_t * p_instance)''
 
  ' ''Decrement the reference count of a libvlc instance, and destroy it if it reaches zero.''</font>
 
  ' ''Decrement the reference count of a libvlc instance, and destroy it if it reaches zero.''</font>
  '''Private''' Extern libvlc_release(p_instance As Pointer)
+
  Private Extern libvlc_release(p_instance As Pointer)
 
   
 
   
 
   
 
   
Riga 60: Riga 77:
 
   <FONT color=gray>' ''Avvia l'esecuzione del file Midi da parte del media player:''</font>
 
   <FONT color=gray>' ''Avvia l'esecuzione del file Midi da parte del media player:''</font>
 
     libvlc_media_player_play(mp)
 
     libvlc_media_player_play(mp)
 +
 +
    Do
 +
      TextLabel1.Text = CStr(Date(0, 0, 0, 0, 0, 0, libvlc_media_player_get_time(mp)))
 +
      Wait 0.01
 +
    Loop Until libvlc_media_player_get_state(mp) > libvlc_Playing
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 106: Riga 128:
 
  Private Extern libvlc_media_player_play(p_mi As Pointer) As Integer
 
  Private Extern libvlc_media_player_play(p_mi As Pointer) As Integer
 
   
 
   
  <FONT color=gray>' ''libvlc_state_t libvlc_media_player_get_state(libvlc_media_player_t *, libvlc_exception_t *)''
+
<FONT color=gray>' ''libvlc_time_t libvlc_media_player_get_time(libvlc_media_player_t * p_mi)''
 +
' ''Get the current movie time (in ms).''</font>
 +
Private Extern libvlc_media_player_get_time(p_mi As Pointer) As Integer
 +
 +
  <FONT color=gray>' ''libvlc_state_t libvlc_media_player_get_state(libvlc_media_player_t *p_mi)''
 
  ' ''Get current movie state.''</font>
 
  ' ''Get current movie state.''</font>
  Private Extern libvlc_media_player_get_state(p_mi As Pointer, exception As Pointer) As Integer
+
  Private Extern libvlc_media_player_get_state(p_mi As Pointer) As Integer
 
    
 
    
 
  <FONT color=gray>' ''void libvlc_media_player_release (libvlc_media_player_t * p_mi)''
 
  <FONT color=gray>' ''void libvlc_media_player_release (libvlc_media_player_t * p_mi)''
Riga 124: Riga 150:
 
   Dim inst As Pointer
 
   Dim inst As Pointer
 
   Dim mp As Pointer
 
   Dim mp As Pointer
  Dim i As Integer
+
 
 
 
 
      
 
      
 
  <FONT color=gray>' ''Inizializza la libreria VLC:''</font>
 
  <FONT color=gray>' ''Inizializza la libreria VLC:''</font>
Riga 139: Riga 164:
 
     libvlc_media_player_play(mp)
 
     libvlc_media_player_play(mp)
 
   
 
   
   While i < libvlc_Stopped
+
   While libvlc_media_player_get_state(mp) < libvlc_Stopped
     i = libvlc_media_player_get_state(mp, 0)
+
     Write #File.Out, CStr(Date(0, 0, 0, 0, 0, 0, libvlc_media_player_get_time(mp))) & "\r"
 
   Wend
 
   Wend
 
   
 
   

Versione delle 11:44, 12 ago 2014

La libreria LibVLC consente di eseguire anche file MIDI, purché si abbiano installate nel sistema anche le risorse dei plugin di FluidSynth per VLC: vlc-plugin-fluidsynth, nonché ovviamente lo stesso FluidSynth.


E' possibile eseguire dati Midi anche direttamente da internet.


Per creare un'applicazione con la presente risorsa, si dovrà utilizzare l'attuale libreria libvlc.so.5.4.0.


Esempio con applicazione grafica

Private inst As Pointer
Private mp As Pointer


Library "libvlc:5.4.0"

Private Enum libvlc_NothingSpecial = 0,
        libvlc_Opening,
        libvlc_Buffering,
        libvlc_Playing,
        libvlc_Paused,
        libvlc_Stopped,
        libvlc_Ended,
        libvlc_Error

' libvlc_instance_t * libvlc_new (int argc, const char *const *argv)
' Create And initialize a libvlc instance.
Private Extern libvlc_new(argc As Integer, argv As String) As Pointer

' libvlc_media_t * libvlc_media_new_path (libvlc_instance_t *p_instance, const char *path)
' Create a media for a certain Midi file path.
Private Extern libvlc_media_new_path(p_instance As Pointer, path As String) As Pointer

' libvlc_media_player_t * libvlc_media_player_new_from_media (libvlc_media_t *p_md)
' Create a Media Player object from a Media.
Private Extern libvlc_media_player_new_from_media(p_md As Pointer) As Pointer

' int libvlc_media_player_play (libvlc_media_player_t * p_mi)
' Play the Midi file.
Private Extern libvlc_media_player_play(p_mi As Pointer) As Integer

' void libvlc_media_player_stop (libvlc_media_player_t * p_mi)
' Stop the Midi file
Private Extern libvlc_media_player_stop(p_mi As Pointer)

' libvlc_time_t libvlc_media_player_get_time(libvlc_media_player_t * p_mi)
' Get the current movie time (in ms).
Private Extern libvlc_media_player_get_time(p_mi As Pointer) As Integer

' libvlc_state_t libvlc_media_player_get_state(libvlc_media_player_t *p_mi)
' Get current movie state.
Private Extern libvlc_media_player_get_state(p_mi As Pointer) As Integer

' void libvlc_media_player_release (libvlc_media_player_t * p_mi)
' Release a media_player after use Decrement the reference count of a media player object.
Private Extern libvlc_media_player_release(p_mi As Pointer)

' libvlc_release (libvlc_instance_t * p_instance)
' Decrement the reference count of a libvlc instance, and destroy it if it reaches zero.
Private Extern libvlc_release(p_instance As Pointer)


Public Sub Button1_Click()

 Dim m As Pointer
 
   
' Inizializza la libreria VLC:
   inst = libvlc_new(0, Null)
   
' Crea un nuovo oggetto multimedia:
   m = libvlc_media_new_path(inst, "/percorso/del/file/Midi")
   
' Crea un media player:
   mp = libvlc_media_player_new_from_media(m)
   
 ' Avvia l'esecuzione del file Midi da parte del media player:
   libvlc_media_player_play(mp)

   Do
     TextLabel1.Text = CStr(Date(0, 0, 0, 0, 0, 0, libvlc_media_player_get_time(mp)))
     Wait 0.01
   Loop Until libvlc_media_player_get_state(mp) > libvlc_Playing

End


Public Sub Button2_Click()

' Arresta l'esecuzione del file Midi:
   libvlc_media_player_stop(mp)

' Rilascia e chiude il media player:
   libvlc_media_player_release(mp)
    
' Chiude la libreria VLC:
   libvlc_release(inst)

End


Esempio con applicazione a riga di comando

Library "libvlc:5.4.0"

Enum libvlc_NothingSpecial = 0,
     libvlc_Opening,
     libvlc_Buffering,
     libvlc_Playing,
     libvlc_Paused,
     libvlc_Stopped,
     libvlc_Ended,
     libvlc_Error

' libvlc_instance_t * libvlc_new (int argc, const char *const *argv)
' Create And initialize a libvlc instance.
Private Extern libvlc_new(argc As Integer, argv As String) As Pointer

' libvlc_media_t * libvlc_media_new_path (libvlc_instance_t *p_instance, const char *path)
' Create a media for a certain Midi file path.
Private Extern libvlc_media_new_path(p_instance As Pointer, path As String) As Pointer

' libvlc_media_player_t * libvlc_media_player_new_from_media (libvlc_media_t *p_md)
' Create a Media Player object from a Media.
Private Extern libvlc_media_player_new_from_media(p_md As Pointer) As Pointer

' int libvlc_media_player_play (libvlc_media_player_t * p_mi)
' Play the Midi file.
Private Extern libvlc_media_player_play(p_mi As Pointer) As Integer

' libvlc_time_t libvlc_media_player_get_time(libvlc_media_player_t * p_mi)
' Get the current movie time (in ms).
Private Extern libvlc_media_player_get_time(p_mi As Pointer) As Integer

' libvlc_state_t libvlc_media_player_get_state(libvlc_media_player_t *p_mi)
' Get current movie state.
Private Extern libvlc_media_player_get_state(p_mi As Pointer) As Integer
 
' void libvlc_media_player_release (libvlc_media_player_t * p_mi)
' Release a media_player after use Decrement the reference count of a media player object.
Private Extern libvlc_media_player_release(p_mi As Pointer)

' libvlc_release (libvlc_instance_t * p_instance)
' Decrement the reference count of a libvlc instance, and destroy it if it reaches zero.
Private Extern libvlc_release(p_instance As Pointer)


Public Sub Main()

 Dim m As Pointer
 Dim inst As Pointer
 Dim mp As Pointer
  
   
' Inizializza la libreria VLC:
   inst = libvlc_new(0, Null)
   
' Crea un nuovo oggetto multimedia:
   m = libvlc_media_new_path(inst, "/percorso/del/file/Midi")
   
' Crea un media player:
   mp = libvlc_media_player_new_from_media(m)
   
 ' Avvia l'esecuzione del file Midi da parte del media player:
   libvlc_media_player_play(mp)

  While libvlc_media_player_get_state(mp) < libvlc_Stopped
    Write #File.Out, CStr(Date(0, 0, 0, 0, 0, 0, libvlc_media_player_get_time(mp))) & "\r"
  Wend


' Va in chiusura:

' Rilascia e chiude il media player:
   libvlc_media_player_release(mp)
    
' Chiude la libreria VLC:
   libvlc_release(inst)

End


Riferimenti