Как мне кажется, когда мы делаем sleep(time) то уровень сигнала на звуковой карте неизменяется
может преобразовывать массив в массив
мы не успеем "уложить" первый квант из массива в движение мембраны динамика туда и обратно
for i, u in enumerate(record):
play(u, duration=k*i+T0)
T0/2
при замедлении воспроизведения wav, исправил выше. А decimal не работает, потому что у него не хватает точности.
Вы хотите добавить в массив(wav файл) между значениями нули, чтобы из ускоренной записи получить замедленную?
speed = 2 # конечная скорость воспроизведения магнитофона, 2х
record = [10,15,2,0,36,...] # асимметричный массив записанных уровней напряжения в микрофоне - wav файл
t = 60 # длительность wav файла
T0 = t/len(record) # начальная задержка воспроизведения записанных уровней напряжения из wav файла
T1 = T0*speed # конечная задержка воспроизведения записанных уровней напряжения из wav файла
k = (T1-T0)/(len(record)-1) # коэффициент линейного ускорения воспроизведения
for i, u in enumerate(record):
T = k*i+T0 # задержка воспроизведения с учётом линейного ускорения
set_speaker_voltage(u)
sleep(T0/2) # не забываем помахать диафрагмой в обратную сторону
set_speaker_voltage(-u)
sleep(T) # реализуем линейное ускорение воспроизведения
в магнитофоне равномерно увеличивали скорость на кассете, это записали в массив