2016-12-18 2 views
0

Я пытаюсь преобразовать образец кода AurioTouch FFTHelper в Swift 3 для создания спектрограммы в приложении iOS с помощью Swift 3. У меня проблемы с UnsafePointer, поскольку я не могу инициализировать переменную этого типа. Получение ошибки, аналогичной: «init» недоступна: используйте «withMemoryRebound ....».Проблемы с UnsafePointer <DSPComplex> при преобразовании aurioTouch в Swift 3

Я попытался с помощью withMemoryRebound .. но это еще не удается .. Это справедливо в Swift 2.2, но не в Swift 3 вар inAudioData: UnsafePointer = UnsafePointer (! Buffer.floatChannelData .pointee);

буфер AVAudioPCMBuffer со звуковыми данными.

Пожалуйста, помогите в преобразовании выше линий в в Свифт 3.

+1

код [оригинальный aurioTouch пример кода] (https://developer.apple.com/library/content/samplecode/aurioTouch/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007770) записывается в Objective-C++/C++. Вам лучше показать исходный код с большим контекстом. И я не уверен, что ваша цель - сделать это самостоятельно или просто использовать результат, но доступна версия Swift 3 последней версии aurioTouch (2016-08-12) [https://github.com/ooper -shlab/aurioTouch2.0-Свифт). – OOPer

ответ

1

Даже если vDSP_fft_zip() рутина в прошивкой Ускорить рамки запрашивает параметры типа UnsafePointer < DSPSplitComplex> Swift 3 позволяет использовать регулярный Swift массивов поплавков внутри типа DSPSplitComplex.

var dataReal  = [Float](repeating: 0.0, count: dataLen) 
var dataImaginary = [Float](repeating: 0.0, count: dataLen) 
// ... fill the real Float array with your data or audio samples .... 
var myComplexData : DSPSplitComplex? 
myComplexData = DSPSplitComplex(realp: &dataReal, imagp: &dataImaginary) 
vDSP_fft_zip(fftSetup!, &myComplexData!, 1, logLen, Int32(FFT_FORWARD)) 
Смежные вопросы