mp3guessenc

This page is about mp3guessenc, a small utility for analysis of audio mpeg files and detection of the encoder used (when layer III).
Further, mp3guessenc can detect many details about the mpeg audio stream and print out lots of useful information.
Supported streams are mpeg 1, mpeg 2 and unofficial mpeg 2.5 - layer I, layer II and layer III of course.
Xing tag, lame tag, VBRI tag, Id3 tags (both 1.x and 2.x), APE tags (both v1 and v2), Lyrics3 tags (both v1 and v2) and MusicMatch tag (any version) are detected as well.
Now you can look inside your digital audio collection as you never did before!

There is more to come, so stay tuned!



Features
Please note, however, that most of those information are only available into layer III streams.
mp3guessenc cannot get the same fine details from mpeg layer I and layer II streams.

Systems mp3guessenc will run on
mp3guessenc is available for POSIX systems such as Linux (it is actually developed on an Ubuntu a LMDE distribution) where I successfully build it on both x86 (32 bit) and AMD64 (64 bit) architectures using gcc, clang and tcc, the Tiny C Compiler. Now metadata tag fields are parsed in an endian indipendent mode, and mp3guessenc runs on big-endian architectures too (it runs perfectly into a qemu emulated powerpc machine running debian, so I assume any big-endian computer will run it as well - it came to my attention that mp3guessenc-0.27.1 can be built (with minor modifications) on AmigaOS run into UAE emulating a m680x0 processor).
FreshPorts provides mp3guessenc port & package for FreeBSD too.
It will also run in recent (nightly) builds of Haiku, both 32 bit and 64 bit versions are supported. On 32 bit systems both gcc2 and latest gcc may be used for the build (just tune the Makefile).
You will find a ready-to-go Windows(R) command line executable (mp3guessenc.exe) into the tarball, built using mingw. It is a 32 bit executable and it runs under ReactOS as well.
IBM's OS/2 Warp is supported too, even though its HPFS doesn't support files bigger than 2 GB. Anyway, knowing backward compatibility is the common claim, it should also run on any OS/2's current successor, be it eComStation or ArcaOS. Please note, I've built mp3guessenc on OS/2 using only the Open Watcom compiler.
Further, a prerelease version of 0.25beta2 builds into a 16 bit executable and runs pretty well in FreeDOS thanks to DJGPP (read more).
I've built 0.26 preview for Android also, and it runs smoothly on my samsung gt-i9100 (equipped with an arm v7 processor) under the geek-ish "Terminal Emulator" app. This step is pretty straightforward (oh well, you're a dev, aren't you?) using Google's Android NDK. If you want to feel the breeze, I suggest you to download the latest installer, unpack it and read the docs about Standalone Toolchain, you will be able to build mp3guessenc for your preferred device using both gcc and clang.
Last, (atm) mp3guessenc has no dependencies.

Screenshots
Screenshot1 - Screenshot2 - Screenshot3 - Screenshot4 - Screenshot5

Downloads
Here you can download the latest release of mp3guessenc.
(Of course, you can also jump to the project page on sourceforge.net and find all the previous releases)

2021/07/31, "La Voce Del Padrone"
Updated ID3v1 detection routine so now ID3v1.2 and ID3 Enhanced will be detected as well.


2020/08/10, "Lo stretto necessario"
Full code review, updated ID3v1 genre codes.


2018/07/15, "It's happened before, it'll happen again"
Tiny fix to the loop searching for metadata before the mpeg stream.
(thruth be told, this fix was lying in my home directory shortly after 0.27.3 - lazy me it took so long before getting on sourceforge)
(and if you plan to build it by yourself, then read this)

2018/02/11, "I Still Do"
More efficient metadata detection, optional integrity verifications for lame bitstreams, meaningful return codes.

2017/08/25, "Roundabout"
MPEG2 Multichannel detection, support for big-endian architectures.

2017/05/03, "Italian Espresso"
Stronger in bitstream recognition, ancillary data amount out of any layers.

2016/12/15, "Ancient Melodies Enchanting Lightnings Into Art"
Summary: more.
More messy files analyzed, more coherency checks, more crc16, more reliability, MORE SPEED!!!

2016/12/14, "Dark Black"
Fix-only release with the only relevant change of a misplaced reference operator, now gone.

2016/02/26, "Black"
Detection of mp3 streams wrapped into Wave Riff, ID3v2.4 may be found at the file tail also, various fixes (also speed related).

2016/01/17, "Hotel Torino"
More and more tags detected and better Android support.
2016/01/18 UPDATE!
My mistake, the MS Windows executables shipped into this tarball were built using a non-tested build environment, and they need a further dll (msys-2.0.dll) to run properly. I re-built the whole thing and re-packaged them into a new tarball for those who care. No changes in source code, so if you aren't a MS Windows user, there's no need to download this again.

2015/02/19, "Let It Snow"
More tags detected, Blade encoder detected and (clap, please) command line options!

2014/07/16, "25 Days A Stranger"
Still a few more ancillary bits came to the analysis call. Furthermore, prepare for an impressive speed gain as you didn't see in the last two years!

2014/04/28, "Fuori Dal Tempo"
Extended analysis to the last broken frame of the stream, more accuracy in ancillary detection (and there's a recently added screenshot too!).
UPDATE! The tarball was replaced due to a last minute critical bug fix! If you got it within 24 hours from release time, I recommend you to update!

2013/09/22, "Farewell"
Small fix, source cleanup.

2013/05/24, "List Games"
Added encoder delay and original file length for fraunhofer-encoded streams, several minor fixes

2013/03/24, "Please Please Please Let Me Release What I Want"
Support for audio mpeg files up to 2^60 bytes (!!!), APE tag v1/v2 are now recognized, detection of mp3Surround (here the site on the Wayback Machine) and mp3PRO streams

2013/02/21, "Owner Of A Lonely Release"
Finally updated the guessing engine, support for freeformat streams is now waaay better and (I hope) complete - lots of bug-fixes, as usual

2012/04/22, "Sparrow's Nightmare" Haiku Powered Re-release
Added compatibility with Haiku R1 alpha3 (here's a patch against previous v0.25-a23)

2012/04/21, "Sparrow's Nightmare"
Less warnings during analysis and more compatibility with layer III streams

2012/01/16, "70 Years Are Not Enough"
Free format bitstreams are now supported, new calculation for framesize now brings great speed gain

2011/12/26, "Smells Like Release Spirit"
This release fixes a buffer overflow, fixes printed information and adds a Makefile

2011/11/30, "A Release With No Name"
This release brings code optimizations, an enriched frame histogram and compliancy with latest lame tags

2011/05/03
Added workaround for a random appearing stack smashing error

(I can't remember when it came)
Reworked the code for extracting lame string

until 2011/03/04 (the code itself prints alpha 15)
Beginning of the journey... Added support for VBR tags and lame tag, better support for id3v1/id3v2 tags, added lots of comments, fixed compiler warnings, added early support for all layers (I/II/III), string alignment, small code modifications and more, more, more...

(guess what? larger packages include win32 executable built using mingw)
You can browse all mp3guessenc releases here.
Full changelog is available here (trust me, it's worth reading).

Documentation
Lots of internet docs and technical details I've read before diving into mp3guessenc source code.
Of course there is also some stuff you can download.

History
In early months of 2011, I was seeking for a smart utility which could simply tell me how much junk the many (fool) ripper/tagger/encoder applications added into my music collection. Surfing randomly, I stumbled upon this small utility, released back in 2002 by Naoki Shibata. I enjoyed it very soon. I realized the code was fully functional and reliable, nevertheless it offered room for improvements. I made several small and tiny modifications and, after receiving Naoki's agreement, I took over the task (and fun) to update the whole utility.
The project has its own detailed page on SourceForge.

License
mp3guessenc is released under the GNU Lesser General Public License, version 2.1.

Contribute to the project!
Found a bug?
A challenging file?
Looking for usage guidelines?
Wrote a useful patch?
Great ideas for new features?
Ask your questions and support the development on the project ticket page.

Anything else?
Contact me:
email address


project hosting by
SourceForge.net - Fast, secure and Free Open Source software downloads
developed on
Geany
Geany
page originally authored by
KompoZer
KompoZer
now maintained by
any text editor

graphics by
The GIMP
Wilber