Differenze tra le versioni di "La gestione dei file MIDI mediante le funzioni esterne del API di Rhythmbox"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "''Rythmbox'' è una libreria del progetto GNOME capace di gestire ed eseguire (oltre a vari formati audio) i file MIDI. Va utilizzata congiuntamente con alcune funzioni ester...") |
|||
Riga 4: | Riga 4: | ||
− | Mostriamo un semplice esempio pratico: | + | Mostriamo un semplice esempio pratico, in cui si eseguirà un file Midi: |
Library "librhythmbox-core:9.0.0" | Library "librhythmbox-core:9.0.0" | ||
Versione delle 19:02, 4 feb 2018
Rythmbox è una libreria del progetto GNOME capace di gestire ed eseguire (oltre a vari formati audio) i file MIDI.
Va utilizzata congiuntamente con alcune funzioni esterne della libreria di GStreamer. Pertanto sarà necessario avere intallate nel sistema e richiamare in Gambas le librerie dinamiche condivise: "librhythmbox-core.so.9.0.0" e "libgstreamer-1.0.so"
Mostriamo un semplice esempio pratico, in cui si eseguirà un file Midi:
Library "librhythmbox-core:9.0.0" Private Enum RB_PLAYER_PLAY_REPLACE = 0, RB_PLAYER_PLAY_AFTER_EOS, RB_PLAYER_PLAY_CROSSFADE ' RBPlayer * rb_player_new (gboolean want_crossfade, GError **error) ' Creates a new player object. Private Extern rb_player_new(want_crossfade As Boolean, gerror As Pointer) As Pointer ' gboolean rb_player_open (RBPlayer *player, const char *uri, gpointer stream_data, GDestroyNotify stream_data_destroy, GError **error) ' Prepares a stream for playback. Private Extern rb_player_open(player As Pointer, uri As String, stream_data As Pointer, stream_data_destroy As Pointer, gerror As Pointer) As Boolean ' gboolean rb_player_play (RBPlayer *player, RBPlayerPlayType play_type, gint64 crossfade, GError **error) ' Starts playback of the most recently opened stream. Private Extern rb_player_play(player As Pointer, play_type As Integer, crossfade As Long, gerror As Pointer) As Boolean ' gint64 rb_player_get_time (RBPlayer *player) ' Returns the current playback for the current stream in nanoseconds. Private Extern rb_player_get_time(player As Pointer) As Long Library "libgstreamer-1.0" ' gst_init (int *argc, char **argv[]) ' Initializes the GStreamer library, setting up internal path lists, registering built-in elements, and loading standard plugins. Private Extern gst_init(argc As Pointer, argv As Pointer) ' gchar * g_filename_to_uri (const gchar *filename, const gchar *hostname, GError **error) ' Converts an absolute filename to an escaped ASCII-encoded URI. Private Extern g_filename_to_uri(filename As String, hostname As String, GError As Pointer) As String Public Sub Main() Dim pl, err As Pointer Dim bo As Boolean Dim tm1 As Long gst_init(0, 0) pl = rb_player_new(False, 0) If pl = 0 Then Error.Raise("ERRORE !") err = Alloc(SizeOf(gb.Pointer), 1) bo = rb_player_open(pl, g_filename_to_uri("/percorso/del/file.mid", Null, 0), 0, 0, err) If Not bo Then Error.Raise("ERRORE !") bo = rb_player_play(pl, RB_PLAYER_PLAY_AFTER_EOS, 0, 0) If Not bo Then Error.Raise("ERRORE !") Wait 0.3 Repeat tm1 = rb_player_get_time(pl) Write "\r" & CStr(Date(0, 0, 0, 0, 0, 0, tm1 / 1000000)) Wait 0.001 Until tm1 = rb_player_get_time(pl) Free(err) End