Picard 2.3 Beta 1

@IvanDobsky would you mind create tickets for bugs you detected and for features/improvements you suggest. It helps us a lot to have someone who’s testing the app in depth, but we need to keep track of things to do.

You’re right about the lack of feedback, we tried to improve things over years, but to improve things significantly in this field we’ll need to rewrite a lot of code, that’s planned.

All suggestions about UI improvements are very welcome, please add screenshots/mockups to tickets, so we can see immediatly what is expected.

Thanks for testing and helping improving Picard!

8 Likes

I think there is some confusion here. First of, it’s not really that “Scan” is the old function and it gets replaced with new “Generate AcoustID fingerprints” button. Both serve different purposes.

“Generate AcoustID fingerprints” does calculate the fingerprint (using the fpcalc utility) for the files. It does not do any requests to the AcoustID server. It was added to address the use case that people wanted to submit data (fingerprints) to AcoustID but did not want to use AcoustID to identify their files.

The fingerprint is different from the AcoustID. The fingerprint is directly generated from the audio data using a mathematical algorithm. It currently is not stored in the files, as it is easy and reasonable fast to regenerate. So if you load back a file into Picard and want to submit its fingerprint to AcoustID you need to generate that fingerprint again. But you really don’t need this fingerprint permanently, it is only of use for querying the AcoustID server for matches or submitting it to AcoustID.

The fingerprint itself was basically invisible in Picard before. Once generated Picard kept it around as long as the file was loaded, but there was no indication whether a file had a fingerprint generated or if it was already submitted to AcoustID or not. Hence the new “Fingerprint status” column.

Now there is that magical AcoustID. The AcoustID is kind of a grouping of similar fingerprints. One important feature of the AcoustID fingerprints is that they can be compared for similarity. So while the fingerprint for e.g. a lossy file might be slightly different (due to differences in audio) it will be very similar to other fingerprints of the same recording. To get the AcoustID one needs to query the AcoustID server using the fingerprint. AcoustID will search its database for AcoustID with matching fingerprints attached and will return a search result. This result can also include details about matching MB releases as the AcoustID serves as the link between fingerprints and MusicBrainz data. It’s important to note that there is no guarantee the AcoustID will return any results, it is possible there is no match for this fingerprint. It’s also possible there is an AcoustID, but no linked MusicBrainz data.

The “Generate AcoustID fingerprints” action currently does not query the AcoustID server for matches, hence there is no AcoustID in return. I intentionally left this out. You don’t need this to submit the fingerprint to AcoustID but it slows down the entire process by a factor of 2.5 - 4 (or even more, depending on your internet speed and the actual response time of the server).

We could of course do this lookup to get the AcoustID just for the sake of it. But not sure how to call this then without raising wrong expectations. I intentionally called the action “Generate AcoustID fingerprints”, because this is what it does and what you can actually “generate” (aka calculate). You cannot “generate” AcoustIDs, you can search for matching AcoustIDs. But you probably won’t get one.

There is no need for neither dragging nor clustering, you can generate the fingerprints directly on the right. Actually this is kind of the idea here.

When you hit scan for files on the left which don’t have any AcoustID tag yet you will basically never see any AcoustIDs on the left. That’s because as soon as the response from the AcoustID server comes the file will be moved to the right. The only exception to this should be the rare case where there is an AcoustID for the file but no MB recording linked to it, then the file would stay on the left.

7 Likes

@outsidecontext sorry for the confusion again. So a “fingerprint” does not come up with the same numeric string as the AcoustID? This is why it is thrown away?

And it is not “quick” when you are working with 94 files, hence the timing bug I thought I had spotted.

I made the wrong guess on this stuff. I didn’t read all the development threads so was not aware of this difference.

I was one of those people who asked for a Generate AcoustID button, but I thought it was going to actually fully Generate a usable AcoustID that could be stored in the file without looking up a match on the MusicBrainz release database. I now better understand what it is and will have to go back to work out how I’d get it properly into my workflow.

@Zas you can see by the reply from @outsidecontext that there is not really any point in me putting tickets in for this stuff as I just misunderstood everything again. Looks like nothing I saw was bugs, just misunderstood features.

Sorry for wasting everyone’s time.

This is why I try and stay away from the tickets side. I can’t talk your language.

(Sorry, having a really bad day here. Apologies for being so negative.)

1 Like

Not mine :wink:

I would probably never have learned or understood the workings of these features if you hadn’t brought it up.
(and if the coder-wizards hadn’t given these very informative and eloquent answers of course…)

1 Like

I’m glad someone got something from it. :slight_smile: It is frustrating for me to have wasted so many hours over a complete misunderstanding of a feature. Next time I’ll leave it until things are better documented so I can test in a way that helps people.

Is the OS X minimum version bumped with this release? I’ve having trouble getting it to run on 10.12. If I run it from the DMG, it quits immediately. If I copy it elsewhere to run, I get a message that it “is damaged and can’t be opened. You should move it to the Trash.”

Running from the command line gets me:

[53512] Error loading Python lib ‘/Volumes/MusicBrainz Picard 2.3.0b1/MusicBrainz Picard.app/Contents/MacOS/Python’: dlopen: dlopen(/Volumes/MusicBrainz Picard 2.3.0b1/MusicBrainz Picard.app/Contents/MacOS/Python, 10): Symbol not found: _futimens
Referenced from: /Volumes/MusicBrainz Picard 2.3.0b1/MusicBrainz Picard.app/Contents/MacOS/Python (which was built for Mac OS X 10.13)
Expected in: /usr/lib/libSystem.B.dylib
in /Volumes/MusicBrainz Picard 2.3.0b1/MusicBrainz Picard.app/Contents/MacOS/Python

Which certainly looks like the minimum is now 10.13, so I guess my question is if that is known / intentional - I didn’t see it in the changelog

1 Like

I’m just trying out the portable beta - I just wanted to say thank you for the fingerprinting context menu! I always used to cluster the album and lookup, save, then drag it back and scan. So much faster now for that!

1 Like

I am sorry my answers gave you these feelings, that was definitely not my intention :frowning: Actually I value your feedback very much. I wouldn’t have written a lengthy reply trying to explain the fingerprinting otherwise.

I know the fingerprinting is complicated, I needed a while to wrap my head around it as well. The problem is that it is primarily a tool meant to be used by software for identifying audio files. But technical details about it surface at various points to the user. I find it difficult to balance the user expectations generated by this with a usable and functional UI.

Yes, the fingerprint is quite different, look at this textual representation of an AcoustID fingerprint. Another way to present those fingerprints is graphical. The text representation is not really suited for display. I experimented with displaying this fingerprint in the tooltip for the fingerprint status, but it is not really helpful. Actually there is a defined tag in Picard acoustid_fingerprint to store this fingerprint, and Picard even can us the fingerprint from it when you run analyze. But it does not save it. I think the original idea was to cache fingerprints in the files, but AFAIK luks decided that generating a fingerprint is working fast enough to not rely on cached data from the files. But I’m considering adding an option to store the fingerprint anyway.

About your concern: So for now this “Generate AcoustID fingerprints” is really meant as a solution to submit data to AcoustID for already matched files. If your primary concern is to get the AcoustID tag filled this would need to work differently. My main problem with a button to get the AcoustID is again managing user expectations. Users expect to press this button and get an AcoustID in 100% of the cases. If not they report a bug. But actually that’s not how it works, AcoustID might very well not return a result for this fingerprint. In this case you need to match the file first, submit the fingerprint, wait a while until the server has processed the request, then try again to get an AcoustID. If not the server’s submission queue is probably longer, so wait a bit longer, try again.

I have added a ticket for this at PICARD-1732. So far I could not reproduce it.

But it would be really great if you could report things like this directly to the bug tracker. The forums are great for discussions of ideas and questions how things work, but issues reported here will quickly get lost.

4 Likes

That’s unintentional. But we changed the build system this release cycle, and this likely caused the issue (we had to update the build to address requirements of macOS 10.15, and also we unified a lot of the packaging and deployment, which previously was handled by two separate services for Windows and macOS). As the limiting factor seems to be the Python install I will see whether we can fix this. We should be able to use the official Python binaries which should run on macOS 10.12 still.

My main problem is that I actually can’t test on macOS 10.12. I only have a single mac mini which currently runs 10.15. I probably could try to install a virtualized macOS 10.12 there, but that machine is already struggling with performance, I doubt it would work well :frowning:

Update: Tracked at PICARD-1733

1 Like

It is not your answers that did that. I am more annoyed at wasting my own evening on a total misunderstanding of how it worked. Thank you for your time to explain it. When time allows I’ll try and look again at it.

I also realise I am confusing the names of “fingerprint” and “AcoustID” in my descriptions above. Better than when I first joined and spent six months calling it “AcousticID”. Even allowing for the WrongSpeak there are still issues described in there.

To reproduce it is about timing and working with 100 large FLAC files. So go to a slower PC to test. Or put a big load onto the computer at the same time - CPU and network (run fifteen YouTube videos in the background or similar?). One trouble with Dev PCs is they are often powerful machines, and then the home user runs it on a slower PC.

If I can find any time in coming days I’ll see if I can make a mini video of this in action. The main step is having a long list of FLAC files being fingerprinted and lots of art being downloaded. Same with the report of pressing Fingerprint then Lookup on 100files. If lookup gets that match too quick, the fingerprint generation gets abandoned.

When the files are lost dragging from right to left I guess a memory leak will build up due to the way the list shrinks.

Sorry about the Tickets. Personal thing. I would get too depressed watching tickets get argued over and ignored for years. Maybe another month I’ll have a better head and able to make yet another account up and try and get my head around that Ticket system.

1 Like

I just made the same mistake as @IvanDobsky - confusing the fingerprint feature with getting the AcoustIDs set in my tracks :confused:. I was looking forward to quickly updating the AcoustIDs on my tracks, but the fingerprinting feature does nothing for that. It is useful when creating new AcoustID records in the MB database, but not helpful for backfilling existing AcoustIDs.

3 Likes

@arturus I fixed the build and also got access to a test macOS 10.12. Could you try the package from https://keybase.pub/phwolfer/musicbrainz/macos-app/MusicBrainz-Picard-2.3.0.beta1%2B6937.ffd9f70f.20200206160451.dmg ? It should work.

1 Like

Works great! Thank you. Had a minor visual glitch:

That went away after I loaded files, and did not return when I quit and started the program again, so really minor, but I felt like I should note it.

2 Likes