如何制作一个文件,例如:“out.wav",并在其中添加“1.wav”10次,但没有延迟。也就是说,将声音叠加在另一个声音上,即使前一个声音还没有播放完。就像我现在已经尝试了大约一个半小时,得到的只是一个接一个地播放(即:首先声音完全播放)
最简单的代码:
use hound::{WavReader, WavWriter};
fn main() {
let mut reader = WavReader::open("1.wav").unwrap();
let spec = reader.spec();
let mut writer = WavWriter::create("output.wav", spec).unwrap();
for _ in 0..10 {
for sample in reader.samples::<i16>() {
writer.write_sample(sample.unwrap()).unwrap();
}
reader.seek(0).unwrap();
}
}
1条答案
按热度按时间knpiaxh11#
你必须以某种方式阅读&混合你想同时播放的多个声音。
下面是一个示例,它播放10次相同的声音,每次延迟声音长度的一半,通过简单地平均同时播放的两个剪辑来混合。
这肯定可以清理了很多(即存储在一个
Vec
的样本一次,只是从那里读取)