SigmaStudio external tone control (bass / treble)
Hello,
i am new to dsp and SigmaStudio.
I taught myself vom basic stuff and got a 2 way speaker project running.
Added some limiter, compressor, eq and linked one poti as an external volume control.
Tried the same to regulate bass and treble by potis, tried to rebuild some tutorials i found on the internet, but it doesnt work for me.
I attached screenshots of my schematic. Maybe you can help me out. It should be quite simple not to complicated :D thanks a lot
Best regards
Lukas
software
sigmaStudio 4.7
i tried this one, but doesnt affect the sound at all...
Hello Lukazzo,
you made a great attempt and I applaud your efforts and experimentation!
However, it is not quite right. The Index controlled filter requires an integer number but the AUX ADC output is a 5.23 number so it is giving the index input a HUGE pointer offset!
By the way, you did not mention which processor you are using. Since I could see a few details in your screenshots I am making the assumption you are using the ADAU1701.
Here is how you do it:
3414.ADAU1701 AUXADC Index Selectable Filter.dspproj
DaveT
Thank you so much! You are correct: its a wondom jab5 using the adau1701
I will try your config as soon as possible.
i rebuilt your schematic.
it does not work either :(
Hello Lukazzo,
First, You have the readback improperly set to actually see the value being sent to the filter block. either set it to 28.0 or to Hex.
2nd, add a readback on the output of the AUXADC signal or after the multiply to see if you are getting data? I suspect you do not have the registers set properly. The AUXADCs are on MP pins so the pin might not be set to the correct mode.
You are using ADC1 so this is where you set it
You also have to enable it
Dave T
Oh damn it.
Changed the readback to HEX and added a readback after the multiplier. If i turn the poti, the 2nd readback changes values, but the tone doesnt. Turned to the very left it says "0,3,80" in the middle position "1,77,0" and at the very right "7,F2,0".
The hardware settings were already correct! They look the same as yours.
Sorry that the colors are not clear and I thought you had something set right but I think it is not.
There are two hidden buttons. Read about it in the Wiki Help files for the tables.
Mouse over and I think you have the bottom one not set correctly. If it is set correctly the fly over should say this:
The top one should say this:
The goal is for this readback of yours when set to HEX should read 0,1,2,3 and no other numbers as you turn the pot. I took this screenshot from your earlier one. Set it to continuous readback. That is the other small secret button to the left of the READ button.
Thank you, thank you, thank you!
Out of nowhere it´s working. Disconnected the ipc board and compiled the data again. Maybe there was a bug, i dont know.
I changed the filter to a General 2nd order/lookup). That was the type i was looking for.
Thank you very much. Will do the same with the treble.
Wish you a great weekend!
Watch the readback for the integer value of the filter. The last little screenshot in my last post. You should see it switch evenly however, do you know the taper of the pot? It needs to be a linear taper not a log taper.
If it is a log taper and you cannot easily change it there is a way to work around this. We have the linear interpolator and you might be able to do it using some math functions as well but that is something I have not tried to do.
The linear interpolator uses a fair amount of instructions. What might be better to do is to grow the table to a large number of entries. Like 33 or more. Then for those values you enter 0 for only the first few lines then enter the 3 for most of the last lines. basically, distribute the 0,1,2,3 so it comes out more evenly. Doing some anti-log math might be easier.... I am just not in a good place to experiment with this. I have had a frustrating afternoon with something unrelated and I also would have to modify a board to have a log pot.
So hopefully someone else had dealt with this in the past and has an easy answer and will chime in. I have always designed in linear pots and all the 3rd party boards have them. We do have an RMS table that might be handy... This is an interesting problem.
Dave T
I added treble also, thank you very much!
Is there a multiband like filter in sigmastudio that can be controlled with that single poti? My idea is to boost different low end frequencies while turning the poti.
With the General 2nd order/lookup filter i can only select a certain frequency e.g. 50hz. But i would like to boost maybe 60, 70 or 80hz also.
is it possible to add more than 4 filters? so the poti seems to be more "seemless"?
if i changed all the "4" values to e.g. "8" to get smaller steps between each filter the poti made some ugly noises while turning.
Hello Lukazzo,
There is so much on the forum for this part. Everything you are asking about has been discussed many times. Here are some posts to look at.
(+) 10 Band Equalizer controlled with potentiometers - Q&A - SigmaDSP Processors & SigmaStudio Dev. Tool - EngineerZone
Here is one that is almost ten years old now where I have an example project as well.
(+) ADAU1701 AUX controlled "graphic EQ" possible? - Q&A - SigmaDSP Processors & SigmaStudio Dev. Tool - EngineerZone
Here is another one about how to mux several pots.
(+) Multiple External Potentiometers - Q&A - SigmaDSP Processors & SigmaStudio Dev. Tool - EngineerZone
One comment, you mentioned you increased it to 8 values and then you got not so great noises. It seems to me that you sent data to the multiplexer that is beyond the number of filters. This is why I had mentioned to look at the data going to the control pin of the filter. If there are four filters then you must limit the data to values 0,1,2,3 and nothing else! It must be an unsigned integer. This number is used as an offset pointer. So the DSP code has the base address for the first filter and then each filter coefficients are offset from the base address. So you add 0, 1 2 or 3. If you send it a 4 or higher, then it will go to the memory address of the Base+4 which is some random data and not coefficients! So this will produce very unpredictable results!!
If someone is having issues I will always make sure they are only sending valid data to the externally controlled blocks in the program. Not just filters, any externally controlled block.
Dave T
Thanks for your help Dave!
Please log in to reply.








