Fade in/out function for volume control

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
2 replies · 2K views
VMail
Messages
11
Reaction score
0
This more of a maths question rather than a physics one, but I do remember doing something similar is my physics course.

Basically I trying to write a fade in and fade out function
for a volume control but I am stuck on the maths part. Thats where I
need you.

I've tryed a linear fade, but that does not sound good

so y = volume (0-100)
and x = time (0.5)

time is fixed to 0.5sec but can alter slightly if needed

volume will be one value from 0 to 100, but I don't know what the
volume will be until the function is needed
 
Physics news on Phys.org
Just putting this PM here because I can't read the formula in the PM

Ambitwistor said:
If a linear scaling doesn't sound good, you might try something that scales as a power of time other than 1. That is, something like [itex]t^{-\alpha}[/itex] for some [itex]\alpha>0[/itex] ([itex]\alpha\neq 1[/itex]). It will fade faster than linear for [itex]\alpha>1[/itex], and slower than linear for [itex]0<\alpha<1[/itex].

However, you can't just use a straight power law, because it goes to infinity at t=0, and never drops completely to zero. So, you want a power law that's shifted to the left a bit (to be positive at t=0), and also down a bit (to drop to zero at finite t).

So, you want a volume function that looks something like this,

[tex]V(t) = A(t+t_0)^{-\alpha} + B[/itex]<br /> <br /> for some constants A, B, and [itex]t_0[/itex].<br /> <br /> Adding the constraints that you want the volume to have some initial volume at time t=0 ([itex]V(0) = V_0[/itex]), and drop to zero volume after some finite time t=T ([itex]V(T) = 0[/itex]), that leads to a volume function that fades with time like this, <br /> <br /> [tex]V(t) = \frac{1-(\frac{1+T/t_0}{1+t/t_0})^\alpha}{1-(1+T/t_0)^\alpha} V_0[/tex]<br /> <br /> or,<br /> <br /> [tex]V(t) = \frac{1-k/(1+t/t_0)^\alpha}{1-k} V_0[/tex]<br /> <br /> where [itex]k = (1+T/t_0)^\alpha[/itex] -- assuming I haven't screwed up the algebra; you'll have to check it.<br /> <br /> You'll have to play around with the parameters [itex]\alpha[/itex] and [itex]t_0[/itex] to find something that sounds good. I already mentioned the effect that [itex]\alpha[/itex] has on the fade; larger [itex]t_0[/itex] values will also make for a slower fade (getting out on the tail end of the power-law decay curve).[/tex]
[tex][/tex]
 
ok, I'm using

to=0 to 475 (stepping by 25)
and alpha as 1.01
Vo is set at 50

The values that I am getting are 16-45(rounded up)
is this correct?