← Joseon

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.

What it shows

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.

Spectrum

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.

Spectrogram

Scrolling spectrogram

The last minutes of the music as a picture. Linked cursor: click a moment and every panel shows that moment.

Loudness

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.

Stereo field

Vectorscope and placement

Vectorscope, phase correlation, balance and correlation per band, and where each frequency sits between left and right.

Headphones

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.

Session

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.

Where it sits

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.

macOS

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.

Windows

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).

Privacy and security

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

ClaimWhere it is in the sourceHow 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.

Install, update, build

Free, open source, one file.

macOS

Install

  1. Open the dmg and drag Joseon to Applications. Start it.
  2. macOS says it cannot verify the app. Open System Settings → Privacy & Security, scroll down, and click "Open Anyway". This happens once.
  3. macOS asks for "System Audio Recording". Allow it: that is the tap.
  4. Play music anywhere. The panels move.

Build it from source

git clone https://github.com/jasas1/Joseon.git && cd Joseon
scripts/bundle.sh --install
macOS 14.4 or later on Apple silicon · Xcode command line tools to build
Windows

Install

  1. Unzip the folder anywhere. Nothing is installed.
  2. Play music or a game, then start Joseon.exe.
  3. 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
Windows 10 or 11, 64-bit · a graphics driver with Direct3D 12 · Rust from rustup.rs to build