     
     @nonobjc public var floatArray: [Float] {
         get {
-            var values = [Float](repeating: 0, count: Int(timeSampleCount))
-            __getFloatArray(&values[0], maxCount: timeSampleCount)
-            return values
+            return [Float](unsafeUninitializedCount: timeSampleCount) { ptr in
+                __getFloatArray(ptr, maxCount: timeSampleCount)
+            }
         }
     }
 
     @nonobjc public var doubleArray: [Double] {
         get {
-            var values = [Double](repeating: 0, count: Int(timeSampleCount))
-            __getDoubleArray(&values[0], maxCount: timeSampleCount)
-            return values
+            return [Double](unsafeUninitializedCount: timeSampleCount) { ptr in
+                __getDoubleArray(ptr, maxCount: timeSampleCount)
+            }
         }
     }
 }

    
    @nonobjc public var float2Array: [SIMD2<Float>] {
        get {
            var values = [SIMD2<Float>](repeating: SIMD2<Float>(), count: Int(timeSampleCount))
            __getFloat2Array(&values[0], maxCount: timeSampleCount)
            return values
        }
    }

    @nonobjc public var double2Array: [SIMD2<Double>] {
        get {
            var values = [SIMD2<Double>](repeating: SIMD2<Double>(), count: Int(timeSampleCount))
            __getDouble2Array(&values[0], maxCount: timeSampleCount)
            return values
        }
    }
}

    @nonobjc public var float3Array: [SIMD3<Float>] {
        get {
            let count = elementCount * timeSampleCount
            return [SIMD3<Float>](unsafeUninitializedCount: count) { ptr in
                __getFloat3Array(ptr, maxCount: count)
            }
        }
    }
    
    @nonobjc public var double3Array: [SIMD3<Double>] {
        get {
            let count = elementCount * timeSampleCount
            return [SIMD3<Double>](unsafeUninitializedCount: count) { ptr in
                __getDouble3Array(ptr, maxCount: count)
            }
        }
    }
}
