Differenze tra le versioni di "Ottenere un file audio da un file MIDI mediante il Componente gb.media"
Da Gambas-it.org - Wikipedia.
(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...") |
|||
Riga 45: | Riga 45: | ||
" Tempo trascorso: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000) | " Tempo trascorso: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000) | ||
Wend | Wend | ||
+ | |||
+ | exit_C(0) | ||
'''End''' | '''End''' |
Versione delle 06:59, 29 set 2016
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 exit_C(0) End