Finding hardware inputs

Hi,

New user here, just trying to get started.

I have two Focusrite Scarlett interface boxes. Each one has two inputs. When I start up Ardour and pick a “recording” session I am given the choice to select one of the Scarletts. The inputs from the one I select are there and automatically connected to the two tracks provided. So everything pretty much works automatically.

When I add more tracks, I can’t figure out how to connect them to the inputs from the other box. I can see them in the Linux “sound config” but I can’t find them in Ardour.

My question is, where do I look to find the two inputs from the other Scarlett box.

I did try looking through the manual, but I’m not exactly sure what to look for.

Many thanks!

Mike

PS … I’m not running Jack. It doesn’t seem to want to run when Ardour is running. If I need Jack, I’ll have to look into that.

Ardour just uses one interface at a time.
This FAQ entry about using a USB microphone along with a separate USB audio interface is also applicable to using two separate USB audio interfaces. Anywhere this mentions “USB microphone” just mentally substitute “second USB interface:”
https://ardour.org/faq.html#say-no-to-usb

You can do that with jackd and a resampling program (and probably Pipewire, but I am not sure of how to configure pipewire properly for that).
Using jackd you start jackd with the configuration to use one of the interfaces, then you use a program known as zita_j2a and zita_a2j (jack-to-ALSA and ALSA-to-jack bridge) to resample the audio from and to the second interface to keep it synchronized with the clocking from the interface used as the primary.
You will see the additional ports show up as jack ports with zita in the name, you can connect them just like the ports of the main interface (which usually are named system in and system out or similar).

Now that I think about it, the only thing I don’t know about Pipewire is if there is a built-in client to do the same thing with Pipewire but not using a2j (I think there is, but I do not know how to configure properly). But since Pipewire lets you connect jack programs, you can still run zita_a2j and zita_j2a just like you can with jackd.

I only bring that up because some linux distributions ship Pipewire as the default audio server now, and if you can get Pipewire 1.0 along with the pipewire-jack module that may be less initial work than figuring out how to use the traditional jackd audio server.

OK, thanks. That at least explains why I couldn’t find it. A couple of questions, just to clarify things. Partially this is just because I’m not sure of the terminology.

When you say Ardour just uses one interface at a time. Does that mean one USB interface? I mean, I can’t solve this just by plugging both Scarletts into a USB hub, right? Ardour will recognize there are really two separate devices?

If I get a 4 input Scarlett, then that would solve my problem, right? (I mean if you know.)

In the meantime, I’ll see if I can look into using the approach you mentioned.

Mike

While there is no GUI for it, Ardour/ALSA can work with multiple soundcards just fine. However this can currently only be setup by setting an environment variable:

Assuming the two focusrite soundcards are hw:1, and hw:2 (with hw:0 being an onboard soundcard).

ARDOUR_ALSA_EXT="hw:2" Ardour8

Then start Ardour using hw:1 as ALSA input and output device.

1 Like

Well, they are two separate devices (and it takes some work to synchronize them in software).

Ardour also never directly interfaces with the soundcard. All I/O happens via drivers (here provided by the Linux kernel).

That sound easy enough. I’ll give that a try.

Just in case I’m missing something. The “one device” is not Linux specific right. I mean if I hook this all to a Windows box instead, the situation won’t substantially change? I’m pretty agnostic about which system I record on. I’ve just usually found that things are simpler on Linux. But not always.

That is correct.

Tech details:

A soundcard periodically measures the analog signal level. The signal is sampled at a given rate. Commonly at 44.1 KHz or 48kHz.

Each of your two soundcards has an internal clock ticking at that rate.

Now, those clocks do not start at the same time, and since clocks are not perfect, they can drift apart: One will run a tiny bit faster than the other.

So it can happen that one soundcard records 10 seconds of audio, while during the same time the other has accumulated 11 seconds worth of data (this is very exaggerated).

This has to be corrected for in software. (Some high-end pro-audio interface have hardware support to sync multiple soundcards. The tech is called “word-clock”)

1 Like

Ah, OK. Thank you very much for the additional info. That really helps. I think I’ve got everything I need for now.

No. Two devices connected to a USB hub is still two devices, as far as the OS is concerned.

Robin has already given an excellent answer for this but, for a little more info, on Windows, there are two types of driver:

The standard Windows desktop driver provides the same sort of capabilities (actually quite a bit less) as PulseAudio does on Linux. But it’s not really good for “pro-audio” use, for a number of reasons.

For “pro-audio”, the standard used on Windows is ASIO. You would, typically, download the specific ASIO driver for your Audi device from the vendor.

The ASIO drivers for the Focusrite will only allow you to use one device at a time, for the reasons Robin described. The same is true for ASIO drivers for most other audio interfaces.

Cheers,

Keith

Robin, what I’m seeing here is that the ARDOUR_ALSA_EXT shell variable appears to set the interface rather than add it. In other words, when I choose “hw:1” I get the first focusrite device and when I choose “hw:2” I get the second one (regardless of which one I choose via the GUI when Ardour starts).

I tried to search for something that talks about what shell variables Ardour uses, but I couldn’t find anything. I notice when it starts up it appears to look at various config files. Would any of these help me?

I didn’t actually download the Ardour source. I just got the binaries for Linux and Windows (and mostly planned to use it on Linux). I didn’t really think I’d be up to the task of trying to build it.

Using more than one sound card is in the “advanced user” category.

The main question is why you need more than one? Are you recording a drum kit and want to use more than two microphones or something similar?

I think you should follow Mr Gareus’s insights because he is a real professional.
If you want to use two sound cards, you have got to have a master clock.
Maybe you can use the additional ins and outs of the second device and connect them to your main sound card, via adat or spdif ( jack or optical connexions) I think the focusrite does not have AES connexions.

I had one 2-input Focusrite, and I bought a 2nd one, not realizing the ramifications of using 2 separate devices (should have asked here first!) I’ll probably return the 2nd one and get a 4 input Focusrite. But as long as I’ve got the two of them I would like to see if they can be made to work.

Hello Mike,
I’m a newbie in multiple audio interfaces configuration but I’ve managed to make my 2 soundcards (PCI and USB) work together. In fact, I’ve created another topic wondering if I could verify the sync of both of them because I’m not completely sure that they were 100% sync…

In order to see the new INPUTS and OUTPUTS, I’ve done this…

1- List the availables soundcards…

In my case, Nº3 is my main PCI card and I want to add the audio interface Nº4.

2- Start Ardour in a terminal window, specifying the secondary soundcard…
ARDOUR_ALSA_EXT=“hw:4” Ardour8

3- In the Audio/MIDI setup dialog choose ALSA as Audio System and the main audio interface as input and output device.

02. Audio-MIDI_setup

4- If you add a new track, you’ll be able to see the new external inputs (from your added soundcard) and the system inputs (from your main soundcard.

5- Same as before with the outputs.

Well, I hope I helped you.

Hi L_Pro,

Thanks for posting this. It sounds like the ARDOUR_ALSA_EXT shell variable worked for you. I wonder if the PCI / USB vs 2 USBs makes a difference. I’ll try it again following the steps you did. I went through a slightly different sequence of steps when I tried it.

Mike

One difference is probably that the two interfaces have easily distinguished names. If you have two of the same interface there will be two selections in the Ardour device selection, but they probably have the same name. I do not have two identical interfaces to try to check whether there is a number prefix or suffix to help you tell them apart.

I noticed that in the clock sync question that @L_Pro asked, @x42 mentioned that device names could be separated by a semicolon. So I tried this:

ARDOUR_ALSA_EXT="hw:1;hw:2" Ardour8

That “almost” works. I see both the Focusrite devices and I can record from them both. As far as I can tell they’re in sync. From the other discussion I’m not sure if I’ll have problems with the separate clocks at some point, but it appears to be OK.

The only remaining problem is that, when I start a session this way, I can’t figure out how to get any output when I play it back. However if I import the tracks into a new session then they play fine.

As far as I can tell, by output device is zero:

cat /proc/asound/cards

 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf1620000 irq 33
 1 [USB            ]: USB-Audio - Scarlett Solo USB
                      Focusrite Scarlett Solo USB at usb-0000:0d:00.0-1, high speed
 2 [USB_1          ]: USB-Audio - Scarlett 2i2 USB
                      Focusrite Scarlett 2i2 USB at usb-0000:00:1a.0-1.2, high speed

But adding that to the EXT variable doesn’t seem to help.

Without the ARDOUR_ALSA_EXT variable you’re probably seeing an “USB” entry in Ardour’s Audio/MIDI Setup, right?
If so I’d try setting ARDOUR_ALSA_EXT to “hw:2”. That way you should have a “system” entry in the Master output and an “extern”.

If the Audio/MIDI Setup is showing USB_1 you’ll have to set the variable to “hw:1”.

Then it’s just a matter of figuring out which of the “system” or “extern” to connect Master to, to get sound from the Focusrite you have connected to your speakers.

I think that is adding the two USB devices as both “extra” interfaces, using the resampling software.
What do you set as the input and output device in the Audio/MIDI setup window in Ardour?
The intention with the ARDOUR_ALSA_EXT environment variable is that you select one device as usual in the Audio/MIDI setup window, and the device set in the environment variable is added as an additional device using resampling to keep the audio data in sync with the device you select in the setup window.
For example set ARDOUR_ALSA_EXT=hw:2 and then in the Audio/MIDI setup window you would pick Scarlett Solo USB as the primary interface. Or you could do the reverse, set hw:1 in the environment variable, then pick Scarlett 2i2 USB as the primary interface in the Audio/MIDI setup window.

The Audio Connections dialog in the Window menu is the location to verify that the master bus is connected to the audio output you intend to use. As L_Pro pointed out above the device selected in the Audio/MIDI setup dialog window is going to be labeled as “System” with the expectation that is the main interface you want to use.
On a new session the master bus output will be connected so System outputs 1 and 2, but an existing session opened with a different audio device configuration than the last time it was opened will wait for you to manually select the connections you want, and will then attempt to connect automatically the next time the session is opened.

@peder,

I’m not sure what you’re saying. As I mentioned above I am doing:

ARDOUR_ALSA_EXT="hw:1;hw:2"

There is no Focusrite connected to speakers, the only issue I have left is playing the result, through my normal computer output (which I have selected with the Audio/MIDI window.) It seems like using the shell variable to add the other interfaces somehow “disables” what I’ve selected with the GUI. This is why I have to specify both hw:1 and hw:2 with the shell variable rather than selecting one of them with the GUI.

At least that’s what’s happening as far as I can tell. But it’s certainly possible that I’m confused somehow.

Note that a session that does play back has the same setup in the GUI as a session that doesn’t.