簡體   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