I just upgraded my machine to RedHat 6.1 and installed the ALSA drivers -version 4.1dfor my trident 4Dwave card (pretty good, cheap PCI sound card). I then went to compile pd-027. The compilation went fine (I specified SOUNDDRIVER=ALSA) and I went to run pd. I got the "audio i/o stuck . . . closing audio and midi" error. I then tried to run pd with the -alsa option to use the alsa drivers instead of oss emulation, only to find that the option was not there. I looked around at the source for a while to discover that the makefile defines ALSA when compiled with the SOUNDDRIVER=ALSA set instead of HAVE_ALSA, which is what all the ifdefs check for. I changed the makefile and got:
s_main.c: In function sys_argparse': s_main.c:367: warning: implicit declaration of function
sys_linux_alsa'
After removing -Werror from the compile options I got a lot of errrors that are at the end of this email. I took a look at alsa headers and it looks to me that all of the pcm_record* has been changed to snd_pcm_capture*. The changelogs for the alsa library stopped being updated some time ago, so I was wondering for which version of the alsa drivers the s_linux.c code was written. I was going to start hacking on this to get it working with the latest drivers (my card is only supported with the later releases) but wanted to get some info about this first. In particular the error in the makefile.linux seems very odd to me - is HAVE_ALSA defined somewhere else in the complilation after checking for the existence of the alsa library? Any help would be appreciated.
Karl
| Karl W. MacMillan | | Peabody Institute of the Johns Hopkins University | | Network and Telecommunications Services | | karlmac@peabody.jhu.edu | | 410/659-8297 |
cc -DPD -DUNIX -Wall -W -Wshadow -Wstrict-prototypes -Wno-unused
-Wno-parentheses -Wno-switch -O2 -funroll-loops -fomit-frame-pointer
-DHAVE_ALSA -I. -c -o ../obj/s_linux.o s_linux.c s_linux.c: In function
sys_open_audio_and_midi': s_linux.c:139:
srate' undeclared (first use in
this function) s_linux.c:139: (Each undeclared identifier is reported only
once s_linux.c:139: for each function it appears in.)
/usr/include/sys/asoundlib.h: At top level: In file included from
s_linux.c:702: /usr/include/sys/asoundlib.h:358: warning: declaration of
sync' shadows global declaration /usr/include/sys/asoundlib.h:359: warning: declaration of
sync' shadows global declaration s_linux.c: In
function alsa_open_audio': s_linux.c:719: storage size of
pcm_record_params' isn't known s_linux.c:721: storage size of
pcm_record_status' isn't known s_linux.c:723: storage size of
pcm_record_info' isn't known s_linux.c:743: warning: passing arg 1 of
snd_ctl_open' from incompatible pointer type s_linux.c:756: warning: comparison between signed and unsigned s_linux.c:759:
sys_outchan'
undeclared (first use in this function) s_linux.c:761: warning: passing
arg 1 of snd_pcm_open' from incompatible pointer type s_linux.c:776:
SND_PCM_OPEN_RECORD' undeclared (first use in this function)
s_linux.c:776: warning: passing arg 1 of snd_pcm_open' from incompatible pointer type s_linux.c:778: warning: implicit declaration of function
snd_pcm_record_info' s_linux.c:829: warning: implicit declaration of
function snd_pcm_record_format' s_linux.c:837: warning: implicit declaration of function
snd_pcm_record_params' s_linux.c: In function
alsa_send_dacs': s_linux.c:873: storage size of
pcm_record_status' isn't
known s_linux.c:875: storage size of pcm_record_info' isn't known s_linux.c:920:
cp_advance' undeclared (first use in this function)
s_linux.c:923: warning: implicit declaration of function
`snd_pcm_record_status'
make: *** [s_linux.o] Error 1