AudioKit:根据陀螺仪数据更改声音/左右摇摆手机? [英] AudioKit: change sound based upon gyro data / swing phone around?

查看:170
本文介绍了AudioKit:根据陀螺仪数据更改声音/左右摇摆手机?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个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
    }
}

获取陀螺仪数据并使其控制变量,如此处

This is an AudioKit question:

I am really new to AudioKit and audio in general.

My question is: How could I use AudioKit to create a sound that changes as I move my phone around? I already know how to get the gyro information so lets say I can take the gyro values between 0-10, zero being no movement and 10 being a lot of movement of the phone. I want to translate that into sounds that corresponds to how hard/quickly the phone is being moved. To start just move the sound higher in pitch as the speed increase, low pitch down at zero. Sounds easy yes?

I'm just not experienced enough to know which AudioKit class to use or how to use it to achieve my results.

Thank you! Michael

解决方案

You have to write your own 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 }
    }
}

and

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

and then make your variable control the frequency

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

Fetch the gyro data and make it control your variable like describes here

这篇关于AudioKit:根据陀螺仪数据更改声音/左右摇摆手机?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆