macOS application that records system audio and microphone input simultaneously, mixed into a single M4A file.
- System Audio Capture: Records all system audio using ScreenCaptureKit
- Microphone Input: Captures microphone audio with device selection (supports various formats)
- Real-time Mixing: Combines both sources with adjustable volume balance
- Live Controls: Adjust volume and toggle sources during recording
- Level Meters: Visual feedback for system, mic, and mixed audio levels
- M4A Output: High-quality AAC encoding at 256kbps, 48kHz stereo
- macOS 13.0 (Ventura) or later
- Screen Recording permission (for system audio)
- Microphone permission
- Xcode 15.0+
- XcodeGen (optional, for project generation)
# Install xcodegen if not already installed
brew install xcodegen
# Generate .xcodeproj
cd MeetsAudioRec
xcodegen generate- Open
MeetsAudioRec.xcodeprojin Xcode - Select your development team in Signing & Capabilities
- Build and run (⌘R)
# Development build
./scripts/build.sh
# Release build
./scripts/build.sh Release
# Create notarized DMG (requires Apple Developer account)
./scripts/package_dmg.shStore your Apple credentials in Keychain:
xcrun notarytool store-credentials "notarytool-profile" \
--apple-id YOUR_APPLE_ID@example.com \
--team-id YOUR_TEAM_ID- Launch the app
- Grant required permissions when prompted
- Select your microphone device from the dropdown
- Adjust volume sliders and enable/disable sources as needed
- Click "Record" to begin
- Adjust volumes or toggle sources in real-time during recording
- Click "Stop" to finish
- Recording is saved to
~/Documents/MeetsAudioRec/
Required to capture system audio. Grant in: System Settings → Privacy & Security → Screen Recording
Required to capture microphone input. The app will prompt for permission on first use.
┌─────────────────────────────────────────────────────────────┐
│ AudioCaptureManager │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ SystemAudio │ │ Microphone │ │
│ │ Capture │ │ Capture │ │
│ │ (ScreenCapture │ │ (AVCapture │ │
│ │ Kit) │ │ Session) │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ └──────────┬───────────┘ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ AudioMixer │ │
│ │ - Ring buffers │ │
│ │ - Mix & volume │ │
│ │ - Level calc │ │
│ └────────┬────────┘ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ AVAudioFile │ │
│ │ (M4A/AAC) │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
- System audio: Float32, 48kHz, stereo (from ScreenCaptureKit)
- Microphone: Various formats supported (auto-converted to Float32 48kHz stereo)
- Handles interleaved and non-interleaved formats
- Supports Float32, Int16, Int32 input formats
- Output: AAC 256kbps, 48kHz stereo
AudioCaptureManager: Single source of truth for recording state and audio levelsRecordingState: UI preferences (volumes, device selection, output directory)
MIT License