Ottenere con il Componente gb.media un file audio dai dati Midi grezzi intercettati da un dispositivo Midi esterno
Da Gambas-it.org - Wikipedia.
Versione del 16 ago 2017 alle 16:44 di Vuott (Discussione | contributi) (Creata pagina con "E' possibile intercettare i dati Midi grezzi inviati da un dispositivo Midi esterno (ad esempio una tastiera Midi) usando le risorse delle Classi "''MediaPipeline''" e "''Medi...")
E' possibile intercettare i dati Midi grezzi inviati da un dispositivo Midi esterno (ad esempio una tastiera Midi) usando le risorse delle Classi "MediaPipeline" e "MediaControl" del Componente gb.media, [Nota 1[ e successivamente generare un file audio.
Sarà necessario assegnare alla proprietà "ports" dell'elemento "fluiddec" il numero identificativo, quale Client ALSA, e il numero della porta del dispotivo Midi esterno che invia i dati Midi grezzi.
Mostriamo un semplice esempio pratico, nel quale si genererà un file audio WAV:
Public Sub Main() Dim pl As MediaPipeline Dim src, flu, res, con, enc, snk As MediaControl Dim flt As MediaFilter Dim porta, primofile, s As String primofile = "/tmp/primofile" ' Imposta il numero identificativo, come Client ALSA, e della porta del dispositivo Midi esterno (ad esempio 24:0) : porta = "24:0" pl = New MediaPipeline src = New MediaControl(pl, "alsamidisrc") src["ports"] = porta flu = New MediaControl(pl, "fluiddec") flu["synth-gain"] = 0.5 res = New MediaControl(pl, "audioresample") con = New MediaControl(pl, "audioconvert") flt = New MediaFilter(pl, "audio/x-raw,channels=2") enc = New MediaControl(pl, "wavenc") snk = New MediaControl(pl, "filesink") snk["location"] = primofile src.LinkTo(flu) flu.LinkTo(res) res.LinkTo(con) con.LinkTo(flt) flt.LinkTo(enc) enc.LinkTo(snk) pl.play() ' Consente di tenere funzionante il programma. Basterà premere "Invio" per terminare. Input s Copy primofile To "/tmp/audio.wav" pl.Stop pl.Close Print "Termine programma !" End
Note
[1] Vedi anche la pagina: Intercettare dati Midi grezzi da un dispositivo Midi esterno mediante il Componente gb.media