Thanks for the answers, everyone.
@Takashi Iwai:
Though, this implementation is a bit too hackish, especially the part using pipe & co. If we have a more simpler and cleaner way for this, it's worth including to the standard plugin, I think.
Yes, I agree. I know I should probably used fork() and exec() instead. I must honestly say, I'm not that experienced with C and pipe simply worked (actually, first implementation used "system()" instead, but it didn't work well with some applications). I'm already thinking of rewriting this a little (this may take a while though, because I have no time right now) - any suggestions are welcome of course.
@Raymond Yau:
does dmix allow an application open at least 16 voices ?
I think dmix allows much more than that, if your PC can handle it.
@Colin Guthrie:
Is there a specific use case targeted with this patch or is it really just a "proof of concept" demonstration that alsa can do this sans PA?
Before I written this plugin I tried to use PulseAudio - unfortunately, applications I use didn't worked to well with it so I had to get rid of it, however I liked the idea of PAVC. Then I tried OSS4 but again - unfortunately it doesn't support my ALC1200 too well (interesting info for those out there who says "Get rid of ALSA, get rid of PA, install OSS4 because it just works" well, not always guys - this time ALSA is the winner - this is not intended as a flame-war starter, just as information). Finally I found "copy" plugin for ALSA, started to tamper with it a bit, and found out that writing PAVC plugin wouldn't be, all that hard. I created this because I liked this feature on PA and OSS4 and ALSA lacked it - nothing more to this, than that.
P.S
Sorry for my English.