May I request to support MMAP_COMPLEX functions? The alsa driver for RME MADI FX is only support MMAP_COMPLEX and does not support NON_INTERLEAVE mode.


May I request to support MMAP_COMPLEX functions?

Absolutely! ... What is it?

I can find various patches implementing it in JACK and PulseAudio and many questions asking about what it is, but no explanation or documentation which properly describes it or how to use it.

So, if you can point me at such documentation I'll be happy to take a look.

(I'm assuming from what you say that MOC is unusable on RME MADI FX without it.)

Hi jcf,

Thanks for the reply! In fact the Jack does support MMAP_COMPLEX but not alsa in MOC. I can quote the email replies from the alsa developer here, I don't have any document about it as I am not a programmer or have any knowledge in computer programming. As far as I know it is related to the buffer, and that's all I know.

"Withe help of Adrian Knorth we successfully make the MADI FX sound in Matthew's Ubuntu 12.04 and his self-built kernel but only with Audacious and not with mocp. We asked Adrian how to make it sound in mocp. Here is his reply. Please help to see whether there is any hope of making it work in your new OS. Thanks.

My friend Mr. Leung has tried to use MADI FX with Audacious, a GUI
player in Ubuntu, there is sound if choose SystemDefault in its device
menu! But failed if choose hw: 0,0 as device, hw:0,0 is actually the

Audacious does not support SND_PCM_ACCESS_MMAP_COMPLEX, only

Use the jack-output plugin to output to jackd, jackd knows how to handle
MMAP_COMPLEX. Of course, you can also add MMAP_COMPLEX support to

Also if use MOC, a console player we audiophiles use most, it also

Likewise, MOC doesn't support MMAP_COMPLEX (check its source, there's

Either add support for MMAP_COMPLEX to moc/audacious, or use moc's jack
output plugin.

To use MADI FX in console mode is crucial, so any tutorial link about
to mapping the channels via amixer.

The channel mapping is 1:1. Start jackd, and assign the channels to
those you need via patchage (graphical tool) or later jack_connect

Thanks you so much for helping!



I tried my best to find some info on the MMAP_COMPLEX

Alsa is support the following access mode for application:

Some soundcard is only support 1 / 2 type of buffer access for instance MADI FX is only support MMAP_COMPLEX, so if an application would like to access it, it must support MMAP_COMPLEX (hw:0,0 instead of plughw:0,0).

Hope this little information may help.


Yes, I understand everything said so far but I need to find more precise information.

Of MMAP_COMPLEX all the ALSA documentation seems to offer is that it "does not fit to interleaved and non-interleaved ring buffer organization" and uses "mmap access with complex placement". But that's not enough to be able to write actual code.

In the absence of documentation, that means code reading to divine the intended usage... and that burns up the most precious of resources, time.