Picard 2.9 Beta 1

The Picard team is happy to announce the availability of the first beta release for the upcoming Picard 2.9. This is a pre-release we put out for wider testing and to gather feedback on the changes before the final 2.9 release.

Please report any issue through our bug tracker and give us feedback on this beta release on the Community Forums.

Thanks a lot to everybody who contributed to this release with code, translations, bug reports and general feedback. This release contains contributions by Laurent Monin, Philipp Wolfer, Bob Swift, David Kellner, Tushar Rohith, Aerozol and certuna.

Continue reading “Picard 2.9 Beta 1”

Picard 2.9 alpha 1 available for testing

Today we have released an alpha version for the upcoming Picard 2.9. The main change coming with this release is limiting Picard to a single instance by default and the ability to run commands inside this running Picard instance from the command line. This work was done by skelly37 as part of last year’s Google Summer of Code.

Keep in mind that we consider this an alpha release and it might contain bugs. As the single-instance mode by default is a significant change on how Picard is being run we want to gather some feedback on the new functionality before we do a final 2.9 release.

Continue reading “Picard 2.9 alpha 1 available for testing”

Unexpected Picard Setups

This article is showcasing some of the more unusual ways MusicBrainz Picard can be run. Some are useful, some are more technically interesting solutions.

The description in MusicBrainz Picard’s README file says:

MusicBrainz Picard is a cross-platform (Linux, macOS, Windows) audio tagging application.

So yes, Linux, macOS and Windows are our officially supported platforms and the main targets for running Picard. If you are using Picard you likely do this on a laptop or desktop computer running one of these three operating systems. We already offer plenty of options to install and run Picard, including our official downloads for Windows and macOS, Picard in the Microsoft Store for Windows 10 and 11 and the popular Linux packages Flatpak and Snap.

But as Picard is free software you can get it running essentially anywhere were Python and PyQt5 are available. Let’s start this year with showcasing some of the more unusual ways Picard can be run. Some are useful, some are more technically interesting solutions.

Continue reading “Unexpected Picard Setups”

Picard 2.8.5 released

Picard 2.8.5 is a maintenance release for Picard 2.8, fixing two regressions found in the previous release.

The latest release is available for download on the Picard download page.

Thanks a lot to everyone who gave feedback and reported issues.

What’s new?

Bugfixes

  • [PICARD-2590] – Relative paths for cover art file names no longer work
  • [PICARD-2593] – Toolbar icon text disappears when saving options
  • [PICARD-2596] – “Show icons in menus” option is applied without saving options

Get in touch

Please use the MetaBrainz community forums and the ticket system to give feedback, suggest new features or report bugs.

Picard 2.8.4 released

Picard 2.8.4 is a maintenance release for Picard 2.8. This release contains multiple bug fixes, please see the list of changes below.

The latest release is available for download on the Picard download page.

Thanks a lot to everyone who gave feedback and reported issues.

What’s new?

Bugfixes

  • PICARD-2520 – Null bytes in tag values can cause crashes when sorting
  • PICARD-2539 – Picard crashes on huge releases if no cover art provider is active
  • PICARD-2548 – Loaded album does not update cover art display
  • PICARD-2549 – Moving tracks between albums shows tracks differ even when they do not
  • PICARD-2554 – Submit AcoustIDs submits even IDs that are in center pane
  • PICARD-2556 – Player popovers for volume and playback speed crash on Wayland and open on wrong position
  • PICARD-2557 – Add New Tag autocomplete list contains value typed so far
  • PICARD-2558 – Floatable toolbars unusable under Wayland
  • PICARD-2564 – Options for “Windows compatibility” and “Replace non-ASCII” get incorrectly set to inactive
  • PICARD-2565 – Rules for file name compatibility and max. path shortening are not applied when saving cover art
  • PICARD-2568 – $cleanmulti() has no effect for hidden variables
  • PICARD-2570 – Unable to drag tracks from right hand pane to Clusters
  • PICARD-2582 – distutils.errors.DistutilsClassError when building with setup.py
  • PICARD-2588 – QObject::startTimer: Timers can only be used with threads started with QThread

Improvements

  • PICARD-2589 – Support media types “DualDisc (DVD side)” and “Betacam SP”

Get in touch

Please use the MetaBrainz community forums and the ticket system to give feedback, suggest new features or report bugs.

My Google Summer of Code 2022 summary

What and for whom

Organization: MetaBrainz Foundation
Project: MusicBrainz Picard
Mentors: Laurent Monin (zas) & Philipp Wolfer (phw)
Main focus: Introducing single-instance mode in Picard 3.0
GSoC website: Link

What has been done: TL;DR edition

  • Picard works in single-instance mode by default, allowing to force-spawn a new instance
  • Picard accepts not just file paths but also URLs, MBIDs and commands as command-line arguments
  • The command-line arguments are sent to the existing instance (and processed by it) if possible
  • Picard can execute commands passed by the command-line interface; e.g. save all files, show the Picard window or close the app
  • Picard can also load the commands from a text file

List of pull requests

Single-instance mode

  • Picard#2116: A big commit where the whole single-instance mode for Picard was designed and introduced (only for file paths though)
  • Picard#2135: Fixed problems with exiting the app, caused by Picard#2116
  • Picard#2130: Supported URLs (with MBIDs) and mbid:// links (documented there) can be passed with file paths via CLI to an existing (or to a new one) instance
  • Picard#2137: Supported commands (like QUIT or SHOW) can be passed via CLI to an existing instance

Picard remote commands enhancements

  • Picard#2141: REMOVE_EMPTY & REMOVE_UNCLUSTERED commands added
  • Picard#2142: LOAD command, extending the positional arguments’ functionality, added
  • Picard#2143: FROM_FILE command, executing a command pipeline from a given file, added
  • Picard#2144: CLEAR_LOGS command added
  • Picard#2145: Fixed errors with the FROM_FILE command
  • Picard#2146: WRITE_LOGS command, allowing to save Picard logs into a file, added

Code refactoring

  • Picard#2080: Code explicitly marked as deprecated got removed, my initial commit to get to know the Picard’s codebase and workflow
  • Picard#2127: Minor patch, unparsed args are now ignored as they were not used anywhere
  • Picard#2139: Refactored the whole process of passing arguments to Picard, replaced ‘%’-formatted strings with f-strings, more than one arguments can be passed correctly to a command

Other

What have I learnt during GSoC 2022

  • How to work with other people on GitHub
  • How to improve my git experience (e.g. hooks)
  • How one can handle inter-process communication, basically I have researched:
    • pipes
    • named pipes
    • sockets
    • dbus
  • How to use Windows API with Python
  • Differences between Windows and Unix pipes
  • \0 is the only character that is prohibited on both Windows & Unix in path names
  • /tmp is not the recommended way to store non-persistent app data on *nix
  • os._exit might be useful when pythonic threads get broken
  • Importing a tuple in Python is underrated. git diff gets cleaner, as one sees only the additions

Some personal thoughts

  • Python is a really decent language that helps with starting one’s programming journey but the deeper I went, the more annoyances I have encountered (that is why I ended up starting to work as a C++ dev)
  • Ultra-safety is a double-edged sword: good luck terminating Pythonic futures/threads with file operations
  • CI/CD and testing in general is as important as decent codebase
  • If one can plan their time well, flexible work hours make their work both more effective and more enjoyable
  • Python sometimes change for worse or breaks the code without any reason (e.g. they have switched from using a mode into w on pipes, ref: LINK)
  • I will not start any new personal project in Python (especially one using multi-threading, multiple processes etc.), unless forced to do so. Nu for scripting, filling the niche & exploring the functional programming, some statically-typed languages for bigger projects, games, research, etc.
  • Impostor syndrome is just an another excuse to procrastinate. Do not be scared to learn & do new things but also ask smart questions. Everyone makes mistakes but if you made it to this org, you are a good fit and have enough qualifications

Special thanks

The whole MetaBrainz community is awesome and I am glad I have become a part of it, but I would like to express my special gratitude to the people I have directly worked with in any way 🙂 (alphabetical order by github username)

Picard 2.8.3 released

Picard 2.8.3 is a maintenance release for the recently released Picard 2.8 which fixes a potential crash in the album search dialog and provides updated translations.

The latest release is available for download on the Picard download page.

The detailed changes for this maintenance release are below. For an overview of the new features since Picard 2.7 please see our detailed release announcement for Picard 2.8 and the changes in Picard 2.8.1 and Picard 2.8.2.

Thanks a lot to everyone who gave feedback and reported issues.

Continue reading “Picard 2.8.3 released”

Picard 2.8.2 released

Picard 2.8.2 is a maintenance release for the recently released Picard 2.8 with fixes for reported issues and updated translations.

The latest release is available for download on the Picard download page.

The detailed changes for this maintenance release are below. For an overview of the new features since Picard 2.7 please see our detailed release announcement for Picard 2.8 and the changes in Picard 2.8.1.

Thanks a lot to everyone who gave feedback and reported issues.

Continue reading “Picard 2.8.2 released”

Picard 2.8.1 released

Picard 2.8.1 is a maintenance release for the recently release Picard 2.8 with fixes for reported issues and updated translations.

The latest release is available for download on the Picard download page.

The detailed changes for this maintenance release are below. For an overview of the new features since Picard 2.7 please see our detailed release announcement for Picard 2.8.

Thanks a lot to everyone who gave feedback and reported issues.

Continue reading “Picard 2.8.1 released”

Picard 2.8 released

The Picard team is happy to announce that the final version 2.8 of MusicBrainz Picard is now available for download. MusicBrainz Picard is the official tag editor for the MusicBrainz database and helps you get your music collection sorted and cleaned up with the latest data from MusicBrainz.

This release brings many changes, including long requested features like Windows long path support and advanced relationships for huge box sets. See below for the highlights.

Continue reading “Picard 2.8 released”