After about a week of staring at perfectly good code for writing to the ALSA sound drivers from PD and wondering why it didn't work I finally realized that I was giving the read/write commands the size parameter in number of samples instead of bytes! It is always the easy things that are hard to debug. Regardless, full duplex now works. I need to do some more testing and get the buffering nice, add the extra command line parameters to choose between the different modes, and everything will be through (well, no raw midi support and probably nothing beyond two channels in four out until the ALSA people decide how best to support multi-channel cards like the Hammerfall).
One question about the OSS code - what is the advantage to the interleaving scheme used? It is not the most obvious way to me (though that doesn't mean much after this week), so I thought there must be a reason to go to that trouble.
Karl