Picard 2.7 Beta 1

The Picard team is happy to announce that Picard 2.7 Beta 1 is now available. This is a pre-release we put out for wider testing and to gather feedback on the changes before the final 2.7 release. There are many new features in this release, which might or might not work for you as expected. If you prefer stability we recommend you use the stable version Picard 2.6.4 which we released yesterday.

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 code contributions by Bob Swift, Gabriel Ferreira, Laurent Monin, Philipp Wolfer and Louis Sautier.

Download

Picard 2.7 Beta 1 can be downloaded from Picard website Downloads section.

Linux users might want to install the beta version using Snap. If your Linux distribution supports Snap you can install Picard from the beta channel using:

snap install --beta picard

What’s new?

This release brings a lot of new features, enhancements and bugfixes. Some of the highlights in this beta include:

  • It is now possible to have more than one naming script and to switch between them as needed. A new script editor dialog allows you to edit the different scripts while tagging.
  • Scripts can be exported to and imported from YAML files.
  • The “Submit cluster as release” functionality, which was previously available as a plugin, is now directly available in Picard. This also fixes some issues the plugin had. While the plugin is still available for now and can be used independently it will be considered deprecated once Picard 2.7 stable version has been released.
  • Picard now supports analyzing your music files and submitting the audio characteristics to AcousticBrainz. Previously this was only possible with separate tools provided by the AcousticBrainz project. This functionality requires a separate Essentia music extractor tool. The macOS and Windows packages come with this tool bundled. For Linux this tool is available from the AcousticBrainz download page. For details on this feature see the documentation.
  • The scripting now allows explicitly entering any Unicode character with the escape sequence \uFFFF, where FFFF is the Unicode code point. E.g. \uff0f would enter a full-width slash. This makes it easier to handle characters that are either not easily accessible on common keyboards or are invisible control characters. If you hover your mouse over such a sequence a tooltip will show details about the corresponding character.

The Picard documentation has also been updated to reflect the changes in this release.

Below is a complete list of changes since Picard 2.6.4.

Bugfixes

  • [PICARD-157] – “Translate artist names to this locale where possible” also translates ones already in the correct locale
  • [PICARD-1645] – Picard doesn’t respect MusicBrainz server settings for the CD lookup in browser functionality
  • [PICARD-2189] – Network cache directory at wrong location on Windows
  • [PICARD-2217] – $performer() pattern matches full tag name
  • [PICARD-2233] – Composer Sort Order doesn’t use the artist sort name when the “credited as” text is populated
  • [PICARD-2236] – Renaming files with “replace non-ascii” treats fullwidth slash U+FF0F as directory separator
  • [PICARD-2261] – Any tagger script causes multi-line fields to become changed
  • [PICARD-2276] – Fix browser integration on Windows if hostname contains non-ASCII characters

New Features

  • [PICARD-9] – Options profiles / quick presets
  • [PICARD-257] – Option to preserve artwork when selecting “clear existing tags”
  • [PICARD-1127] – Filename presets
  • [PICARD-1734] – Add AcousticBrainz analyzer features
  • [PICARD-2165] – Add $is_multi() function to test if a variable is multi-value
  • [PICARD-2203] – Integrate add cluster as release functionality into Picard
  • [PICARD-2204] – Support Unicode escape sequences in tagger scripts
  • [PICARD-2213] – Allow naming script import/export as YAML scripting package
  • [PICARD-2277] – When translating artist names ignore selected scripts
  • [PICARD-2279] – Allow saving AcoustID fingerprint in acoustid_fingerprint tag

Tasks

  • [PICARD-2231] – Fix packaging Picard on Windows with Python 3.8 or later

Improvements

  • [PICARD-226] – Cluster automatically
  • [PICARD-412] – Allow several locales to be selected for “Translate artist names to this locale where possible”
  • [PICARD-524] – Ability to have more that one rename script and choose desired
  • [PICARD-563] – Pad disc number in default renaming script if more than 9 discs
  • [PICARD-1568] – Improve parsing track number and title from filename
  • [PICARD-1718] – Display and log crash details
  • [PICARD-2150] – Option to show or hide the tag editor
  • [PICARD-2151] – Provide functions $year(), $month(), $day()
  • [PICARD-2171] – Make guessing title from filename if title is empty optional
  • [PICARD-2174] – Optimize metadata view displaying format specific metadata
  • [PICARD-2176] – Add column to see if cover art is present
  • [PICARD-2178] – Select random sample of loaded files to use as renaming examples
  • [PICARD-2179] – Refactor Options > File naming
  • [PICARD-2181] – Support Markdown formatting for plugin descriptions
  • [PICARD-2184] – Allow fully silent install using the Windows installer
  • [PICARD-2198] – Update formats for Tefifon and 5.25″ Floppy Disk
  • [PICARD-2201] – Add help button to “Tags from file names” dialog
  • [PICARD-2207] – Script editor: Show hover tooltip on Unicode escape sequences and functions
  • [PICARD-2218] – $performer() should allow regular expressions
  • [PICARD-2220] – Set default file extension for files with empty extension
  • [PICARD-2232] – Allow data submission to unofficial server
  • [PICARD-2237] – Realistic progress and ETA
  • [PICARD-2248] – Lazily initialize the file browser on first display
  • [PICARD-2251] – Add ability to import/export tagging scripts
  • [PICARD-2263] – Performers without role do not get saved to TMCL (TIPL respectively) frames
  • [PICARD-2266] – Add already mapped tags gapless, podcast, podcasturl, show and showsort to list of known tags
  • [PICARD-2271] – Allow removing obsolete option settings from configuration INI file
  • [PICARD-2273] – Set acoustid_id tag also if AcoustIDs were found, but no recordings are attached
  • [PICARD-2278] – Show the path and name of the configuration currently used
  • [PICARD-2288] – Add variable %_workcomment% for the work disambiguation comment

Known issues

  • On macOS if you have the script editor dialog open and then open the preferences the script editor dialog will be behind the preference dialog and will not be accessible until the preferences get closed again.
  • On macOS setting the user interface color theme to “Default” does not automatically use the dark mode if dark mode is enabled in the system. See the ticket PICARD-2290. As a workaround you can force the dark mode in Picard’s preferences.
  • The Linux Snap package does not yet contain the Essentia music extractor binary, which is required for the AcousticBrainz submission. We plan to add this to the package in a future update.

Helping out

The easiest way to help us getting a great Picard 2.7 release is using and testing this beta release. Please report bugs on the Picard issue tracker and provide feedback in the community forums.

Please also help translate Picard. There have been many changes to the user interface existing translations need to be updated for the final 2.7 release. Translating is easy and can be done online: Head over to MusicBrainz’s translation page on Transifex and click on “Help Translate MusicBrainz”.
Once you have registered an account on Transifex you can start translating. For Picard the primary resource to translate is “picard“, but there is also the “picard_appstream” resource, which is used for providing descriptions for various Linux software-center applications, and “picard_installer”, which contains the translations for Picard’s Windows installer.

If you are a software developer you are very welcomed to provide fixes and features. Picard is free software and the source code is available on GitHub. See Developing on the Picard website to get started.

Picard 2.6.4 released

Picard 2.6.4 is a maintenance release for Picard 2.6. It contains a couple of bug fixes, including possible crashes and startup issues on Windows. Users of Picard 2.6 are highly recommended to update.

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-2199] – Saving ID3 ratings fails, if rating e-mail contains non latin-1 characters
  • [PICARD-2200] – Copy and pasting function names from inline scripting docs can copy Unicode left-to-right mark
  • [PICARD-2230] – Picard fails to start on Windows if the hostname contains non-ASCII characters and browser integration is enabled
  • [PICARD-2269] – “TypeError: arguments did not match any overloaded call” with Python 3.10
  • [PICARD-2274] – Picard 2.6.3 crashes when track is removed or moved during lookup

Known issues

  • On Windows if the computer name contains non-ASCII characters the browser integration will not work. The only known workaround is to rename the computer so the name consists only of ASCII characters. While Picard 2.6.3 would crash in such a situation when starting, we fixed this crash in Picard 2.6.4. But the root cause is actually a bug in Python 3, which we will solve by an upgrade to Python 3.8.10 with the upcoming release of Picard 2.7. See PICARD-2230 for details.
  • Copy and pasting code from the built-in script documentation Window when using Picard with Arabic or Hebrew language can cause invisible Unicode left-to-right mark control characters to be copied. This can have unintended side effects in your script. This will be properly handled with Picard 2.7, where control characters will be made visible in the script editor. For details see PICARD-2200 and PICARD-2204.

A beta release for the upcoming Picard 2.7 will be available soon.

MusicBrainz Server update, 2021-10-04

This time we have a lot of small fixes for URLs, including URL seeding and cleanup, and a couple other small bugfixes. Nothing particularly big, but still hopefully useful!

A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the release notes for update instructions.

Thanks to atj, chaban, Cyberskull, danbloo, HDS, HibiscusKazeneko, mr_maxis and yyoung for having reported bugs and suggested improvements. Thanks to AO, Besnik, mfmeulenbelt, salo.rock, SpearDog and wa2c for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2021-10-04.

Fixed Bug

  • [MBS-10902] – Release language shown in edit list as [No lyrics] instead of No linguistic content
  • [MBS-11852] – ISE when approving edit
  • [MBS-11952] – Don’t select free streaming for Vimeo On Demand URLs
  • [MBS-11960] – Artist editor URL seeding displays empty text field
  • [MBS-11970] – reCAPTCHA sometimes doesn’t load on the account registration page
  • [MBS-11973] – Release groups with pending edits not highlighted on artist recordings page
  • [MBS-11977] – Mismatched entity type in external links editor doesn’t trigger the appropriate error message
  • [MBS-11989] – Delete release group alias page fails with React error
  • [MBS-11998] – Total ratings counts do not include place ratings

Improvement

  • [MBS-11830] – Add more collection statistics
  • [MBS-11896] – Remove the unique_primary_for_locale triggers and associated functions
  • [MBS-11941] – Normalize Worldcat identities URLs
  • [MBS-11957] – twitch.com links should be normalized to twitch.tv
  • [MBS-11959] – Allow RYM links for music video recordings
  • [MBS-11961] – Rename “random” in edit search since it’s not actually random
  • [MBS-11968] – Allow VIAF, DNB and LoC links for series
  • [MBS-11975] – Clean up CDJapan detailview URLs
  • [MBS-11978] – Move edit icons of external links editor to the left side

New Feature

  • [MBS-10621] – Add autoselect + sidebar for Tidal URLs

React Conversion Task

  • [MBS-10639] – Convert release merge edit to React

MusicBrainz Server update, 2021-09-20

We’re back to our usual two-week cycle with a relatively small set of changes, of which the most interesting might be that you can use some extra includes in the MusicBrainz API: release-group-level-rels for release lookups, and recording-level-rels and work-level-rels on release browses. Keep in mind that recording level relationships are still restricted to the same 500 recording limit that applies to very large release lookups, to keep the size of the API responses somewhat sensible – anything over 500 recordings and you’ll need to get the relationships entity by entity.

Additionally, we found an issue where the “make my tags private” setting was not being respected when users tried to navigate straight to a tag page, such as https://musicbrainz.org/user/username/tag/tagname, making it possible to see what the user in question had tagged with tagname even if the tags were meant to be private. This was fixed on both the beta and production servers as soon as we were made aware of it by CatQuest, but we cannot guarantee that it was never used by any too-curious editor who failed to report it before. We apologize for any possible breach of your tag privacy.

A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the release notes for update instructions.

Thanks to atj, CatQuest, chaban, Cyberskull, jesus2099, MrClon, mr_maxis and outsidecontext for having reported bugs and suggested improvements. Thanks to mfmeulenbelt and salo.rock for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2021-09-20.

Fixed Bug

  • [MBS-8820] – An artist with only event rels has a fully blank relationships page
  • [MBS-9454] – URL entities do not always get purged when last entity association is removed
  • [MBS-11717] – Pending artist credit edits warning missing in artist credits reports
  • [MBS-11932] – URL-Work license relationships not excluded from “Report for same URL linked to many entities” report
  • [MBS-11940] – /ws/2/tag return 500 code for invalid requests
  • [MBS-11944] – Place merge button on areas says “Add selected labels for merging”
  • [MBS-11976] – User tag page is not private even when meant to be

Improvement

  • [MBS-6140] – Add “recording-level-rels” (and “work-rels”) support to “Release” browse web service
  • [MBS-8098] – Allow release-group-level-rels in release lookup
  • [MBS-11130] – Clarify it’s not possible to subscribe to VA / [no label]
  • [MBS-11794] – Link to edit searches on statistic page
  • [MBS-11799] – Display “credited as” field in sidebar external links
  • [MBS-11907] – Block vyd.co link aggregator

New Feature

  • [MBS-11819] – Show OAuth authorizations for account admins
  • [MBS-11843] – Add report for “Events with annotations”

React Conversion Task

  • [MBS-11841] – Convert Set Track Lengths edit to React

MusicBrainz Server update, 2021-09-06

Today we’re happy to release yyoung’s work to improve the external links editor; see his detailed blog post for more information. Thanks for your hard work, yyoung!

This release also contains quite a few bug fixes and improvements, given the amount of time since last release. Several fix guess-case issues, and we’ve refactored the guess-case code to be more maintainable in the future. A visible improvement you may notice is that we now display icons next to entity links in relationships to help distinguish different types of entities. (If you’ve been editing on MusicBrainz for a long time, you may remember something similar from the classic, pre-NGS website.)

A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the release notes for update instructions.

Thanks to aerozol, angriestchair, Beckfield, bsammon, chaban, CyberSkull, danBLOO, Dibou, Freso, HDS, jesus2099, KRSCuan, mr_maxis, mtrolley, navap, salo.rock, Shepard, yindesu, and yyoung for having reported bugs and suggested improvements. Thanks to Besnik, ffff23, kellnerd, mfmeulenbelt, panos, salo.rock, th1rtyf0ur, V6lur, and yoshi818 for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2021-09-06.

Fixed Bug

  • [MBS-11793] – Wikipedia abstract is fetched even though URL is ended
  • [MBS-11795] – Text overflow in external link relationship type description tooltip
  • [MBS-11802] – ISE on “Edit relationship type” edit for removed type
  • [MBS-11806] – Relationships for different tracks are wrongly grouped on release bottom credit display
  • [MBS-11812] – Merge queue: Missing whitespace before “New disc title”
  • [MBS-11832] – artist-credit/id page gives TypeError if the id does not exist
  • [MBS-11854] – Guess Case doesn’t properly capitalize after Unicode hyphen U+2010
  • [MBS-11861] – Weird odd/even classes client-side for tablesorted statistics
  • [MBS-11864] – Some DNB links are wrongly marked as invalid
  • [MBS-11922] – pre-NGS release type not shown for compilation
  • [MBS-11933] – /oauth2/token doesn’t validate the code parameter

Improvement

  • [MBS-2221] – Description for how to set a relationship as “in” a date
  • [MBS-2418] – Show “Edit URL” edits in entity edit histories
  • [MBS-2421] – Small icon near recording / work / release / artist / … names to distinguish them
  • [MBS-3774] – Add URL relationship with begin and end dates
  • [MBS-7859] – Hide relationships from original recordings to other/derived versions in release view
  • [MBS-10054] – Better editing/viewing of URL relationships from Artist page
  • [MBS-10910] – Display renamed labels on Overview
  • [MBS-11267] – Show label for cover art pieces when reordering cover art
  • [MBS-11391] – Show changes made to external link when editing URL relationship
  • [MBS-11622] – Clean up Apple Music label URLs
  • [MBS-11650] – Add Tag statistics to profile page
  • [MBS-11680] – Group editing URL relationships by external link
  • [MBS-11693] – Give useful message when rejecting Musixmatch /album links
  • [MBS-11722] – Don’t preselect basic as language proficiency
  • [MBS-11732] – Remove LYRICSnMUSIC from lyrics whitelist
  • [MBS-11733] – Remove WikiaParoles from lyrics whitelist
  • [MBS-11788] – Guess case: Lowercase “official” in ETI
  • [MBS-11796] – Add Internet Archive logo for sidebar
  • [MBS-11797] – Guess case: Lowercase “censored”, “uncensored”, “explicit” in ETI
  • [MBS-11798] – Disallow Instagram /accounts link and other internal links
  • [MBS-11808] – Don’t show entities in tag pages where vote count for tag is lower than 1
  • [MBS-11810] – Merge queue: Rename “disc title” to “medium title”
  • [MBS-11811] – Make Tracklist editing buttons behave consistently on collapsed mediums
  • [MBS-11823] – Don’t insert line breaks inside tag words
  • [MBS-11824] – featured artist reports should look for featured artists without a space
  • [MBS-11825] – Use consistent order for art types when editing vs adding cover art
  • [MBS-11833] – Drop “f.” from the featured artists reports
  • [MBS-11846] – Display release artist on release group view
  • [MBS-11850] – Make footer links more visible
  • [MBS-11862] – Do not show deprecated relationship types with 0 uses in selectors
  • [MBS-11863] – Allow DNB links for works
  • [MBS-11875] – Braille should not be looked for in “Releases with unlikely language/script pairs” in connection to a spoken/written language
  • [MBS-11888] – Automatically set/disable ended when setting an end date in DateRangeFieldset
  • [MBS-11891] – Use HTTPS when linking to Jira
  • [MBS-11912] – Also allow Mainly Norfolk as a lyrics source
  • [MBS-11913] – Auto-select “stream” additionaly to “download” for Jamendo URLs
  • [MBS-11915] – Don’t show area icon if there’s already a flag icon
  • [MBS-11924] – Remove redundant tabs/links/info from deleted editor profiles

New Feature

  • [MBS-9426] – Interface to remove usernames from blocked list
  • [MBS-9902] – Support auto-select/cleanup/validation of more than one relationship type for external links
  • [MBS-11689] – Report: pseudo-releases marked as the original tracklist
  • [MBS-11828] – Add admin interface for checking whether a username is blocked
  • [MBS-11848] – Add report for “Releases with Amazon cover art without any Cover Art Archive images”

React Conversion Task

  • [MBS-11834] – Convert Add Release edit to React
  • [MBS-11835] – Convert Change Wikidoc edit to React
  • [MBS-11836] – Convert Edit Barcodes edit to React
  • [MBS-11837] – Convert Edit Release Label edit to React
  • [MBS-11838] – Convert Edit Release edit to React
  • [MBS-11839] – Convert Remove Relationship Attribute edit to React
  • [MBS-11840] – Convert Reorder Mediums edit to React

Other Task

  • [MBS-11805] – Add flow typing to guess case code
  • [MBS-11856] – Remove reports for releases with cover art relationships
  • [MBS-11928] – Drop consul-template for deployment

Acoustic similarity in AcousticBrainz

We’re pleased to announce that we have just released acoustic similarity in AcousticBrainz. Acoustic similarity is a technique to automatically identify which recordings sound similar to other recordings, using only the recordings themselves, and not any additional metadata. This feature is available via the AcousticBrainz API and the AcousticBrainz website, from any recording page. General documentation on acoustic similarity is available at https://acousticbrainz.readthedocs.io/similarity.html.

This feature is based on work started by Philip Tovstogan at the Music Technology Group, the research group that provides the essentia feature extractor that powers AcousticBrainz. The work was continued by Aidan Lawford-Wickham during Summer of Code 2019. Thanks Philip and Aidan for your work!

From the recording view on AcousticBrainz, you can choose to see similar recordings and choose which similarity metric you want to use. Then, a list of recordings similar to the initial recording will be shown.

These metrics are based on different musical features that the AcousticBrainz feature extractor identifies in the audio file. Some of these features are related to timbral characteristics (generally, what something sounds like), Rhythmic (related to tempo or perceived pulses), or AcousticBrainz’s high-level features (hybrid features that use our machine learning system to identify features such as genre, mood, or instrumentation).

One thing that we can immediately see in these results is that the same recording appears many times. This is because AcousticBrainz stores multiple different submissions for the same MBID, and will sometimes get submissions for the same recording with different MBIDs if the data in MusicBrainz is like this. This is actually really interesting! It shows us that we are successfully identifying that two different submissions in AcousticBrainz as being the same using only acoustic information and no metadata. Using the API you can ask to remove these duplicated MBIDs from the results, and we have some future plans to use MusicBrainz metadata to filter more of these results when needed.

What’s next?

We haven’t yet performed a thorough evaluation of the quality of these similarity results. We’d like people to use them and give us feedback on what they think. In the future we may look at performing some user studies in order to see if some specific features tend to give results that people consider “more” similar than others. AcousticBrainz has a number of additional features in our database, and we’d like to experiment with these to see if they can be used as similarity metrics as well.

The fact that we can identify the same recording as being similar even when the MusicBrainz ID is different is interesting. It could be useful to use this similarity to identify when two recordings could be merged in MusicBrainz.

The data files used for this similarity are stand-alone, and can be used without additional data from AcousticBrainz or MusicBrainz. We’re looking at ways that we can make these data files downloadable so that developers can use them without having to query the AcousticBrainz API. If you think that you might be interested in this, let us know!

GSoC 2021: Pin Recordings and CritiqueBrainz Integration in ListenBrainz

Hi! I am Jason Dao, aka jasondk on IRC. I’m a third year undergrad at University of California, Davis. This past summer, I’ve been working with the MetaBrainz team to add some neat features to the project ListenBrainz.

Continue reading “GSoC 2021: Pin Recordings and CritiqueBrainz Integration in ListenBrainz”

GSoC’21: MusicBrainz Android App: Dawn of Showdown

Greetings, Everyone!

I am Akshat Tiwari (akshaaatt on IRC), an undergraduate student from Delhi Technological University, India.

It has been an exhilarating experience for me, right from submitting a proposal for GSoC to becoming a part of a fantastic community.

The Google Summer of Code 2021 Edition finally comes to an end after the 3-Month long journey. I will be detailing the journey of working towards my summer of code project today. This blog is a summary of all the work done.

Continue reading “GSoC’21: MusicBrainz Android App: Dawn of Showdown”

GSoC 2021: Push the URL relationship editor to the next level

Hello everyone, I’m Yang Yang (aka yyoung), an undergraduate student from Shanghai Jiao Tong University, China. I am honored to be accepted as a student of Google Summer of Code 2021 in MetaBrainz Foundation to work on the improvements of external links editor. I had a good time with the MusicBrainz dev team this summer, and it was a valuable experience for me. This is a final report and overview of my work.

Continue reading “GSoC 2021: Push the URL relationship editor to the next level”

GSoC 2021: Complete Rust binding for the MusicBrainz API

Hi Everyone! I am Ritiek Malhotra (ritiek on IRC) and recently completed my undergraduate degree in Computer Science and Engineering. I participated in Google Summer of Code ’21 and worked on musicbrainz_rs – a library wrapper on the MusicBrainz Web API written for the Rust programming language.

Continue reading “GSoC 2021: Complete Rust binding for the MusicBrainz API”