Aclaratori Alsa i Jack: fer sonar el vkeybd amb fluidsynth i la targeta de so interna

De Wikijoan
Dreceres ràpides: navegació, cerca

Com a introducció llegir Ubuntu_Studio:_Resum_preparació_Ubuntu_Studio_amb_MidiShare_i_altres#Comen.C3.A7ar_a_fer_proves

Vull ser sistemàtic i veure com es pot connectar el vkeybd i el fluidsynth a través del JACK, utilitzant el driver audio de jack (opció -a jack) o bé directament el driver d'audio d'alsa (opció -a alsa). El driver d'audio (a diferència del driver de midi) és el que em permetrà connectar-me a la targeta de so del portàtil (o bé al EDIROL), i per tant fer sonar alguna cosa. (el fluidsynth s'haurà de connectar a la targeta de so per tal que soni).

Una altra variable a considerar és si arrenco el fluidsynth en línia de comandes o a través de QSynth (interfície gràfica).

Contingut

Arrencar fluidsynth amb el driver audio jack (-a jack)

El driver d'audio és el que em permet comunicar-me amb la targeta interna del portàtil o amb la tarja externa del Edirol.

prova 1

$ fluidsynth -m alsa_seq -a jack /home/joan/soundfonts/AI-APiano02trans.sf2
o bé
$ fluidsynth -m alsa_seq /home/joan/soundfonts/AI-APiano02trans.sf2

A la dreta (ports d'entrada, clients escribibles) tinc el system, que reprsenta el playback (la sortida d'audio de la targeta de so).

cliente 0: 'System' [tipo=kernel]
    0 'Timer           '
    1 'Announce        '
cliente 14: 'Midi Through' [tipo=kernel]
    0 'Midi Through Port-0'
cliente 128: 'TiMidity' [tipo=usuario]
    0 'TiMidity port 0 '
    1 'TiMidity port 1 '
    2 'TiMidity port 2 '
    3 'TiMidity port 3 '
cliente 129: 'Virtual Keyboard' [tipo=usuario]
    0 'Virtual Keyboard'
cliente 131: 'FLUID Synth (11656)' [tipo=usuario]
    0 'Synth input port (11656:0)'

Compte! perquè si el JACK Audio Connection Kit el tenia executant-se, i estava apagat, en executar-se el fluidsynth arrenca el jackd, però no es refresca l'estat del JACK Audio Connection Kit, i això despista.

Veig que està engegat el fluidsynth i el Virtual Keyboard. Al client System, que jo no li donava importància, l'experiència del Jack m'ha fet adonar que representa la tarja de so interna del portàtil. TiMidity, igual que el fluidsynth, és un sintetitzador midi (converteix un missatge midi a so), i ve instal.lat per defecte amb el Ubuntu Studio.

Per tant, si vull utilitzar el Jack per connectar el virtual keyboard amb el fluidsynth, hauré d'utilitzar el driver d'audio jack (-a jack)

prova 2

Ara faig el mateix però amb el QSynth (interfície gràfica per al fluidsynth en comptes de línia de comandes). QSynth configurat amb el driver d'audio jack:

El resultat és el mateix, amb una petita diferència. Per tal d'engegar el QSynth, el dimoni del Jack ha d'estar engegat. El QSynth no arrenca el Jack, i per tant protesta.

...
01:07:38.853 Qsynth1: Creating audio driver (jack)...
01:07:38.863 Qsynth1: Failed to create the audio driver (jack). Cannot continue without it.
fluidsynth: error: Jack server not running?

Resum. Per tant, si el que vull és tocar el piano amb el vkeybd i escoltar amb el fluidsynth, i tot a través del Jack, he d'utilitzar el driver d'audio jack, ja sigui directament amb el fluidsynth (mode comanda) o amb el QSynth (mode gràfic).

Important. Ara bé, això no vol dir que fer connectar el vkeybd i el fluidsynth i la targeta gràfica ho hagi de fer amb el Jack, sinó que ho puc fer directament amb el ALSA (aconnect en mode comanda, aconnectgui en mode gràfic). Veure més avall

Arrencar fluidsynth directament amb el driver audio alsa (-a alsa)

Si ho vull fer a través d'ALSA directament, no cal utilitzar per al fluidsynth el driver d'audio del Jack.

prova 3

$ fluidsynth -m alsa_seq -a alsa /home/joan/soundfonts/AI-APiano02trans.sf2

Nota: si no vull que el fluidsynth engegui automàticament el jack, he d'utilitzar l'opció -l (-l, --disable-lash: Don’t connect to LASH server). Això és el que fa el QSynth. Aquesta opció només té sentit amb el driver d'audio alsa (-a alsa). Amb el driver -a jack no té sentit.

A la dreta (ports d'entrada, clients escribibles) tinc el system, que reprsenta el playback (la sortida d'audio de la targeta de so).

També puc fer:

$ fluidsynth -m alsa_seq -a alsa -l /home/joan/soundfonts/AI-APiano02trans.sf2

prova 4

Ara faig el mateix però amb el QSynth (interfície gràfica per al fluidsynth en comptes de línia de comandes). QSynth configurat amb el driver d'audio alsa:

Ara el QSynth engega encara que el dimoni del Jack no estigui engegat. I això és degut a que el QSynth no pretén arrencar el jack. Engego el JACK Audio Connection Kit (no arrenco el dimoni).

Conclusió: la diferència principal entre utilitzar el driver d'audio jack respecte alsa és que el driver d'audio jack em proporciona un client llegible (pestanya AUDIO) que puc connectar a la targeta de so interna (client escribible, system). Això ho puc veure fàcilment amb el JACK Audio Connection Kit.

Significa això que executant el fluidsynth amb el driver d'audio alsa no puc sentir el Virtual Keyboard? Evidentment, no. Puc utilitzar directament aconnect, que com el seu nom apunta, és la utilitat d'ALSA per fer connexions de clients (aconnectgui és el front-end gràfic). Anem a veure-ho.

vkeybd amb fluidsynth i la targeta de so interna: aconnect, sense jack

Aconnectgui2.png

El dimoni jackd està a tots els efectes tancat. A més, utilitzo l'opció -l per tal que no arrenqui:

$ fluidsynth -m alsa_seq -a alsa -l /home/joan/soundfonts/AI-APiano02trans.sf2
$ aconnect -i -o
client 0: 'System' [type=kernel]
    0 'Timer           '
    1 'Announce        '
client 14: 'Midi Through' [type=kernel]
    0 'Midi Through Port-0'
client 128: 'TiMidity' [type=user]
    0 'TiMidity port 0 '
    1 'TiMidity port 1 '
    2 'TiMidity port 2 '
    3 'TiMidity port 3 '
client 129: 'FLUID Synth (31071)' [type=user]
    0 'Synth input port (31071:0)'
client 132: 'Virtual Keyboard' [type=user]
    0 'Virtual Keyboard'
$ man aconnect
$ aconnect 132:0 129:0

i ja puc tocar (no cal fer res més, no cal connectar el fluidsynth a la tarja de so com faig en el Jack Audio Connection Kit)

És pràctic utilitzar la interfície gràfica: aconnectgui, que és molt intuïtiva (compte, per tal que funcioni he d'apretar el botó connexions i s'ha de marcar sobre els trianglets que vull connectar. És intuitiu però despista una mica la primera vegada).

Conclusió

De moment no trec cap conclusió entre utilitzar el driver alsa o el jack. Sembla ser que utilitzar jack és com afegir una capa més, doncs el jack treballa sobre ALSA. Però si es llegeix l'article alcaratori JACK vs ALSA, sembla ser que JACK a penes introdueix sobrecàrrega (i tot són avantatges per a JACK). I l'avantatge de Jack és que puc controlar fàcilment la latència, i disposo d'una interfície gràfica.

Pregunta: com fer les .connexions en el JACK sense utilitzar el Jack Audio Connection Kit (interfície gràfica). La resposta és fàcil: doncs precisament amb aconnect (o aconnectgui). És a dir, la pestanya Connexions del Jack Audio Connection Kit, en realitat el que fa és executar aconnect (recordar que utilitzo el driver alsa per al servidor jackd (no confondre amb el driver d'audio alsa o jack).

També existeix la utilitat jack_connect.

MidiShare

I tot això... com es lliga amb el MidiShare? Llegir l'article Aclaratori_MidiShare:_tocar_i_fer_sonar_música._Solucions_software_i_hardware


creat per Joan Quintana Compte, maig 2009

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines