ListenBrainz enters Beta stage

I’m pleased to announce that we released our first official beta version of ListenBrainz yesterday! As you may know, ListenBrainz is our project to collect, preserve and make available, user listening data similar to what Last.fm has been doing, but with open data.

In 2015 a small group of hackers gathered in London to hack on the first version of ListenBrainz alpha. We threw together a pile of new technologies and released the first version of ListenBrainz at the end of the weekend. In the end, we didn’t really like the new technologies (Cassandra, Kakfa) as both ended giving us a lot of problems that never seemed to end.

In 2016 we embarked on a journey to pick new technologies that we liked better and ended up setting on InfluxDB and RabbitMQ as backbones to our data ingestion pipeline. These tools were a good match for us, since we were already using them in production! Sadly, MetaBrainz’ move to our new hosting provider ended up sucking up any available time we had to devote to the projects, so progress was made in fits and starts.

Earlier this year Param Singh expressed interest to help with the project in hopes of joining us for a Google Summer of Code project. He started submitting a never ending stream of pull requests; slowly the project started moving forwards. Together we brought the codebase up to our current standards and integrated it into the workflow that we use for all of the MetaBrainz projects.

We proceeded to prepare the next version to be released at MetaBrainz’s new hosting facility and started a never ending series of tests. We kept pounding on the data ingestion pipeline, trying to find all of the relevant bugs and ways in which the data flow could get snagged. Finally the number of reported bugs relating to data ingestion dropped to zero and we managed to import 10M listens (a listen is a record of one song being played)!

That was our cue for promoting our pre-beta test to a full beta and unleashing it onto our production servers at our new hosting facility. Today we cleaned up the last bits of the release and we are ready for business!

What does this new release bring for you, the end users? Sadly, only a few new things, since most of the work has gone into building a stable and scalable system. We do have a few new things in this release:

  • Incremental imports from Last.fm — now you don’t have to do a full import any time you wish to import your latest listens from Last.fm. The importer knows when you last did and import and will work accordingly.
  • Last.fm compatible submission interface — with some system configuration changes you can submit your listens directly to ListenBrainz from any application with Last.fm support. (more info here)
  • Last.fm file import — if you have an old skool Last.fm zip file with your listening history backed up, you can now import it.
  • User data export — you can now download your own listens straight from the site, no waiting required.
  • Adaptive rate limiting on the API — our server now uses a modern rate limiting system. For details, see our API docs.

The good news is that Param is now working on his Summer of Code project that will add a lot of graphs and other critical elements for making use of this new data set. We hope to release new features on an ongoing basis from here on out.

Most importantly, we want to publicly state that ListenBrainz is now ready for business! We don’t plan to reset the database from here on out — this is the real deal and we plan to safeguard and make this database available as soon as we can. If you have hesitated with sending your listen histories to ListenBrainz in the past,  you should now feel free to send your listen information to us! If you are an author of a music player, we ask that you consider adding support for ListenBrainz in your player!

In a follow-up blog post I am going to write about how to start using ListenBrainz now — at the very least use it to back-up your Last.fm listening history!

If you find bugs with our latest release, please report them to our issue tracker. If you’re interested in this project and have questions for us, why not come and pop into our IRC channel or ask a question on our community forum?

P.S. The alpha version of ListenBrainz is still around.

P.P.S. We’ll have another cool announcement very shortly! Stay tuned!

Picard 1.4.2 released

Official MusicBrainz cross-platform music tagger Picard 1.4.2 is now out.

This is mainly a bugfix release, the only notable improvement is related to TOPE/TOAL tags.

Users can get Windows and MacOSx packages from Picard website downloads section.

Bug

  • [PICARD-1053] – Picard does not stop analyzer while moving
  • [PICARD-1055] – picard hangs with: RuntimeError: maximum recursion depth exceeded in cmp
  • [PICARD-1070] – The “Convert Unicode punctuation characters to ASCII” function only works in certain tags
  • [PICARD-1077] – ID3v2.4 text encoding settings are not saved correctly

Improvement

  • [PICARD-969] – Search dialog webservices get queued behind matched album requests
  • [PICARD-1034] – Picard not seeing TOPE and TOAL

Picard 1.4.1 released

Official MusicBrainz cross-platform music tagger Picard 1.4.1 is now out, it contains few fixes and enhancements, plus few extra features that didn’t make it to 1.4.

As usual you can get Windows and MacOSx packages from Picard website downloads section.

Most notable changes are the fix of a regression concerning drag-n-drop on MacOSx and improved cover art box, with better visual feedback about changes in cover art images.Capture du 2017-04-01 14:40:58

Thanks to all contributors who helped on this release: Antonio Larrosa, Frederik “Freso” S. Olesen, Laurent Monin, Lukáš Lalinský, Sambhav Kothari, Sophist, tungol, Ville Skyttä, Wieland Hoffmann.

And to all of our translators!

To report any issue about this release, please use our bug tracker. As usual you can also get help on the forum or on IRC (freenode, #musicbrainz).

We’ll now focus on 2.0, which will be mostly a port of 1.4.x to Python 3 and Qt5.
It will open the way to UI improvements, and improved overall performance.

Bug

  • [PICARD-953] – Album shown matched even if extra unmatched files
  • [PICARD-972] – Removing album with saves pending does not remove pending saves
  • [PICARD-973] – Pending log messages not flushed to stderr on quit
  • [PICARD-988] – Drag & Drop not working
  • [PICARD-990] – Picard violating ID3 standard for TXXX frames
  • [PICARD-996] – Disabling the cover art box and enabling it again doesn’t bring it back
  • [PICARD-998] – Disabling the action toolbar sometimes doesn’t work
  • [PICARD-1005] – If a cluster is moved to the album side of the main window it gets moved to unmatched files
  • [PICARD-1006] – Drag and drop for cover arts doesnt work on OSX
  • [PICARD-1010] – Unsetting View/Cover Art doesn’t work permanently
  • [PICARD-1011] – Toolbar tab order incorrect after PICARD-908
  • [PICARD-1014] – Number of images in release info is calculated incorrectly
  • [PICARD-1015] – Artwork tab of the Track Info DIalog doesn’t show changes anymore
  • [PICARD-1018] – CoverArtBox doesn’t show new/removed images after unmatched files are added/removed to the album
  • [PICARD-1023] – Directory persistence for Add Directory needs tweaking
  • [PICARD-1029] – Fix ~artists_sort metadata variable
  • [PICARD-1042] – Missing import for PICARD_APP_NAME

New Feature

  • [PICARD-258] – Visual feedback for changes to artwork in before-after pane.
  • [PICARD-1000] – Implement artwork diff for albums

Task

  • [PICARD-943] – Remove monkey patching of file write methods in picard formats
  • [PICARD-1041] – Replace Ok button text by Make It So! in Options dialog

Improvement

  • [PICARD-223] – Remove should work when Unmatched Files is selected
  • [PICARD-666] – Drop MP3 tagging support
  • [PICARD-951] – Always use HTTPS for musicbrainz.org
  • [PICARD-952] – Use Cover Art Archive over HTTPS
  • [PICARD-961] – Mention AcoustID on Scan button too
  • [PICARD-980] – Drag&drop cover art doesn’t work for images from amazon/google images/https links
  • [PICARD-1012] – Buttons on the “User Interface” and “Scripting” pages are smaller than buttons in other places
  • [PICARD-1016] – Multiple images in related tracks confusing
  • [PICARD-1021] – Picard loads all pending files before quitting
  • [PICARD-1024] – Allow specifying a configuration file path
  • [PICARD-1030] – Allow to add/replace cover art images and keep existing cover art

Picard 1.4 released

Official MusicBrainz cross-platform music tagger Picard 1.4 is now out, containing many fixes and new features!
The last time we put out a stable release was more than 2 years ago, so a lot of changes have made it into this new release. If you’re in a hurry and just want to try it out, the downloads are available from the Picard website.

Picard 1.4

picard-1-4-screenshot
A brand new Picard 1.4 install, fresh from the oven. Get it while it’s hot!

2 years is a long time for software, and Picard has been the subject of a couple of Google Summer of Code projects and plenty of developments required by changes in dependencies and the MusicBrainz project itself. Overall, the changes would be too numerous to list. If you’re curious to read it all, a complete list of changes can be seen on the website. Here are at least a few of the highlights: Continue reading “Picard 1.4 released”

Schema upgrade downtime: Monday, 18 May, 2015 @ 17:00 UTC

Our next schema change version will be released on Monday, 18 May, 2015 around 10am PDT/1pm EDT/17:00 UTC/18:00 BST/19:00 CEST. We expect that MusicBrainz will be unavailable for 15 – 30 minutes during this time. We will put up the downtime notification on the site and tweet from @musicbrainz right before the release.

Since we’re total slackers, we still haven’t set up our backup database server since it suffered a hardware failure. This means that we won’t be able to put the site into read-only mode and will require us to do a full downtime. Hopefully for our next schema change we’ll have tackled our backlog of sysadmin duties and will have a backup DB server to make the release easier.

Sorry for any trouble this may cause you.

P.S. Look for another blog post on Sunday for details on where to get your access tokens for the Live Data Feed.

Picard 1.3.2 released

Picard 1.3.2 is now available on the Picard download page. This again is only a small maintenance release which mainly updates the OS X build to fix crashes some users experienced with Picard 1.3.1. Here is the complete list of fixes:

Bug

  • [PICARD-681] Fixed tags from filename dialog not opening on new installations
  • [PICARD-682] Picard 1.3.1 crashes on OSX on start

For Ubuntu users we have also finally updated our stable PPA.

Picard 1.3.1 released

This is a maintenance release, mostly bug fixes. All users are encouraged to upgrade.

Binary packages are available at http://picard.musicbrainz.org/downloads/

Bug

  • [PICARD-273] – Picard should use the correct Accept header when talking to web services.
  • [PICARD-589] – Picard refuses to load files if any path component happens to be hidden
  • [PICARD-642] – ConfigUpgradeError: Error during config upgrade from version 0.0.0dev0 to 1.0.0final0
  • [PICARD-649] – Windows installer sets working directory to %PROGRAMFILES%\MusicBrainz Picard\locale
  • [PICARD-655] – Last.fm plus tooltip help elements are all messed up
  • [PICARD-661] – Regression: Tagger script for cover art filename does not work anymore
  • [PICARD-662] – Retrieving collections causes AttributeError: release_list
  • [PICARD-663] – Artist name makes it impossible to save

Improvement

  • [PICARD-658] – Support the new pregap and data tracks
  • [PICARD-659] – Set the originalyear tag when loading a release
  • [PICARD-665] – Web service calls to ports 80 and 443 do not need explicit port specification. 443 should be automatically made https.

Picard 1.3 released

Version 1.3 of Picard has been released today, with some notable features and bug fixes.

This release has few visible changes, but overall performance and stability were much improved. A lot of minor annoying issues were fixed. Cover art code was reworked, and notably one can now enable fallback on release group cover art if no cover art exists for a specific release.

Logging was improved, user can now enable debug mode from About →View Error/Debug Log, it may help to see what is going on if needed, passwords and sensible information were hidden from the log, so user can now safely post his log to get help.

To report any issue concerning this release, please use our bug tracker. As usual you can also get help on forum or on IRC (freenode, #musicbrainz).

Special thanks to Sophist, Wieland Hoffmann, Michael Wiencek, Johannes Dewender, Lukáš Lalinský, Frederik “Freso” S. Olesen, and the whole MusicBrainz Team.
Many thanks to all users, developers, bug reporters and translators. Code contributions since 1.2 are visible on Github Contributors graph.

Unfortunately the OAuth support patch (PICARD-305) didn’t make it in this release.

Picard 1.3 can be downloaded on the Picard’s website.

Be aware that downgrading from 1.3 to 1.2 may lead to configuration compatibility issues, better save your configuration before installing 1.3 if you intent to go back to 1.2.

Among changes since 1.2:

  • The “About” window now displays the versions of libraries used by Picard
  • Picard now correctly handles matching of MP3 files saved in ID3v2.3 tags (which is the version that Microsoft Windows and iTunes both use).
    Note: You may need to re-save your tags once to get them to match in future.
  • A sort tags plugin is now provided as tag data is no longer displayed sorted by default.
  • A new tag, musicbrainz_releasetrackid, containing the MusicBrainz Track MBID introduced in the May 2013 schema change release, is now written to files.
  • Add %_recordingtitle% (PICARD-515)
  • Fix plugin install bugs (PICARD-444)
  • Fix Options → File naming examples to handle primary/secondary release types (PICARD-516)
  • A new advanced option is available to permanently set the starting directory for the file browser and “Add files/folder” buttons.
  • Requests to Musicbrainz against your own account e.g. for collections are now handled through SSL (PICARD-337)
  • Refresh of Albums using Ctrl-R and selection of Other Releases are now more responsive during batch lookups.
  • Main window is now emitting a “selection_updated” signal, plugin api version bumps to 1.3.0
  • Append system information to user-agent string
  • Compilation tag/variable functionality (for tagging & file naming) has been split into two:
    %compilation% is now aligned with iTunes, and set only for Various Artists type compilations
    %_multiartist% variable now indicates whether this release has tracks by multiple artists
    (in order to prepend the artist name to the filename as shown in the default file naming script)
  • autodetect the CD drive on Mac OS X (PICARD-123)
  • Ignore directories and files while indexing when show_hidden_files option is set to False (PICARD-528)
  • Add ignore_regex option which allows one to ignore matching paths, can be set in Options → Advanced (PICARD-528)
  • Added an “artists” multi-value tag to track metadata, based on the one in Jaikoz, which contains the individual artist names from the artist credit. Also useful in scripts (joining phrases like ‘feat:’ are omitted) and plugins.
  • Added “_artists_sort“, “_albumartists“, “_albumartists_sort” variables for scripts and plugins.
  • Made Picard use the country names also used on the MusicBrainz website (PICARD-205)
  • New setup.py command `get_po_files` (Retrieve po files from transifex)
  • New setup.py command `regen_pot_file` (Regenerate po/picard.pot)
  • New Work tag (which for Classical music is often different from the track title) saved as ID3 TOAL tag.
  • New Composer Sort Order tag (variable %composersort%).
  • Improve the Other Releases list to prioritise and separate releases which match the correct number of tracks and your Options → Metadata → Prefered Releases settings for Country and Format.
  • New %_absolutetracknumber% variable numbering tracks sequentially regardless of disc structure (so you can numbers tracks on multi-disc releases without a disc number)
  • Support dropping image directly from Google image results to cover art box
  • Add %_musicbrainz_tracknumber% to hold track # as shown on MusicBrainz release web-page e.g. vinyl/cassette style A1, A2, B1, B2
  • Show the ID3 version of the file in the Info… dialog (Ctrl-I) (PICARD-218)
  • Fixed a bug where Picard crashed if a MP3 file had malformed TRCK or TPOS tags (PICARD-112)
  • Add –files option to setup.py build_ui, used to force .ui to .py regeneration (PICARD-566)
  • New setup.py command `update_constants` (Regenerate countries.py and attributes.py)
  • Made Picard use release groups, medium formats and cover art types also used on the MusicBrainz website
  • Use MusicBrainz Server translations for release groups, medium formats and cover art types
  • Add checkbox to toggle debug at runtime in log/debug view dialog
  • Add a plugin to add Artist Official Homepage relationships to the website tag (ID3 WOAR tag)
  • Add integrated functions $eq_any, $ne_all, $eq_all, $ne_any, $swapprefix and $delprefix.
  • Add %_performance_attributes%, containing performance attributes for the work e.g. live, cover, medley etc.
  • Use $inmulti in file naming scripts i.e. …$if($inmulti(%_performance_attributes%,medley), (Medley),)
  • Add optional `priority` parameter to `register_album_metadata_processor()` and `register_track_metadata_processor()`
    Default priority is `PluginPriority.NORMAL`, plugins registered with `PluginPriority.HIGH` will be run first, plugins registered with `PluginPriority.LOW` will run last
  • Add Standardise Performers plugin to convert e.g. Performer [piano and guitar] into
    Performer [piano] and Performer [guitar].
  • Add support for release group cover art fallback (PICARD-418, PICARD-53)
  • Add a clear button to search box
  • Honour preferred release formats when matching AcoustIds (PICARD-631)
  • Prevent ZeroDivisionError in some rare cases (PICARD-630)

About next stable Picard release

Picard team decided to release a new stable version of Picard before the end of the summer.
To help us, advanced users, translators and developers are encouraged to:

Exact release date is not yet known, and features aren’t yet frozen, but the only important change we’ll try to get in before final release is OAuth support (PICARD-305), we still accept minor patches until feature freeze is announced.

Since Picard is now using some translation resources from MusicBrainz project, translators should make sure following resources are up-to-date:

A simplified list of changes made since 1.2 can be read there.

Be aware that downgrading from 1.3 to 1.2 may lead to configuration compatibility issues, better save your configuration before using 1.3 branch if you intent to go back to 1.2.