Hi all, there are strange things happening with/in the HDSP alsa driver.
Calling pd with something like "pd -r 44100 -alsadev hw:1,0" results in the usual console printout
Sample width set to 4 bytes ALSA: set input channels to 10 ALSA lib pcm_hw.c:292:(snd_pcm_hw_hw_params) SNDRV_PCM_IOCTL_HW_PARAMS failed: Device or resource busy snd_pcm_hw_params (input): Device or resource busy pd: pcm.c:4358: snd_pcm_sw_params_current: Assertion `pcm->setup' failed.
but also an interesting kernel message
ALSA ../../alsa-kernel/pci/rme9652/hdsp.c:690: cannot change between single- and double-speed mode (capture PID = 2561, playback PID = 2561)
Looking into the driver code (and inserting some debug printouts) shows that there seems to be a bug in the driver: the function hdsp_system_sample_rate can also return 0 (which stands for a "default" sample rate). This case is not handled in the select statement starting at line 650 and causes the debug output and bail out. If i adapt the code and print out the sample rates that pd wants to set i get strange results:
ALSA ../../alsa-kernel/pci/rme9652/hdsp.c:646: set sample rate (current = 0, set = 64000)
Does PD want to set a wrong sample rate? Now the PD console printout is
pd: pcm.c:964: snd_pcm_writei: Assertion `pcm->access == SND_PCM_ACCESS_RW_INTERLEAVED' failed.
which seems much more logical. Is there a way to cope with interleaved streams by having an appropriate .asoundrc?
Hopefully getting nearer to a solution.... (but no time to do further experiments)
greetings, Thomas