Code archives/Audio/MP3-Infos

This code has been declared by its author to be Public Domain code.

Download source code

MP3-Infos by Vertex2003
Hi!
The following code read informations of
a MP3-file. You can read only ID3v1.0, but
i look for ID3v1.1 and 3.0 to read all informations
of a MP3-file. It can be a litle bug in this code
to read the category, but i dont know, if it realy a bug :)
cu olli
sorry for my bad English :)
; ----------------------------------------------------------------------------- 
  Info = Get_ID3v1_Info("Music.mp3") 

  If Info <> 0 Then 
      Print "Titel:       " + Get_ID3v1_Titel$(Info) 
      Print "Interpreter: " + Get_ID3v1_Interpreter$(Info) 
      Print "Album:       " + Get_ID3v1_Album$(Info) 
      Print "Year:        " + Get_ID3v1_Year(Info) 
      Print "Comment:     " + Get_ID3v1_Comment$(Info) 
      Print "Category:    " + Get_ID3v1_Category$(Info) 
  Else 
      Print "Cant read informations" 
  EndIf 

  FreeBank Info : WaitKey : End 
; ----------------------------------------------------------------------------- 

; ----------------------------------------------------------------------------- 
  Function Get_ID3v1_Info(File$) 
     Local Stream = ReadFile(File$) 
     Local Info = CreateBank(127) 
     Local B,ID3$,TAG$ 
    
     ; Check if file exist 
     If Stream = 0 Then 
         Return False 
     EndIf 
    
     ; Check if this a ID3-Tag 
     For B = 1 To 3 
         ID3$ = ID3$ + Chr$(ReadByte(Stream)) 
     Next 
     If ID3$ <> "ID3" Then 
         CloseFile Stream 
         Return False 
     EndIf 

     ; Poke the infos in the Info-Bank 
     SeekFile Stream,FileSize(File$) - 128 
     For B = 0 To 126 
         PokeByte Info,B,ReadByte(Stream) 
     Next 
     ; Check For "TAG" 
     For B = 0 To 2 
         TAG$ = TAG$ + Chr$(PeekByte(Info,B)) 
     Next 
    
     If TAG$ <> "TAG" Then 
        CloseFile Stream 
        FreeBank Info 
        Return False 
     EndIf 
    
     ; Close the file 
     CloseFile Stream 
    
     ; Return the handle of the Info-Bank 
     Return Info 
  End Function 
; ----------------------------------------------------------------------------- 

; ----------------------------------------------------------------------------- 
  ; Read the titel 
  Function Get_ID3v1_Titel$(Info) 
      Local B,Byte,Titel$ 
      For B = 3 To 3 + 30 
          Byte = PeekByte(Info,B) 
          If Byte <> 0 Then 
              Titel$ = Titel$ + Chr$(Byte) 
          Else 
              If Len(Titel$) > 0 Then 
                  Return Titel$ 
              Else 
                  Return "Unknown" 
              EndIf 
          EndIf 
      Next 
  End Function 

  ; Read the interpreter 
  Function Get_ID3v1_Interpreter$(Info) 
      Local B,Byte,Interpreter$ 
      For B = 33 To 32 + 30 
          If Byte <> 0 Then 
              Interpreter$ = Interpreter$ + Chr$(Byte) 
          Else 
              If Len(Interpreter$) > 0 Then 
                  Return Interpreter$ 
              Else 
                  Return "Unknown" 
              EndIf 
         EndIf 
      Next 
  End Function 

  ; Read the albumname 
  Function Get_ID3v1_Album$(Info) 
      Local B,Byte,Album$ 
      For B = 63 To 63 + 30 
          Byte = PeekByte(Info,B) 
          If Byte <> 0 Then 
              Album$ = Album$ + Chr$(Byte) 
          Else 
              If Len(Album$) > 0 Then 
                  Return Album$ 
              Else 
                  Return "Unknown" 
              EndIf 
          EndIf 
      Next 
  End Function 

  ; Read the yaer 
  Function Get_ID3v1_Year(Info) 
      Local B,Byte,Yaer$ 
      For B = 93 To 93 + 4 
          Byte = PeekByte(Info,B) 
          If Byte <> 0 Then 
              Yaer$ = Yaer$ + Chr$(Byte) 
          Else 
              If Len(Yaer$) > 0 Then 
                  Return Yaer$ 
              Else 
                  Return "Unknown" 
              EndIf 
          EndIf 
      Next 
  End Function    

  ; Read the comment 
  Function Get_ID3v1_Comment$(Info) 
      Local B,Byte,Comment$ 
      For B = 97 To 97 + 30 
          Byte = PeekByte(Info,B) 
          If Byte <> 0 Then 
              Comment$ = Comment$ + Chr$(Byte) 
          Else 
              If Len(Comment$) > 0 Then 
                  Return Comment$ 
              Else 
                  Return "Unknown" 
              EndIf 
          EndIf 
      Next 
  End Function 

  ; Read the Category 
  Function Get_ID3v1_Category$(Info) 
      Local Byte = PeekByte(Info,126) 
      Select Byte 
          Case 000 : Return "Unknown" 
          Case 001 : Return "Blues" 
          Case 002 : Return "Classic Rock" 
          Case 003 : Return "Country" 
          Case 004 : Return "Dance" 
          Case 005 : Return "Disco" 
          Case 006 : Return "Funk" 
          Case 007 : Return "Grunge" 
          Case 008 : Return "Hip-Hop" 
          Case 009 : Return "Jazz" 
          Case 010 : Return "Metal" 
          Case 011 : Return "New Age" 
          Case 012 : Return "Oldies" 
          Case 013 : Return "Other" 
          Case 014 : Return "Pop" 
          Case 015 : Return "R&B" 
          Case 016 : Return "Rap" 
          Case 017 : Return "Reggae" 
          Case 018 : Return "Rock" 
          Case 019 : Return "Techno" 
          Case 020 : Return "Industrial" 
          Case 021 : Return "Alternative" 
          Case 022 : Return "Ska" 
          Case 023 : Return "Death Metal" 
          Case 024 : Return "Pranks" 
          Case 025 : Return "Soundtrack" 
          Case 026 : Return "Euro-Techno" 
          Case 027 : Return "Ambient" 
          Case 028 : Return "Trip-Hop" 
          Case 029 : Return "Vocal" 
          Case 030 : Return "Jazz+Funk" 
          Case 031 : Return "Fusion" 
          Case 032 : Return "Trance" 
          Case 033 : Return "Classical" 
          Case 034 : Return "Instrumental" 
          Case 035 : Return "Acid" 
          Case 036 : Return "House" 
          Case 037 : Return "Game" 
          Case 038 : Return "Sound Clip" 
          Case 039 : Return "Gospel" 
          Case 040 : Return "Noise" 
          Case 041 : Return "AlternRock" 
          Case 042 : Return "Bass" 
          Case 043 : Return "Soul" 
          Case 044 : Return "Punk" 
          Case 045 : Return "Space" 
          Case 046 : Return "Meditative" 
          Case 047 : Return "Instrumental Pop" 
          Case 048 : Return "Instrumental Rock" 
          Case 049 : Return "Ethnic" 
          Case 050 : Return "Gothic" 
          Case 051 : Return "Darkwave" 
          Case 052 : Return "Techno-Industrial" 
          Case 053 : Return "Electronic" 
          Case 054 : Return "Pop-Folk" 
          Case 055 : Return "Eurodance" 
          Case 056 : Return "Dream" 
          Case 057 : Return "Southern Rock" 
          Case 058 : Return "Comedy" 
          Case 059 : Return "Cult" 
          Case 060 : Return "Gangsta" 
          Case 061 : Return "Top 40" 
          Case 062 : Return "Christian Rap" 
          Case 063 : Return "Pop/Funk" 
          Case 064 : Return "Jungle" 
          Case 065 : Return "Native American" 
          Case 066 : Return "Cabaret" 
          Case 067 : Return "New Wave" 
          Case 068 : Return "Psychadelic" 
          Case 069 : Return "Rave" 
          Case 070 : Return "Showtunes" 
          Case 071 : Return "Trailer" 
          Case 072 : Return "Lo-Fi" 
          Case 073 : Return "Tribal" 
          Case 074 : Return "Acid Punk" 
          Case 075 : Return "Acid Jazz" 
          Case 076 : Return "Polka" 
          Case 077 : Return "Retro" 
          Case 078 : Return "Musical" 
          Case 079 : Return "Rock & Roll" 
          Case 080 : Return "Hard Rock" 
          ; Added by WinAmp : 
          Case 081 : Return "Folk" 
          Case 082 : Return "Folk/Rock" 
          Case 083 : Return "National Folk" 
          Case 084 : Return "Swing" 
          Case 085 : Return "Bebob" 
          Case 086 : Return "Latin" 
          Case 087 : Return "Revival" 
          Case 088 : Return "Celtic" 
          Case 089 : Return "Bluegrass" 
          Case 090 : Return "Avantgarde" 
          Case 091 : Return "Gothic Rock" 
          Case 092 : Return "Progressive Rock" 
          Case 093 : Return "Psychedelic Rock" 
          Case 094 : Return "Symphonic Rock" 
          Case 095 : Return "Slow Rock" 
          Case 096 : Return "Big Band" 
          Case 097 : Return "Chorus" 
          Case 098 : Return "Easy Listening" 
          Case 099 : Return "Acoustic" 
          Case 100 : Return "Humour" 
          Case 101 : Return "Speech" 
          Case 102 : Return "Chanson" 
          Case 103 : Return "Opera" 
          Case 104 : Return "Chamber Music" 
          Case 105 : Return "Sonata" 
          Case 106 : Return "Symphony" 
          Case 107 : Return "Booty Bass" 
          Case 108 : Return "Primus" 
          Case 109 : Return "Porn Groove" 
          Case 110 : Return "Satire" 
          Case 111 : Return "Slow Jam" 
          Case 112 : Return "Club" 
          Case 113 : Return "Tango" 
          Case 114 : Return "Samba" 
          Case 115 : Return "Folklore" 
          Case 116 : Return "Ballad" 
          Case 117 : Return "Power Ballad" 
          Case 118 : Return "Rhythmic Soul" 
          Case 119 : Return "Freestyle" 
          Case 120 : Return "Duet" 
          Case 121 : Return "Punk Rock" 
          Case 122 : Return "Drum Solo" 
          Case 123 : Return "A capella" 
          Case 124 : Return "Euro-House" 
          Case 125 : Return "Dance Hall" 
      End Select 
  End Function 
; -----------------------------------------------------------------------------

Comments

None.

Code Archives Forum