Ottenere un file audio da un file MIDI mediante il Componente gb.media
Da Gambas-it.org - Wikipedia.
Versione del 30 giu 2017 alle 21:01 di Vuott (Discussione | contributi)
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, nel quale si otterrà un file WAV da un file MIDI:
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.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