当前位置: 首页 > 知识库问答 >
问题:

AudioKit快速摇摄

阮鸿煊
2023-03-14

我正在AudioKit的帮助下开发一个应用程序。我正在尝试平移音频,这样它一次只能在一只耳朵里播放。有什么可能出错的想法吗?

声音在播放,但在两耳同时播放。

func createTone(freq: Double, dB: Int, isLeftEar: Bool){
        currentFreq = Int(freq)
        currentdB = dB
        isAudioOn = true
        osciliator.frequency = freq
        osciliator.amplitude = calculateVolume(dB: dB)
        osciliator.rampDuration = 0.25
        let leftPan = AKPanner(osciliator, pan: -1)
        let rightPan = AKPanner(osciliator, pan: 1)
        if(isLeftEar){
            AudioKit.AKManager.output = leftPan
            
        }else{
            
            AudioKit.AKManager.output = rightPan
        }
        do{
            try AudioKit.AKManager.start()
        }catch{
            print("could not start AudioKit.")
        }
        
        if isLeftEar {
            leftPan.start()
        }else{
            rightPan.start()
        }
        
        osciliator.start()
        sleep(2)
        
        do{
            try AudioKit.AKManager.stop()}
        catch{
            print("AudioKit could not stop")
        }
        

共有1个答案

能文华
2023-03-14

通常,节点是在类级别声明的,而不是作为局部变量声明的。所以您会得到如下内容:

class ViewController: UIViewController {

var panner: AKPanner!

func createTone(freq: Double, dB: Int, isLeftEar: Bool){
    // ...

    panner = AKPanner(oscillator, pan: (isLeftEar) ? -1 : 1)
    // ...
}

此外,不应在主线程中调用sleep。您应该使用DispatchQueue.Main.AsyncAfter:

DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
    do{
        try AKManager.stop()}
    catch{
        print("AudioKit could not stop")
    }
}
 类似资料:
  • AudioKit 是一个开源的强大的音频合成、处理和分析库。用于 iPhone/OS X 应用的开发,支持 Objective-C 和 Swift 语言。 示例代码: #import "NewInstrument.h"@implementation NewInstrument- (instancetype)init{    self = [super init];    if (self) {  

  • 问题内容: 我想在项目中使用sha256,但是在将objC代码重写为快速代码时遇到了一些麻烦。 这是我的代码 它给我的错误,因为一切都迅速不能转换到,例如。 问题答案: 您必须在和之间进行显式转换,因为Swift不会像(Objective-)C中那样进行隐式转换。 您还必须定义为所需大小的数组。 另外,您可以用来分配所需的缓冲区: Swift 3和4的更新: Swift 5更新:

  • 摇一摇。 参数 Object object 参数 类型 必填 默认值 说明 success Function 否 调用成功的回调函数 fail Function 否 调用失败的回调函数 complete Function 否 调用结束的回调函数(调用成功、失败都会执行)

  • 问题内容: 我想将双精度数四舍五入到一定数量的小数,总是四舍五入。 例 四舍五入到.00 => 1.5679999到1.56 四舍五入至.000 => 1.5679999至1.567 我想要一个Double而不是一个连接字符串 问题答案: 只需替换为!

  • 问题内容: 在更新xCode 6之前,我没有问题将双精度型转换为字符串,但是现在它给了我一个错误 它给我错误信息“双精度不能转换为字符串”。还有其他方法吗? 问题答案: 它不是强制转换,而是根据具有格式的值创建字符串。 格式不同:

  • OAuth2单一登录 这是一个具有HTTP基本身份验证和单个用户帐户的Spring Cloud“Hello World”应用程序app.groovy @Grab('spring-boot-starter-security') @Controller class Application { @RequestMapping('/') String home() { 'Hello World