Differenze tra le versioni di "Ottenere un file audio da un file MIDI mediante il Componente gb.media"
Da Gambas-it.org - Wikipedia.
Riga 6: | Riga 6: | ||
− | Mostriamo di seguito un esempio pratico | + | Mostriamo di seguito un esempio pratico, nel quale si otterrà un file WAV da un file MIDI: |
Library "libc:6" | Library "libc:6" | ||
Versione delle 07:02, 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, 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.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