I did something about it with my Data Conditioner tool:
Quote:
SAM is “supposed” to read the TBPM ID3v2.3 field and store the value in the SAM songlist table bpm field. Several user suggest this isn't the case so I've added another section to this task to use the TBPM field and populate into SAM following how it works with a third party DJ tool MixMeister (MM). MM calculates a BPM and stores it in the TBPM field. However, this tool doesn't quite follow the specification as MM stores a decimal number, such as 67.08, instead of an integer.
The ID3v2.3 definition of TBPM is:
The 'BPM' frame contains the number of beats per minute in the main part of the audio. The BPM is an integer and represented as a numerical string.
Rough algorithm:
Select all songs from the SAM songlist table whose BPM value is null or 0.
If the ID3v2.3 TBPM field of the song source file is not blank (null or empty) and is greater than 0 then update the SAM songlist bpm column with the TBPM rounded to the nearest integer and add or replace the bmp (yes, bmp is used in the xfade to store the BPM) portion of the SAM songlist table xfade column with the full TBPM value.
The TBPM field is conditioned using the following rules:
Trim leading and trailing whitespace (spaces, tabs ...).
Convert to a float, if that fails then 0.0f is used.
This is a one-way task; source file to database
A future task may read the SAM songlist table xfade column and if a bmp value exists write it to the SAM songlist table bpm column as well as to the source song file TBPM ID3v2.3 tag.
_________________
- Steve Kunitzer
- SVS (Spacial Volunteer Support) / Forum Administrator

