Hallo,
I desperatly needed 4-channel audio out on my Quattro on Linux and I know, lots of others needed that, too. So I made an ugly hack without actually hoping it would work at all, but interestingly it did work.
In CVS-Pd, tagged devel_0_37 edit s_audio_alsa.c and change this near line 111:
/* device names are hw:0, plughw:0, hw:1, and so on. */ if (devno & 1) sprintf(devname, "plughw:%d", devno/2); else sprintf(devname, "hw:%d", devno/2);
to be that:
/* device names are hw:0, plughw:0, hw:1, and so on. */ /* if (devno & 1) sprintf(devname, "plughw:%d", devno/2); else sprintf(devname, "hw:%d", devno/2); */
/* HACK: hardcode quattro devices */ if (devno & 1) sprintf(devname, "q4"); /* Quattro plug */ else sprintf(devname, "q4b"); /* Quattro route */
while using the usual asoundrc, that defines q4 and q4b.
Recompile.
You will now only be able to use the Quattro devices with that Pd and you'll have to use this command line:
$ pd -alsa -noadc -outchannels 4
because trying to use audio-in at the same time results in that error:
opened 1 MIDI input device(s) and 0 MIDI output device(s). Sample width set to 2 bytes ALSA lib pcm.c:1148:(snd_pcm_link) SNDRV_PCM_IOCTL_LINK failed: Operation already in progress
Now, the interesting part here, and the reason I post this to pd-dev, is, that Pd's ALSA subsystem in CVS obviously is practically ready to use freely named ALSA devices, that are not called plughw:X or hw:X.
The only thing missing is a way, to specify other names for Pd to use either on the command line, or in a free form text field in the Media menu, and get rid of the hardcoded "hw" and "plughw" specifiers in the ALSA code.
After that, Quattro users, abd maybe also the RME users, would be soo happy.
(Oh, and there also is this SNDRV_PCM_IOCTL_LINK error, but this probably is another story.)
ciao