繁体   English   中英

AVFoundation / AudioKit 播放低频声音会产生咔嗒声/爆音

[英]AVFoundation / AudioKit Playing a low frequency sound produces click/pop

我正在创建一种鼓垫应用程序,似乎 AKPlayer 是 AudioKit 中用于播放我的样本的许多类中最好的。

问题是,当我开始播放低频(低音)样本时,播放样本时总是会发出咔哒声(或“爆音”)!

这可以通过从 AudioKit Playgrounds 运行未经修改的“混合节点”演示轻松听到。 调低除贝司以外的所有设备的音量,您会注意到每次贝司样本循环时都会发出咔哒声。

我还用AVFoundation测试了这个问题,情况也是如此。 这只发生在低频声音(如低音)中。 铅和其他声音不会产生这种情况。 我还用我自己的贝司样本进行了测试,同样的问题也在这里。

这是两者的代码:

import AudioKitPlaygrounds
import AudioKit

import AVFoundation


//: This section prepares the players
let drumFile = try AKAudioFile(readFileName: "drum.wav")
let bassFile = try AKAudioFile(readFileName: "bass.wav")
let guitarFile = try AKAudioFile(readFileName: "guitar.wav")
let leadFile = try AKAudioFile(readFileName: "lead.wav")

var drums = AKPlayer(audioFile: drumFile)
var bass = AKPlayer(audioFile: bassFile)
var guitar = AKPlayer(audioFile: guitarFile)
var lead = AKPlayer(audioFile: leadFile)

bass.play() // will produce click/pop
guitar.play() // will not produce click/pop, only low frequency samples produce click


let path = Bundle.main.path(forResource: "3", ofType:"aac")!
let url = URL(fileURLWithPath: "path")

var bombSoundEffect = try AVAudioPlayer(contentsOf: bassFile.url)
bombSoundEffect.prepareToPlay()

// uncomment below for AVFoundation
// bombSoundEffect.numberOfLoops = -1
// bombSoundEffect.play()

我怎样才能摆脱这种点击/弹出?

重新处理您的贝司样本,使其以静音开始和结束。

为了避免循环时的咔嗒声和爆裂声,接缝处的值必须是连续的,即它们不能相差太大。 它们的速度也需要匹配,不确定加速度。 您可以通过将样本加载到 memory 并将其乘以具有上述属性的曲线来轻松实现此目的。 开始时从 0 到 1 缓和然后在结束时退出的东西。

还要在声音编辑器中加载您的样本并检查开头和结尾。 也许结尾被剪得太尖锐了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM