Using Table Interp or Lookup tables

5 posts / 0 new
Last post
Shauk
Offline
Last seen: 5 days 9 hours ago
Joined: 06/04/2018 - 5:43am
Using Table Interp or Lookup tables

Hallo

I am new to audio weaver and trying to figure out the functionalities of each block.  On the audio weaver user manual i found this example to implement the fletcher munson loudness with a DC source, table interp block and second oder controllable filter. This example works fine. I implemented it and i can control the parameters of my table interp accordingly with a DC signal input to the table. But what i am trying to do is, instead of a DC signal, i want to use an audio signal input to the table interp to control the values but it does not seem to work. Below is a screen shot of what i tried to implement. But even though i change my input signal level to the table interp, the output value from the table interp does not seem to change, it stays at the maximum value. Is it possible to drive the table interp with a audio signal like this? or only with a DC value?

Another question is about this "Block Median" block, what is the output unit of this block when i select mean value? is it in dB or in linear?

DSPC_Peaston
Offline
Last seen: 2 days 21 hours ago
Joined: 10/04/2016 - 4:16pm

Hi Shauk,

 

The table interp will accept any input, but it does have an expected input range which you may need to change. Audio signals have a range from -1 to +1, meaning the "x-axis" min and max of the TableInterp1 would have to reflect this range. Typically, table interpolation is done in the dB domain, because it is easier to map input dB to output dB than it is to try to keep sign values correct. Interpolation doesn't really work for most linear cases, because the "quiet region" has both positive and negative parts. 

Try adding a dB20 module after your filter and do your interpolation in the dB domain. After the interpolation, you can use undB20 to go back to the linear domain. 

The block median module will sort the samples in the buffer from smallest to largest, and take the middle sample's value. Most buffers are even, and use the sample location (buffersize/2)-1. 

Hope this helps!

Shauk
Offline
Last seen: 5 days 9 hours ago
Joined: 06/04/2018 - 5:43am

Hallo DSPC_Peaston

thanks a lot for your reply. I understand why it is hard to do the interpolation on the linear domain, and why its easier to do it in the dB domain. So according to your explanation if my x-axis is in dB then the output of the table interp will be also dB right? so i use a DC source to control the volume of the signal with a gain block and then  i put the same dc signal into my table interp and then i want to use this output as q input to the filter, would this work, i am confused because as i understand from your explanation this value would be also in dB?? So would i need a unDB20 block to make this values linear for the q input? 

Another problem is, if i use the dB20 after my filter and undB20 after the table, when i use dB20 after my filter the level goes really high compared to the filter data level after db20, so the level changes this is not the expected behavior right? because the idea was to control the q of the filter based on the input level. Below is the setup that i understood from your suggestions, look at the two level meters, one before the db20 block and another one after the db20 block

And if use and undB20 block before the db20 block, then both the levels stay the same, but by changing the input signal level, i can not change the output value of the interpolation table, i seems to be stuck at one single value or change between 3-4 nearby values. I guess its again the problem with interpolation.

DSPC_Peaston
Offline
Last seen: 2 days 21 hours ago
Joined: 10/04/2016 - 4:16pm

Hi Shauk.

Internally, the meter modules start by doing a dB20. When a regular audio signal (-1 to +1) goes into the meter, we dB20 it which then puts the audio into the range (-600 to 0). What this really means is that if the input signal's sample value reaches +1, the dB20 of this is 0. If the input signal's sample value reaches -1, the dB20 of this will also be 0. 

Since we are using a dB20 before a meter, the meter will now be doing this: dB20(dB20(input)) which is why we see numbers greater than 0 on the output. 

The tableInterp module is actually just a multiplier, it's job is to take the input range and figure out the correct multiplier to get it to the output range. It doesn't care if the signal should be interpreted as dB or as linear. 

Your design is showing the expected behavior of this design.

Shauk
Offline
Last seen: 5 days 9 hours ago
Joined: 06/04/2018 - 5:43am

Hallo

thanks for the suggestions. According to the suggestions, i have made the following module, attached to the google drive link

https://drive.google.com/drive/folders/1Eq7W3s3_euR-19F5xuXl1MAhqW_wEWJb...

it does not seem to work properly, the idea is to change the Q variable of the high pass filter based on the input signal level, i used a Block Statistics module in RMS mode to slow the signal change. according to the settings when i go down to -80 dB the interpoaltion table output should be 0.5, but its not, am i doing something wrong? or there is a misunderstanding of the whole concept from my side?