Searching BPM tag for char and then preform existing action

I am working with some files that are transitional, I make the bpm tag like 100-122 and then I have an action that copies -122 to the label (i.e. Publisher tag = label tag in Serato) tag to be able to use it in Serato.

I have to do this as a manual action like:

format value > "Publisher":%bpm%

Guess values > "%Publisher%":%X1%-%PUBLISHER%

format value > -%PUBLISHER%

That is a manual single action that does what I describe above. I'd like to be able to have a way to only execute that sequence shown ONLY if the bpm tag has a "-" char in it. Clearly I'm the one filling in the BPM tag to put the "-" char there but I have a super action that does major fixes of tags based on how I tag my files based on my preferences. I'd like to be able to add this to that super action but not sure how to incorporate it as a decision process.

Anyone have any ideas?

This only tags if bpm as a - char:

Action type: Guess values
Source format: %bpm%
Guessing pattern: %x1%-%PUBLISHER%

//Don't know what your third action is supposed to do.

Maybe the formatting wasn't clear, here is a screen shot of the action:

Action type: Guess values
Source format: $replace(%bpm%,-,~-)
Guessing pattern: %x1%~%PUBLISHER%

Is the value of x1 supposed to stay? You can write %dummy% instead if you don't need that field.

No actually, I don't need X1. It was something someone when I first started using the program helped me out with or it was a help thread. So if there is a way not to use it, then that would be even better.

So your last entry would be the way to set it up and just replace X1 with %dummy% as mentioned? If so I'll give it a go....


Thanks for your help.


I tried the x1 and dummy and both work, so I am using dummy.

There is one minor issue, and I haven't played with it yet, but its copying the ~

Upon closer inspection, I see that it is working, but its not happy with more than 1 ~ in the bpm. Many of my tracks have 3 to 6 transition levels. Hopefully a possible fix?

I thought there was only one hyphen in the bpm tag...

So how do you want to split the bpm values?
If you have 130-111-134-90 what should go to the publisher tag?

Serato follows the MP3 standard format which is numbers only. So I would want the first BPM value and then the first hyphen and everything following to copy to the label/publisher tab. Even though MP3TAG supports showing it, when the file is loaded in Serato, it only displays the number before the first hyphen it sees, so I put the BPM field and Label field side by side in serato so I can see the transistion data if it exists for that track.

So look at track 3 in the image, that is a standard one 87-127 so

BPM is 87 ---- Label is -127

Track 1 example 130-111-134-90:

BPM is 130 ---- Label is -111-134-90

So as shown, it is "almost" right and in the correct format, it was just adding the ~.

If it didn't add the ~ to the labels in my example image, it would match what I'm asking for above.



So you can just add a normal "Replace" action that replaces ~ with nothing in the Publisher tag.

Hello kittmaster, you should avoid to misuse the BPM tag-field with strange value or datatype.

The ID3v2.3 and ID3v2.4 standard defines ...
The 'BPM' frame contains the number of beats per minute in the mainpart of the audio.
The BPM is an integer and represented as a numerical string.

Better you create an user-defined tag-field, for instance BPM_TRANSITION.
This tag-field can hold the complete BPM transition sequence.

The tag-field BPM with the starting BPM value can be simply created from the tag-field BPM_TRANSITION by ...

BPM <== $num(%BPM_TRANSITION%,1)

The tag-field BPM_TRANSFOLLOW (you want to use the tag-field PUBLISHER) can be simply created from the tag-field BPM_TRANSITION by ....

BPM_TRANSFOLLOW <== $replace('^'%BPM_TRANSITION%,'^'%BPM%'-',)

You can use action "Format value" or converter "Tag -Tag" for the value assignments.


Thanks for the feedback guys.

Just a quick comment to DetlevD, I will take a good look at your solution which seems to make the most sense, but would like to add that regarding the datatype of the BPM tag, when Serato does an "analysis" on any file to create the waveform data, they "store" it within the BPM tag AFTER the last valid numerical Char. I've done extensive testing to confirm those results and Serato indirectly confirmed it as well. So they are in reality, screwing up the tag as well. While not right by the definition of TBPM, "so far" its been ok on multiple levels. Ultimately I agree with your assessment of the proper use of the tag.

I will look at the best way to go, thanks guys for the input.