/
AudioBuffer.swift
31 lines (27 loc) · 1.04 KB
/
AudioBuffer.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift open source project
//
// Copyright (c) 2024 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
/// A non-copyable buffer of audio samples.
struct AudioBuffer: ~Copyable {
let storage: UnsafeMutableBufferPointer<Float>
/// Allocates an audio buffer and fills it with samples from a given signal.
/// - Parameter capacity: the number of samples
init(capacity: Int, source: inout some Signal) {
self.storage = .allocate(capacity: capacity)
for i in self.storage.indices {
let sample = source.next()
self.storage[i] = sample
}
}
deinit {
self.storage.deallocate()
}
}