Ottenere un file audio da un file MIDI mediante il Componente gb.media
Da Gambas-it.org - Wikipedia.
Versione del 29 set 2016 alle 06:59 di Vuott (Discussione | contributi) (Creata pagina con "Utilizzando i plugin di ''GStreamer'' con le Classi ''MediaControl'' e ''MediaPipeline'' del Componente ''gb.media'', è possibile ottenere un file audio da un file MIDI. I p...")
Utilizzando i plugin di GStreamer con le Classi MediaControl e MediaPipeline del Componente gb.media, è possibile ottenere un file audio da un file MIDI.
I plugin specifici da utilizzare per il MIDI sono:
- midiparse: interpreta i file MIDI e li converte in eventi MIDI;
- fluiddec: effettua il render degli eventi MIDI in campioni audio grezzi.
Mostriamo di seguito un esempio pratico.
Library "libc:6" ' void exit (int __status) ' Terminate program execution with STATUS. Private Extern exit_C(i As Integer) As Integer Exec "exit" Public Sub Main() Dim pl As MediaPipeline Dim src, mprs, fdc, cnv, wenc, snk As MediaControl pl = New MediaPipeline src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/file.mid" ' "location" è una proprietà del plugin "filesrc" mprs = New MediaControl(pl, "midiparse") fdc = New MediaControl(pl, "fluiddec") cnv = New MediaControl(pl, "audioconvert") wenc = New MediaControl(pl, "wavenc") alsa = New MediaControl(pl, "alsasink") src.LinkTo(mprs) mprs.LinkTo(fcd) fcd.LinkTo(cnv) cnv.LinkTo(wenc) wenc.LinkTo(snk) pl.State = Media.Playing pl.Play() Sleep 1 While pl.Duration > pl.Position Write #File.Out, "\rDurata: " & Date(0, 0, 0, 0, 0, 0, pl.Duration * 1000) & " Tempo trascorso: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000) Wend End