Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER for Linux

Reply
 
Thread Tools Display Modes
Old 05-15-2021, 03:05 PM   #1
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default Using more than one RME card?

I've finally taken a more committed plunge in to migrating to linux for the studio machine, on the whole today's start has gone pretty well and I think this could happen but for one major showstopper and some snags.

The (potential) major showstopper is that the studio is built around two Hammerfall cards (a Digiface and a Multiface), they are I/Od up to the gunnals 32 channels of ADAT and 8 audio IO on the Multiface + at least one of the spdif in use too. I use a lot of ReaInsert!

I've got both cards working, but I can't work out how to address them both from Reaper (I can only select one card at a time). With ASIO in windows I select the first input/output of the first card and the list goes all the way down to the last input/output of the second card, job is a good'un. How do I recreate this functionality under linux?

Of course having waited multiple years for Klinke to fix recording send automation on the MCU plug he's done it in the week where I've just found out it only works in windows :-/ none of the other implementations do folder paging anywhere near as good, has anyone managed to recompile his MCU controller to work with linux?

All assistance gratefully received!
rothchild is offline   Reply With Quote
Old 05-15-2021, 03:52 PM   #2
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

You might need to use JACK. I used to use two M-Audio PCI cards and to get both accessable to REAPER I used qjackctrl which has a patchbay where I was able to make both cards show up as one JACK device. I haven't used that setup in a long time, but I remember it was reliable.
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-15-2021, 04:01 PM   #3
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Thanks Glennbo,

I just saw another of your posts that suggested I might have to go that way (eugh, as if rebuilding all my I/O aliases wasn't enough already...)

On that note, does aliasing the names of the IO work ok when using Jack?

Am I going to be able to end up with stuff called useful things 'compressor 1 input L' 'Reverb 2 Output R' etc?
rothchild is offline   Reply With Quote
Old 05-15-2021, 04:51 PM   #4
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
Thanks Glennbo,

I just saw another of your posts that suggested I might have to go that way (eugh, as if rebuilding all my I/O aliases wasn't enough already...)

On that note, does aliasing the names of the IO work ok when using Jack?

Am I going to be able to end up with stuff called useful things 'compressor 1 input L' 'Reverb 2 Output R' etc?
With my two M-Audio Delta cards The inputs and outputs were first all listed for the first card, and then duplicated below that with the second card. I'm pretty sure I could have renamed them, but I knew that the left input of card two was really like input 3 out of 4 total. I had help from Jack Winter getting it working three years ago. You might find some useful stuff in this thread.

https://forum.cockos.com/showthread.php?t=210218

I've forgotten most of it, but I remember having a script that would fire up qjackctrl which I had set to load my routing in it's patchbay, and then it would launch REAPER all in succession so that by the time REAPER came up, all the connections had been laced up with qjackctrl.
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-15-2021, 11:42 PM   #5
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Thanks again Glennbo,

Looks like I've got to take 2 steps back for 1 forward here, by getting involved with .asoundrc to 'merge' the cards first so I can then build the patchbay in JACK.

Just looking ahead a bit, I see (in jack Patch) alsa and Jack have created midi i/o how do I thin this down?
rothchild is offline   Reply With Quote
Old 05-15-2021, 11:59 PM   #6
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

So if anyone can give me a nudge in the right direction with what my .asoundrc needs to look like that would be very helpful.

As a starter for 10 I've got:

Code:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: DSP [Hammerfall DSP], device 0: RME Hammerfall DSP + Digiface [RME Hammerfall DSP + Digiface]
  Subdevices: 0/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 4: DSP_1 [Hammerfall DSP], device 0: RME Hammerfall DSP + Multiface [RME Hammerfall DSP + Multiface]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

And the contents of the .asoundrc file in my home folder are:

Code:
defaults.pcm.!card DSP_1
defaults.ctl.!card DSP_1
rothchild is offline   Reply With Quote
Old 05-16-2021, 05:09 AM   #7
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Anyone got any experience using either ALSA_IN and ALSA-OUT (https://jackaudio.org/faq/multiple_devices.html)

or Zita? (http://kokkinizita.linuxaudio.org/li...uickguide.html)

Looks like it could be the droid I'm looking for?
rothchild is offline   Reply With Quote
Old 05-16-2021, 05:16 AM   #8
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

From the Zita man page it certainly looks like what I need (especially as the whole lot is tied together with word clock so I don't need resampling), but I don't know what to use for the ALSA device or the Jack client name....


Code:
OPTIONS
       -h     Print command line and options summary.

       -j <name>
              Jack client name [zita-a2j or zita-j2a].

       -d <device>
              ALSA device [none].

       -r <rate>
              Sample rate [48000].

       -p <period>
              Period size [256].

       -n <nfrags>
              Number of fragments [2].

       -c <nchannels>
              Number of channels [2].

       -Q <quality>
              Resampling quality [auto].

       -S     Word clock sync, disable resampling.

       -I <samples> [0]
              (zita-a2j only) Latency correction. The value is added to the latency property set on the Jack ports.

       -O <samples> [0]
              (zita-j2a only) Latency correction. The value is added to the latency property set on the Jack ports.

       -L     Force 2 channels and 16-bit sample format.

       -v     Print tracing information.

EDIT: Found a few tips here: https://forums.cockos.com/showthread.php?t=229045

Last edited by rothchild; 05-16-2021 at 06:13 AM.
rothchild is offline   Reply With Quote
Old 05-16-2021, 06:42 AM   #9
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

One additional bit I remember is that to make the connection in the patchbay of qjackctrl, REAPER needs to be running because you drag and drop the inputs from your sound cards over to REAPER, and then you can save that setup as a patch.
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-16-2021, 06:43 AM   #10
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Feels like I'm close, but I'm missing something

Code:
$ zita-a2j -d hw:DSP_1 -r 44100 -S -p 256 -n 2
Can't open ALSA capture device 'hw:DSP_1'.
/etc/security/limits.conf has the following line:

Code:
@audio - rtprio 90       # maximum realtime priority
and in the 'advanced' tab of qjackctl setup I've set the priority to 50 (and 'Realtime' is ticked in the parameters tab)

EDIT: Slightly more verbose output

Code:
$ zita-a2j -d hw:DSP_1 -r 44100 -S -p 256 -n 2 -v
Alsa_pcmi: Cannot open PCM device hw:DSP_1 for capture.
Can't open ALSA capture device 'hw:DSP_1'.

Last edited by rothchild; 05-16-2021 at 07:25 AM.
rothchild is offline   Reply With Quote
Old 05-16-2021, 07:38 AM   #11
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Don't know if this will help, but this is the script I had qjackctrl run when it started. The half second sleep commands were to allow the connections to be established before the next command. With this script, midi gets linked to JACK, then zita-a2j linked my second card, and finally REAPER got launched. All this happened by just running qjackctrl.

Code:
a2jmidid -e &
sleep .5
zita-a2j -d hw:3 &
sleep .5
/home/glennbo/.local/share/reaper_linux_x86_64/REAPER/reaper &
This was my qjackctrl patchbay file that auto loaded on starting up qjackctrl.

Code:
<!DOCTYPE patchbay>
<patchbay version="0.4.5" name="4-Channel-Patch">
 <output-sockets>
  <socket type="jack-audio" exclusive="off" client="system" name="system 1">
   <plug>capture_1</plug>
   <plug>capture_2</plug>
  </socket>
  <socket type="jack-audio" exclusive="off" client="zita-a2j" name="zita-a2j 1">
   <plug>capture_1</plug>
   <plug>capture_2</plug>
  </socket>
 </output-sockets>
 <input-sockets>
  <socket type="jack-audio" exclusive="off" client="REAPER" name="REAPER 1">
   <plug>in1</plug>
   <plug>in2</plug>
  </socket>
  <socket type="jack-audio" exclusive="off" client="REAPER" name="REAPER 2">
   <plug>in3</plug>
   <plug>in4</plug>
  </socket>
 </input-sockets>
 <slots/>
 <cables>
  <cable type="jack-audio" output="system 1" input="REAPER 1"/>
  <cable type="jack-audio" output="zita-a2j 1" input="REAPER 2"/>
 </cables>
</patchbay>
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-16-2021, 07:41 AM   #12
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Thanks Glennbo,

I'll have a look through this and see how I might be able to adapt it.
rothchild is offline   Reply With Quote
Old 05-16-2021, 09:00 AM   #13
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

It's always the simple stuff, you have to stop PulseAudio first...

Now it's running I only get two ajbridge IO in Jack, how do I scale it to provide all the IO on the second card?

Edit, Sorry, answering my own question, channels is set with the -C flag....

Last edited by rothchild; 05-16-2021 at 09:20 AM.
rothchild is offline   Reply With Quote
Old 05-16-2021, 09:27 AM   #14
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
It's always the simple stuff, you have to stop PulseAudio first...

Now it's running I only get two ajbridge IO in Jack, how do I scale it to provide all the IO on the second card?
Might have a look at this.

https://jackaudio.org/faq/multiple_devices.html

My M-Audio cards were only 2 channels each, so I didn't have the issue you are seeing. Anyway, that doc describes a way to create a pseudo device that is a composite of multiple hardware devices, and they use RME stuff in their examples.
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-17-2021, 11:10 AM   #15
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

I'm starting to think I'm fighting some deeper reliability / config issue here.

I've managed to make it work a couple of times with zita-jbridge and I can reliably make it 'appear' to work, but not actually! (and each time I did get it to work the whole machine ended up crashing)

The general recipe is:

kill pulse - with pactl -exit
launch qjackctl and run Jack (128 frames 2 buffers 44.1)
kill pulse - with pactl -exit
launch zita a2j (zita-a2j -d hwSP_1 -r 44100 -S -p 128 -n 2 -c 18)
launch zita j2a (zita-j2a -d hwSP_1 -r 44100 -S -p 128 -n 2 -c 18)

when i look in 'graph' in qjackctl I can see all the necessary zita IO

launch Reaper (looking in graph it all gets mapped up sensibly and I can see the zita I/O and the Reaper IO) in Reaper I select the pair I want as my main outs (first 2 channels of the second card)

When I play a file in Reaper all the meters play but (more often than not) no sound - when I look at the HDSP mixer app I can see the playback in the second row of meters (which would confirm it's getting out of Reaper and to the card but try as I might I can't get it to the analogue out on the bottom row of the HDSP mixer.

Nevertheless, a couple of times (with no seeming rhyme or reason) it has worked and the output meter in HDSP mixer reflected this. The last time it was working I managed to load a more complex project and it was playing ok, there were a couple of stops and the zita instances said something about losing sync and pausing for 10 seconds.

Then after a while the interface of the whole machine froze (although the mouse cursor still moved about) although it was still playing audio ok, then a little while after than the audio went to a looping buzz and I hard reset the machine. Since then, with the same start up routine I've not been able to get a noise out of it again.

Do I potentially need to try a different distro? I picked this one for an easy RT kernel, I generally would prefer something Debian derived but I'm not picky beyond that.
rothchild is offline   Reply With Quote
Old 05-17-2021, 11:12 AM   #16
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Incidentally I've also tried merging the cards in ALSA and ended up with this as an asoundrc.conf

Code:
pcm.merge {
	type multi;
	slaves.a.pcm hw:0
	slaves.a.channels 26;
	slaves.b.pcm hw: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 0
}
but it doesn't seem to make any difference (of course I appreciate that it could be enough to cause the problems outlined above....
rothchild is offline   Reply With Quote
Old 05-17-2021, 12:43 PM   #17
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
Incidentally I've also tried merging the cards in ALSA and ended up with this as an asoundrc.conf


but it doesn't seem to make any difference (of course I appreciate that it could be enough to cause the problems outlined above....
After you created the ALSA merged device, were you able to select ALSA on REAPER's audio setup panel, then see the merged device name on the drop down input/output selection lists?

Note: You have to click the down arrow buttons on the input/output selection lists or REAPER will put a cursor in those panels as if you were going to type in a device name.
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-17-2021, 12:54 PM   #18
rsntq
Human being with feelings
 
Join Date: May 2021
Posts: 8
Default

According to the output of aplay -l, your Digiface is card 0, and your Multiface is card 4. So, it should be:

slaves.a.pcm hw:0
slaves.b.pcm hw:4

Everything else looks right.
rsntq is offline   Reply With Quote
Old 05-17-2021, 01:03 PM   #19
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Quote:
Originally Posted by rsntq View Post
According to the output of aplay -l, your Digiface is card 0, and your Multiface is card 4. So, it should be:

slaves.a.pcm hw:0
slaves.b.pcm hw:4

Everything else looks right.
Thanks, I've noticed that they move about so I've gone back to using names, so it now looks like this

Code:
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_1
}
A merged single soundcard under alsa is a far more appealing option than futzing about with Jack, so I'm going to pursue this some more (still not working quite)

On some of the guides there are also lines in asoundrc.conf using 'ttable' do I need these? (I've not yet seen an understandable explanation of what they do)

There's also this version (https://alsa.opensrc.org/RME_Hammerfall_.asoundrc) which has a bit more config before the multi section starts, do I maybe need some of that?
rothchild is offline   Reply With Quote
Old 05-17-2021, 01:07 PM   #20
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Quote:
Originally Posted by Glennbo View Post
After you created the ALSA merged device, were you able to select ALSA on REAPER's audio setup panel, then see the merged device name on the drop down input/output selection lists?

Note: You have to click the down arrow buttons on the input/output selection lists or REAPER will put a cursor in those panels as if you were going to type in a device name.
No, at the moment I still have both separate cards. Interestingly (perhaps) only DSP_1 works if I select DSP Reaper tells me there was an error opening the audio hardware.
rothchild is offline   Reply With Quote
Old 05-17-2021, 02:34 PM   #21
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
No, at the moment I still have both separate cards. Interestingly (perhaps) only DSP_1 works if I select DSP Reaper tells me there was an error opening the audio hardware.
Reason I asked is when I was setting up my two M-Audio cards, Jack Winter had me try creating an ALSA merged device, which did eventually work with the name I gave it. I gave up after not much trying because I wasn't getting the channels from the second card. Jack wanted to pursue it farther, but I wanted to make some music and using qjackctrl with it's patchbay was working for my needs.

This last page of that thread, Jack Winter was having me try things to create an ALSA merged device might have some commands or techniques worth skimming over.

https://forum.cockos.com/showthread.php?t=210218&page=3
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-18-2021, 06:02 AM   #22
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Thanks Glennbo,

Yes I do keep referring back to that thread, there's a bit of unpicking to do but it's been helpful so far.

Still can't get ALSA to put 'mulit' in the list of cards that Reaper can see though.

Am I correct in my understanding that with the merged card approach I shouldn't need JACK? (I should just get one 'card' presented via ALSA that's addresable in Reaper).
rothchild is offline   Reply With Quote
Old 05-18-2021, 08:27 AM   #23
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
Thanks Glennbo,

Yes I do keep referring back to that thread, there's a bit of unpicking to do but it's been helpful so far.

Still can't get ALSA to put 'mulit' in the list of cards that Reaper can see though.

Am I correct in my understanding that with the merged card approach I shouldn't need JACK? (I should just get one 'card' presented via ALSA that's addresable in Reaper).
I'm pretty sure the merged card will run with ALSA and no JACK. I found an article on Alsa Opensource that mentions something about the older and newer methods, so maybe there's a better way than I was trying now.

https://alsa.opensrc.org/MultipleCards

Too bad Jack Winter doesn't frequent this forum as much as he used to. He loves solving puzzles like this.
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-18-2021, 09:30 AM   #24
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

There's some good stuff on there, this is the closest to what I need yet: https://alsa.opensrc.org/RME_Hammerfall_.asoundrc

It's this bit at the beginning that I'm having trouble deciphering, I think I need some of these defs before the 'multi' section

Code:
pcm_slave.rme9652_s {
    pcm rme9652_0
}
pcm.rme9652_1 {
    type hw
    card 1
}
ctl.rme9652_1 {
    type hw
    card 1
}
pcm.rme9652_0 {
    type hw
    card 0
}
ctl.rme9652_0 {
    type hw
    card 0
}
ctl.rme9652_48 {
    type hw
    card 0
}
pcm.rme9652_48 {
    type multi;
    slaves.a.pcm rme9652_0;
rothchild is offline   Reply With Quote
Old 05-19-2021, 08:37 AM   #25
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
There's some good stuff on there, this is the closest to what I need yet: https://alsa.opensrc.org/RME_Hammerfall_.asoundrc

It's this bit at the beginning that I'm having trouble deciphering, I think I need some of these defs before the 'multi' section
I found a page with some info that might be helpful. There is a local and a global version of those files, that the name and file location determine.

https://alsa.opensrc.org/Asoundrc
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-20-2021, 05:34 AM   #26
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

I really appreciate you sticking with me through this Glennbo, that last link has some useful insight, at least I feel like I'm starting to have a better handle on how the alsa conf works.

I'm starting to think that my configuration is actually correct (at least enough that I should be seeing some options for a 'merge' card somewhere), so I'm starting to wonder if it might be more profound. I think I'm going to try some different distros and see if that shakes anything out.

Next stop will probably be ubuntu studio but if there are any others that are recommended I'll take a look.
rothchild is offline   Reply With Quote
Old 05-20-2021, 08:25 AM   #27
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

So I found this QaS Config app and it seems it can see my 'Merge' card (as defined in asoundrc.conf (image attached) which is what's making me think the issue might be further downstream than the ALSA configuration?

I can also see the merge card listed with aplay -L

Code:
$ 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
merge
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
Trying to play a .wav

Code:
$ 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
Attached Images
File Type: png ksnip_20210520-162321.png (29.8 KB, 73 views)
rothchild is offline   Reply With Quote
Old 05-20-2021, 06:26 PM   #28
PMan
Human being with feelings
 
Join Date: Aug 2019
Posts: 646
Default

There are some pretty intense coders in the hardware forums at linuxmusicians.com
You might get some tips there.
PMan is offline   Reply With Quote
Old 05-21-2021, 08:26 AM   #29
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Thanks PMan,

I've posted over there too, hopefully someone has the chops to help me!
rothchild is offline   Reply With Quote
Old 05-21-2021, 09:07 AM   #30
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
Thanks PMan,

I've posted over there too, hopefully someone has the chops to help me!
Good luck getting whatever the final piece is. I tried a few variations creating a merged device, but since qjackctrl and zita-a2j were already able to do it, I just used that. IIRC, my primary audio card showed up like hardware and the other showed up as zita-a2j virtual in qjackctrl's patchbay.
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-21-2021, 09:48 AM   #31
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Yeah, Zita was also a 'nearly but not quite' solution too.

I may end up going back to it if I can't crack this problem, it's just that for my use the merged solution is much tidier and a lower overhead.

Do we know that Reaper can actually see merged devices, someone has suggested that it might

"only enumerate hw devices using snd_card_next instead of pcm devices using snd_device_name_hint()"

I've no way of knowing this I guess!
rothchild is offline   Reply With Quote
Old 05-21-2021, 10:38 AM   #32
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
Yeah, Zita was also a 'nearly but not quite' solution too.

I may end up going back to it if I can't crack this problem, it's just that for my use the merged solution is much tidier and a lower overhead.

Do we know that Reaper can actually see merged devices, someone has suggested that it might

"only enumerate hw devices using snd_card_next instead of pcm devices using snd_device_name_hint()"

I've no way of knowing this I guess!
I had to use JACK back then because midi didn't work using ALSA. I did get the merged device to be seen by JACK, but never got the second card's inputs linked up. Probably was real close, but had an alternate solution that was working.

The startup that Jack Winter had me try launching jackd with the following command (goes in the command line box when REAPER is set to JACK), and the merged name was honored by JACK which satisfied REAPER set to JACK, but I still wasn't getting audio from the second card.

Quote:
Starting jack with,

/usr/bin/jackd -P80 -S -dalsa -C multi_capture -P multi_playback -r44100 -p64 -n2 -Xseq

shows the overheads picking up signal when I tap on the kick drum, but no signal coming from either the kick or snare mics, which are connected to the inputs of the second card.
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-21-2021, 01:53 PM   #33
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

I saw that but to be honest I'd been avoiding it as it seems to be the version that disconnects (or doesn't connect) the clocks

https://jackaudio.org/faq/multiple_devices.html

If you're saying that MIDI and ALSA don't play nice (without jack) then I probably ought to re-evaluate whether I'm going the JACK route anyway. The merged card thing seems to be slipping away (I've asked here, on the RME linux board and at Linux musicians and simple answers are not forthcoming) so I may have to try a different tack.
rothchild is offline   Reply With Quote
Old 05-21-2021, 03:47 PM   #34
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
I saw that but to be honest I'd been avoiding it as it seems to be the version that disconnects (or doesn't connect) the clocks

https://jackaudio.org/faq/multiple_devices.html

If you're saying that MIDI and ALSA don't play nice (without jack) then I probably ought to re-evaluate whether I'm going the JACK route anyway. The merged card thing seems to be slipping away (I've asked here, on the RME linux board and at Linux musicians and simple answers are not forthcoming) so I may have to try a different tack.
MIDI works fine with ALSA. I have old school 5-pin input and outputs on my current UMC1820 USB audio interface, as well as an Akai MPD26 USB pad controller that also has 5-pin in/outs. All of them function and are being used with ALSA.

When I was using two PCI cards I started out with JACK to get them both working for inputs and midi, but I think I tweaked some startup file such that ALSA saw it as being in use. When I got my new interface I did a new clean OS install and chose ALSA right off the bat and everything worked.

As for clocks, I've since added an ADA8200 and have both units using ADAT in and out such that the audio device is the clock for the expansion mic pre unit on one ADAT cable, and the mic pre is sending it's data back over the second ADAT cable. In my case, the hardware is taking care of the clocks and the two units look like a single 18 input 20 output device.

You should also be able to set clock options in alsamixer. You can see the option on the left side of alsamixer, once you have chosen a sound device with F6.

Code:
Card: UMC1820                                                      
¦ Chip: USB Mixer                                                  
¦ View: F3:[Playback] F4: Capture  F5: All                         
¦ Item: UMC1820 Clock Selector Clock Source [Internal Clock]       
¦                                                                  
¦                                                                                                                                                                                                  
¦                                                                  
¦                         +--+              +--+              +--+ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦                         ¦¦¦¦              ¦¦¦¦              ¦¦¦¦ 
¦  Internal Clock         +--¦              +--¦              +--¦ 
¦                         ¦OO¦              ¦OO¦              ¦OO¦ 
¦                         +--+              +--+              +--+ 
¦                       100<>100          100<>100            100  
¦<UMC1820 Clock Sel> UMC1820 Output    UMC1820 Output    UMC1820 Ou
¦                         Front             Rear             Center
¦
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-21-2021, 11:48 PM   #35
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Thanks again Gennbo,

I've not really got as far as thinking about MIDI but it's true that my setup in that department is also somewhat complicated (there's 3 io on the two RME cards, a 4 port ESI interface on USB, an Axiom 25 on USB and a TR8 on USB too - all in use)

i'm actually just parking another link here for now (will dig in later, off for a bike ride now!) but there's some really good tips in here for RME users

https://www.linuxjournal.com/article/7024
rothchild is offline   Reply With Quote
Old 05-22-2021, 12:11 PM   #36
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
Thanks again Gennbo,

I've not really got as far as thinking about MIDI but it's true that my setup in that department is also somewhat complicated (there's 3 io on the two RME cards, a 4 port ESI interface on USB, an Axiom 25 on USB and a TR8 on USB too - all in use)

i'm actually just parking another link here for now (will dig in later, off for a bike ride now!) but there's some really good tips in here for RME users

https://www.linuxjournal.com/article/7024
I see they are using amixer to set stuff in that article. I recently needed to use that to enable all the channels and set input/output levels to max on my new ADA8200 using amixer.

I'm betting that the commands I found for the gear I'm using would work on other gear, as it appears they are just un-muting the first 16 input and output channels, then setting them all to 127. The -c 1 is the audio device number from alsamixer when you hit F6 to select an audio device.

Last line saves the setup.

Code:
amixer -c 1 cset numid=1 on,on,on,on,on,on,on,on,on,on,on,on,on,on,on,on
amixer -c 1 cset numid=3 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127
amixer -c 1 cset numid=9 on,on,on,on,on,on,on,on,on,on,on,on,on,on,on,on
amixer -c 1 cset numid=11 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127
amixer -c 1 cset numid=8 0
alsactl store
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-23-2021, 01:58 PM   #37
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Huge leaps forward today!

Seem to have it working now (using zita-a2j / j2a) just had a session of renaming IO to sensible things and fixing up all my reinsert presets + midi instrument track presets.

I've not stress tested it yet and I'm still getting some odd aliasing etc (still getting a bit of 'Detected excessive synchronisation errors' messages from zita which seem to go with the sound going wonky.

This is moving in the right direction at least (so much so that now the most significant bummer I'm facing is that Kinke's CSurf plugin doesn't work on linux (and the feedback from the good people in the dev board (and Klinke) is that it's not all that easy :-( I guess I'm going to have to hope that CSI gets round to a more advanced foldering structure...

Glennbo (and others) thanks again for your persistence and patience with me! Looks like I might be sticking around.

Next step I think is to script the start up recipe so that the machine boots ready to go (still prodding commands in manually at the moment) but it's just nice to have the studio back for now.
rothchild is offline   Reply With Quote
Old 05-23-2021, 03:29 PM   #38
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Very cool! Glad you are making some progress. Some tweaks that might help get the performance up are to increase your user limits to allow 98% priority and unlimited memory usage. Also rtirq can be tweaked to give the IRQs servicing the audio hardware higher priority.
__________________
Glennbo
Hear My Music - Click Me!!!
--
Glennbo is offline   Reply With Quote
Old 05-24-2021, 08:08 AM   #39
rothchild
Human being with feelings
 
Join Date: Oct 2007
Posts: 784
Default

Quote:
Originally Posted by Glennbo View Post
increase your user limits to allow 98% priority and unlimited memory usage.
Where do I do this?

I've just got off work and am playing with this some more, taking the -S switch out of the zita start seems to be helping - I may have to revisit how my clocks are organised!

Pleasingly I now get to move on to more prosaic questions like 'in xfce how do I get 'Alt' back to use in Reaper?' and 'how do I set it up so I can scroll a preset list in ReaMidicontrol with the mouse wheel (so I don't have to drop the list down and pick an entry each time)?'
rothchild is offline   Reply With Quote
Old 05-24-2021, 08:29 AM   #40
Glennbo
Human being with feelings
 
Glennbo's Avatar
 
Join Date: Mar 2008
Location: Planet Earth
Posts: 9,055
Default

Quote:
Originally Posted by rothchild View Post
Where do I do this?
This old post from Jack Winter outlines it. I'm running Xubuntu and just issued the command "sudo apt-get install linux-lowlatency" in a terminal which installed the lowlatency kernel. Then I followed his steps to set the user limits for my logon.

https://forum.cockos.com/showpost.ph...04&postcount=6

Quote:
I've just got off work and am playing with this some more, taking the -S switch out of the zita start seems to be helping - I may have to revisit how my clocks are organised!

Pleasingly I now get to move on to more prosaic questions like 'in xfce how do I get 'Alt' back to use in Reaper?' and 'how do I set it up so I can scroll a preset list in ReaMidicontrol with the mouse wheel (so I don't have to drop the list down and pick an entry each time)?'
Alt key is mapped in xfce, but it can be assigned to something else so alt works like normal in REAPER.

https://forum.cockos.com/showpost.ph...74&postcount=4
__________________
Glennbo
Hear My Music - Click Me!!!
--

Last edited by Glennbo; 05-24-2021 at 08:37 AM.
Glennbo is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 12:58 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.