Help with 'Merged' soundcard setup please?

Talk about your MIDI interfaces, microphones, keyboards...

Moderators: MattKingUSA, khz

Post Reply
Rothchild
Established Member
Posts: 3
Joined: Fri May 21, 2021 2:48 pm

Help with 'Merged' soundcard setup please?

Post by Rothchild »

I really want to migrate my DAW to linux but I've come a cropper on a bit of setup and would value any help anyone can give to help me overcome it.

I've installed AV Linux, for the most part everything is working great. I've got 2 RME HDSP cards installed (one with a Multiface and one with a Digiface hanging off them - the whole rig is tied together with Wordclock) and I want to set them up as a 'Merged' card, so that all 44 channels of IO are available using the ALSA driver in Reaper. (for the moment I have no real need/desire to complicate things with a Jack setup).

I've got the necessary firmware installed, the HDSP mixer and things are generally working, but try as I might I can't work out how to make the merged card work so that I can access all the IO.

Some insight:

Code: Select all

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: DSP [Hammerfall DSP], device 0: RME Hammerfall DSP + Digiface [RME Hammerfall DSP + Digiface]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: DSP_1 [Hammerfall DSP], device 0: RME Hammerfall DSP + Multiface [RME Hammerfall DSP + Multiface]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Code: Select all

$ aplay -L
default
    Playback/recording through the PulseAudio sound server
null
    Discard all samples (playback) or generate zero samples (capture)
jack
    JACK Audio Connection Kit
pulse
    PulseAudio Sound Server
DSP
DSP_1
merge
merge2
sysdefault:CARD=DSP
    Hammerfall DSP, RME Hammerfall DSP + Digiface
    Default Audio Device
dmix:CARD=DSP,DEV=0
    Hammerfall DSP, RME Hammerfall DSP + Digiface
    Direct sample mixing device
dsnoop:CARD=DSP,DEV=0
    Hammerfall DSP, RME Hammerfall DSP + Digiface
    Direct sample snooping device
hw:CARD=DSP,DEV=0
    Hammerfall DSP, RME Hammerfall DSP + Digiface
    Direct hardware device without any conversions
plughw:CARD=DSP,DEV=0
    Hammerfall DSP, RME Hammerfall DSP + Digiface
    Hardware device with all software conversions
usbstream:CARD=DSP
    Hammerfall DSP
    USB Stream Output
hdmi:CARD=NVidia,DEV=0
    HDA NVidia, HDMI 0
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=1
    HDA NVidia, HDMI 1
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=2
    HDA NVidia, HDMI 2
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 3
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=4
    HDA NVidia, HDMI 4
    HDMI Audio Output
dmix:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Direct sample mixing device
dmix:CARD=NVidia,DEV=7
    HDA NVidia, HDMI 1
    Direct sample mixing device
dmix:CARD=NVidia,DEV=8
    HDA NVidia, HDMI 2
    Direct sample mixing device
dmix:CARD=NVidia,DEV=9
    HDA NVidia, HDMI 3
    Direct sample mixing device
dmix:CARD=NVidia,DEV=10
    HDA NVidia, HDMI 4
    Direct sample mixing device
dsnoop:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Direct sample snooping device
dsnoop:CARD=NVidia,DEV=7
    HDA NVidia, HDMI 1
    Direct sample snooping device
dsnoop:CARD=NVidia,DEV=8
    HDA NVidia, HDMI 2
    Direct sample snooping device
dsnoop:CARD=NVidia,DEV=9
    HDA NVidia, HDMI 3
    Direct sample snooping device
dsnoop:CARD=NVidia,DEV=10
    HDA NVidia, HDMI 4
    Direct sample snooping device
hw:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Direct hardware device without any conversions
hw:CARD=NVidia,DEV=7
    HDA NVidia, HDMI 1
    Direct hardware device without any conversions
hw:CARD=NVidia,DEV=8
    HDA NVidia, HDMI 2
    Direct hardware device without any conversions
hw:CARD=NVidia,DEV=9
    HDA NVidia, HDMI 3
    Direct hardware device without any conversions
hw:CARD=NVidia,DEV=10
    HDA NVidia, HDMI 4
    Direct hardware device without any conversions
plughw:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=7
    HDA NVidia, HDMI 1
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=8
    HDA NVidia, HDMI 2
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=9
    HDA NVidia, HDMI 3
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=10
    HDA NVidia, HDMI 4
    Hardware device with all software conversions
usbstream:CARD=NVidia
    HDA NVidia
    USB Stream Output
sysdefault:CARD=DSP_1
    Hammerfall DSP, RME Hammerfall DSP + Multiface
    Default Audio Device
dmix:CARD=DSP_1,DEV=0
    Hammerfall DSP, RME Hammerfall DSP + Multiface
    Direct sample mixing device
dsnoop:CARD=DSP_1,DEV=0
    Hammerfall DSP, RME Hammerfall DSP + Multiface
    Direct sample snooping device
hw:CARD=DSP_1,DEV=0
    Hammerfall DSP, RME Hammerfall DSP + Multiface
    Direct hardware device without any conversions
plughw:CARD=DSP_1,DEV=0
    Hammerfall DSP, RME Hammerfall DSP + Multiface
    Hardware device with all software conversions
usbstream:CARD=DSP_1
    Hammerfall DSP
    USB Stream Output
sysdefault:CARD=U25
    Default Audio Device
usbstream:CARD=U25
    USB Axiom 25
    USB Stream Output
sysdefault:CARD=M4U
    Default Audio Device
usbstream:CARD=M4U
    ESI M4U
    USB Stream Output
asoundrc.conf

Code: Select all

pcm.DSP {
    type hw
    card DSP
}
ctl.DSP {
    type hw
    card DSP
}
pcm.DSP_1 {
    type hw
    card DSP_1
}
ctl.DSP_1 {
    type hw
    card DSP_1
}

pcm.merge {
	type multi;
	slaves.a.pcm hw:DSP
	slaves.a.channels 26;
	slaves.b.pcm hw:DSP_1
	slaves.b.channels 18;
	bindings.0.slave a;
	bindings.0.channel 0;
	bindings.1.slave a;
	bindings.1.channel 1;
	bindings.2.slave a;
	bindings.2.channel 2;
	bindings.3.slave a;
	bindings.3.channel 3;
	bindings.4.slave a;
	bindings.4.channel 4;
	bindings.5.slave a;
	bindings.5.channel 5;
	bindings.6.slave a;
	bindings.6.channel 6;
	bindings.7.slave a;
	bindings.7.channel 7;
	bindings.8.slave a;
	bindings.8.channel 8;
	bindings.9.slave a;
	bindings.9.channel 9;
	bindings.10.slave a;
	bindings.10.channel 10;
	bindings.11.slave a;
	bindings.11.channel 11;
	bindings.12.slave a;
	bindings.12.channel 12;
	bindings.13.slave a;
	bindings.13.channel 13;
	bindings.14.slave a;
	bindings.14.channel 14;
	bindings.15.slave a;
	bindings.15.channel 15;
	bindings.16.slave a;
	bindings.16.channel 16;
	bindings.17.slave a;
	bindings.17.channel 17;
	bindings.18.slave a;
	bindings.18.channel 18;
	bindings.19.slave a;
	bindings.19.channel 19;
	bindings.20.slave a;
	bindings.20.channel 20;
	bindings.21.slave a;
	bindings.21.channel 21;
	bindings.22.slave a;
	bindings.22.channel 22;
	bindings.23.slave a;
	bindings.23.channel 23;
	bindings.24.slave a;
	bindings.24.channel 24;
	bindings.25.slave a;
	bindings.25.channel 25;
#Multiface
	bindings.26.slave b;
	bindings.26.channel 26;
	bindings.27.slave b;
	bindings.27.channel 27;
	bindings.28.slave b;
	bindings.28.channel 28;
	bindings.29.slave b;
	bindings.29.channel 29;
	bindings.30.slave b;
	bindings.30.channel 30;
	bindings.31.slave b;
	bindings.31.channel 31;
	bindings.32.slave b;
	bindings.32.channel 32;
	bindings.33.slave b;
	bindings.33.channel 33;
	bindings.34.slave b;
	bindings.34.channel 34;
	bindings.35.slave b;
	bindings.35.channel 35;
	bindings.36.slave b;
	bindings.36.channel 36;
	bindings.37.slave b;
	bindings.37.channel 37;
	bindings.38.slave b;
	bindings.38.channel 38;
	bindings.39.slave b;
	bindings.39.channel 39;
	bindings.40.slave b;
	bindings.40.channel 40;
	bindings.41.slave b;
	bindings.41.channel 41;
	bindings.42.slave b;
	bindings.42.channel 42;
	bindings.43.slave b;
	bindings.43.channel 43;
	bindings.44.slave b;
	bindings.44.channel 44;
	}

ctl.merge {
    type hw
    card DSP
}

pcm.merge2 {
    type route
    slave.pcm "merge"
    ttable.0.0 1
    ttable.1.1 1
    ttable.2.2 1
    ttable.3.3 1
}
The ttable section at the end is a late addition, so obviously doesn't cover all IO, but I'm still just stuck trying to work out why I can't see 'merge' as a soundcard option in Reaper, most of the guidance I've seen seems to suggest that really just the pcm.merge section and the bindings should be enough?

Code: Select all

$ aplay -D merge dnbsamples_break33.wav 
ALSA lib pcm_multi.c:1349:(_snd_pcm_multi_open) Invalid or missing schannel for channel 26
aplay: main:828: audio open error: Invalid argument

Code: Select all

$ aplay -D DSP_1 dnbsamples_break33.wav 
Playing WAVE 'dnbsamples_break33.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
aplay: set_params:1334: Access type not available
User avatar
khz
Established Member
Posts: 1648
Joined: Thu Apr 17, 2008 6:29 am
Location: German
Has thanked: 42 times
Been thanked: 92 times

Re: Help with 'Merged' soundcard setup please?

Post by khz »

Welcome.

Here are listed ~all possibilities regarding Multiple Soundcard/Interface: viewtopic.php?p=95025#p95025

If you use ALSA so
ALSA - MultipleCards >> http://alsa.opensrc.org/MultipleCards
"~/.asoundrc" >> https://www.alsa-project.org/main/index ... el_devices.
. . . FZ - Does humor belongs in Music?
. . GNU/LINUX@AUDIO ~ /Wiki $ Howto.Info && GNU/Linux Debian installing >> Linux Audio Workstation LAW
  • I don't care about the freedom of speech because I have nothing to say.
Drumfix
Established Member
Posts: 299
Joined: Mon Jan 26, 2009 5:15 pm
Been thanked: 11 times

Re: Help with 'Merged' soundcard setup please?

Post by Drumfix »

Most likely reaper does only enumerate hw devices using snd_card_next instead of pcm devices using snd_device_name_hint().
Did i ever mention that i find the alsa api to be completely overengineered rubbish ?
Rothchild
Established Member
Posts: 3
Joined: Fri May 21, 2021 2:48 pm

Re: Help with 'Merged' soundcard setup please?

Post by Rothchild »

Many thanks khz,

I have sought out and read pretty much every resource I can find on the matter, the issue now isn't that I don't know where to look for information, rather that I've reached the end of my ability to understand the info in relation to the setup I've got and how to make it actually work!

If I could get some pointers about which elements of my setup are wrong that would be really helpful.

One other small thing that I've noticed, none of it works unless I have the HDSP mixers open, but I'm not sure what this tells me (apart from that I need them open...)
Rothchild
Established Member
Posts: 3
Joined: Fri May 21, 2021 2:48 pm

Re: Help with 'Merged' soundcard setup please?

Post by Rothchild »

Thanks Drumfix,

I had a similar though (not as technically but I did consider that maybe Reaper can't see a 'merged' card). I'll check on that at the Reaper forum.

However, I also can't see the merge card in Ardour or Jack either, so I still think it's an issue somewhere further up than the application (for now)
Post Reply