Repository navigation
PsyMP3 2.0-RC3
The Full Precision Release
The third release candidate, and the one where the audio path stops throwing away bits. A 32-bit sample pipeline end to end, two new formats, AAC rebuilt on a better decoder, and seeking that lands where you asked.
The pipeline is 32-bit now
- 24-bit files were being truncated to 16-bit. ALAC's decoder carried the comment "The audio pipeline is int16; downconvert wider depths", and FLAC's reconstructor had a
convertTo16Bit()— both discarded exactly the resolution a lossless format exists to preserve. Samples are now carried as full-scale 32-bit from decoder to output device. - Every codec, the equalizer, the FFT tap, the volume stage and the SDL device were widened together. Vorbis gains accuracy too: it decodes from float and now converts straight to 32-bit instead of rounding through 16.
Dolby TrueHD and MLP
.thd,.truehdand.mlpplay, through a decoder bundled in the binary — no external dependency. Access unit parsing, restart headers, the three Huffman residual tables, the cascaded FIR/IIR recorrelator, lossless matrixing and channel remapping.- Verified bit-exact against ffmpeg: 308,454 access units, 24,676,310 samples, zero differences.
- Derived from truehdd © 2025 Rainbaby, used under Apache-2.0 and credited in the About box. It is the one part of the tree that is not ISC, and it says so.
AAC, rebuilt
- The whole AAC family now runs on FDK-AAC: AAC-LC, HE-AACv1, HE-AACv2 and xHE-AAC (MPEG-D USAC), through one decoder. faad2 is gone.
- faad2 stopped at object type 27 and could not decode USAC at all, so a second decoder had to be carried beside it. FDK also decodes SBR and — especially — Parametric Stereo far more accurately, and is continuously fuzzed as part of Android.
- Windows gets AAC for the first time. The cross-build sysroots never had faad2.
- Media Information names the profile actually decoded — AAC-LC, HE-AACv1, HE-AACv2, xHE-AAC — read from the decoder rather than the file header, because SBR and Parametric Stereo are usually signalled implicitly.
Gapless and seeking
- AAC tracks start on their first real sample. Encoder priming and trailing padding are read from the MP4 edit list or the iTunSMPB atom and trimmed away — roughly 46 ms of warm-up at the head of every track, and the reason gapless AAC albums clicked at each boundary. Verified sample-exact against ffmpeg on tone and chirp signals.
- Ogg seeks land where you asked. They were resuming up to a full page — about a second — early. Ogg now tracks FLAC and AAC to within measurement noise.
Also in this release
- Discord Rich Presence stopped being able to kill the player: a vanished Discord no longer raises SIGPIPE, IPC reads are bounded, updates respect the rate limit, and the saved on/off setting is honoured at startup. Cover art is more careful about what counts as a match.
- Media Information reports a bitrate for ALAC, Vorbis and Opus; codec names are spelled rather than shouted (Vorbis, Opus, Speex, xHE-AAC, Dolby TrueHD); the Position label no longer clips the total time.
- HTTP transfers set
CURLOPT_NOSIGNAL, fixing crashes under concurrent transfers. - The About box credits SDL3, TagLib (under the MPL), and Xiph's libogg and libopus alongside the vendored decoders.
Downloads: Windows binaries for x86_64, i686 (32-bit) and ARM64, built with llvm-mingw — fully static, no runtime dependencies. Debug-symbol variants included.