繁体   English   中英

AudioKit:根据陀螺仪数据更改声音/左右摇摆手机?

[英]AudioKit: change sound based upon gyro data / swing phone around?

这是一个AudioKit问题:

我真的是AudioKit和音频领域的新手。

我的问题是:我如何使用AudioKit创建随手机移动而改变的声音? 我已经知道如何获取陀螺仪信息,因此可以说我可以将0到10之间的陀螺仪值设为零,零表示无移动,而10表示电话的大量移动。 我想将其转换为声音,以使其与手机移动的速度有多快。 要开始,只需将声音随着速度的增加而提高音调,将低音调降低到零。 听起来很容易,是吗?

我只是没有足够的经验来知道要使用哪个AudioKit类或如何使用它来实现我的结果。

谢谢! 迈克尔

您必须编写自己的AKOperationGenerator。

enum PitchEnvVCOSynthParameter: Int {
    case frequency, gate
}

struct PitchEnvVCO {
    static var frequency: AKOperation {
        return AKOperation.parameters[PitchEnvVCOSynthParameter.frequency.rawValue]
    }
    static var gate: AKOperation {
        return AKOperation.parameters[PitchEnvVCOSynthParameter.gate.rawValue]
    }
}

extension AKOperationGenerator {
    var frequency: Double {
        get { return self.parameters[PitchEnvVCOSynthParameter.frequency.rawValue] }
        set(newValue) { self.parameters[PitchEnvVCOSynthParameter.frequency.rawValue] = newValue }
    }
    var gate: Double {
        get { return self.parameters[PitchEnvVCOSynthParameter.gate.rawValue] }
        set(newValue) { self.parameters[PitchEnvVCOSynthParameter.gate.rawValue] = newValue }
    }
}

let generator = AKOperationGenerator { parameters in
    let oscillator = AKOperation.squareWave(
        frequency: PitchEnvVCO.frequency
    )
    return oscillator
}

然后让您的变量控制频率

var vco1Freq: Double = 440.0
{
    didSet {
        generator.parameters[PitchEnvVCOSynthParameter.frequency.rawValue] = vco1Freq
    }
}

取陀螺仪的数据,并使其控制你的变量像描述在这里

暂无
暂无

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

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