音频样本只是一个数字,它定义了特定时间点的音频曲线的高度。在您的代码函数中,“静音”将音频曲线从文件加载到数据结构(数组)“样本”中
您的 sampNum 循环遍历一段索引值,检索每个样本索引的样本值 (getSampleObjectAt) ...然后将样本值设置为 0 (setSampleValue) ...静默被规范地定义为值 0
音频通常每秒采样 44100 次...因此忽略我假设由 getSampleObjectAt 处理的多通道和位深度...此循环从以下位置检索样本:
(44100*2, 44100 * 4)
这意味着它会生成一个从 2 秒到 4 秒的样本索引列表
为了实现你的目标,只需计算你的沉默开始和结束的所需范围
goal A - start at second 2 silence for 50 millisec
- start at 2000 millisec until 2050 millisec
- from 2000 millisec to 2500 millisec
start_sample_index = sample_rate * 2000 / 1000
start_sample_index = 44100 * 2000 / 1000
start_sample_index = 88200
end_sample_index = sample_rate * 2050 / 1000
end_sample_index = 44100 * 2050 / 1000
end_sample_index = 90405
所以在伪代码中(未经测试)
set_silence_from_to_in_millisec(start_time, end_time, sample_rate, sound_obj) :
start_index = sample_rate * start_time / 1000
end_index = sample_rate * end_time / 1000
for sampNum in range(start_index, end_index):
sample = getSampleObjectAt(sound_obj, sampNum)
setSampleValue(sample,0);
所以对于目标 A 的调用将是
set_silence_from_to_in_millisec(2000, 2050, 44100, my_sound_obj)