Thank you for your donation!


Cloudsmith graciously provides open-source package management and distribution for our project.


Problem: Enabling multiple output devices
#1
I have a MA12070P amp board that is logically identical to the official Merus/Infineon amp hat. I can connect it directly to the RPi GPIO and it works with the Merus overlay and all settings are available through alsamixer. However, there are still the usual I2S limitations from the RPi (doesn't support full sample rate/less than desirable clocking -- these are hardware issues with the hat and RPi). To get around these limitations, I have a SA9227 USB->I2S board that I have had success with using a microcontroller for enable, mute, and I2C signals to change the MA12070P settings manually.

However, what I would like to be able to do is use the Merus overlay for controlling the amp board over RPi GPIO and alsamixer while using the USB board as the I2S source. Is this something that is even possible?

Barring this, any other suggestions?

Thanks,
Nathan

PS -- having used a Merus hat for a while now, using the SA9227 with quality clocks and 192/24 has been a massive upgrade in sound. Gorgeous!
Reply
#2
The I2S interface commonly supports up to 384K PCM rate from I2S drivers but the Merus chip IIRC is hardware limited to 96K. If you are doing 192K into the USB/I2S board then what rate is being sent to the Merus chip?

I'm not sure whether there is a Linux configuration that would allow both I2S and USB audio interfaces to be active at the same time. Typically when an I2S overlay is specified in /boot/config.txt ALSA configures it to card0 and no other cards are available for other audio devices.

You might want to consider using a Kali reclocker but like everything else that uses trailing edge chips its on back order at suppliers.
Enjoy the Music!
moodeaudio.org | Mastodon Feed | GitHub
Reply
#3
Thanks for the answer. I suspected as much...

The Merus *hat* is hardware limited to 48K due to the chip's BCLK and MCLK being tied together on board. But the chip itself can handle up to 192K if properly clocked. The amp board I have exposes all the pins and can be fed up to 192K/32 using correct BCLK and MCLK supplied via the USB->I2S board (although IIRC the chip internals only use up to 24 bits).

It sounds like the solution is to keep the microcontroller but be smarter about it. For posterity, probably what I'll do is have the micro apply the settings on power up over I2C, monitor LRCLK for activity, enable the amp after I2S starts, and unmute the amp. If I feel like being especially clever, I'll make a settings menu similar to the official Merus mixer and connect over serial.
Reply


Forum Jump: