// // NaiveFFT.swift // PrySDR // // Created by Jacky Jack on 05/01/2025. // import Foundation import Accelerate //SUpports now only fixed sizes and not flexible implementation just a PoC class NaiveFFT512 { static let sampleCount = 512 let forwardDCT = vDSP.DCT(count: sampleCount, transformType: .II)! init() { } func getSampleCount() -> Int { return NaiveFFT512.sampleCount } func computeLine(_ processingArray: [Int8]) -> [Float] { var dataFloat = [Float](repeating: 0.0, count: NaiveFFT512.sampleCount) if processingArray.count != NaiveFFT512.sampleCount { print("Not supporting arrays not equail to \(NaiveFFT512.sampleCount)") return [] } vDSP.convertElements(of: processingArray, to: &dataFloat) //dataFloat = vDSP.add(127.0, dataFloat) //print(dataFloat) //move from -127.0 to 128.0 range -1.0...1.0 //var adjusted = vDSP.divide(dataFloat, Float(sampleCount)) var adjusted = dataFloat //print(adjusted) var transform_result = forwardDCT.transform(adjusted) transform_result = vDSP.absolute(transform_result) return transform_result } }