# What Does Amp * 0.5 Translate To In Db

Hi

I’m doing a series of lessons in electronic music, naturally all in renoise

Anyways, I wanted to demonstrate how adding sines up the overtone series will end up with a saw wave. Since the strength of the n’th overtone should have amplitude 1/n, I need to be able amplify for instance the 2nd overtone by 0.5. I solved it by using an amplifier plugin, but how does this translate into db’s, so I can stick with native-only plugins and use the gainer?

0.5 is roughly -6.021 dB (-6.0205999132796 dB to be more precise)

To convert linear amplitude to dB:
dB = 20 * math.log10(amplitude)

To convert dB to linear amplitude:
amplitude = math.pow(10, (0.05 * dB))

You can do both of these directly in Renoise’s scripting terminal

Alternatively, you can use the very handy functions in Renoise’s math library:

dB = math.lin2db(amplitude)

amplitude = math.db2lin(dB)

You can even play with the maths in real time with the *formula meta device that contains the math library. Try to paste this in your track dsps section :

``````<?xml version="1.0" encoding="UTF-8"?>
<filterdeviceclipboard doc_version="0"><br>
<isactive>true</isactive><br>
<isselected>true</isselected><br>
<selectedpresetname>Init</selectedpresetname><br>
<selectedpresetismodified>true</selectedpresetismodified><br>
<ismaximized>true</ismaximized><br>
<formulaparagraphs><br>
<formulaparagraph>db2lin (-6 )</formulaparagraph><br>
<formulaparagraph></formulaparagraph><br>
</formulaparagraphs><br>
<functionsparagraphs><br>
<functionsparagraph>function inv(x)</functionsparagraph><br>
<functionsparagraph> return (1.0 - x)</functionsparagraph><br>
<functionsparagraph>end</functionsparagraph><br>
<functionsparagraph></functionsparagraph><br>
</functionsparagraphs><br>
<inputnamea>A</inputnamea><br>
<inputnameb>B</inputnameb><br>
<inputnamec>C</inputnamec><br>
<editorvisible>true</editorvisible><br>
<panelvisible>0</panelvisible><br>
<inputa><br>
<value>0.0</value><br>
<visualization>Device only</visualization><br>
</inputa><br>
<inputb><br>
<value>0.0</value><br>
<visualization>Device only</visualization><br>
</inputb><br>
<inputc><br>
<value>0.50118720531463623</value><br>
<visualization>Device only</visualization><br>
</inputc><br>
<desttrack><br>
<value>-1</value><br>
<visualization>Device only</visualization><br>
</desttrack><br>
<desteffect><br>
<value>1.0</value><br>
<visualization>Device only</visualization><br>
</desteffect><br>
<destparameter><br>
<value>2</value><br>
<visualization>Device only</visualization><br>
</destparameter><br>
</deviceslot><br>
</filterdeviceclipboard>

``````

It’ll be easier to “play” with maths and hear / see the results through the scopes.

Hey , I’ve done the same thing ,I have a renoise template song that has 20 sine wavers ( partials ) 1.2.3…20 each having their own vmixer channel …render the whole lot to sample …
It’s a great method for creating new waveforms

That sounds nice (and looking at the available variables, this could be fun for other stuff indeed). However I can’t make it work

I put “lin2db(A)” in the formula field, and selected the “Gain” of a gainer device I put the same channel as distination. But no matter what values I put slider A to, the gain is at -INF. It seems the formula device tries to write -6.0205999132796 to the “slider” of the gainer, but the slider goes from 0-1. So I need to translate the db to renoise-device-slider-language

If I input print(math.lin2db(0.5)) in the scripting terminal it correctly prints -6.0205999132796, so it seems the formula is ok?

It ended up being dead simple, the correct formula was “A * .25”. Connected to the gain of a gainer device will allow me to set slider A to 0.5 which moves the gain to -6.021dB, etc…

Thanks for bringing up the formula device!