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:根据陀螺数据/摆动手机改变声音?的主要内容,如果未能解决你的问题,请参考以下文章
Swift - AudioKit AKMidi 到 AKSequencer