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