Skip to main content

1 - Le matériel et les pilotes ALSA, FFADO, ...


Configuration carte son RME multiface Archlinux (Cadence) [Résolu]

Bonjour,

j'ai réinstallé Arch avec le bureau plasma de kde il y a pas longtemps, je suis en train d'essayer de faire marcher le son avec ma RME Multiface II mais je n'y arrive pas vraiment.

J'ai d'abord installé les paquets alsa-tools alsa-utils et alsa-firmware, suivi de Cadence.

Je lance d'aord hdspmixer, suivi de Cadence. Ma carte son est choisie dans les paramêtres de Cadence, l'option realtime est décochée et le bridge Alsa->Loop->Jack activé. Mais le son sort de la carte intel !

J'ai un post sur le forum fr de la communauté Archlinux ou j'ai posté mon asoundrc (créé automatiquement par cadence), mais on m'a renvoyé ici car il faut le dire, l'audio c'est un domaine à part entière dans Linux.

Voilà, si quelqu'un possédait les connaissances et acceptait de m'aider je lui en serai très reconnaissant.

Merci
France
Bonjour,
Le premier test à faire, c'est de taper alsamixer sur un terminal. ( ALSAMixer )
Tu tapes F6 pour choisir ta carte son et tu regardes s'il y a marqué MM sur le potentiomètre. Si c'est le cas, il est en mode "Mute", ce que tu peux changer en tapant "m" sur ton clavier.
Une autre option est de désactiver ta carte son interne dans le BIOS au démarrage.

Tiens nous au courant.
Le "Line Out" est à 00, tout les autres sont à MM.
J'utilise les sorties analogiques pour mes enceintes.
France
MM veut dire "mute", il faut les rendre actives
Ok, maintenant je les ai toutes activées (mais comme je n'utilise que la sortie analogique, qui est mon avis est la line out, cela ne me semble pas très utile).
Par contre le sort toujours du labtop -> donc passe par la carte intel.
France
Maintenant, va voir dans le bios pour désactiver ta carte son interne, et regarde ce que ça donne.
Malheureusement ça ne fait pas partie des composants sur lequel j'ai la main dans le bios...
Merci, mais ce que je ne souhaite pas désactivé ma carte son externe.
Avant de réinstaller Arch, j'avais réussi à configurer (hasardeusement) ma carte son sans désactiver la carte intel, je lançai hdspmixer, puis cadence, et ça marchait bien.
Entre temps je suis passé du window manager i3 au bureau kde, donc je n'ai pas exactement le même systême et je n'ai pas conservé ma configuration...
France
Alors, on revient aux fondamentaux:

"cat /proc/asound/cards" et "aplay -l" .

Si tu as qjackctl, essaye de voir ce que ça donne avec; ou essaie de démarrer jack à la ligne de commande:
le genre "jackd -sRp 70 -d alsa -d hw:1 -r 44100 -H -z s &"
Quelquefois, effacer le fichier .config de jack peut donner des bons résultats ( pour qjackctl c'est "/home/mon_utilisateur/.config/rncbc.org/.").
Copy to clipboard
cat /proc/asound/cards 0 [DSP ]: H-DSP - Hammerfall DSP RME Hammerfall DSP + Multiface at 0xf7400000, irq 16 1 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xf7f30000 irq 29


Copy to clipboard
**** List of PLAYBACK Hardware Devices **** card 0: DSP [Hammerfall DSP], device 0: RME Hammerfall DSP + Multiface [RME Hammerfall DSP + Multiface] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 0: VT1802 Analog [VT1802 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 1: VT1802 Digital [VT1802 Digital] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 2: VT1802 Alt Analog [VT1802 Alt Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0


En faite c'est ce qui est bizarre c'est que je viens de réinstaller Arch avec i3 seulement, j'installe alsa-utils, alsa-tools, alsa-firmware et cadence, je lance hdspmixer puis cadence et j'ai du son.
Puis je redémarre et là le son se remet à sortir de la carte intel... C'est exactement ce qu'il m'est arrivé la première fois.

Voilà à quoi ressemble mon ~/.adounrc généré par cadence:
Copy to clipboard
# ------------------------------------------------------ # Custom asoundrc file for use with snd-aloop and JACK # # use it like this: # env JACK_SAMPLE_RATE=44100 JACK_PERIOD_SIZE=1024 alsa_in (...) # # ------------------------------------------------------ # playback device pcm.aloopPlayback { type dmix ipc_key 1 ipc_key_add_uid true slave { pcm "hw:Loopback,0,0" format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 4096 } } # capture device pcm.aloopCapture { type dsnoop ipc_key 2 ipc_key_add_uid true slave { pcm "hw:Loopback,0,1" format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 4096 } } # duplex device pcm.aloopDuplex { type asym playback.pcm "aloopPlayback" capture.pcm "aloopCapture" } # ------------------------------------------------------ # default device pcm.!default { type plug slave.pcm "aloopDuplex" } # ------------------------------------------------------ # alsa_in -j alsa_in -dcloop -q 1 pcm.cloop { type dsnoop ipc_key 3 ipc_key_add_uid true slave { pcm "hw:Loopback,1,0" channels 2 format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 32768 } } # ------------------------------------------------------ # alsa_out -j alsa_out -dploop -q 1 pcm.ploop { type plug slave.pcm "hw:Loopback,1,1" }


/usr/share/alsa/alsa.conf (que je n'ai pas créé non plus, mais je ne sais pas si Cadence y a touché):
Copy to clipboard
# # ALSA library configuration file # # pre-load the configuration files @hooks [ { func load files [ { @func concat strings [ { @func datadir } "/alsa.conf.d/" ] } "/etc/asound.conf" "~/.asoundrc" ] errors false } ] # load card-specific configuration files (on request) cards.@hooks [ { func load files [ { @func concat strings [ { @func datadir } "/cards/aliases.conf" ] } ] } { func load_for_all_cards files [ { @func concat strings [ { @func datadir } "/cards/" { @func private_string } ".conf" ] } ] errors false } ] # # defaults # # show all name hints also for definitions without hint {} section defaults.namehint.showall off # show just basic name hints defaults.namehint.basic on # show extended name hints defaults.namehint.extended off # defaults.ctl.card 0 defaults.pcm.card 0 defaults.pcm.device 0 defaults.pcm.subdevice -1 defaults.pcm.nonblock 1 defaults.pcm.compat 0 defaults.pcm.minperiodtime 5000 # in us defaults.pcm.ipc_key 5678293 defaults.pcm.ipc_gid audio defaults.pcm.ipc_perm 0660 defaults.pcm.dmix.max_periods 0 defaults.pcm.dmix.rate 48000 defaults.pcm.dmix.format "unchanged" defaults.pcm.dmix.card defaults.pcm.card defaults.pcm.dmix.device defaults.pcm.device defaults.pcm.dsnoop.card defaults.pcm.card defaults.pcm.dsnoop.device defaults.pcm.device defaults.pcm.front.card defaults.pcm.card defaults.pcm.front.device defaults.pcm.device defaults.pcm.rear.card defaults.pcm.card defaults.pcm.rear.device defaults.pcm.device defaults.pcm.center_lfe.card defaults.pcm.card defaults.pcm.center_lfe.device defaults.pcm.device defaults.pcm.side.card defaults.pcm.card defaults.pcm.side.device defaults.pcm.device defaults.pcm.surround21.card defaults.pcm.card defaults.pcm.surround21.device defaults.pcm.device defaults.pcm.surround40.card defaults.pcm.card defaults.pcm.surround40.device defaults.pcm.device defaults.pcm.surround41.card defaults.pcm.card defaults.pcm.surround41.device defaults.pcm.device defaults.pcm.surround50.card defaults.pcm.card defaults.pcm.surround50.device defaults.pcm.device defaults.pcm.surround51.card defaults.pcm.card defaults.pcm.surround51.device defaults.pcm.device defaults.pcm.surround71.card defaults.pcm.card defaults.pcm.surround71.device defaults.pcm.device defaults.pcm.iec958.card defaults.pcm.card defaults.pcm.iec958.device defaults.pcm.device defaults.pcm.modem.card defaults.pcm.card defaults.pcm.modem.device defaults.pcm.device # truncate files via file or tee PCM defaults.pcm.file_format "raw" defaults.pcm.file_truncate true defaults.rawmidi.card 0 defaults.rawmidi.device 0 defaults.rawmidi.subdevice -1 defaults.hwdep.card 0 defaults.hwdep.device 0 defaults.timer.class 2 defaults.timer.sclass 0 defaults.timer.card 0 defaults.timer.device 0 defaults.timer.subdevice 0 # # PCM interface # # redirect to load-on-demand extended pcm definitions pcm.cards cards.pcm pcm.default cards.pcm.default pcm.sysdefault cards.pcm.default pcm.front cards.pcm.front pcm.rear cards.pcm.rear pcm.center_lfe cards.pcm.center_lfe pcm.side cards.pcm.side pcm.surround21 cards.pcm.surround21 pcm.surround40 cards.pcm.surround40 pcm.surround41 cards.pcm.surround41 pcm.surround50 cards.pcm.surround50 pcm.surround51 cards.pcm.surround51 pcm.surround71 cards.pcm.surround71 pcm.iec958 cards.pcm.iec958 pcm.spdif iec958 pcm.hdmi cards.pcm.hdmi pcm.dmix cards.pcm.dmix pcm.dsnoop cards.pcm.dsnoop pcm.modem cards.pcm.modem pcm.phoneline cards.pcm.phoneline pcm.hw { @args [ CARD DEV SUBDEV ] @args.CARD { type string default { @func getenv vars [ ALSA_PCM_CARD ALSA_CARD ] default { @func refer name defaults.pcm.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_PCM_DEVICE ] default { @func refer name defaults.pcm.device } } } @args.SUBDEV { type integer default { @func refer name defaults.pcm.subdevice } } type hw card $CARD device $DEV subdevice $SUBDEV hint { show { @func refer name defaults.namehint.extended } description "Direct hardware device without any conversions" } } pcm.plughw { @args [ CARD DEV SUBDEV ] @args.CARD { type string default { @func getenv vars [ ALSA_PCM_CARD ALSA_CARD ] default { @func refer name defaults.pcm.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_PCM_DEVICE ] default { @func refer name defaults.pcm.device } } } @args.SUBDEV { type integer default { @func refer name defaults.pcm.subdevice } } type plug slave.pcm { type hw card $CARD device $DEV subdevice $SUBDEV } hint { show { @func refer name defaults.namehint.extended } description "Hardware device with all software conversions" } } pcm.plug { @args [ SLAVE ] @args.SLAVE { type string } type plug slave.pcm $SLAVE } pcm.shm { @args [ SOCKET PCM ] @args.SOCKET { type string } @args.PCM { type string } type shm server $SOCKET pcm $PCM } pcm.tee { @args [ SLAVE FILE FORMAT ] @args.SLAVE { type string } @args.FILE { type string } @args.FORMAT { type string default { @func refer name defaults.pcm.file_format } } type file slave.pcm $SLAVE file $FILE format $FORMAT truncate { @func refer name defaults.pcm.file_truncate } } pcm.file { @args [ FILE FORMAT ] @args.FILE { type string } @args.FORMAT { type string default { @func refer name defaults.pcm.file_format } } type file slave.pcm null file $FILE format $FORMAT truncate { @func refer name defaults.pcm.file_truncate } } pcm.null { type null hint { show { @func refer name defaults.namehint.basic } description "Discard all samples (playback) or generate zero samples (capture)" } } # # Control interface # ctl.sysdefault { type hw card { @func getenv vars [ ALSA_CTL_CARD ALSA_CARD ] default { @func refer name defaults.ctl.card } } hint.description "Default control device" } ctl.default ctl.sysdefault ctl.hw { @args [ CARD ] @args.CARD { type string default { @func getenv vars [ ALSA_CTL_CARD ALSA_CARD ] default { @func refer name defaults.ctl.card } } } type hw card $CARD hint.description "Direct control device" } ctl.shm { @args [ SOCKET CTL ] @args.SOCKET { type string } @args.CTL { type string } type shm server $SOCKET ctl $CTL } # # RawMidi interface # rawmidi.default { type hw card { @func getenv vars [ ALSA_RAWMIDI_CARD ALSA_CARD ] default { @func refer name defaults.rawmidi.card } } device { @func igetenv vars [ ALSA_RAWMIDI_DEVICE ] default { @func refer name defaults.rawmidi.device } } hint.description "Default raw MIDI device" } rawmidi.hw { @args [ CARD DEV SUBDEV ] @args.CARD { type string default { @func getenv vars [ ALSA_RAWMIDI_CARD ALSA_CARD ] default { @func refer name defaults.rawmidi.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_RAWMIDI_DEVICE ] default { @func refer name defaults.rawmidi.device } } } @args.SUBDEV { type integer default -1 } type hw card $CARD device $DEV subdevice $SUBDEV hint { description "Direct rawmidi driver device" device $DEV } } rawmidi.virtual { @args [ MERGE ] @args.MERGE { type string default 1 } type virtual merge $MERGE } # # Sequencer interface # seq.default { type hw hint.description "Default sequencer device" } seq.hw { type hw } # # HwDep interface # hwdep.default { type hw card { @func getenv vars [ ALSA_HWDEP_CARD ALSA_CARD ] default { @func refer name defaults.hwdep.card } } device { @func igetenv vars [ ALSA_HWDEP_DEVICE ] default { @func refer name defaults.hwdep.device } } hint.description "Default hardware dependent device" } hwdep.hw { @args [ CARD DEV ] @args.CARD { type string default { @func getenv vars [ ALSA_HWDEP_CARD ALSA_CARD ] default { @func refer name defaults.hwdep.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_HWDEP_DEVICE ] default { @func refer name defaults.hwdep.device } } } type hw card $CARD device $DEV hint { description "Direct hardware dependent device" device $DEV } } # # Timer interface # timer_query.default { type hw } timer_query.hw { type hw } timer.default { type hw class { @func refer name defaults.timer.class } sclass { @func refer name defaults.timer.sclass } card { @func refer name defaults.timer.card } device { @func refer name defaults.timer.device } subdevice { @func refer name defaults.timer.subdevice } hint.description "Default timer device" } timer.hw { @args [ CLASS SCLASS CARD DEV SUBDEV ] @args.CLASS { type integer default { @func refer name defaults.timer.class } } @args.SCLASS { type integer default { @func refer name defaults.timer.sclass } } @args.CARD { type string default { @func refer name defaults.timer.card } } @args.DEV { type integer default { @func refer name defaults.timer.device } } @args.SUBDEV { type integer default { @func refer name defaults.timer.subdevice } } type hw class $CLASS sclass $SCLASS card $CARD device $DEV subdevice $SUBDEV hint { description "Direct timer device" device $DEV } }


Enfin, je n'ai pas de fichier /etc/asoundrc.
J'ai déja lancé une fois
Copy to clipboard
sudo modprobe snd-aloop
, je ne sais pas s'il faut écrire quelque chose quelque part pour que ce soit permananent ou si ça suffit de lancer la commande une fois, mais en tout cas même après relancé la commande j'ai toujours le même problême.

Une autre piste: le son sort de ma carte intel même sans activé jack, ça doit être dans la configuration d'alsa ou du matériel qu'est le problème... Ou peut être de pulseaudio, je viens de voir que le démon pulseaudio est lancé depuis.
Bon, j'ai tout désinstallé niveau audio pour repartir de 0, avec ALSA j'ai donc du son mais que pour une seule applicarion à la fois. Normalement le plugin ALSA Dmix est activé par défaut, j'ai seulement j'ai l'impression qu'il ne fonctionne pas avec ma carte RME.
Etant sur un systeme 64bit, j'ai quand même installé lib32-alsa-plugins au cas où ça vient de ça, mais non.

Quelqu'un, de préférence ayant la même carte ou une autre RME à problème, pourrait-il m'aider à avoir du son multisource ?
J'aurait bien aimé utiliser Cadence quand même car j'aime bien la suite d'outils qu'il fournit.
France
Essaye de faire un

dmesg | grep -i hammerfall


Cela va te donner le contenu de la mémoire tampon du noyau. Peut être que le problème se situe pendant le chargement du module spécifique.

Autre piste, essaye de voir avec un live cd/usb d'une autre distribution, pour voir si ça marche.

Enfin, dans un forum, j'ai vu qu'il fallait une alim externe de 12 v pour la carte: est-ce que tu as regardé de ce cote la ?
Copy to clipboard
dmesg | grep -i hammerfall
ne renvoie rien, par contre:
Copy to clipboard
dmesg | grep -i hdsp [ 8.629497] snd_hdsp 0000:03:00.0: wait for FIFO status <= 0 failed after 30 iterations [ 8.629603] snd_hdsp 0000:03:00.0: Multiface found [ 8.643311] snd_hdsp 0000:03:00.0: loading firmware [ 12.014087] snd_hdsp 0000:03:00.0: finished firmware loading

(le driver RME s'appelle hdsp)
Pour l'alim, c'est bien du 12V, celle d'origine.
Avant de réinstaller Arch, j'étais déja sous Arch, et j'avais réussi à la faire marcher en multisource avec Cadence. Là par contre je n'y arrive plus.
France
Il semblerai que le problème soit sur ton .asoudrc:
ta carte RME doit être ( si j'ai bien compris) hw:0,? , ta carte interne doit être hw:1,? . Je ne pense pas qu'il soit normal d'avoir sur le même .asoudrc hw:0 et hw:1 ( sauf si c'est volontaire).
Ceci dit, je n'ai jamais compris ( jamais pris le temps 😉 comment ça marchait.
essaye peut-être ça .
Bon courage.
e n'ai pas de fichier asoundrc, je ne comprends pas comment le configurer, même en lisant la doc... Mais si tu acceptes de m'aider à l'éditer e t'en serais très reconnaissant.
France
le .asoundrc, c'est celui que tu as renvoyé précédemment. (~./asoundrc )


Playback sur la RME
Copy to clipboard
# playback device pcm.aloopPlayback { type dmix ipc_key 1 ipc_key_add_uid true slave { pcm "hw:Loopback,0,0" format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 4096 } }


C'est un plugin dmix de type loopback


L’interface loopback est une carte audio logicielle avec plusieurs points d’entrées (sur lesquels il y a du son à capturer) et plusieurs points de sorties.
Le Dmix permet de mixer plusieurs flux differents et de les reproduire.


Capture sur la RME
Copy to clipboard
pcm.aloopCapture { type dsnoop ipc_key 2 ipc_key_add_uid true slave { pcm "hw:Loopback,0,1" format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 4096 } } }


Le Dsnoop permet de mixer plusieurs flux différents pour l'enregistrement.

FULL DUPLEX sur la RME
Copy to clipboard
# duplex device pcm.aloopDuplex { type asym playback.pcm "aloopPlayback" capture.pcm "aloopCapture" } }


Ça c'est La reunion des 2.

CARTE Defaut
Copy to clipboard
# ------------------------------------------------------ # default device pcm.!default { type plug slave.pcm "aloopDuplex" } }


Ta RME est ta carte par défaut.


Le probleme doit etre là
Copy to clipboard
# alsa_in -j alsa_in -dcloop -q 1 pcm.cloop { type dsnoop ipc_key 3 ipc_key_add_uid true slave { pcm "hw:Loopback,1,0" channels 2 format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 32768 } } }


Ça, c'est ta carte interne, je ne comprend pas ce qu'elle fait là


idem
Copy to clipboard
# ------------------------------------------------------ # alsa_out -j alsa_out -dploop -q 1 pcm.ploop { type plug slave.pcm "hw:Loopback,1,1" } }


La aussi, je ne vois pas ce qu'elle fait là.

Voila ce que je peux t'en dire, sans aucune garantie.
Bonne recherche et bon courage.
France
Je ne sais pas si ça va t'aider mais,

J'ai fixé l'ordre des cartes
j'ai installé jack2 (important hein ❗
j'ai un pont pulseaudio jack (oui j'ai pulseaudio)

et du coup, ça fonctionne chez moi.

je suis sous manjaro linux (archlinux quoi ...)
Ouf, ça y est j'ai réussi à faire marcher le bridge ALSA-LOOP-JACK ! J'ai retrouvé la solution que j'avais posté sur ce forum l'année dernière ! !
Mais bon, ce n'est pas fini car pour certaines raison j'aimerai gardé pulseaudio...Donc à priori le problème vient de la configuration de pulseaudio générée par cadence. En effet, avec la même configuration de alsa et cadence, avec pulseaudio le son sort de la carte intel, et impossible de le faire sortir de la RME en configurant cadence, et sans pulseaudio, miracle tout marche.
Je précise qu'avec pulseaudio j'ai quand même essayé le bridge pulseausdio->jack, j'ai désactivé pulseaudio aussi, mais rien n'a fonctionné.

Donc maintenant j'en appel à votre aide pour configurer pulseaudio, effectivement ça doit être un problême d'ordre de carte.
France
Quel logiciel a besoin de n'utiliser qu'alsa chez toi ?

chez moi, les logiciels sont ok avec jack. du coup --> installation de jack 2
jack ou jack2 ---> différences

ensuite pour l'ordre des cartes son :
Fixer l ordre des cartes-son

je vois que tu ne veux pas utiliser pulseaudio. c'est toujours le cas ?
Je crois que je me suis mal fait comprendre, c'est sans ALSA que cela fonctionne, dans le lien de mon ancien topic je souhaitait ne pas l'utiliser mais aujourd'hui j'en ai besoin car l'emulateur android que j'utilise pour programmer des app (l'emulateur d'android studio) utilise pulseaudio pour le son, c'est con...

Du coup maintenant j'aimerai pouvoir utiliser pulseaudio avec jack, mais pulseaudio fait que ma config ne fonctionne pas par défaut, le son est renvoyé dans la carte intel.
Quand j'ai installé Cadence, pulseaudio s'est installé, par défaut il se lance tout le temps, j'ai essayé le bridge pulseaudio->jack de cadence, mais le son sort quand même de la carte intel. J'ai stopper pulseaudio dans jack, mais le son sort toujours de la carte intel. Du coup j'ai désinstallé pulseaudio, j'utilise le bridge alsa->jack, et là ça marche nickel, sauf pour android studio qui lui veut utiliser pulseaudio...
Le problème viens surement de la config pulseaudio, mais je ne vois pas comment pulseaudio arrive à faire sortir le son sur la carte intel, même désactivé (désactivé dans cadence en tout cas).

Suis-je assez clair ?
Page: 1/2  [Suivant]
1  2