Joseon in detail
The long version of the project page: every panel, how the tap works, the full privacy and security statement with the commands to check it, and how to install, update and build.
Every panel, from the sound your computer plays right now.
Start Joseon, play music in any app, and read the music the way a mastering engineer does. Qobuz, Spotify, a browser, a game: whatever your computer plays is what Joseon shows.
High-resolution log spectrum
Multi-resolution FFT, peak hold, long-term average, left and right, and a peak readout with the note name and the cents off pitch.
Scrolling spectrogram
The last minutes of the music as a picture. Linked cursor: click a moment and every panel shows that moment.
LUFS, true peak, dynamics
Momentary, short-term and integrated loudness, loudness range, true peak, PLR and PSR, clip count, and band energy from sub to air.
Vectorscope and placement
Vectorscope, phase correlation, balance and correlation per band, and where each frequency sits between left and right.
What your headphones must deliver
Measured responses from AutoEq, the predicted spectrum at your ear, and stress flags where this music asks a lot of this headphone. Import your own curve.
Timeline, compare, mini spectrum
A timeline of the session, snapshots to compare tracks side by side, now playing, and a live mini spectrum in the menu bar or the tray. Level at the ear and a headphone measurement with a microphone: macOS now, Windows next.
A read-only copy at the mixer. Your audio path stays as it was.
Joseon does not sit between your player and your DAC. It asks the operating system for a copy of the mix it is about to play. The copy goes to Joseon. The original goes where it always went, with the same bits, the same latency, and no extra driver or virtual device.
Core Audio process tap
The tap API of macOS 14.4 and later. Joseon creates it with muteBehavior = .unmuted: the Mac
keeps playing exactly as before, and Joseon receives the same samples. No kernel extension, no audio
driver, no "Joseon" output device in your sound settings.
WASAPI loopback
The loopback mode of the Windows audio stack, in shared mode: a copy of the mix of the default output
device. Nothing is installed; one Joseon.exe in a folder. Players in exclusive mode (ASIO,
WASAPI exclusive) bypass the mixer, so there is nothing to copy; set them to shared mode.
Joseon makes sound only when you ask it to: a calibration tone or a measurement sweep, after you click "start" in those windows (macOS).
What Joseon does with your data: nothing.
Transparency statement
Joseon collects no information about you, your computer, or your music. It does not alter your audio stream. It exists so you can see what you hear and understand your signal chain.
- No accounts, no sign-in, no license keys. Download it and start it.
- No analytics, no telemetry, no crash reports, no advertising. There is no third-party SDK in the app.
The macOS app has zero external dependencies: Apple frameworks only. The Windows app lists every crate it
uses in its public
Cargo.lock. - No recording. Audio lives in a ring buffer in memory for analysis and is overwritten within seconds. Nothing is written to disk and nothing leaves the computer.
- One kind of network request, and you can switch it off. Joseon asks GitHub for the list of
releases, so it can offer an update: once after the start and once a day, and when you choose "Check for
Updates…". Nothing is sent but that request. The setting "Check for updates automatically" turns the
automatic check off. An update is accepted only when its SHA-256 matches the release, and on macOS only
when its code signature is valid, names the bundle
app.joseon.Joseon, and comes from the same signing team as the app that runs. - Microphone only when you start a measurement. On macOS, the headphone measurement window uses a measurement microphone after you click start, and the system asks you first. The recording stays in memory. Nothing else in Joseon opens an input.
- What it writes to disk: its settings, and the headphone curves you import or measure
(macOS:
~/Library/Application Support/Joseon/Curves). On Windows also a small log file for problem reports,%APPDATA%\Joseon\joseon.log.
Checked against the public source on 2026-10-13: Joseon (macOS) at commit 9c83a44, JoseonPC (Windows) at v0.0.9, commit 86f605a. This is a self-review by the project, not an independent audit. Independent review is welcome: the source is public and the checks below take minutes.
Check it yourself
| Claim | Where it is in the source | How to confirm it on your machine |
|---|---|---|
| Read-only tap, audio path untouched | macOS: Sources/JoseonCapture/SystemAudioTap.swift, the tap is made with
muteBehavior = .unmuted. Windows: crates/joseon-capture/src/wasapi.rs, loopback in shared mode. |
Open your sound settings while Joseon runs: no new output device, no new input device. Audio MIDI Setup on macOS shows nothing of Joseon. |
| Only one network address | macOS: Sources/JoseonApp/Updater.swift, the only use of URLSession in the app.
Windows: crates/joseon-app/src/update.rs; the app has no HTTP library of its own and calls the
curl that Windows ships. |
Watch the connections with Little Snitch or LuLu (macOS) or Resource Monitor (Windows): one connection to
api.github.com a few seconds after the start, then none. Turn the setting off and there is none at all. |
| No third-party code | macOS: Package.swift has no .package( dependency. Windows: Cargo.lock
is the complete list. |
grep -c "\.package(" Package.swift prints 0. cargo tree -p joseon-app lists every crate. |
| Nothing recorded, nothing uploaded | No code path writes audio to a file. The only file writes are the settings and the small CSV of a curve you import or measure. | Run Joseon for an hour and look at ~/Library or %APPDATA%\Joseon: settings and, on
Windows, a log of a few lines. |
| Least permissions | macOS entitlements: scripts/Joseon.entitlements holds one key,
com.apple.security.device.audio-input. macOS asks you for "System Audio Recording" the first time; that
is the name macOS gives the tap, and it is what the tap needs. |
codesign -d --entitlements - /Applications/Joseon.app shows that one key. System Settings →
Privacy & Security lists Joseon under Screen & System Audio Recording, and under Microphone only after a
measurement. |
| The build is the source | Windows builds run on GitHub's own runners from a tag, in the open:
.github/workflows/release.yml. Every release lists the SHA-256 of its files. |
Compare Get-FileHash Joseon-v…-windows-x64.zip (Windows) or shasum -a 256 (macOS)
with the digest on the release page. |
Signing status
macOS: the current build carries no Developer ID signature, so macOS warns at the first start and asks you to allow it in System Settings → Privacy & Security ("Open Anyway"). This build does not update itself; new versions come from the project page. The SHA-256 of each file is on the release page.
Windows: the test builds are not code-signed. SmartScreen shows "Windows protected your PC" at the first start: click "More info", then "Run anyway". Check the SHA-256 against the release page if you want to be sure the file is the one GitHub built.
Found a problem? Use GitHub's private vulnerability reporting on the repository (Security → Report a vulnerability). The project's SECURITY.md has the same statement in short.
Free, open source, one file.
Install
- Open the dmg and drag
Joseonto Applications. Start it. - macOS says it cannot verify the app. Open System Settings → Privacy & Security, scroll down, and click "Open Anyway". This happens once.
- macOS asks for "System Audio Recording". Allow it: that is the tap.
- Play music anywhere. The panels move.
Build it from source
git clone https://github.com/jasas1/Joseon.git && cd Joseon
scripts/bundle.sh --install
Install
- Unzip the folder anywhere. Nothing is installed.
- Play music or a game, then start
Joseon.exe. - At the first start, click "More info", then "Run anyway".
Update
"Check for Updates…" in the settings menu fetches a newer version from GitHub, puts it in place and
restarts. Joseon also looks once after the start and once a day; "Check for Updates Automatically" turns
that off. README.txt in the folder has the keys and what to do when the panels do not move.
Build it from source
git clone https://github.com/jasas1/JoseonPC.git && cd JoseonPC
cargo build --release -p joseon-app