Topic: Multiple Multifaces, sync, .asoundrc, not happening...

Simple question, does anyone have a successful Linux system with a pair of synced Multifaces using jack?

Has ANYONE done this in jack without using alsa_in/alsa_out or audioadapter, which apparently both resample?

Alternatively, does anyone have a working .asoundrc for a pair of Multiface they can post?

Has ANYONE even HEARD of ANYONE, EVER doing this?

I have not been able to use my two Multifaces together. I've tried everything I could find online... really... I've been trying this in different capacities for... over a year... I'm really losing my faith in Linux Audio and as I'm moving into a dedicated studio space in 2 weeks, I really can't afford to be wasting anymore time on this as I don't believe it can be done. Please, prove me wrong.

Sincerely discouraged,

~Brian

Re: Multiple Multifaces, sync, .asoundrc, not happening...

I also faced this issue and it seems that you have to take into account all channels for the alsa "multi" device.
Here is a working .asoundrc for 2 Multiface Cards:

pcm.ttable {
    type route;
    slave.pcm {
        type multi;
        slaves.a.pcm {
        type hw
        card 0
        device 0
       }
        slaves.a.channels 18;
        slaves.b.pcm {
        type hw   
        card 1
        device 0
        }
        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 b;
        bindings.18.channel 0;
        bindings.19.slave b;
        bindings.19.channel 1;
        bindings.20.slave b;
        bindings.20.channel 2;
        bindings.21.slave b;
        bindings.21.channel 3;
        bindings.22.slave b;
        bindings.22.channel 4;
        bindings.23.slave b;
        bindings.23.channel 5;
        bindings.24.slave b;
        bindings.24.channel 6;
        bindings.25.slave b;
        bindings.25.channel 7;
        bindings.26.slave b;
        bindings.26.channel 8;
        bindings.27.slave b;
        bindings.27.channel 9;
        bindings.28.slave b;
        bindings.28.channel 10;
        bindings.29.slave b;
        bindings.29.channel 11;
        bindings.30.slave b;
        bindings.30.channel 12;
        bindings.31.slave b;
        bindings.31.channel 13;
        bindings.32.slave b;
        bindings.32.channel 14;
        bindings.33.slave b;
        bindings.33.channel 15;
        bindings.34.slave b;
        bindings.34.channel 16;
        bindings.35.slave b;
        bindings.35.channel 17;
    }
    ttable.0.0 1
    ttable.1.1 1
    ttable.2.2 1
    ttable.3.3 1
    ttable.4.4 1
    ttable.5.5 1
    ttable.6.6 1
    ttable.7.7 1
    ttable.8.8 1
    ttable.9.9 1
    ttable.10.10 1
    ttable.11.11 1
    ttable.12.12 1
    ttable.13.13 1
    ttable.14.14 1
    ttable.15.15 1
    ttable.16.16 1
    ttable.17.17 1
    ttable.18.18 1
    ttable.19.19 1
    ttable.20.20 1
    ttable.21.21 1
    ttable.22.22 1
    ttable.23.23 1
    ttable.24.24 1
    ttable.25.25 1
    ttable.26.26 1
    ttable.27.27 1
    ttable.28.28 1
    ttable.29.29 1
    ttable.30.30 1
    ttable.31.31 1
    ttable.32.32 1
    ttable.33.33 1
    ttable.34.34 1
    ttable.35.35 1
}


ctl.ttable {
        type hw
        card 0
}

Re: Multiple Multifaces, sync, .asoundrc, not happening...

Hey!! Thanks for replying! I obviously haven't dealt with this in a while but I'd be thrilled about getting this to work. I'm in the middle of my work week but I'll try it out mon/tues. Just this week I was lamenting the wasted I/O of my 2nd multiface and thinking about replacing it with some simple converters which would be fine for my current rig. But, at the same time I'm trying to get a bigger mixer (24-32 channels) so having the full I/O available would be ideal, and actually push me towards the bigger console. martin_tl, your post is fortuitous and I appreciate the help. I will most certainly follow up on this.

~b

Re: Multiple Multifaces, sync, .asoundrc, not happening...

Good luck with the set-up.

Another possible source of annoyance is jack with dbus support. It wasn't reliable starting with the ttable device but the classic jackd works fine for me.

The .asoundrc above is a basic set-up.
You can replace "card 0" and "card 1" with the card name like "card DSP" and "card DSP_1" to be independent from the soundcard order. The names can be retrieved via 'cat /proc/asound/cards'.

You can also change the bindings to have e.g. all analog and adat channels first and the spdif channels at the end of the new 36 channel device.
On my PC it works so far without xruns at 64 frames/periode and 2 periods buffer.

Re: Multiple Multifaces, sync, .asoundrc, not happening...

Ok, looks like I'm using jack with dbus support, cause sometimes while playing with settings it won't let me restart jack. Jack log shows some errors mentioning dbus, but that's all I know about dbus. I definitely hafta use DSP/DSP_1 because with my onboard sound, every once in a while they don't all load in the same order, and every once in a while I have to restart until they figure out who is supposed to be where... which is annoying, but minor. I have some indexes in alsa-base.conf to keep the onboard card as default so my pulseaudio works in parallel. Would this make any difference as far as building an aggregate soundcard? I just stumbled across a method using udev to specify which multiface goes where, but that's a different issue, unless you think it's relevant.

If/when this works, what should I be looking for? A new device named hw:X in the jack config settings that has 36 i/o and 36 available i/o in Ardour? Will the soundcards still be available separately?

So when you're saying it works fine with classic jackd, you're just running jackd from the command line? What's your working command if so. I'm not so handy with passing flags with jackd. Otherwise, point me in the right direction. Thanks!

~b

Re: Multiple Multifaces, sync, .asoundrc, not happening...

You can still start jack with one of the Multiface card with "hw:x,x" as interface.
If you use the .asoundrc from my earlier post then "ttable" is an additional interface for the combined cards.

To solve my issue with jack I just recompiled jack without dbus support and use qjackctl to launch it.

It might be the case that the dbus issue was specific for my set-up and jack-version. You can still give it a try.
Here is the ~/.config/jack/conf.xml I used with dbus support but as mentioned above it was not always working. If it does not work for you you can try to kill jackdbus and restart it on the command line with "jack_control start".

<?xml version="1.0"?>
<!--
JACK settings, as persisted by D-Bus object.
You probably don't want to edit this because
it will be overwritten next time jackdbus saves.
-->
<!-- Sat Mar 30 01:58:44 2013 -->
<jack>
<engine>
  <option name="driver">alsa</option>
  <option name="realtime">true</option>
  <option name="realtime-priority">78</option>
  <option name="verbose">true</option>
  <option name="client-timeout">500</option>
</engine>
<drivers>
  <driver name="dummy">
  </driver>
  <driver name="alsarawmidi">
  </driver>
  <driver name="netone">
  </driver>
  <driver name="loopback">
  </driver>
  <driver name="alsa">
   <option name="device">ttable</option>
   <option name="rate">44100</option>
   <option name="period">64</option>
   <option name="nperiods">2</option>
   <option name="hwmon">false</option>
   <option name="hwmeter">true</option>
   <option name="duplex">true</option>
   <option name="softmode">false</option>
   <option name="monitor">false</option>
   <option name="dither">n</option>
   <option name="shorts">false</option>
  </driver>
  <driver name="net">
  </driver>
</drivers>
<internals>
  <internal name="audioadapter">
  </internal>
  <internal name="profiler">
  </internal>
  <internal name="netmanager">
  </internal>
  <internal name="netadapter">
  </internal>
</internals>
</jack>

Re: Multiple Multifaces, sync, .asoundrc, not happening...

Tried a few things out. With your conf.xml I could see ttable under devices and see the list of channels, etc, it appeared to be available! Though a touch intermittent. I could sometimes type in ttable to the device name and access it, other times I couldn't run jack at all getting errors about audio device being claimed already, or something.

Unfortunately, I'm getting xruns on every setting I've tried so far. I set priority to 10 which is how I had it set in my old config which seemed to help, but only to a point.

I'm still not entirely sure on how to get around dbus as I don't understand what it is. But, one thing I've done is quit Cadence, killed jackdbus, and used Qjackctl but no such luck, still getting xruns.

Honestly, since the point of being able to run both cards independently is to be able to expand my system, I'm thinking the simplest solution is to snag another cheap multiface for the converters and throw a digiface, 9652, or raydat in, then dump all the cards into the one via adats and update my hdspmixer preset config. I'm upgrading to a 24 or 32 channel mixer so 24 I/O is a good start. If I end up with 32 channels on the board, I can use em for parallel processing or something. I'm thinking of going the 9652 route. If I can find the expansion boards I could add an AEB8-I and AEB8-O and save myself a space in the rack.

Either way, the upgrade path from a Multiface is a tough hurdle to begin with but especially so when you can't use them together. I don't really see any other reasonable solutions right now. Everything else out there for converters costs an arm and a leg for 2-8 channels!! Even though I'm not getting the full use out of the interfaces, the fact is they're the best bang for the buck EVEN ONLY AS standalone 8-channel converters (and I refuse to support the B-brand that ripped off RME). The only other option in this price range is the Aphex 141/142 but they're still a bit more expensive with less (albeit still very solid) reputation and fewer features. Maybe I'll swap the digiface/9652 for a 4th multiface (yes I've got the room, no I don't know if hdspmixer will be ok with it) or Aphex pair and spring for a raydat some day when I really need a 32 channels I/O. Or maybe something better will come along.

~b