English | 简体中文
Rotap is an open-source system audio recorder for macOS. Record what your Mac is playing — every app or just one — optionally mixed with your microphone. A native macOS app: no virtual audio driver, no changes to your speaker or headphone setup.
A recorded demo from max1874.com/rotap, where you can try it yourself.
- Three capture modes: system audio only, microphone only, or system audio + microphone mixed into one file.
- Pick a source: all system audio, or a single app that is currently playing.
- Formats: M4A (AAC) or WAV (24-bit).
- Waveform: drawn live while recording; after recording, click or drag on it to seek.
- Stays out of the way: listens through a Core Audio process tap, so your output device keeps working and what you hear is unchanged.
Get the latest Rotap-<version>.dmg from Releases and drag Rotap into Applications. The disk image is signed with a Developer ID and notarized by Apple.
Requires macOS 26 or later. The interface is in English and Simplified Chinese; it follows your system language, or pick one in Settings › Language.
| Permission | Asked when | Used for |
|---|---|---|
| System audio recording | The first time you record system audio | Reading the sound other apps play |
| Microphone | The first time you record the microphone | Recording your voice |
Recordings are saved only on your Mac (~/Music/Rotap by default, changeable in Settings). Rotap makes no network connections and uploads nothing.
How do I record internal audio on a Mac? QuickTime Player's New Audio Recording only captures a microphone. Rotap reads what the system is playing through Apple's Core Audio process tap API: open Rotap, choose System Audio, press record, and allow the system audio recording permission the first time macOS asks.
How is it different from BlackHole or Soundflower? BlackHole and Soundflower are virtual audio devices: you switch your output to them, and to keep hearing the sound you build a Multi-Output Device in Audio MIDI Setup. Rotap installs no driver and leaves your output device alone; it listens to the system's output directly.
Can it record both sides of a call? Yes. Choose System Audio + Microphone and the other side's audio, as it reaches your speakers or headphones, is mixed with your microphone into one file. It works with any app that makes sound (Zoom, Teams, Google Meet in a browser, …), with no bot joining the call.
Can it record just one app? Yes. Pick a single app that is currently playing as the source, and sounds from other apps stay out of the recording.
More on the Rotap page.
Requires Xcode 26 or later.
make app # maintainer build: Developer ID signed, output at build/Rotap.appWithout the maintainer's certificate, build with an ad-hoc signature:
xcodebuild -project Rotap.xcodeproj -scheme Rotap -configuration Release \
-destination 'generic/platform=macOS' CODE_SIGN_IDENTITY=- DEVELOPMENT_TEAM= buildmacOS treats every rebuild of an ad-hoc signed app as a new app and asks for the permissions again.
make release / make install are the maintainer's release flow (signing, notarization, publishing a release) and depend on tooling outside this repository.
Audio/AudioRecorder.swift: the process tap and the microphone share one private aggregate device and therefore one clock. The real-time IO thread only mixes; a lock-free ring buffer hands the audio to a writer thread that encodes and writes it.Audio/Waveform.swift: the waveform is built while recording and stored in the file's extended attributes, so opening an old recording needs no re-analysis.Views/WaveformLayers.swift: waveforms are drawn with Core Animation layers, keeping the UI's CPU use low while recording.
MIT © 2026 MAX LIN


