Skip to content
OpusPlayer

Local-first · Classical · Desktop

Every movement in its place.Every bit as recorded.

OpusPlayer is a music player for people who own their classical recordings. It understands works, movements and performers instead of tracks and artists. It plays lossless files bit-perfect, keeps every movement gapless, and never modifies a file.

Windows · macOS in development · FLAC, ALAC, WAV, AIFF, AAC, MP3, Ogg Vorbis

‹ LibraryEsc
NOW PLAYING · EXCLUSIVE · BIT-PERFECT
LUDWIG VAN BEETHOVEN
Symphony No. 5 in C minor
Op. 67“Fate”c小调第五交响曲「命运」
  1. I.Allegro con brio7:21
  2. II.Andante con moto9:52
  3. III.Allegro2:41 / 5:14
    ATTACCA — NEXT MOVEMENT IS ALREADY DECODED
  4. IV.Allegro11:02
WORK 19:54 / 33:29 · MOVEMENT III OF IV
2:41
−2:33

Now Playing as designed. Bit-perfect exclusive playback is implemented; the movement structure arrives with matching (M4).

01 — The libraryIn development

Composers, works and performances. Not artists and albums.

Mainstream players were built for songs. A symphony becomes four unrelated tracks, and a conductor, an orchestra and a soloist collapse into one artist field. OpusPlayer catalogues music the way musicians do: a work has movements, a performance has people in named roles, and a release is simply the edition you own.

  • Work
    Symphony No. 5 in C minor, Op. 67

    With its movements, key, catalogue number and every alias, in any language.

  • Performance
    Kleiber · Wiener Philharmoniker · 1974

    Conductor, orchestra, soloists and choir, each in their own role.

  • Release
    Symphonien Nrn. 5 & 7 · DG

    The disc or box set you bought, kept exactly as you tagged it.

  • Person
    Beethoven · 贝多芬 · Бетховен

    One person, every spelling and every script.

Composers / Ludwig van Beethoven / Symphonies
BEETHOVEN · SYMPHONY · 1804–1808
Symphony No. 5 in C minor, Op. 67“Fate”
c小调第五交响曲「命运」 · 4 movements · ≈ 33 min
Play · Kleiber 1974Compare versions
Movements
I.Allegro con brio7:21
II.Andante con moto9:52
III.Allegro5:14
ATTACCA — PLAYED GAPLESS, SILENCE UNTOUCHED
IV.Allegro11:02
Timings from your default recording — Kleiber, 1974.
Also known as
Schicksals-Sinfonie · 運命 · 命运交响曲
Fifth Symphony · Symphonie Nº 5
Your recordings5Sort: Year ⌄
Carlos KleiberWiener PhilharmonikerDEFAULT1974 · Deutsche Grammophon · FLAC 96/24 · 33:29
Herbert von KarajanBerliner Philharmoniker1963 · Deutsche Grammophon · FLAC 44.1/16 · 31:22
Nikolaus HarnoncourtChamber Orchestra of Europe1991 · Teldec · FLAC 44.1/16 · 30:47
John Eliot GardinerOrch. Révolutionnaire et Romantiqueperiod instruments1994 · Archiv Produktion · FLAC 44.1/16 · 29:58
Wilhelm FurtwänglerBerliner Philharmonikerlive, Berlin1943 · DG · live · FLAC 44.1/16 · mono · 35:10
3 selected · Compare⏎

Movements are structure, not tracks: playing any movement queues the whole work from that point. The recording you mark as default is what “Play” means everywhere.

02 — VersionsIn development

Every recording you own, side by side.

Five recordings of the Fifth are five interpretations, not five duplicates. OpusPlayer gathers them under one work, lets you choose which one “Play” means, and sets movement timings next to each other — because timings are interpretation data.

  1. 01The fastest movement in each row is set in bold. No judgment colours.
  2. 02Audition any movement in any recording; the queue keeps your place.
  3. 03Set a new default right where the evidence is.
Compare — Symphony No. 5 in C minor, Op. 673 of 5 versions
Carlos KleiberDEFAULT ★
1974 · studio
John Eliot Gardiner
1994 · period instruments
Wilhelm Furtwängler
1943 · live, Berlin
SourceFLAC 96/24FLAC 44.1/16FLAC 44.1/16 · monoLabel · editionDeutsche GrammophonArchiv ProduktionDG · HistoricTotal33:2929:5835:10
I. Allegro con brio7:216:548:41
II. Andante con moto9:528:4711:20
III. Allegro5:144:315:49
IV. Allegro11:029:469:20
Click any movement cell to audition it in that recording — the queue keeps your place.Set Gardiner as default ★
04 — PlaybackImplemented

The engine tells you exactly what it did.

Bit-perfect means nothing touched the samples between your file and your DAC. OpusPlayer’s Rust engine takes the device in exclusive mode, follows each file’s native sample rate, and passes integer samples straight through. The signal path is a receipt, not a badge: green is earned stage by stage, and every touch — ReplayGain, the system mixer — is named, with its reason.

Signal pathBIT-PERFECT
  1. SourceFLAC · 96,000 Hz · 24-bit · stereo
  2. Decodebit-exact integer passthrough · no dither · no resampling
  3. Volumebypassed — fixed volume mode, 0 dB
  4. Output — WASAPI exclusive96 kHz native · event-driven
  5. Device — USB DACheld by OpusPlayer · other apps silent
Untouched from file to DAC.96/24 · BIT-PERFECTEXCL
Gapless, proven
Two files at the same rate are rendered through the full pipeline and compared sample by sample in CI. The seam is zero.
Silence is part of the music
No crossfade, ever, and no trimming between movements. An attacca plays exactly as it was recorded.
Rate follows the file
Exclusive output switches your DAC to each file’s native sample rate. Nothing is resampled to a fixed rate.
Recovers on its own
Unplug the DAC and playback pauses at the exact position; plug it back in and it resumes. Sleep and wake need no restart.

Exclusive output uses WASAPI on Windows today. CoreAudio exclusive output (hog mode) for macOS is in development.

05 — TrustIn development

Your files are never modified.

Collectors spend years on their tags. OpusPlayer reads them and leaves them exactly as they are; every match it makes is stored in its own database. Uncertain matches wait for you with the evidence in plain language, and anything you pin is permanent — not overridden by rescans, updates or better guesses.

Review queue12 clusters need your eye · 1,893 matched automatically
Low-confidence matches wait here. Nothing below is applied until you confirm it — and your files are never modified either way.
Pinned yesterday: Bruckner Symphony No. 8 → Celibidache · Münchner Philharmoniker (1993 live). Pinned matches are never auto-changed — not by rescans, not by better guesses, not ever.
YOUR FILES · 5 TRACKS · 79:44
…/Mahler/Sym 2 (Klemperer)/
01 Allegro maestoso.flac
02 Andante moderato.flac
03 Scherzo.flac · title differs
04 Urlicht.flac · 05 Im Tempo….flac
PROPOSED MATCH92% HIGH
Symphony No. 2 in C minor “Resurrection” — Mahler
Klemperer · Philharmonia Orchestra & Chorus · 1962 · EMI
Why: movement count and durations align within ±2 s; disc layout matches the 1962 EMI edition. Your tag for movement 3 says “Scherzo”; the canonical title is “In ruhig fließender Bewegung”. Your tag stays untouched.
Accept & pinChoose different…Keep as files
YOUR FILES · 7 TRACKS · 68:12
…/貝多芬鋼琴奏鳴曲全集/CD3/
3-01 悲愴 第一樂章.flac
3-02 悲愴 第二樂章.flac
+ 5 more
TWO CANDIDATES54% · NEEDS YOU
Kempff — Beethoven sonatas, 1965 stereoDG · durations match 6 of 7
Kempff — Beethoven sonatas, 1951 monoDG · durations match 5 of 7
Why we can’t decide: both Kempff cycles fit these track lengths. The 1965 fits slightly better, but your folder name doesn’t say which edition. One click from you settles it for good.
Matching writes only to OpusPlayer’s database. Files, tags and folders are never modified. Pins survive rescans, updates and re-matching — permanently.
  • Read-only by design

    Files, tags and folders are never edited, moved or renamed.

  • Pins are permanent

    A match you confirm survives rescans, updates and re-matching.

  • Evidence for every decision

    Each automatic match shows its source and a one-sentence reason.

  • Grounded in open data

    Works, composers and their aliases come from MusicBrainz. Files already tagged with MusicBrainz IDs match by direct lookup.

  • Language models propose, you decide

    Optional cloud-assisted matching runs one album at a time when you ask, chooses only among real catalogue candidates, and asks before any tag text leaves your computer.

  • Offline by default

    Playback, browsing and rule-based matching work without a network.

06 — Specifications

Facts you can verify.

Formats
FLAC · ALAC · WAV · AIFF · AAC-LC · MP3 · Ogg Vorbis
Output
WASAPI exclusive (event-driven) and shared · CoreAudio in development
Signal
Integer passthrough at 100% volume · native sample rate per file · TPDF dither whenever the signal is touched
Gapless
Dual-slot pre-decode · seam verified sample by sample in CI
Seek
Sample-accurate on FLAC
Processing
Volume and optional ReplayGain only · no crossfade, no loudness normalization
Library
Built for 100,000+ tracks · incremental rescans · folder watching · an offline NAS never empties the library
Matching
MusicBrainz works, composers and aliases · reviewable, explained decisions
Search
Any language · diacritics folded · BWV, K., D., Hob., Op.
Platforms
Windows · macOS in development · mobile remote planned
07 — Roadmap

Engine first. Then the library learns the music.

OpusPlayer is built in the order that removes risk earliest: the audio engine was proven before any library feature was drawn. Every milestone closes on objective acceptance tests.

  1. M0SkeletonDone

    Electron shell, Rust core and native bridge; Windows and macOS builds from CI.

  2. M1The engine playsDone

    Decoding, a state machine with explicit errors, click-free pause and seek.

  3. M2Your library, as filesDone

    Scanning for 100,000-track libraries, folder and album browsing, AAC, MP3 and Vorbis.

  4. M3The engine, hardenedDone

    WASAPI exclusive and bit-perfect output, gapless proven in CI, recovery from unplugging and sleep.

  5. M4MatchingIn progress

    Works, composers and performances from MusicBrainz, with a review queue for uncertain matches.

  6. M5SearchNext

    Any language, any spelling, any catalogue number.

  7. →ThenLater

    macOS exclusive output · tag write-back in Picard conventions · a mobile remote for iOS and Android, with CarPlay and Android Auto.

08 — Questions

Questions collectors ask.

Will OpusPlayer change my tags or move my files?

No. Files, tags and folders are read-only, and matches live in OpusPlayer’s own database. Writing matches back to your tags, in MusicBrainz Picard’s conventions, is planned as an action you take explicitly.

Do I need lossless files?

No. AAC, MP3 and Ogg Vorbis are delivered at full fidelity: the decoder’s output reaches the device untouched, and the signal path shows it in green. Lossless files are, in addition, bit-perfect.

Does it need an internet connection?

No. Playback, browsing and rule-based matching work offline. Only the optional cloud-assisted matching needs a network, and it runs only when you ask.

Which systems does it run on?

Windows first, with WASAPI exclusive output. macOS support, including exclusive CoreAudio output, is in development. A mobile remote for iOS and Android is planned after the desktop app.

Will it handle my box sets?

It is designed for libraries of 100,000 tracks and 100-disc box sets. Once matching ships, works split across discs are grouped back into one work.

Does it stream from online services?

No. OpusPlayer is built for the music you own; its intelligence goes into understanding your collection.

Early access

Point OpusPlayer at your music.

Your collection stays exactly where it is, exactly as it is.

  • Files and tags are read-only — never edited, never moved
  • Bit-perfect, gapless playback from the first minute
  • Works and composers appear later, only with your review
Download for Windows· not yet availableDownload for macOS· not yet available

OpusPlayer is in active development. Public builds are not available yet.