I have a cheapo OSS-supported soundcard in a 2.4 kernel linux and am trying PD-.35-26.
I was getting pure noise on the outputs and "OSS: DSP format: wanted 1024, got 16" so I investigated. It seems the s_linux.c file doesn't handle cards (or older OSS apis, not sure) that don't support 32-bit samples.
i.e. line 864 s_linux.c: if ((ioctl(fd,SNDCTL_DSP_GETFMTS,¶m) >= 0) && (param & AFMT_S32_BLOCKED)) Always returns true in my case: SNDCTL_DSP_GETFMTS returns 1048 (1024+16+8). The mask defined there for 32-bit samples (which I've only so far seen for RME cards) is 1024. I'm not sure why DSP_GETFMTS is returning a 1024 when the API hasn't heard of 32-bit samples yet. (i.e., when it tries to actually DSP_SETFMT that mask, it stops with an error.)
I guess my questions are: 1) is AFMT_S32* defined in a newer OSS spec that I just don't have yet? 2) Does anyone know why a card would return a 1024 in its capable-mask if it can't set it?
To fix the situation on my machine, I just commented out that check and left it at AFMT_S16_NE.
Also, p.s.: KDE's aRts completely confuses the OSS startup routine in PD. I had to disable it.
-- Brian Whitman - bwhitman@media.mit.edu http://www.media.mit.edu/~bwhitman Music, Mind & Machine Group MIT Media Lab