OK, I think I've got it sorted now, but it took some head scratching.

When Paul first wrote Zyn, the vast majority of sound chipsets were 16 bit,
with a smattering of 8 bit ones still around. However things move on, and
almost all modern ones are 24 bit. But, ALSA doesn't look at the card. It looks
at the *driver*, and it seems that modern drivers are 32 bit.

I have access to four completely different machines spanning more than seven
years. All the motherboard drivers support 32 bit audio. They also seem to
support 16 bit - probably for CDs. The drivers for both my external cards also
support 32 bit but don't support 16 bit.

What seems to work across all of these is to try for 32 bit first, then 24 and
finally 16. I'm actually wondering how far back you have to go to get a driver
that is 16 bit only.

So, interleaved shorts has become just interleaved and when set for 16 bit I've
used a algorithm to pack two shorts into an integer's space in the ALSA buffer.
As implemented, this would fail on a setup with an odd number of channels, but
I really don't think it's worth the effort to support that. I had to
temporarily remove the 32 bit option to test 16 bit operation, and it looks
like in the real world it'll hardly ever actually get used!

Another problem was, surprisingly, the number of channels. The code was
demanding 2 channels, but the KA6 insists on 6, so now we 'request' 2 and
accept what we get, but just use the first two, sending silence to the others.

The only remaining issue was endian conversion. Again, when Paul started he was
using a 386 processor which would be little endian, and probably the on-board
chipset which would have been the same.

The code is now in the 'buffers' branch to do the checks, and make the
conversions, but I can only emulate a test as I would need big endian cards and
processors to prove it was correct. I have neither :(

P.S.
When I started doing music on Linux I pretty quickly moved to jack for audio.
This is just as well, Zyn. would never have been able to talk ALSA to my
audiophile 2496! 


-- 
Will J Godfrey
http://www.musically.me.uk
Say you have a poem and I have a tune.
Exchange them and we can both have a poem, a tune, and a song.

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
Yoshimi-devel mailing list
Yoshimi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel

Reply via email to