Differenze tra le versioni di "Ottenere con il Componente gb.media un file audio dai dati Midi grezzi intercettati da un dispositivo Midi esterno"
Riga 99: | Riga 99: | ||
===Generare un file audio OGG-Vorbis dai dati Midi grezzi registrati=== | ===Generare un file audio OGG-Vorbis dai dati Midi grezzi registrati=== | ||
− | Mostriamo un semplice esempio pratico, nel quale si genererà un file audio | + | Mostriamo un semplice esempio pratico, nel quale si genererà un file audio OGG-Vorbis dai dati Midi grezzi intercettati da un dispositivo Midi esterno: |
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Versione delle 17:18, 16 ago 2017
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 con essi 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.
Indice
Generare un file audio WAV dai dati Midi grezzi registrati
Mostriamo un semplice esempio pratico, nel quale si genererà un file audio WAV dai dati Midi grezzi intercettati da un dispositivo Midi esterno:
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
Generare un file audio MP3 dai dati Midi grezzi registrati
Mostriamo un semplice esempio pratico, nel quale si genererà un file audio MP3 dai dati Midi grezzi intercettati da un dispositivo Midi esterno:
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, "lamemp3enc") 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.mp3" pl.Stop pl.Close Print "Termine programma !" End
Generare un file audio OGG-Vorbis dai dati Midi grezzi registrati
Mostriamo un semplice esempio pratico, nel quale si genererà un file audio OGG-Vorbis dai dati Midi grezzi intercettati da un dispositivo Midi esterno:
Public Sub Main() Dim pl As MediaPipeline Dim src, flu, res, con, enc, mux, 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, "vorbisenc") mux = New MediaControl(pl, "oggmux") 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(mux) mux.LinkTo(snk) pl.play() ' Consente di tenere funzionante il programma. Basterà premere "Invio" per terminare. Input s Copy primofile To "/tmp/audio.ogg" 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