[linux-audio-user] Quattro and JACK

Jason Hanggi jason at thebelly.net
Tue Feb 8 23:14:59 EST 2005

I'm new to this whole linux sound thing, and I'd like
to get my M-Audio Quattro USB working.  sorry if this
email is a little long, i just want to go ahead and
put most of my information up now, so you all aren't
asking for it later.

so far, i can play from XMMS using it's ALSA driver, I
can send/receive midi data.  i can refer to it as
quattro1, quattro2, etc, as outlined in the standard
.asoundrc (which i'll put at the end). i haven't even
touched recording yet

there's two problems i'm having.

1) when i do a 
$ aplay --device quattro1 test.wav
I can hear it, but it's choppy and it get this:

Playing WAVE 'test.wav' : Signed 16 bit Little Endian,
Rate 44100 Hz, Stereo
underrun!!! (at least 0.079 ms long)
underrun!!! (at least 0.038 ms long)
underrun!!! (at least 0.046 ms long)
underrun!!! (at least 0.039 ms long)

same if i just use aplay --device hw:1

when I try --device quattro I get
aplay: set_params:837: Channels count non available

the second problem I'm having, is I can't get the
Quattro to work under JACK.
If I try duplex mode, I get this in my message window:
22:07:32.554 /usr/bin/jackstart -R -dalsa -dhw:1
-r48000 -p1024 -n2 -i2 -o2
22:07:32.627 JACK was started with PID=3974 (0xf86).
back from read, ret = 1 errno == Success
jackd 0.94.0
Copyright 2001-2003 Paul Davis and others.
This is free software, and you are welcome to
redistribute it
under certain conditions; see the file COPYING for
loading driver ..
apparent rate = 48000
creating alsa driver ...
control device hw:1
configuring for 48000Hz, period = 1024 frames, buffer
= 2 periods
Couldn't open hw:1 for 32bit samples trying 24bit
Couldn't open hw:1 for 32bit samples trying 24bit
could not start playback (Broken pipe)
DRIVER NT: could not start driver
cannot start driver
22:07:33.937 JACK was stopped successfully.
22:07:35.861 Could not connect to JACK server as

if I only set for playback, then I get a bunch of
clicking and a bunch of XRUN callbacks.

if anyone could help me out, I'd really appreciate it.

here's some info:

$ more /proc/asound/cards
0 [AudioPCI       ]: ENS1371 - Ensoniq AudioPCI
                     Ensoniq AudioPCI ENS1371 at
0x1080, irq 11
1 [Quattro        ]: USB-Audio - USB Audio Quattro
                     M Audio USB Audio Quattro at
usb-00:07.2-2, full speed

$ more .asoundrc
# quattro1 is pcm0 which has a maximum sample rate of
44100 and 16
# bit stereo

        pcm.quattro1 {
                type hw
                card 1
                device 0
        ctl.quattro1 {
                type hw
                card 1 

# quattro2 is pcm1 which has a maximum sample rate of
96000 and 24
# bit stereo

        pcm.quattro2 {
                type hw
                card 1
                device 1
        ctl.quattro2 {
                type hw
                card 1 


# compose 4 channels from two channel x two devices,
hw:2,1 and 
# hw:2,2
# assuming that hw:2,1 and hw:2,2 give the same
condition, 24_3LE/96k

pcm.quattro {
        type multi;

        slaves.a.pcm "hw:1,0";
        slaves.a.channels 2;
        slaves.b.pcm "hw:1,1";
        slaves.b.channels 2;

        bindings.0.slave a;
        bindings.0.channel 0;
        bindings.1.slave a;
        bindings.1.channel 1;
        bindings.2.slave b;
        bindings.2.channel 0;
        bindings.3.slave b;
        bindings.3.channel 1;

ctl.quattro {
        type hw;
        card 1;

# Remap 4 channels as interleaved.
# Use plug instead of route here, since 24_3LE is
unlikely supported
# by applications.
# arecord -r 44100 -c 4 -f s16_le -D q4 -d 5

pcm.q4 {
        type plug;
        slave.pcm "quattro";
        ttable.0.0 1;
        ttable.1.1 1;
        ttable.2.2 1;
        ttable.3.3 1;

ctl.q4 {
        type hw;
        card 1;

# Use route plugin for applications that do support
# This lowers latency which the plug plugin introduces
due to 
# resampling.
#   arecord -r 44100 -c 4 -f s16_le -D q4b -d 5

pcm.q4b {
        type route;
        slave.pcm "quattro";
        ttable.0.0 1;
        ttable.1.1 1;
        ttable.2.2 1;
        ttable.3.3 1;


ctl.q4b {
 type hw;
        card 1;

More information about the Linux-audio-user mailing list