25 lines
893 B
Swift
25 lines
893 B
Swift
import AVFoundation
|
|
import SstCore
|
|
|
|
/// Records `seconds` of microphone audio; returns nil if access is denied or recording fails.
|
|
func recordSamples(seconds: Double) async -> [Float]? {
|
|
guard await AVCaptureDevice.requestAccess(for: .audio) else {
|
|
print("Microfoon-toegang geweigerd (Systeeminstellingen → Privacy → Microfoon).")
|
|
return nil
|
|
}
|
|
let recorder = AudioRecorder()
|
|
do { try recorder.start() } catch {
|
|
print("start mislukt:", error.localizedDescription)
|
|
return nil
|
|
}
|
|
print("Neem \(Int(seconds)) s op — praat nu")
|
|
try? await Task.sleep(for: .seconds(seconds))
|
|
return recorder.stop()
|
|
}
|
|
|
|
func runRecordProbe() async {
|
|
guard let samples = await recordSamples(seconds: 3) else { return }
|
|
let peak = samples.map { abs($0) }.max() ?? 0
|
|
print("samples: \(samples.count) (verwacht ≈ 48000), piek: \(peak)")
|
|
}
|