Post date: Oct 20, 2009 4:47:51 AM
The Maxim 98089 Codec offers some great flexibility. With its built in 2 mic input preamps, 2 equalizers and multiple output channels it gives us the ability to allow 2 sources to be played to 2 ouputs respectively. To talk to the BBB we use I2S input and output. I2S was difficult to get working but worth the effort as the beagle hardly has to work to implement it.
The codec has another set of I2S input / outputs and we will be using it for the T.I. wifi audio chip. We can also give the codec commands to control switching and equalization changes thru FTDI and I2C, we now use FTDI but will need to use I2C as it carries much less overhead. The neat thing is we use a file to control codec initial startup. So in that regard the user could if we implement the code on the client have the system start up in certain preswitched modes. Where they could immediatly hear say the TV when they start the system.
Golang is used because its a compiled language that gets close to C++ in performance and with its built in http services modules allow us to do SSL and REST controls with good response times.
Much effort and time was spent to get the system as efficient as possible, and really we are surprised that only during transcoding of certain types of media files does the cpu hammer itself up in the 90 percent cpu usage realm. We have done tests and had the system output 2 music files from hard disk at the same time and very seldom if ever does one hear a short moment of distortion.
But if the system is used with wireless speakers and analog speakers at the same time, one can listen to a local source such as a TV and play music from a BBB based source such as hard drive at the same time, there are no dropouts because the codec is simply channeling one input stream from its input to its outputs and the beagle doesnt see it but can still give eq and volume commands to the material. :)
With our using of VLC CD playback and radio stream playback is effortless for the cpu and it stays in the 30% usage area.
Memory usage is a non-issue and we dont think about it, except for storage.
We still use the sd card, but its very very minimal as we just have the hard drive boot location on it and tell the system to boot from there.
One could use the sd card stand alone, with a small change to the boot instruction file on it. I forget the name of it.