kAudioUnitProperty_MatrixLevels 在 Swift
kAudioUnitProperty_MatrixLevels in Swift
要查询 MatrixMixer AudioUnit,请执行以下操作:
// code from MatrixMixerTest sample project in c++
UInt32 dims[2];
UInt32 theSize = sizeof(UInt32) * 2;
Float32 *theVols = NULL;
OSStatus result;
ca_require_noerr (result = AudioUnitGetProperty (au, kAudioUnitProperty_MatrixDimensions,
kAudioUnitScope_Global, 0, dims, &theSize), home);
theSize = ((dims[0] + 1) * (dims[1] + 1)) * sizeof(Float32);
theVols = static_cast<Float32*> (malloc (theSize));
ca_require_noerr (result = AudioUnitGetProperty (au, kAudioUnitProperty_MatrixLevels,
kAudioUnitScope_Global, 0, theVols, &theSize), home);
AudioUnitGetProperty
上 kAudioUnitProperty_MatrixLevels
的 return 值是(在文档和示例代码中定义的)Float32。
我正在尝试在 swift 中找到矩阵级别,并且可以毫无问题地获得矩阵维度。但是我不确定如何创建一个 UnsafeMutablePointer<Void>
的空 Float32 元素数组。这是我尝试过但没有成功的方法:
var size = ((dims[0] + 1) * (dims[1] + 1)) * UInt32(sizeof(Float32))
var vols = UnsafeMutablePointer<Float32>.alloc(Int(size))
在 MatrixMixerTest 中,数组的用法如下:theVols[0]
可能需要根据您转换其他部分的方式进行修改,
但是你的 C++ 代码的最后一部分可以用 Swift 写成这样:
theSize = ((dims[0] + 1) * (dims[1] + 1)) * UInt32(sizeof(Float32))
var theVols: [Float32] = Array(count: Int(theSize)/sizeof(Float32), repeatedValue: 0)
result = AudioUnitGetProperty(au, kAudioUnitProperty_MatrixLevels,
kAudioUnitScope_Global, 0, &theVols, &theSize)
guard result == noErr else {
//...
fatalError()
}
当基于 API 的 C 函数声明 UnsafeMutablePointer<Void>
时,您只需要一个任意类型的 Array
变量,并将其作为 inout 参数传递。
要查询 MatrixMixer AudioUnit,请执行以下操作:
// code from MatrixMixerTest sample project in c++
UInt32 dims[2];
UInt32 theSize = sizeof(UInt32) * 2;
Float32 *theVols = NULL;
OSStatus result;
ca_require_noerr (result = AudioUnitGetProperty (au, kAudioUnitProperty_MatrixDimensions,
kAudioUnitScope_Global, 0, dims, &theSize), home);
theSize = ((dims[0] + 1) * (dims[1] + 1)) * sizeof(Float32);
theVols = static_cast<Float32*> (malloc (theSize));
ca_require_noerr (result = AudioUnitGetProperty (au, kAudioUnitProperty_MatrixLevels,
kAudioUnitScope_Global, 0, theVols, &theSize), home);
AudioUnitGetProperty
上 kAudioUnitProperty_MatrixLevels
的 return 值是(在文档和示例代码中定义的)Float32。
我正在尝试在 swift 中找到矩阵级别,并且可以毫无问题地获得矩阵维度。但是我不确定如何创建一个 UnsafeMutablePointer<Void>
的空 Float32 元素数组。这是我尝试过但没有成功的方法:
var size = ((dims[0] + 1) * (dims[1] + 1)) * UInt32(sizeof(Float32))
var vols = UnsafeMutablePointer<Float32>.alloc(Int(size))
在 MatrixMixerTest 中,数组的用法如下:theVols[0]
可能需要根据您转换其他部分的方式进行修改, 但是你的 C++ 代码的最后一部分可以用 Swift 写成这样:
theSize = ((dims[0] + 1) * (dims[1] + 1)) * UInt32(sizeof(Float32))
var theVols: [Float32] = Array(count: Int(theSize)/sizeof(Float32), repeatedValue: 0)
result = AudioUnitGetProperty(au, kAudioUnitProperty_MatrixLevels,
kAudioUnitScope_Global, 0, &theVols, &theSize)
guard result == noErr else {
//...
fatalError()
}
当基于 API 的 C 函数声明 UnsafeMutablePointer<Void>
时,您只需要一个任意类型的 Array
变量,并将其作为 inout 参数传递。