Solution for 4-Channel Motu M4 or focusrite audio interface and XO in a F.A.S.T configuration

Recently I bought a Motu M4 USB audio interface because of it’s really excellent technical parameters (https://panther.kapsi.fi/posts/2020-02-02_motu_m4, https://www.audiosciencereview.com/forum/index.php?threads/motu-m4-audio-interface-review.15757/).

The idea was to run it as a playback device in an active F.A.S.T configuration with two woofers and two full range speakers. The streaming device should be a cheap Raspberry Pi4 running Raspbian and Roonbridge. Motu M4 is USB powered, so I thought the Pi4 and the M4 together with a Pi4 3A power supply would give a handy and high quality system.

During my effort I was faced a lot of issues but finally I succeeded! I like to report what I did, because my findings may also be relevant for all other 4-Channel audio interfaces.

Hardware
Connecting the M4 to a USB port of the Pi4 I found, that right after Raspbian discovers the USB device it got disconnected, reconnected and so on. I thought it was an issue with power but it was not. It is a software issue in the Pi4 USB controller. I could fix that with an external Hub that also has a separate power supply, even better :blush: With the Hub the M4 got connected and discovered by ALSA. You can check this with the “aplay -l” command.

Roon issue
Roon isn’t able to deal with 4-channel interfaces! It does with 2.0, 5.1 and 7.1 but not with 4.0. There is an open feature request for that, one from me (Support for 3 and 4 channel layouts, Request: Support Four-Channel DACs).
That might have been the end of the story but wait, I’l continue :+1:

As Roon cannot handle 4-channel devices why not giving Roon an 8-channel virtual device on the Pi side. That’s what I did.

Setup for Raspbian
On the Pi side we need a virtual soundcard that exposes eight channels. This can be done with the snd-aloop ALSA driver. These are the steps to do:

  • Create an new file /etc/modprobe.d/alsa-loopback.conf and put this line in:
    options snd-aloop pcm_substreams=8 id=“M4Help” enable=1 index=0
    You can give it a different name than “M4Help” and you also can put it in a different audio slot (index=0).

  • In the file /etc/modules insert this line at the end:
    snd-aloop

  • Now reboot and after this enter aplay -l.

You should see something like that:
**** List of PLAYBACK Hardware Devices ****
card 0: M4Helper [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: M4Helper [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: M4 [M4], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0

  • Now enter the following command. It reads audio from the virtual soundcard and writes to the MotuM4.
    alsaloop -C hw:0,1 -c 4 -P plughw:1,0 -f S32_LE -c 4 -S 2 -r 192000 -v -v -v

Convolver setup
For roon I built a convolver config file with two input and eight output channels with 192kHz XO filters generated by Acourate. I decided to use 192kHz because this is the maximum M4 can achieve.
Cor1L192.dbl and Cor1R192.dbl are the Low-Pass-Filters for the woofers, Cor2L192.dbl and Cor2R192.dbl are the High-Pass-Filters for the full range speakers. Build a ZIP file including the XO files and the configuration file “M4.cfg” with the contents below:

192000 2 8 0
0 0
0 0 0 0 0 0 0 0
Cor1L192.dbl
0
0.0
0.0
Cor1R192.dbl
0
1.0
1.0
Cor2L192.dbl
0
0.0
2.0
Cor2R192.dbl
0
1.0
3.0

Audio setup in Roon
Now start roon and go to Settings->Audio.
Here you find the M4 Audio interface and two Loopback PCM devices. You get two because the loopback device is bidirectional and this cannot be disabled as far as I know. So you have to figure out which one is the right one.

I took one of them enabled it and gave it the name ”M4help0”.
image
Now enter “Device Setup” and configure the following parameters and save.

  • Volume Control: DSP volume
  • Channel Layout: 7.1
  • Send Stereo / Mono content as 7.1: Yes
  • Swap rear and Surround Channels: Yes
  • Multichannel Mixing: Channel Mapping only

Output setup in Roon
After selecting M4help0 as output device klick on the speaker symbol on the right bottom corner of the roon screen. Next klick on DSP. Add filter “Convolution” and load your ZIP file with the convolver setup.

You now can start playing music and watch the Signal Path.


At the convolution filter you should read “4 path, 66k taps”.

On the Motu M4 all four volume bars should display a signal. At the outputs 1/2 you should hear the woofer signal (L/R) and on 3/4 the signal for the full range speakers (L/R).

It is interesting watching the output of alsaloop command at the raspberry terminal. In regular time intervals you see “New pitch for playback…” lines. The reason for this is the signal flow in the Pi4.

Roonbridge–>snd-aloop in–>snd-aloop out–>Motu M4

As the snd-aloop driver has its own clock but we like to get a bit perfect signal clocked by the M4, the clock of snd-aloop has to be adjusted continuously so no samples get lost or have to be inserted. And that is what you see here.

Some more hints:
Please recognize that 192kHz 32-Bit PCM data on four channels is really a lot. So be sure you have a fast ethernet connection between your roon core and the Pi4. Otherwise you get uggly sounding underruns on the Pi4 side. And please: forget about WiFi.

Hope my comments will be helpful to successfully implement a F.A.S.T system with Motu M4 or any other 4-Channel audio interface a Pi4 and Roon.

DrCWO

Please also visit this thread.

1 Like

There’s a lack of options of 4 channels great quality USB DAC, what about connecting 2 x USB DACs and Roon will detect it as two different DAC and uses the grouping function of Roon?

With both DACs connected at the same source/transport, the timing should be marginal

The synchronization of grouped zones is far too bad in Roon to run a multichannel system this way. I did measurements and saw that this approach is completely unusable.

If you have USB interfaces with S/PDIF in/out you can try to sync them by connecting S/PDIF from master output to slave input. Best use as slave the DAC for the woofer and sync its clock to the incoming S/PDIF signal. Doing this they are in sync and you can group zones.

If you are looking for a 4-chan USB DAC why not get the RME-ADI 2 Pro FS? I got one. It supports eight channels via USB. Four channels with analog outputs, one with S/PDIF-Toslink and one with AES. It is fully functional with Roon and you can define filters in Roon for crossover.

It is an absolutely excellent device. See the test of the (non Pro) stereo DAC here: (7) RME ADI-2 FS Version 2 DAC and Headphone Amp Review | Audio Science Review (ASR) Forum

This was my final choice after selling the Monu M4 and I am completely satisfied. It produces such a clear sound and absolutely transparent.

Best DrCWO

hello, thanks for your feedback, i digged some of your feedback around the timing, but I thought you were testing two different Pi and bundled both of the Pi in one zone (refer to this Roon Active Crossover (or How Good is RAAT synchronisation)? - #16 by Adam_Goodfellow)

I’m referring to 1 single Pi but attached to 2 x USBs DAC, I apologize if i digged out the wrong post as a reference, but can i get a clear idea when you mentioned the synchronization is too bad, are you referring to 1 x Pi with 2 x USB DAC attached, or 2 x Pi with individual USB DAC?

One last question, do we need to go thru the steps as this thread for the RME ADI-2 Pro? It’ll be great if the 4 channels will be seen by Roon and we can edit the crossover setting on the Roon PEQ section.

Thanks

That does not matter as there are no sync signals transported via USB. Same situation with one ore two PIs. Using two separate USB DACs you always have the issue if they were not synced in a way I described.

So you need either synced soundcards or something like this Digiface USB - RME Audio Interfaces | Format Converters | Preamps | Network Audio & MADI Solutions (rme-audio.de) and connect the DACs via S/PDIF. Then they are in sync. BUT I think the Digiface is not supported by Roon as far as I know…

Here my signal path with the RME ADI-2 Pro FS:

As you can see I use a stereo to 4-path convolution filter for XO and DRC. As I set the ADI-2 to 6 channel playback (eight also possible). So the signal got converted after the filters from 7.1 to 5.1 and then sent to the ADI-2. This means XO also shall be no problem.

Just to let you know: You cannot control volume of the ADI-2 Pro by Roon with device volume, so I use DSP volume. Before I did that I researched the DSP volume if there are any issues. None found so I use it with pleasure. See my measurements here: The final truth about DSP Volume Control in Roon | Audio Science Review (ASR) Forum

Best DrCWO

Pro audio world (studio audio interfaces) provide a lot of multi-channel options but most of them will be full audio interfaces rather than just multi-channel DACs.
AV processors and receivers can be a good option to serve as a consumer multi-channel DAC - operate it in straight mode via an HDMI from core to the AV processor/receiver.

Running separate DACs for this purpose is not recommended as you will not get the tight sync required without specialist software that will most likely involved aggregating a bunch of audio interfaces into a single audio interface on a single computer which typically will force most or all most of them into host sync mode unless they have separate clock inputs.

For sample accurate sync across hosts, then you are probably into the realm of very expensive studio network audio interface systems that are designed for this purpose.

In the pro-audio/music world there is a looser sync option as well that involved using network midi to disperse timing information. This is generally good enough for a band type scenario where different computers are effectively different instruments, but not really suitable for one sound being spread across multiple hosts/devices - ie mixed music.

In general, multi-room sync is about keeping the timing average playback speed the same with timing variance in the order of a few ms - ie similar to that of sound travelling a few feet in air. Giving rooms tend to be bigger than that and that sound from speaker tends to be quite localized to a room, then this is more than good enough for this purpose.

I have used both my AVR via HDMI and my RME UFX to test simple stereo to surround upmixes I made in Roon DSP, but it isnt something I use as I dont really see much point until such time as Roon may support dobly atmos playback in future.

1 Like

Appreciate all the comment, looks like if I want a crossover implementation, finding a 4 channel DAC is easiest.

The main purpose is really subwoofer, may be I should look at some active crossover like Xkitz K231 instead

I don’t understand :thinking:

Technically RME ADI 2 Pro fits all your requirements. Why not go this way?

Simple, I am more after a solution for subwoofer integration, yes I acknowledged the RME is the easiest option, just that it’s also multiple folds higher in price hence my comment

And I already have a DAC currently, not state of art but good enuf, it’s a Topping D90

I understand your argument. :cold_sweat:

To give you an idea: This is how my subwoofer intergration looks like.

  • I run FIR DRC plus XO (calculated with Acourate).
  • The FIR filters are processed within Roon (signal path see above).
  • A Pi4 with rooExtend and RMA ADI-2 Pro FS is my streaming DAC.
  • Amplifier for the Horns (https://the-final.eu) is a Krell Evolution 2250e.
  • The Woofers (XTZ sub 12.17) are active and directly connected to the ADI-2.

Technology is completely hidden an I control it with an iPad and a Nuimo.
I love it, best I ever got :+1:

L+R summing + LP crossover and level adjustment (different for HDMI surround vs audio interface) for sub and the HP crossover for L+R can easily be made with Roon DSP Inserts. Timing adjustment of each speaker channel can also be made with the Roon speaker insert.

Basically just add a multichannel interface and setup the DSP as needed. If you havnt done this before, then ask - I am sure there are plenty of people who can help.

If you want to also add Room correction, then add a miniDSP umk-1 or 2 mic and do measurements and filter calculation with REW as describes in one of the REW room correction threads.

Acourate DSP software seems very good (and probably the best for this job), but also quite expensive for one time use (but some some that may be pocket change of course and not a consideration). REW can certainly be used for a good job as well, though it gets much more complex if you add rephase software adjustments in as well (as rephase doesnt calculate what you need automatically - or at least the last version I tried didnt).

1 Like

That’s really really nice, to be honest I am a big fan of your rooDial, currently using it and it works very well (moreover, after I read ur analysis of the DSP volume, I tested it and it works very well with my DAC directly to my power amplifier :slight_smile: , and I no longer keep the preamp as I do not see the feasibility considering my use case)

1 Like

Thanks Adam, still considering if I can swallow a 4 channel devices like the RME ADI-2 Pro

If you want to try the process relatively cheaply without integrating DRC, then maybe instead of 1k+ for the ADI pro, maybe try a really cheap basic audio 4 channel interface (there are many available) just to try the concept (yes - it will suck compared to the topping, but just to try the process for minimal cost), then stick the thing on ebay or whatever when done and ready to get something decent. I think you can find very minimal DJ orientated interfaces that are basically just 4 channels out (main + cue) via rca for well under 100UKP.

I assume you already have a fixed gain power amp, or using active monitors?

This is a great idea. if you only use Roon a preamp is a concept of the past!

I have a further improvement for this idea of @Adam_Goodfellow :grinning:
Why not use this cheap interface Native Instruments Komplete Audio 6 MK2 – Musikhaus Thomann?
It also has a S/PDIF output that can drive your Topping DAC. Use this for the main speakers. You can use analog output of the interface for the Woofer, this should be good enough for that purpose.
With this you have the four channels a good output for the main speakers and an unexpensive evaluation system for the concept of active crossovers in Roon.

I have two power amplifier, one with fixed gain and one with variable gain.

I will think about how to go about it, sometimes swallowing the cost of the RME and deal with the short pain might be a better idea, as I am determined to get a pair of sub integrates to battle through some null I observed in REW measurement

All great suggestion @DrCWO and @Adam_Goodfellow

Thanks, RME sounds the most sleek option to me, I saw the Okto Research DAC but they are way behind supply and already stopped the ordering of new units, was initially half imagine I can use my Topping D90 and adding another cheaper DAC for the sub, since I read somewhere the lower frequency likely do not deem sensitive to the timing but I could be wrong, but deep down I think I’d like to validate that as well, as it’s almost no cost I could have just borrow another USB DAC to prove this, my intended crossover point is 70-80hz

I was tentatively thinking of the audio 2 dj - I have the older version of it - only 65quid. I still have an old audio 10 (timecode decoders) as well as leftovers from my DJing days.

:rofl: :rofl: :rofl: :rofl:
We don’t talk about some microseconds but lots of milliseconds!