libdiscid 0.7.0

Version 0.7.0 of libdiscid has been released. libdiscid is a C library that allows applications to easily calculate MusicBrainz and freedb disc IDs from audio CDs or CD TOC details. It also can extract MCN and ISRC information.

This release fixes several issues with the build system and addresses compiler warnings. As a compile time option it is now possible to have methods returning URLs to use HTTPs instead of HTTP, see then changelog for details. Thanks to Riku Viitanen for this contribution. Also the binary packages now include a build for the Windows ARM64 platform.

Version 0.7.0 of libdiscid provides the following changes:

Continue reading “libdiscid 0.7.0”

python-discid 1.4.0

A new version of python-discid, a Python wrapper library for libdiscid, is now available. Version 1.4.0 focuses on modernizing the code base and updating the documentation.

The public API is now fully type-hinted and the type hints are also used in the documentation. A Disc.pregap property was added for convenient access to the first track’s pregap. For the full list of changes see the changelog in the documentation.

The new version is available on PyPI. See also the install instructions for more options. Please note that the new minimal Python version supported is now Python 3.10.

New release python-discid 1.3.0

A new version of python-discid, a Python wrapper library for libdiscid, is now available. Version 1.3.0 is a maintenance release, ensuring this small library stays available on modern systems.

python-discid was originally implemented and maintained by Johannes Dewender (aka jonnyJD), who also maintained the libdiscid library at the time. We have now moved the project over to be part of MetaBrainz and the source code is now on https://github.com/metabrainz/python-discid/ . Thanks Johannes for supporting this move.

Despite the project move one important change is the updated build system, which now allows building with any PEP 518 compatible build tool. Also support for Python 2 was dropped, the new minimal Python version supported is Python 3.9. For a full change log see the changelog in the documentation.

The new version is available on PyPI. See also the install instructions for more options.

libdiscid 0.6.5 released

A new version 0.6.5 of libdiscid is now available. libdiscid is a C library that allows applications to easily calculate MusicBrainz and freedb disc IDs from audio CDs. It also can extract MCN and ISRC information.

This is a maintenance release. There are no changes to the library itself. Version 0.6.5 of libdiscid provides the following changes:

  • CMake: Restore includedir and libdir
  • Code sign Windows and macOS binaries

More details on libdiscid, information on available language bindings, and downloads of the source code and pre-compiled binaries for macOS and Windows can be found on the libdiscid page. See also the API documentation for details on how to use the library.

libdiscid 0.6.3 and bindings for D, Rust, Go and Hare

A new version 0.6.3 of libdiscid has been released. libdiscid is a C library that allows applications to easily calculate MusicBrainz and freedb disc IDs from audio CDs. It also can extract MCN and ISRC information.

The main focus for this release has been to provide updated source and binary packages compatible with current systems. But there is also new platform support for the Haiku operating system.

Version 0.6.3 of libdiscid provides the following changes:

Continue reading “libdiscid 0.6.3 and bindings for D, Rust, Go and Hare”

Libdiscid 0.6.2 and python-discid 1.1.1 released

Libdiscid 0.6.2 includes these changes:

  • ISRC and MCN support on BSD (Zastai)
  • LIB-60: fix make check for default device on generic/unknown platform
  • make Doxygen output reproducible (no timestamps; Sebastinas)
  • remove newline for Linux device “1” from proc (Zastai)

The download can be found at http://musicbrainz.org/doc/libdiscid.

Python-discid 1.1.1 includes these changes:

The download can be found at https://python-discid.readthedocs.org/.

python-discid 1.1.0 (and 1.0.3) released

New versions of python-discid are available.

Changes in 1.1.0

  • feature: #36 add Disc.toc_string
  • #38 remove DiscId (deprecated since 0.5.0)

Changes in 1.0.3

  • fix: #37 test_emptyness: Assertion disc->success failed

Python-discid 1.0.3 is a bugfix version for the recent libdicid 0.6.0 release and python-discid 1.1.0 adds the TOC string, which is also part of new libdiscid versions. The TOC can be used for fuzzy searches in the web service.
The toc string feature was backported and can be used together with any version of libdiscid >= 0.2.2.

The bugfix for 1.0.3 is only relevant for running the test suite (which is done at install time usually). It shouldn’t affect normal operation. If you don’t have any problems, you don’t need to upgrade.

The DiscId class was already deprecated in the 0.5.0 beta, but still works in 1.0.x releases.
The correct usage is to create a Disc object with read() or put().
See also basic usage of python-discid.

Downloads are available at pypi. Packages are available for some linux distributions.
Recent stable and git versions of python-discid and other MusicBrainz client libraries and tools are now available for many Ubuntu versions at the MusicBrainz Stable and https://launchpad.net/~musicbrainz-developers/+archive/daily PPAs.

libdiscid 0.6.0 (and 0.6.1) released

This is a feature release of libdiscid.

It took more time than planned, but 0.6.0 is done now with lots of changes.
Main changes are the TOC string api (handy for fuzzy lookup) and a much better default drive detection on all platforms.
An example to use libdiscid together with libmusicbrainz (including fuzzy lookup) is also provided now.

Unfortunately I found one major bug only while merging changes to another branch. Libdiscid 0.6.1 fixes reading of ISRCs on Windows again (introduced in 0.6.0).

The full set of changes:

Bug

  • [LIB-48] – Fix asserts/return values on empty object
  • [LIB-59] – windows: unable to read ISRC (0.6.1)

Improvement

  • [LIB-52] – validate parameters for put()
  • [LIB-53] – don’t use old redirect for submission_url

New Feature

  • [LIB-28] – allow using numbers as devices on Mac OS X
  • [LIB-41] – Add TOC (id) to API
  • [LIB-43] – Use first CD drive letter on Windows as default device
  • [LIB-45] – Linux/BSD/Solaris: search for an existing default device from a list of devices
  • [LIB-54] – Add example: libmusicbrainz / query for metadata
  • [LIB-55] – Allow using numbers as devices on Windows
  • [LIB-56] – Allow using device numbers on Linux

I want to thank Philipp Wolfer for the Windows drive detection, Laurent Monin for the TOC string API and also Sebastian Ramacher and Lukáš Lalinský for smaller changes.

Testing wanted for raw ISRC reads

Reading ISRCs raw from the device with SCSI commands ([LIB-11, duplicate ISRC problems) is already implemented for Linux and Windows and works quite well on most drives. There is no code for support on Mac, yet. The Windows and Linux implementation still need some testing (with different drives).

If you are willing to test this or really need this feature you can build the code in the “isrc_raw” branch from the github repository.
There is also a windows binary available.
We do want to know about problems (some drives are already reported with strange behavior, possibly due to Alignment), but also a short note about working systems is helpful to get a bit of insight on how rare or frequent failures are.

We also happily accept patches to send SCSI commands on Mac OS X. There is some information in the ticket how this could work, but this is probably the most difficult of the platforms to implement.

Information, documentation and other links are at:
http://musicbrainz.org/doc/libdiscid
That includes builds for Windows and Mac OS X.

libdiscid 0.5.2 released

This is a bugfix release of libdiscid.

There are already lots of changes (features) ready for 0.6.0, but I did want to release these fixes separately, since they have a high impact on the platforms involved.
0.6.0 is probably ready in a couple of weeks.

Bug

  • [LIB-50] – Solaris: segfault in mb_disc_load_toc
  • [LIB-51] – Mac: Unable to read ISRC for track

New Feature

  • [LIB-26] – disc access test suite
  • print time information in the discid example (zas)

Information, documentation and other links are at:
http://musicbrainz.org/doc/libdiscid
That includes builds for Windows and Mac OS X.

.NET / Mono bindings for libdiscid

There has been quite some activity regarding libdiscid in the last few months, here is some more: I have released dotnet-discid 0.2 which provides .NET / Mono bindings for libdiscid. The source is available at GitHub. For easy usage Windows users might want to use the NuGet package. Alternatively you can download source and binary releases at http://users.musicbrainz.org/~outsidecontext/dotnet-discid/. To use the assembly you will also need the native libdiscid release (e.g. discid.dll on Windows or any other native package for your platform). On Unix-like platforms you can just use the system wide installation of libdiscid.

No API docs yet, but the examples on Github will get you started. The library should be straight forward to use. This is an early release but it supports all the features provided by the latest libdiscid 0.5 (while still supporting earlier versions).  I don’t expect many changes in the API but I will provide better documentation soon.