def sweep(f_start, f_end, interval, n_steps, n_oversample=1):
    b = log(f_end / f_start) / interval
a = 2 * pi * f_start / b
for i in range(n_steps):
    for oversample in range(n_oversample):
        fractional_step = oversample / float(n_oversample)
delta = (i + fractional_step) / float(n_steps)
t = interval * delta
g_t = a * exp(b * t)
print(t, 3 * sin(g_t))
sweep(16000.0, 16500.0, 256.0 / 48000.0, 256)
sweep(16000.0, 16500.0, 256.0 / 48000.0, 256, 4)
синусоидальная волна, которая экспоненциально изменяется между частотами f1 и f2 в заданное время/количество выборок