如何在Python中实现声音渐入效果?
这个代码定义了一个叫做 `fade_in` 的函数,它的作用是让声音文件逐渐变得更响。这个函数需要两个东西:一个声音文件 `snd` 和一个表示渐变长度的 `fade_length`。
在函数内部,第一行的注释是说这个函数是用来处理声音渐入效果的。接下来,`new_snd = sound.copy(snd)` 这行代码是把传入的声音文件 `snd` 复制一份,存到 `new_snd` 这个变量里。
for sample in new_snd:
snd_index = sound.get_index(sample)
factor = 0
snd_samp = sound.get_sample(snd, snd_index)
if snd_index <= fade_length:
left = (sound.get_left(snd_samp) * factor)
right = (sound.get_right(snd_samp) * factor)
factor += 0.25
sound.set_values(sample,int(left),int(right))
else:
left = sound.get_left(sample)
right = sound.get_right(sample)
sound.set_values(sample, int(left), int(right))
return new_snd
1 个回答
0
在这个代码里,left
和 right
的值总是会是零,因为你在每次循环的时候都把 factor
设置成了零。你需要把 factor
在循环外面声明一下:
def fade_in (snd, fade_length):
new_snd = sound.copy(snd)
factor = 0
for sample in new_snd:
snd_index = sound.get_index(sample)
snd_samp = sound.get_sample(snd, snd_index)
if snd_index <= fade_length:
left = (sound.get_left(snd_samp) * factor)
right = (sound.get_right(snd_samp) * factor)
factor += 0.25
sound.set_values(sample,int(left),int(right))
else:
left = sound.get_left(sample)
right = sound.get_right(sample)
sound.set_values(sample, int(left), int(right))
return new_snd