[PD] PD-linux, OSS, 32-bit samples

Brian Whitman bwhitman at media.mit.edu
Thu Jun 13 17:26:36 CEST 2002


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,&param) >= 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 at media.mit.edu
http://www.media.mit.edu/~bwhitman
Music, Mind & Machine Group
MIT Media Lab






More information about the Pd-list mailing list