Development/Summer of Code/2021/Picard

From MusicBrainz Wiki

MusicBrainz Picard

Ideas

Add options for cover art processing

Proposed Mentors: outsidecontext / zas
Languages/skills: Python

Picard should allow to post process cover art images provided by the providers. For this there could be provider independent options to restrict image sizes, resize images if it exceeds a maximum allowed size or automatic format conversion.

This project would entail the following components:

  1. Evaluate the suggested components for image processing and choose the best fit
  2. Add the necessary options UI to allow the user to configure the image processing
  3. Implement the image processing for resizing and format selection
  4. Implement a image post processing plugin hook to allow plugins to do additional image manipulations

Related ticket Add cover art image processing


Integrate the AcousticBrainz client into Picard

Proposed Mentors: zas / outsidecontext
Languages/skills: Python, C/C++, language bindings, software build experience

The AcousticBrainz project has a separate client application for analyzing and submitting the analyzed information to the AB server. We believe that our community would likely help in submitting tracks to AcousticBrainz while also submitting tracks to AcoustID, so adding this feature to Picard makes sense. This would also allow us to deprecate the standalone AB analyzer software.

This project would entail the following components:

  1. Add the necessary UI elements to allow users to use the AB analyzer.
  2. Add the necessary preferences/options needed to configure the AB analyzer.
  3. Write necessary layer to call the underlying AB analyzer binary.
  4. Possible migrate the AB analyzer binary to be part of the Picard build process.

Related ticket Add AcousticBrainz analyzer features


Allow Picard to be run as single instance application

Proposed Mentors: zas / outsidecontext
Languages/skills: Python

Currently launching Picard always opens a separate instance of Picard. This has the implication that opening a file with Picard on Windows or Linux will always launch a new Picard with only this file loaded. It would be preferable to allow opening the file in an existing instance.

In addition such a setup would allow us to better handle crashes of the main Picard process.

This project would entail the following components:

  1. Research for the best cross platform solution to handle single instance applications
  2. Implement a launcher, that opens a new Picard process if none exists.
  3. If a Picard process is already running, the launcher would pass all arguments to the existing process and raise the application window
  4. Handle crashes of the launched main process and show relevant crash details to the user
  5. Test the implementation on Windows and Linux.

Related ticket Option to open new command line requests in an existing instance, Display and log crash details