【问题标题】:AudioUnitSetProperty Swift errorsAudioUnitSetProperty Swift 错误
【发布时间】:2015-07-09 00:31:30
【问题描述】:

我正在尝试使用 AudioUnitSetProperty 在均衡器中设置频段,但无法弄清楚 Swift 中的语法。我的代码如下所示:

var eqFrequencies: NSArray = [ 32, 250, 500, 1000, 2000, 16000 ]
    var noBands = UInt32(eqFrequencies.count)

AudioUnitSetProperty(self.MyAppUnit, AudioUnitParameterID(kAUNBandEQProperty_NumberOfBands), AudioUnitScope(kAudioUnitScope_Global), 0, 6, UInt32(sizeof(noBands)))

有人知道正确的做法吗?

【问题讨论】:

  • 你遇到什么样的错误?
  • 在调用中使用 6 的地方应该有一个指向 NSArray 的指针,不是吗:|

标签: ios swift audio core audiounit


【解决方案1】:

试试这个(在 Xcode 6.3 中为我编译):

    var eqFrequencies: [UInt32] = [ 32, 250, 500, 1000, 2000, 16000 ]

    AudioUnitSetProperty(
        self.MyAppUnit,
        AudioUnitPropertyID(kAUNBandEQProperty_NumberOfBands),
        AudioUnitScope(kAudioUnitScope_Global),
        0,
        eqFrequencies,
        UInt32(eqFrequencies.count*sizeof(UInt32))
    )

Swift 抱怨各种 int 类型,因此有额外的强制转换,并且大小计算错误,但 UInt32s 的 band swift 数组(not NSArray)应该自动转换为UnsafePointer<Void>.

【讨论】:

  • 似乎无法为我编译。抱怨说:“无法使用类型为'(AudioUnit,Uint32,Uint32,Int,NSArray,Uint32)的参数列表调用'AudioUnitSetProperty'”。
  • 我错了,忘了说我改了类型
  • 这确实可以编译,但是当我调整均衡器时,只有第一个滑块调整声音,它似乎调整了所有级别。你知道为什么会这样吗?
  • 我需要查看更多代码才能知道为什么会这样。这是这个问题的一部分还是一个新问题?
  • 你的权利应该是一个新问题,我将用更多代码开始一个新问题。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多