Accesso rapido:  

Forum: VirtualDJ Technical Support

Topic: useBPMFromTag preference, ie, use tag rather than VDJ analysis
There is the setting useKeyFromTag that tells VirtualDJ to use the tag value rather than the analysis-produced value.

Is there an equivalent for BPM? I have set all the BPMs in the MP3 tags, and prescan new tracks in MixMeister as for my collection it is more accurate than any other option.

Is there any way to tell VDJ to use the tag value if present?

Apologies for all the threads and thanks for any help, I am trying the docs first! Got a couple days off to evaluate.
 

Inviato Tue 06 Oct 20 @ 6:01 pm
No, there doesn't seem to be. It will take the BPM from the tag when you initially load the track to VDJ, but as soon as it's analyzed the BPM info is overwritten.

To be fair the BPM analysis in VDJ is pretty decent and most people just prefer to use one piece of software to do all the work.
 

Inviato Tue 06 Oct 20 @ 6:14 pm
Thanks. Is there any way to prevent analysis then?

No analyser gets all tracks right, some work better on some genres etc. MiK, Serato and Traktor for my collection are quite a bit more accurate than VDJ, but still let me override, and MixMeister is better still (but still maybe 92%). Not to mention I've already set these in Serato. I'd disagree most djs prefer to use one tool, I have an import chain including eg mp3gain. For such an open, configurable and enlightened design this decision by VDJ is puzzling for me - solved easily with the same approach used for key.
 

Inviato Tue 06 Oct 20 @ 8:27 pm
techtitch wrote :
this decision by VDJ is puzzling for me


I don't think the VDJ approach is unusual. Is there any other DJ software that allows BPM analysis to be turned off?

I'm curious about why you think Mixmeister has better BPM detection than anything else on the market. Can you provide some examples (artist, title, BPM)?



 

Inviato Wed 07 Oct 20 @ 8:18 am
I've only tried Serato and Traktor recently, but they both allow you to use the BPM tag in preference to the internal analyser. Services such as record pools manually ensure these tags are correct. I don't mind the default being analysis, but no other software I know makes it impossible to use the set BPM.

I had to check 3 tunes to find one VDJ got the BPM wrong on (mc pinty this just life). I also set the BPM on variable BPM tunes to match the intro and outro, as that's what I mix, whereas VDJ sets an average.

But I definitely do not want to start criticising the analysis - it's very good and maybe I'll grow to love it for prep - my request isn't about that. I have my BPMs correctly set in my mp3 tags, and even with a 5% error rate I can no longer rely on the BPM when djing. This means with the 72, in effect, I can't play VDJ without turntables, as it has no platters or pitch faders, I really don't like using mouse/keyboard, and pitch control with pads is very awkward. (This is making trialling VDJ awkward as I can't play a set, as I use time code vinyl.)

My question is why wouldn't you permit using this data, even if not by default? I get that internal analysis is also necessary for things like down beat, but in Traktor and Serato you can tell the analyser to do all analysis except BPM, exactly like in VDJ you can do this for key. There will always be a collection for which an alternative analyser, or simply a dj workflow that favours setting things up elsewhere, eg, during Ableton or Serato Studio track prep or sets of home productions, or djs who organize into file directories as part of prep, I like to do track and track list prep in Beatport Pro or foobar2000. I now have to repeat my gridding or pay a 3rd party conversion service when the data is perfect in the mp3 bpm tag. Outright banning alternative workflows, rather than just adding the option, is unlike VDJ's enlightened /flexible /empowering approach in all other areas I've looked at. VDJ most excites me because, and it's major advantage over other systems is, precisely its incredible flexibility. Hence my puzzlement.
 

Inviato Wed 07 Oct 20 @ 10:00 am
techtitch wrote :
Services such as record pools manually ensure these tags are correct

How do you know they're correct? Are you just trusting the supplier? Are you checking it against something?

Don't just assume that because the track comes from [insert name of supplier here] the BPM is correct. That's the whole idea of each software having its own analysis.

techtitch wrote :
VDJ got the BPM wrong on (mc pinty this just life)

In what way was it wrong? Double or half values are common across the board. No analysis software is 100% in this respect.
 

Inviato Wed 07 Oct 20 @ 10:14 am
techtitch wrote :
Thanks. Is there any way to prevent analysis then?

No analyser gets all tracks right, some work better on some genres etc. MiK, Serato and Traktor for my collection are quite a bit more accurate than VDJ, but still let me override, and MixMeister is better still (but still maybe 92%). Not to mention I've already set these in Serato. I'd disagree most djs prefer to use one tool, I have an import chain including eg mp3gain. For such an open, configurable and enlightened design this decision by VDJ is puzzling for me - solved easily with the same approach used for key.

1=>
BPM analysis is the core of many functions on modern DJ software.
BPM analysis is not the BPM value by it's own. It's also about detecting phase and on some occasions detecting multiple steady BPM's as well.
A lot of functions like quantize, effects timing e.t.c. rely on correct BPM analysis.
All modern DJ software do their own analysis and allow you to manually override it afterwards. VirtualDJ is no exception to that.
Using a plain BPM value without grid info (like where's first beat located) messes most modern dj software functions.
I used Mixmeister BPM analyzer in the past until VirtualDJ 8 was released, mostly because VirtualDJ 7 did not write BPM info on the tags of the files and I wanted the BPM info written on tag.
To be honest I don't think I ever found tracks that VirtualDJ would calculate BPM differently than Mixmeister as long as the track had a steady tempo.
Sure, differences on the decimal part of BPM values can (and will) exist, like 96.98 vs 97.00
But each program needs it's own analysis to perform correctly.

2=>
VirtualDJ's autoGain is no other thing than RelayPlay analysis performed by MP3Gain.
So, unless you use your files on other software as well, there's no need to do both MP3Gain and VirtualDJ autogain.
PS: If you do MP3Gain after VirtualDJ analyses a file, you need to reanalyze it for autogain to work properly.
 

Inviato Wed 07 Oct 20 @ 10:41 am
groovindj:

I know Beatport just uses analysis which is often wrong, but some record pools fully prep tracks, including setting up cue points and even alternative Serato Flip re-edits. If they've done a Flip re-edit (I think this is a bit like a set of action POIs in VDJ) they must have set up the BPM.

The analysis of MC Pinty is wrong because the beat markers are on the kick at the start of the tune, but on the rest of the tune they're all out. The correct bpm is 125, VDJ reckons 124.8.

PhantomDeejay:

> All modern DJ software do their own analysis and allow you to manually override it afterwards. VirtualDJ is no exception to that.

I do appreciate the analysis is necessary. But Serato and Traktor (and djdecks, long ago), allow you to tell them to use the BPM in the tag, by unticking 'set bpm'. That's all I'm requesting, much like you can for key using useKeyFromTag. I'd rather not have to go through my tunes manually, and a chunk of my prep is done outside my dj software. (MixMeister is my starting point, I've since vetted and corrected them all.)

> mp3gain

mp3gain was a poor example. I'm just saying alternative prep workflows could be permitted with a useBPMfromTag setting. Most professional djs I know do some prep before importing to their performance software, eg, to clean files, paths, metadata (eg, MixedInKey, Beatport Pro, various brainz clients (which I know VDJ also uses)), as you say to have data in tags or set up file structure, also Ableton warping and re-edits and now Serato Studio. I don't think VDJ need try to eliminate these or the likes of MiK. Also, grids aren't imported. A useBPMfromTag, default false, would therefore seem an easy win, easily understandable by users, in line with VDJ's dj empowering approach, with no downside? (It would certainly save me a lot of hassle or a RekordCloud sub, and mean I could try playing a set on my 72 before taking the plunge.)

> If you do MP3Gain after VirtualDJ analyses a file, you need to reanalyze it for autogain to work properly

Is this because VDJ's autogain is applied in addition to the mp3gain-modified levels? (I have set autogain to 'no' as the description says it targets 0dbA, which sounded like max just shy of clipping and not perceptual at all. Now you mention it I remember reading VDJ uses mp3gain some time ago.)
 

Inviato Wed 07 Oct 20 @ 11:35 am
techtitch wrote :
The correct bpm is 125


According to who? Based on what? This is what I'm trying to determine. Where are you getting the information from, that the BPM is "correct"?

FYI I just tried that track myself in VDJ and it analysed at circa 122 BPM. I checked through the track with the BPM Editor and it only required a very small adjustment.

The standalone analysis on my Prime 4 also says it's 122, and so does my Red Sound Micro BPM which reads it live. Ditto in Serato, Traktor and Engine Prime.

The only software to get it completely wrong is Rekordbox, which gave a BPM of 76.4 (SMH).
 

Inviato Wed 07 Oct 20 @ 12:03 pm
Using a BPM that's not properly calculated (for any software) will be just a useless info in this case.
Sure, you can use it as an attribute to manually sync tracks that's in a close range.
BUT:
Smart loops (perfect timed loops) won't work. Looping a track will make it drift.
Smart cue, smart play e.t.c will also not work.
Seeking through the track without missing beats won't work
Go to +4 -4 e.t.c (beatjump) won't work
Effects like Echo that calculate their trail based on beats won't work either.
Loop rolls won't work
E.t.c...
So, what good will a forced "correct" (according to you) BPM will do ?

Remember: Usually BPM analyzing algorithms can only do these mistakes:
1) Half/Double BPM detection (which is easily solved, and for the most part VirtualDJ takes that into account when syncing)
2) Odd time signature detection. All BPM analyzing algorithms assume that time signature is 4/4. They calculate BPM values based on that. If you have tracks that use odd timing like 3/4 or 9/8 e.t.c. BPM values may appear to be wrong. However they are still correct (as they reflect beats per minute, not beats per measure), and internally (when both tracks have the same "wrong detection") they will be able to sync properly.
Finally, BPM analyzing will give different results between different algorithms only when the tempo is not steady. If the tempo drifts or fluctuates, then there is not such thing as a correct "overall" BPM.
Even in that case VirtualDJ detection algorithm tries to find the perfect match for the largest portion of the song.

So, a plain typed in (or coming from another software) BPM value is almost as good as useless on a modern DJ software.
 

Inviato Wed 07 Oct 20 @ 12:18 pm
techtitch wrote :
The analysis of MC Pinty is wrong because the beat markers are on the kick at the start of the tune, but on the rest of the tune they're all out. The correct bpm is 125, VDJ reckons 124.8.

A typed in (external) BPM value would make the program to NOT know where to place the beat marker at all!
So, it would place it at 0:00.0 time (that in most cases is simply wrong)

Also, are you sure that the given track does not drift ?
If you manually edit it to 125 BPM as you say, does the beat markers align on all beats from start to end ?
Can you please share this file with us ?
 

Inviato Wed 07 Oct 20 @ 12:25 pm
It's this one:

 

Inviato Wed 07 Oct 20 @ 12:28 pm
Well I will still need the actual file in case it's not the original version, but an edit/remix or whatever...
 

Inviato Wed 07 Oct 20 @ 12:54 pm
My MC Pinty track does seem to slow in the middle, so my curated BPM is that of the start and finish so that sync'd mixing works whereas the VDJ one is the average. This is clearly a dumb example as I need to fix my recording but makes more sense on disco, etc. Must admit I've tried VDJ's BPM analysis on a few more tracks and it is mind-blowing; far, far better than Traktor's or Serato's! I don't know what was happening when I tried a mix and the grid was way out, I must have been not using Sync properly. I think someone should be permitted to keep BPMs they've curated, given it'd be pretty easy for VDJ. Your point seems to be that VDJ's analysis is better than that and letting DJs keep theirs would introduce more errors than not. You might be right, that you'd request a specific recording of a specific tune to tweak the algorithm is pretty mind-blowing too, sorry for wasting your time.

Will setting autoGain=auto mean the replayGain algorithm will be applied, targetting 89db avoiding clipping? The description says setting to max 0dbA which seemed non-perceptual. If true then I'll strip the mp3gain from my collection and use VDJ's, probably with 'remember' too.
 

Inviato Wed 07 Oct 20 @ 2:30 pm
techtitch wrote :
Will setting autoGain=auto mean the replayGain algorithm will be applied, targetting 89db avoiding clipping? The description says setting to max 0dbA which seemed non-perceptual. If true then I'll strip the mp3gain from my collection and use VDJ's, probably with 'remember' too.

While "auto" targets a specific db setting (0dbA), you can always lower that setting by using the zerodb setting.
So, you can change it to -1db, -3db, -6db, -9db or -12db without the need to reanalyze your tracks. And it takes effect right immediately.


 

Inviato Wed 07 Oct 20 @ 3:36 pm
docb-djPRO InfinityMember since 2019
@groovindj and @PhantomDeejay,

I recently posted a question on disabling the function you are defending. I can give you an excellent musical reason why VDJ shouldn't auto-analyze: Drum and Bass tracks

I have thousands of DnB tracks analyzed via Mixed in Key and Serato. All BPM's set properly (i.e.: between 160-180). VDJ will auto adjust the BPM to be roughly half when I load the track. If I go and use the x2 in the BPM analyzer the does not equal the original BPM. Mind you, I have manually adjusted beat grids in Serato.

Edit:

For example, I have a track that is analyzed at 170 BPM and has it's beat grid adjusted manually via Serato.

When I load that track from into VDJ (through the Serato crate it recoginzed), the BPM get's changed to 85.

So now that the BPM is wrong, my one option to fix is to use the BPM tools to double (x2) the BPM. However the end BPM isn't 170, there is an error and it ends up less than 170.

At the end of the day 85 != 170 and I shouldn't have to double the BPM (even via batch operations). Plus VDJ will end up with the wrong result if I do double the BPM :(

 

Inviato Fri 19 Nov 21 @ 9:05 pm
So, you have a track that you had to adjust it's grid manually in Serato in order to have correct BPM/Phase/Grid data.
What makes you think that the same track would get analyzed properly on another software (like VirtualDJ) then ?
Also while VirtualDJ (or ANY other software) can read the BPM value from the tag, it cannot read the adjustments you made on another software.
So, even if VirtualDJ didn't analyze the file and accepted the "170" as a BPM value, the main issue remains:
Where should it put the "grid" on the track ?
Assuming that the track has a steady tempo, without analyzing, VirtualDJ would only know the "spacing" between the grid lines. Nothing more, nothing less.
So, you would still had to adjust the grid manually in order to move the grid lines over the beats.

PS: In a perfect world, all DJ software would use the same metadata for the attributes of a track and that metadata would be interchangeable between all apps.
BUT, that's not the case!
VirtualDJ tries to read as many data as it can from different DJ software. But it can't read ALL data because the other applications use proprietary systems to store them.
Also VirtualDJ has made it's database format public for many many years. This means that everybody can interpret it and read any attribute VirtualDJ uses/stores for a track. However other applications don't read VirtualDJ data.
This means that if you need to work with 2 or more DJ software titles some work has to be done twice. It's not ideal, I get it, but that's how it is unfortunately.

Finally: I'm not "defending" a decision that VirtualDJ programmers took because of an "unknown/stubborn" reason. I'm explaining why currently there's no other way to ensure proper software functionality. (The example above with "where should the grid markers go" should be enough to understand what I'm talking about)
 

Inviato Fri 19 Nov 21 @ 11:34 pm
docb-djPRO InfinityMember since 2019
PhantomDeejay wrote :
So, you have a track that you had to adjust it's grid manually in Serato in order to have correct BPM/Phase/Grid data.
What makes you think that the same track would get analyzed properly on another software (like VirtualDJ) then ?
Also while VirtualDJ (or ANY other software) can read the BPM value from the tag, it cannot read the adjustments you made on another software.
So, even if VirtualDJ didn't analyze the file and accepted the "170" as a BPM value, the main issue remains:
Where should it put the "grid" on the track ?

<snip>



I'm loading the track from the Serato crate that VDJ found.
The BPM is set to 170 because I know from the artist that it's 170.
Beat grids are stored in the MP3 tags. ( https://support.serato.com/hc/en-us/articles/202523390-Introduction-to-Beatgrids )
Put the grid where the tag says.
If you can't find or put the a grid down, then don't.
Just don't change the BPM.


VDJ is certainly capable of giving the option to NOT change BPM.

After all, at 170 BPM (4 beats/4 bar) a track's rhythm and beatgrid will likely not match it's halved BPM counter part because not every track (especially DnB) is constant 4x4 pattern.

 

Inviato Sat 20 Nov 21 @ 2:21 am