Code archives/Audio/MP3-Infos
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
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