View Issue Details

IDProjectCategoryView StatusLast Update
0005197JEDI VCL00 JVCL Componentspublic2011-06-10 16:09
ReporterwilstyxAssigned ToAHUser 
Status resolvedResolutionfixed 
Product Version3.38 
Target VersionFixed in Version3.40 
Summary0005197: JVID3V2 and BPM tags
DescriptionI had ran into a problem with tags written by several other tagging
programs and realized that since BPM can have a decimal then it can
not be a Cardinal Value. A quick search of the source code and
a couple of line changes and it was pretty simple to fix !
Although this would break somebody elses use of it !
Thought it might be better to make it a second property of
BPMString or something just to keep it backward compatable.
I have a set of files that I created that torture any tagging
library to show its weakness! I could not find any tagging
library (that supported BPM as many do not ) that used an
integer (Cardinal) value.
I looked up the definition on the ID3V2 Web Site and
it says :

 BPM Defined as ( )
     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.

Even the official site says its an integer ? ? ?

Mixmeister and Winamp writes the TBPM Frame with the unicode byte order mark ( I can't think of what else it would be 01 FF FE ? ) and then a numerical string ( with zero's in it ) ie 31 00 32 00 30 00 2e 00 35 00 35 The GetText pulls the value right out ! When the SetText routine fires it writes the BPM string as it a simple numeric string ie 31 32 30 2E 35 35 ( 120.55 ) !
Now sure what you would want to do with this but here it is !
Thanx for a great set of components.
below find the changes I made to use the component in my project.

Changes to JvID3V2Base.pas
line #
1288 -- TJvID3TextFrame, { fiBPM } { was NumberFrame changed 03/15/10 DW }

Changes to JVID3V2.pas
         // this changed from Cardinal and GetNumber SetNumber 03/15/10 dw
71 -- property BPM: WideString index fiBPM read GetText write SetText
         stored False;

Additional InformationThanks for the quick fix on Access Violation JVID3V2Demo.exe issue # 5165 obones!
I knew it was simple just could not see it !
TagsNo tags attached.



2010-04-02 13:11

developer   ~0017343

There is a now a new property BPMStr: WideString. The old BPM: Cardinal is still there but uses the BPMStr property to read and write the value.

Issue History

Date Modified Username Field Change
2010-03-15 23:40 wilstyx New Issue
2010-04-02 13:11 AHUser Note Added: 0017343
2010-04-02 13:11 AHUser Status new => resolved
2010-04-02 13:11 AHUser Fixed in Version => Daily / SVN
2010-04-02 13:11 AHUser Resolution open => fixed
2010-04-02 13:11 AHUser Assigned To => AHUser
2011-06-10 16:09 obones Fixed in Version Daily / SVN => 3.40