Looking for work? Check out our jobs area.

Mp3 ID4 tag 1.00

Submitted By: Unknown
Rating: (Not rated) (Rate It)


???   ??           ??           ???   ???     ??     ?
         ?   ?             ?          ?   ? ?   ?   ?  ? ?????
        ?     ?  ??    ??  ?  ? ?  ?  ????  ?????   ?     ??
        ?  ?  ? ?  ?  ?    ? ?  ?  ?      ? ?   ?   ?     ?
        ?  ?  ? ?  ?  ?    ??   ?  ?  ?   ? ?   ?   ?    ?
         ?? ??   ?? ?  ?? ?? ??  ??    ???   ???  ?????   ??
                              ?  ?                  ?
                               ??                   ?
                      http://www.wackysoft.cjb.net

                        ????? ????????       ????
                         ???   ???  ???     ?????
                         ???   ???   ???   ??????
                         ???   ???   ???  ??? ???
                         ???   ???   ??? ?????????
                         ???   ???   ???      ???
                         ???   ???  ???       ???
                        ????? ????????       ?????

__--~~--__--~~--__--~~--__--~~--__--~~--__--~~--__--~~--__--~~--__--~~--__--~
                     B E T T E R    T H A N    I D 3
--__  __--__  __--__  __--__  __--__  __--__  __--__  __--__  __--__  __--__
    ~~      ~~      ~~      ~~      ~~      ~~      ~~      ~~      ~~      ~



 1. What's ID4 ?
 2. ID4 Structure
 3. Additional info
 4. WackyS8FT





 1. What's ID4 ?
~~~~~~~~~~~~~~~~~

   ID4 is an improved version of ID3. It allows you to give titles, artists,
 albums and comments to MP3's up to 255 characters length, and also supports
 65537 genres. The Year is 4-byte, as in ID3. The only little problem is to
 erase the end of the MP3 if the new ID4 is smaller than the previous ID4 or
 ID3 (127 bytes), I think... The maximum size of the ID4 is 1036 bytes. I
 don't know if you can erase the end of a file in some other programming
 language, but in QBASIC (! - the original P.L. in wich ID4 was made - !) I
 think you can't... I solved this problem by adding some "clear" fields to
 the ID4, but then it has the same size as the ID4 before...


 2. ID4 Structure
~~~~~~~~~~~~~~~~~~

   The ID4 structure is not very complicated, but it is more complicated than
 ID3:

 Value           | Bytes  Type  | Description
-----------------+--------------+--------------------------------------------
 ID4TAG          | 3     STRING | The ID of the ID4 - in ID3 it is "TAG"
 Title Length    | 1     BYTE   | The length of the title in bytes
 Title           | TiLen STRING | The MP3 title
 Artist Length   | 1     BYTE   | The length of the artist in bytes
 Artist          | ArLen STRING | The MP3 artist
 Album Length    | 1     BYTE   | The length of the album in bytes
 Album BYTEs     | AlLen STRING | The MP3 title
 Year            | 4     STRING | The MP3 year
 Comment Length  | 1     BYTE   | The length of the comment in bytes
 Comment         | CoLen STRING | The MP3 comment
 Clear           | x     BYTES  | Clear - It's not necessary
 ID4 Length      | 2     INTEGER| The length of ID4 - start of ID4 is
                 |              | LengthOfFile(MP3) - ID4LEN
 ID4 Descriptor  | 1     BYTE   | It is the ASCII code 4, used to detect ID4
                 |              |
-----------------+--------------+--------------------------------------------

 IMPORTANT:  (?)
   1. If you can erase the end of the file, you don't need the clear fields,
      just erase the od tag and write the new one.
   2. Note that all the title, artist, album and comment strings have a byte
      that holds the length of their strings
   3. The year is defined like in ID3, that means a string of 4 bytes
   4. Always calculate the ID4 length like this:
        16 + Title Length + Artist Length + Album Length + Comment Length
          { + Clear Fields  }

      That 16 is: 3  ID4TAG
                  1  Title length
                  1  Artist length
                  1  Album length
                  1  Comment length
                  4  Year
                  2  Genre
                  2  ID4 Size
                  1  ID4 Descriptor
                -----------------------
                 16  Minimum ID4 Size

   5. ID4TAG is always "ID4"
   6. ID4 Descriptor is ASCII value 4
   7. To detect an ID4, the last byte in the file is 4, and at the beginning
      of the ID4 (LOF(MP3) - ID4Len) is "ID4"
   8. I think the ID4 cannot exceed 1036 bytes:
           
                 16  Minimum ID4 size
                255  Maximum Title size
                255  Maximum Artist size
                255  Maximum Album size
                255  Maximum Comment size
              -----------------------------
               1036  Maximum ID4 Size


 3. Additional Info
~~~~~~~~~~~~~~~~~~~~

   As mentioned before, you don't need to use any clear fields. You can erase
 the old TAG (ID3/ID4) and write the new one. That means you have to change
 the file size and then write the ID4 at the end of the file. If you do use
 the clear fields, you don't have to write them, just write the ID4SIZE and
 ID4 Descriptor at the end of the file, or LengthOfFile(MP3) - 3

   There should be QBASIC Samples included:

    ID4SAVE.BAS  -  Writes an ID4 to an MP3, using (and writing) clear fields
                    and overwriting any ID3 and ID4
    ID4LOAD.BAS  -  Reads an ID4 from an MP3



   I M P O R T A N T :

  If you use ID4 in any of your programs, you must give credit and e-mail to:

       Teodor Tomic aka ch!ckuaua, Croatia
       [[Email Removed]]

  If you have any questions (or answers) or comments, e-mail me:
       [[Email Removed]]

          Copyright (C) 26/04/2000 WackyS8FT. All rights reserved.



 4. WackyS8FT
~~~~~~~~~~~~~~

   If you want to join WackyS8FT, e-mail: [[Email Removed]]

   WackyS8FT URL: http://www.wackysoft.cjb.net

   Wackysoft members: ch!ckuaua [13]


    ch!ckuaua made this file (and ID4)!
   COMMENT: Count me 13, yes, 13 years of life !



------------------------------------!EOF.!------------------------------------
 
Popular resources and forums for programmers on Programmersheaven.com
Assembly, Basic, C, C#, C++, Delphi, Java, JavaScript, Pascal, Perl, PHP, Python, Ruby, Visual Basic
© Copyright 2009 Programmersheaven.com - All rights reserved.
Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
Publisher: Lars Hagelin. Read the latest words from the publisher here.
Be the first to sign up for Lars Hagelin’s In-depth Outsourcing Newsletter here.
bootstrapLabs Logo A bootstrapLabs project.