LR Balance switching between 3 values and can you apply logic to check the amplitude of specific frequencies?
Hi,
Just Background as to what Im using the adau1701 for, feel free to skip through.
I just got my hands into using Sigmadsp Studio a few days ago and while it has it's quirks and I wasn't so pleased by it to begin with, I've grown to enjoy the process and have a few questions
So far I've played around with an adau1701 in my car, phase aligned my sub and speakers(then removed it because it was only off by ~20 degrees after adding filters), made a crossover, individual biquads imported from REW to filter the speakers separately (which I will also make a switch for A/B testing the difference between individual EQ and 2ch EQ) and so on.
I plan on doing some convolution on my phone and depending on my results may add an additional switch to toggle between a combined EQ and separate(for other people who might use it).
And it being a car, there are some odd modes in the cracks and crevices that cause plastic and metal to reverberate, for that I'm currently using the index selectable filters.
I'll also try my hand at adding some indexed phase adjustment to the HPF if I have instructions left over. I'm currently using it as a cleaner volume knob as the sub has it's own remote.
First is that I'd like to implement a L/R Balance switch (Car Seating switch):
(I currently have a spare potentiometer soldered on that came with the board, so converting the signal to 0,1,2 would be preferred to a push button for now)
I tried creating an implementation of it but I ran into the problem of using almost 100 instructions just to get it done and working, so I scrapped it and was hoping that someone here could help me make one much more simply.
Second, are index selectable filter currently working for the adau1701 in sigmadsp studio 4.6? I'll test it tomorrow if I get my car back by then. Otherwise, was it working previously in say version 4.4? (So I can just do my designing in that version as a workaround)
Third, is the chip capable of doing an amplitude check for specific frequencies and adjusting a filter(through an index) as a result? That way I won't need to manually adjust a potentiometer to stop the car from shaking. (Wishful thinking haha)
Fourth, are there any optimizations I can make to my current design? I removed the Crossover filter as it was taking twice as many instructions but I'm always looking out for more.
(PS the pins on the pots are backwards to me! So I've gone with a workaround at the cost of 7 instructions per pot(21 total!). I might resolder them soon though. unless there is a free option?)
I'll also attach the project file as it might be easier to work with:
adau1701 Car.zip
I'm still learning more about what the chip is capable of, and it's a lot in a tiny footprint, definitely beats the shitty headunits that cost more than $200. (Though I've probably spent half of that in parts making my own haha) Also, if anyone else has done some Room correction / Car Correction I'm curious what you might have done or as to what else I can use the adau1701 for!
PS. I may try to use a raspberry pi + I2S to do all the processing in the future but that's a whole other bag to open.
Thanks for the help!
Edit Notes
Forgetful me.
[edited by: Mruui at 7:02 PM (GMT -4) on 4 Jun 2021]
Audio Signal Processors
SigmaDSP Audio Processors
adau1701
Hello Mruul,
Lookup tables are handy to set up parameters such as the L & R balance settings. Multiplying an Aux ADC output by 3 gives an integer between 0 and 2 -- because the Aux ADC output falls short of exactly 1.000 and the multiply rounds down, the resulting product doesn't go to 3. This output can drive a LUT for each channel, set to your balancing requirements. A LUT of four entries covers the index range of 0 -- 3, one more than needed. I always add an extra row to the LUT and duplicate the highest entry just to make sure that if for some reason the LUT input does go higher than expected, nothing happens. "Standard" LUTs do strange things when overdriven. The "Index Protect" LUTs prevent this but use more instructions. This project as shown uses 51 instructions.
If your sub is causing the shaking, you could place a compressor before its DAC. An external-input compressor would allow you to add a parametric filter with a peak at the unwanted resonance frequency -- in order to make the compressor more sensitive to this frequency.
ADI attempts to keep forward compatibility so a project made in an earlier version of SigmaStudio should work fine in a newer version. As you said, however, you can always work around any problems by using the older version where necessary. The ADAU1701 has been around for years so its code is quite stable.
It's fun to economize on instructions in order to cram as many features as possible into a -1701. It looks like you've made quite a bit of progress already.
Best regards,
Bob
Thanks Bob! I had already implemented most of what you've mentioned after some trial and error with instructions, I found that even a simple DC Source and If/else to clamp a number under say 5 was better implemented by replacing it with a LUT economy wise which was rather surprising. In my own testing the pots did indeed go to 1 sometimes and cause some weird outputs so I added an extra table entry to fix that.
I found out that the hierarchy boards don't cost anything and are basically free and everything has become so much neater except for this, which is what I wanted to do for the LR Balance which gets quite crazy!
I'll look into the usage of the compressors for my needs as well, thanks again bob for the help!
Edit- I forgot one thing! I've noted that going over a total of ~500 Max delay over all the objects causes some really funky behaviour in distortion and crackling, even if the RAM hasn't gone over 700/2048.
Please log in to reply.




