AudioKit:根据陀螺数据/摆动手机改变声音?

Posted

技术标签:

【中文标题】AudioKit:根据陀螺数据/摆动手机改变声音?【英文标题】:AudioKit: change sound based upon gyro data / swing phone around? 【发布时间】:2017-10-09 13:27:43 【问题描述】:

这是一个 AudioKit 问题:

我对 AudioKit 和一般音频真的很陌生。

我的问题是:我如何使用 AudioKit 来创建随着我移动手机而变化的声音?我已经知道如何获取陀螺仪信息,所以可以说我可以将陀螺仪值取在 0-10 之间,零表示手机没有移动,10 表示手机有很多移动。我想将其翻译成与手机移动的力度/速度相对应的声音。首先,随着速度的增加,将声音调高,将低调调低至零。听起来很容易是吗?

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

谢谢! 迈克尔

【问题讨论】:

这更像是一个合理的设计问题,而不是编程问题。你真的必须想一想光剑的声音是由什么组成的;基本声音(振荡器、采样)、滤波器扫描等。在 youtube 上研究声音是如何创建的,然后开始尝试通过合成或采样重新创建它。关于如何将陀螺仪信息与声音一起使用,您的想法是正确的。 问题过于宽泛。寻求特定帮助以使用 AudioKit 振荡器/采样器上下调整声音,或寻求光剑的声音设计。 好的,更具体地说,我将使用哪个 AudioKit 类来允许我根据一些参数/幅度(例如陀螺轴的值)轻松地上下改变音高?随着陀螺仪值的变化,我希望能够“实时”上下改变音高。谢谢。 【参考方案1】:

您必须编写自己的 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
    

获取陀螺仪数据并使其像描述here一样控制您的变量

【讨论】:

以上是关于AudioKit:根据陀螺数据/摆动手机改变声音?的主要内容,如果未能解决你的问题,请参考以下文章

AudioKit - 使用音序器在特定位置播放声音文件

Audiokit 交叉淡入淡出声音循环

Swift - AudioKit AKMidi 到 AKSequencer

使用AudioKit测量声音(频率加权)的声音水平

AudioKit - 尝试在 Audio Kit 5 中生成声音

AudioKit 停止并开始产生奇怪的声音