Swift package · MIT · macOS 14.2

Your mic and the call, in sync.

SystemAudioKit records the microphone and what your Mac plays as separate WAV files on one timeline. Built for call and meeting recorders, with no virtual audio driver to install.

Package.swift

dependencies: [    .package(        url: "https://github.com/pieralukasz/SystemAudioKit.git",        from: "0.1.0"    ),]

Swift 6. Add NSMicrophoneUsageDescription and NSAudioCaptureUsageDescription to your app’s Info.plist.

Record a call

import SystemAudioKitlet recorder = AudioRecorder()try await recorder.start(    .init(microphone: .systemDefault, systemAudio: .everything),    in: folder)// … the call happens …let recording = await recorder.stop()!print(recording.microphoneURL!, recording.systemAudioURL!)try recording.mix(to: folder.appendingPathComponent("call.m4a"))

What you get

System audio capture without the driver

Process taps, not screen capture

Core Audio process taps (macOS 14.2+) record what the Mac plays under the lighter “System Audio Recording Only” permission.

One app or everything

Record the whole system minus your own app, only chosen apps with their helper processes, or everything except a list.

Microphone on the same clock

The mic goes to its own file. Both tracks are timed against the host clock, so sample N means the same moment in each.

Gaps filled with silence

Taps go quiet when nothing plays. The writer pads those gaps, so the tracks stay aligned for the whole recording.

Meeting detection

Notices when Zoom, Teams, Slack, FaceTime, Meet in a browser and others start and stop using the microphone. No permission needed.

ScreenCaptureKit fallback

When a tap is not an option, record display audio through ScreenCaptureKit with the same aligned output.

Two tracks, one timeline

Start a recorder, stop it, get microphone.wav and system.wav of the same length. The guides cover permissions, app selection and meeting detection.

SystemAudioKit is MIT licensed. Made by Lucas Piera.

Uses Core Audio process taps and ScreenCaptureKit. No kernel extension, no virtual device.