metadata in max/msp

hthaw's icon

hi all -
sorry to be reposting about this issue, which has been discussed multiple times in the forum history..
but after looking at three or so unresolved messages, i still don't have a firm solution for this:
i'd like to write basic ID3 tags (or XML or whatever works best - so many metadatas!) into an audio file. then i'd like a max object that can read 'em. ..does it exist? can someone help?

Valery_Kondakoff's icon

Here is what I have found today on Volker Böhm site (not tested it yet): metatag — read and write metadata tags for media files, by J.Bernstein. New version compiled with “TagLib 1.11” + some new features.
https://vboehm.net/downloads/

volker böhm's icon

the metatag object in my repository is an offspring of Jeremy Bernstein's metag, which is now located here https://github.com/jeremybernstein/metatag
as my copy is somewhat obsolete now, I will delete it sooner or later.
But on https://vboehm.net/Downloads you can find 'vb.metatag' which is a newer version and takes a slightly different approach (based on a dictionary) and offers some more features.

eLud's icon

Hello, metatag is not supportet under m1 architechture as it seems, so that's no solution.

and @volker your vb.metatag doesnt seem to be online anymore

volker böhm's icon

@Edis, I dropped it out of my supported objects as I had difficulties including the tag.framework for the M1 build. I keep running into security problems on Monterey, which is frustrating, but I still stubbornly refuse to pay for an apple developer account.
Anyway, I did an M1 build for somebody who asked some time ago, which I just uploaded here:
https://vboehm.net/downloads
Please note that with this version you have to copy/move the tag.framework from vb.metatag/source/libs/taglib-build into /Library/Frameworks before using.
hth,
vb

eLud's icon

thanks! works like a charm :)

Sorrenti's icon

vb.metatag is a fantastic object that I've used many times. However, I have a question and I hope @Volker Böhm can answer it for me. I don't think vb.metatag works in a Max For Live device, does it? For instance, I've created a patch that uses vb.metatag to extract cover art from a song when I load it into an Ableton Live slot. I noticed that when the Max editor is open, vb.metatag creates a cover art file in the /tmp folder. But when I save the patch as an M4L device, it doesn't seem to work.
Any help or advice on this matter would be greatly appreciated. Thanks in advance!

volker böhm's icon

Hi, I can't reproduce this - works fine for me, also in M4L .
Any more specifics other than "it doesn't seem to work"?

Sorrenti's icon

Hey Volker,

Thank you for your response and apologies for my delay. I've recorded a video to make things clearer.

I've programmed a M4L device using vb.metatag to observe song metadata in a specific Live Slot. As you can see in the video, when I change the song with the Max editor open, it works perfectly. You can notice how the song folder changes, the general song info is displayed in a dict.view object, and the cover art is shown in an fpic object.

However, when I close the Max editor, it doesn't work. The song folder continues to change, but the metadata extracted by vb.metatag doesn't.

Please find the video attached for your reference.

Thanks again for your help!

For Volker Böhm.mov
video/quicktime 4.79 MB

volker böhm's icon

Hi, I can see that it doesn't work for you, but that's about it. Honestly, from the video
I have no idea what's going wrong and can just repeat: it works fine over here - also with the max editor closed. That being said, I'm not a Live-user and haven't used the object in that context. So there might as well be circumstances where it fails to deliver.
Feel free to post (a trimmed down version of) your patch/device.

volker böhm's icon

Sorry forgot to reply - tested your device and it works fine.
It could be simplified, though. Why would you need the [text] object in there and the [deferlow]s ?
I would probably deferlow the 'getpict' message (see screenshot below), but as I said, your device works over here even in the orignal form.