ADI Superbass seems to be very broken
Hi all,
I have been experimenting with SigmaStudio and ADAU1701 to good results so far. One Algorithm that seems to be elusive though is the "ADI Superbass" - which is a shame as it is the most relevant to my application.
Here is a list of the problems I have found so far:
1. Does different things depending on sampling rate. Completely broken at 192KHz, and improves down to 44.1KHz
2. Sounds like it high passes the sound?
3. Bass gain at 1, in fact gives boost
Can anyone help with the bizarre behaviour? I have the latest version of SigmaStudio..
Thanks.
Audio Signal Processors
SigmaDSP Audio Processors
adau1701
Hello,
Sorry to hear that the Superbass block is giving you trouble. Here's some suggestions to try:
Sample Rate -- When a block works differently at different sample rates, the usual cause is a mismatch of DSP and software sample rate. The software sample rate (the one you set atop SigmaStudio's schematic window) and the DSP sample rate (set by register settings and hardware) must match. If they have not been matched, SigmaStudio calculates needed parameters for a sample rate other than what the DSP is actually running -- causing all sorts of trouble. To set the DSP sample rate on a ADAU1701, first click the Hardware Configuration tab, top left side of the window:
Next, select the IC1 - 170x \140x Register Control tab at the bottom of this window. Locate the Program Length drop-down box, and choose according to the desired sample rate: 1x for 48K, 2x for 96K, and 4x for 192K sample rate.
High Pass effect -- Yes, the Superbass block does attenuate bass below its Xover Freq. setting. With its default settings (Xover Freq = 90 Hz, etc.), the response I measured looks like this:
I believe the idea is that you set the Xover Freq. near the lowest bass frequency your speakers can handle "on their own." Incoming bass below the Xover Freq. is attenuated, possibly to help avoid shaking your speakers apart. Then the algorithm generates harmonics to give the impression that the low bass is still there. The Bass Gain function further improves the effect by boosting bass in a range above the Xover Freq., which your speakers can reproduce.
Bass Gain -- It appears that the Intensity and Bass Gain settings add to each other within their respective functions. Thus, if the Intensity is set to 0.1 (as low as it goes), a Bass Gain of 1 provides a flat response (no boost) above the Xover Freq (same scales as the above graph):
So, how do we tune this block to work as desired? Since its purpose is to improve otherwise deficient bass using psycho-acoustic principles, your ears (and those of other test listeners) will have to be the judge. Thus the graphs I made here are only to give an idea of what the Superbass algorithm is doing. The swept-frequency test project I used to make the graphs measures overall output level -- it doesn't distinguish between reproduced input bass and generated harmonics, rather showing the combined effects of both. The project is attached in case you're curious. It runs on a ADAU1701MINIZ board.
Best regards,
Bob
Hello Bob,
A massive thanks for your reply, and apologies for taking so long to get back to you.
Changing the sample rate seemed to do the trick, I wasn't aware of setting the instruction length to correspond to the sampling freq. After a little play it is (was, more on that..) playing ball.
A couple of notes on its working though, that seem to be issues for myself (maybe you can help?)
I only want a single channel passed through. I am having to use "fake" IO ports to make it work. Is there anyway to disable one channel somehow?
It's a shame it isn't a pure psychoacoustic block! I would rather I kept complete control of my own boost / XO. But I seem to be unable to find any other similar components.
Also, after fiddling with the project, it seems that I have 'broken' the superbass. I have attached a project.
Without the superbass it passes sound through perfectly. With it, the outputs all go to full gain, and no sound is output. ( I am also unable to make the 3 way XO double precision, is this related?)
Again, thanks for your help,
Barney
Hello Barney,
The "broken" project's symptoms were caused by running out of instructions. The ADAU1701 handles 49,152,000 instructions per second (roughly 50 MIPS), regardless of the sample rate in use. It must perform your whole project on each sample before the next one arrives. At 48 KHz, this allows for 49152000 / 48000 = 1024 instructions. At 96K there's only half as much time available, so the permissible number of instructions in your project drops to 512 -- actually around 500 as there's always some overhead.
Each SigmaDSP family has its own compiler. Unfortunately, the Sigma 100 compiler (for the ADAU170x family) acts like you're always running at 48K, thus doesn't warn you of instruction overage at higher sample rates. Thus you need to check this yourself -- here's how: Next to your project file there should be a folder named like, IC1_brokensuperbass. Inside this folder should be another folder named, net_list_out2. Open the text file it contains called, compiler_output. You'll see a listing like this:
As you can see, your project uses 581 instructions, simply not possible at 96K. That's why your project went mute even though the level meters were showing full blast -- neither are correct. All bets are off when out of MIPS.
So what can we do about it? You could run at 48K, especially if you plan on adding more features to your project. Or we can strive to be more efficient in building the project. For example, presently you're using only the midrange outputs of three crossovers -- the compiler builds in woofer and tweeter outputs whether used or not, so that's a lot of filters eating up MIPS. I re-arranged your project to use only a stereo two-way crossover, which brings the instructions down to 473. The only function this gives up is the 30 Hz highpass at the sub output, but the Superbass algorithm already takes care of that:
Also, in the 1701's HW Config window -- always leave the RAM setting in the DSP core at its default of 8.
I'm afraid I can't help you with your two bulleted points. There's not a mono version of the Superbass algorithm, or one which performs the psychoacoustic adjustment without its other features. These would have to be created by the folks at ADI. It's my understanding that presently they are concentrating their efforts on the Sigma 300 (ADAU1452 family) since these newer, more advanced chips are capable of some really cool stuff. But the ADAU1701 has advantages of its own, starting with built-in converters.
Best regards,
Bob
Please log in to reply.













