首先在窗体上添加5个TextBox,一个ComboBox,一个CommandButton,全都是用默认名称。然后新建一个模块: Option Explicit Public Type mp3Tag Artist As String 'Artist Album As String 'Album Title As String 'Title Year As String 'Year Comments As String 'Comments Genre As Integer 'Genre End Type Public Const sGenreMatrix = "Blues|Classic Rock|Country|Dance|Disco|Funk|Grunge|" + _ "Hip-Hop|Jazz|Metal|New Age|Oldies|Other|Pop|R&B|Rap|Reggae|Rock|Techno|" + _ "Industrial|Alternative|Ska|Death Metal|Pranks|Soundtrack|Euro-Techno|" + _ "Ambient|Trip Hop|Vocal|Jazz+Funk|Fusion|Trance|Classical|Instrumental|Acid|" + _ "House|Game|Sound Clip|Gospel|Noise|Alt. Rock|Bass|Soul|Punk|Space|Meditative|" + _ "Instrumental Pop|Instrumental Rock|Ethnic|Gothic|Darkwave|Techno-Industrial|Electronic|" + _ "Pop-Folk|Eurodance|Dream|Southern Rock|Comedy|Cult|Gangsta Rap|Top 40|Christian Rap|" + _ "Pop/Punk|Jungle|Native American|Cabaret|New Wave|Phychedelic|Rave|Showtunes|Trailer|" + _ "Lo-Fi|Tribal|Acid Punk|Acid Jazz|Polka|Retro|Musical|Rock & Roll|Hard Rock|Folk|" + _ "Folk/Rock|National Folk|Swing|Fast-Fusion|Bebob|Latin|Revival|Celtic|Blue Grass|" + _ "Avantegarde|Gothic Rock|Progressive Rock|Psychedelic Rock|Symphonic Rock|Slow Rock|" + _ "Big Band|Chorus|Easy Listening|Acoustic|Humour|Speech|Chanson|Opera|Chamber Music|" + _ "Sonata|Symphony|Booty Bass|Primus|Porn Groove|Satire|Slow Jam|Club|Tango|Samba|Folklore|" + _ "Ballad|power Ballad|Rhythmic Soul|Freestyle|Duet|Punk Rock|Drum Solo|A Capella|Euro-House|" + _ "Dance Hall|Goa|Drum & Bass|Club-House|Hardcore|Terror|indie|Brit Pop|Negerpunk|Polsk Punk|" + _ "Beat|Christian Gangsta Rap|Heavy Metal|Black Metal|Crossover|Comteporary Christian|" + _ "Christian Rock|Merengue|Salsa|Trash Metal|Anime|JPop|Synth Pop" Public Function GetMp3Tag(FName As String) As mp3Tag Dim Artist As String Dim Album As String Dim Title As String Dim Year As String Dim Comments As String Dim Genre As Integer If FName = "" Then Exit Function If Dir(FName) = "" Then Exit Function Dim FileNum As Integer FileNum = FreeFile Dim strInput As String Open FName For Binary Access Read As FileNum If LOF(FileNum) < 128 Then Close FileNum Exit Function End If Seek FileNum, LOF(FileNum) - 127 strInput = Space(3) Get FileNum, , strInput If strInput <> "TAG" Then Close FileNum GoTo Done: End If strInput = Space(30) Get FileNum, , strInput Title = Trim(strInput) strInput = Space(30) Get FileNum, , strInput Artist = Trim(strInput) strInput = Space(30) Get FileNum, , strInput Album = Trim(strInput) strInput = Space(4) Get FileNum, , strInput Year = Trim(strInput) strInput = Space(30) Get FileNum, , strInput Comments = Trim(strInput) strInput = Space(1) Get FileNum, , strInput Genre = Asc(strInput) Done: GetMp3Tag.Title = Title GetMp3Tag.Artist = Artist GetMp3Tag.Album = Album GetMp3Tag.Year = Year GetMp3Tag.Comments = Comments If Genre < 0 Or Genre > 254 Then Genre = 12 GetMp3Tag.Genre = CInt(Genre) Close FileNum End Function接下来在主窗体的Form_Load部分加入以下内容: Dim i As Integer, GenreArray() As String GenreArray = Split(sGenreMatrix, "|") For i = LBound(GenreArray) To UBound(GenreArray) Combo1.AddItem GenreArray(i) Next i在 Command1_Click 部分加入以下内容: Dim mp3Tag As mp3Tag mp3Tag = GetMp3Tag("F:\TestMp3.mp3") Text1.Text = mp3Tag.Artist Text2.Text = mp3Tag.Album Text3.Text = mp3Tag.Title Text4.Text = mp3Tag.Year Text5.Text = mp3Tag.Comments Combo1.ListIndex = mp3Tag.Genre这样就能读出指定文件的ID3v1 Tag了。
那是这段,一个窗体,一个checkbox,6个文本框,名字到代码里看,一个combobox,3个按钮Dim Title As String * 30 Dim Artist As String * 30 Dim Album As String * 30 Dim Year As String * 4 Dim genre As Byte Dim Comment As String * 29 Dim TrckNum As BytePublic Sub genr() Dim genre(0 To 148) genre(0) = "Blues" genre(1) = "Classic Rock" genre(2) = "Country" genre(3) = "Dance" genre(4) = "Disco" genre(5) = "Funk" genre(6) = "Grunge" genre(7) = "Hip-Hop" genre(8) = "Jazz" genre(9) = "Metal" genre(10) = "New Age" genre(11) = "Oldies" genre(12) = "Other" genre(13) = "Pop" genre(14) = "R&B" genre(15) = "Rap" genre(16) = "Reggae" genre(17) = "Rock" genre(18) = "Techno" genre(19) = "Industrial" genre(20) = "Alternative" genre(21) = "Ska" genre(22) = "Death Metal" genre(23) = "Pranks" genre(24) = "Soundtrack" genre(25) = "Euro-Techno" genre(26) = "Ambient" genre(27) = "Trip-Hop" genre(28) = "Vocal" genre(29) = "Jazz+Funk" genre(30) = "Fusion" genre(31) = "Trance" genre(32) = "Classical" genre(33) = "Instrumental" genre(34) = "Acid" genre(35) = "House" genre(36) = "Game" genre(37) = "Sound Clip" genre(38) = "Gospel" genre(39) = "Noise" genre(40) = "Alternative Rock" genre(41) = "Bass" genre(42) = "Soul" genre(43) = "Punk" genre(44) = "Space" genre(45) = "Meditative" genre(46) = "Instrumental Pop" genre(47) = "Instrumental Rock" genre(48) = "Ethnic" genre(49) = "Gothic" genre(50) = "Darkwave" genre(51) = "Techno-Industrial" genre(52) = "Electronic" genre(53) = "Pop-Folk" genre(54) = "Eurodance" genre(55) = "Dream" genre(56) = "Southern Rock" genre(57) = "Comedy" genre(58) = "Cult" genre(59) = "Gangsta" genre(60) = "Top 40" genre(61) = "Christian Rap" genre(62) = "Pop/Funk" genre(63) = "Jungle" genre(64) = "Native US" genre(65) = "Cabaret" genre(66) = "New Wave" genre(67) = "Psychadelic" genre(68) = "Rave" genre(69) = "Showtunes" genre(70) = "Trailer" genre(71) = "Lo-Fi" genre(72) = "Tribal" genre(73) = "Acid Punk" genre(74) = "Acid Jazz" genre(75) = "Polka" genre(76) = "Retro" genre(77) = "Musical" genre(78) = "Rock & Roll" genre(79) = "Hard Rock" genre(80) = "Folk" genre(81) = "Folk-Rock" genre(82) = "National Folk" genre(83) = "Swing" genre(84) = "Fast Fusion" genre(85) = "Bebob" genre(86) = "Latin" genre(87) = "Revival" genre(88) = "Celtic" genre(89) = "Bluegrass" genre(90) = "Avantgarde" genre(91) = "Gothic Rock" genre(92) = "Progressive Rock" genre(93) = "Psychedelic Rock" genre(94) = "Symphonic Rock" genre(95) = "Slow Rock" genre(96) = "Big Band" genre(97) = "Chorus" genre(98) = "Easy Listening" genre(99) = "Acoustic" genre(100) = "Humour" genre(101) = "Speech" genre(102) = "Chanson" genre(103) = "Opera" genre(104) = "Chamber Music" genre(105) = "Sonata" genre(106) = "Symphony" genre(107) = "Booty Bass" genre(108) = "Primus" genre(109) = "Porn Groove" genre(110) = "Satire" genre(111) = "Slow Jam" genre(112) = "Club" genre(113) = "Tango" genre(114) = "Samba" genre(115) = "Folklore" genre(116) = "Ballad" genre(117) = "Power Ballad" genre(118) = "Rhytmic Soul" genre(119) = "Freestyle" genre(120) = "Duet" genre(121) = "Punk Rock" genre(122) = "Drum Solo" genre(123) = "Acapella" genre(124) = "Euro-House" genre(125) = "Dance Hall" genre(126) = "Goa" genre(127) = "Drum & Bass" genre(128) = "Club-House" genre(129) = "Hardcore" genre(130) = "Terror" genre(131) = "Indie" genre(132) = "BritPop" genre(133) = "Negerpunk" genre(134) = "Polsk Punk" genre(135) = "Beat" genre(136) = "Christian Gangsta" genre(137) = "Heavy Metal" genre(138) = "Black Metal" genre(139) = "Crossover" genre(140) = "Contemporary C" genre(141) = "Christian Rock" genre(142) = "Merengue" genre(143) = "Salsa" genre(144) = "Thrash Metal" genre(145) = "Anime" genre(146) = "Jpop" genre(147) = "SynthPop" genre(148) = "" For i = 0 To 148 frmId3.Combo1.AddItem genre(i), i Next i End SubPublic Sub Update(selectedFile As String) Dim B As String Dim A As String On Error GoTo hell: Open selectedFile For Binary Access Write As #1 savestate: Position = FileLen(selectedFile) - 128 start = Position + 4 Title = Trim(frmId3.txtTitle.Text) Put #1, start, Title B = Len(frmId3.txtTitle.Text) A = 30 - B For i = 0 To A Put #1, (start + B) + i, CByte(0) Next istart = start + 30 Artist = Trim(frmId3.txtArtist.Text) Put #1, start, Artist B = Len(frmId3.txtArtist.Text) A = 30 - B For i = 0 To A Put #1, (start + B) + i, CByte(0) Next istart = start + 30 Album = Trim(frmId3.txtAlbum.Text) Put #1, start, Album B = Len(frmId3.txtAlbum.Text) A = 30 - B For i = 0 To A Put #1, (start + B) + i, CByte(0) Next istart = start + 30 Year = frmId3.txtYear.Text Put #1, start, Year B = Len(frmId3.txtYear.Text) A = 30 - B For i = 0 To A Put #1, (start + B) + i, CByte(0) Next istart = start + 4 Comment = Trim(frmId3.txtComm.Text) Put #1, start, Comment B = Len(frmId3.txtComm.Text) A = 30 - B For i = 0 To A Put #1, (start + B) + i, CByte(0) Next istart = start + 29 If frmId3.txtTrck.Text = "" Then Put #1, start, CByte(0) Else TrckNum = CByte(frmId3.txtTrck.Text) Put #1, start, TrckNum End Ifstart = start + 1 For i = 0 To 148 If Combo1.ListIndex = i Then genre = i End If Next i Put #1, start, genre Close #1 Exit Sub hell: Dim mes mes = MsgBox("You can not modify this file while is playing...") Close #1End Sub
Public Sub Id3v1(selectedFile As String)Dim test As String * 3 Dim Detect As ByteIf frmId3.lblTest = "TAG" Then frmId3.cmdUpdate.Enabled = True openstate: Open selectedFile For Binary Access Read As #1 Position = FileLen(selectedFile) - 128Get #1, Position + 1, test frmId3.lblTest = testGet #1, FileLen(selectedFile), Detect lblDetect = DetectIf test = "TAG" ThenCheck1.Value = 1start = Position + 4 Get #1, start, Title frmId3.txtTitle.Text = Trim(Title)start = start + 30 Get #1, start, Artist frmId3.txtArtist.Text = Trim(Artist)start = start + 30 Get #1, start, Album frmId3.txtAlbum.Text = Trim(Album)start = start + 30 Get #1, start, Year frmId3.txtYear.Text = Trim(Year)start = start + 4 Get #1, start, Comment frmId3.txtComm.Text = Trim(Comment)start = start + 29 Get #1, start, TrckNum Select Case TrckNum Case 0 frmId3.txtTrck = "" Case Else frmId3.txtTrck = TrckNum End SelectFor i = 0 To 148 Select Case lblDetect Case i frmId3.Combo1.ListIndex = i Case 255 frmId3.Combo1.ListIndex = 148 End Select Next ifrmId3.txtTitle.Enabled = True frmId3.txtArtist.Enabled = True frmId3.txtAlbum.Enabled = True frmId3.txtYear.Enabled = True Combo1.Enabled = True frmId3.txtTrck.Enabled = True frmId3.txtComm.Enabled = TruefrmId3.txtTitle.BackColor = &H80000005 frmId3.txtArtist.BackColor = &H80000005 frmId3.txtAlbum.BackColor = &H80000005 frmId3.txtYear.BackColor = &H80000005 Combo1.BackColor = &H80000005 frmId3.txtTrck.BackColor = &H80000005 frmId3.txtComm.BackColor = &H80000005Else frmId3.Check1.Value = 0 frmId3.txtTitle.Text = "" frmId3.txtArtist.Text = "" frmId3.txtAlbum.Text = "" frmId3.txtYear.Text = "" frmId3.Combo1.ListIndex = 148 frmId3.txtTrck.Text = "" frmId3.txtComm.Text = ""frmId3.txtTitle.Enabled = False frmId3.txtArtist.Enabled = False frmId3.txtAlbum.Enabled = False frmId3.txtYear.Enabled = False frmId3.Combo1.Enabled = False frmId3.txtTrck.Enabled = False frmId3.txtComm.Enabled = FalsefrmId3.txtTitle.BackColor = &H8000000F frmId3.txtArtist.BackColor = &H8000000F frmId3.txtAlbum.BackColor = &H8000000F frmId3.txtYear.BackColor = &H8000000F frmId3.Combo1.BackColor = &H8000000F frmId3.txtTrck.BackColor = &H8000000F frmId3.txtComm.BackColor = &H8000000FEnd If Close #1 End SubPrivate Sub cmdUpdate_Click() Update (cdlId3.FileName) End SubPrivate Sub Command1_Click() txtTitle.Text = LCase(txtTitle.Text) txtAlbum.Text = LCase(txtAlbum.Text) txtArtist.Text = LCase(txtArtist.Text) End SubPrivate Sub cmdCancel_Click() Unload Me End SubPrivate Sub Command2_Click() cdlId3.Filter = "Mpeg Layer III files (*.mp3)|*.mp3" cdlId3.ShowOpen If cdlId3.FileName <> "" Then Id3v1 (cdlId3.FileName) Check1.Enabled = True Else: Exit Sub End If End SubPrivate Sub Form_Load() genr frmId3.Combo1.ListIndex = 148 End Sub Private Sub Check1_Click() If Check1.Value = 1 Then If lblTest = "TAG" Then cmdUpdate.Enabled = True Exit Sub Else cmdUpdate.Enabled = True Open selectedFile For Binary Access Write As #1 Position = FileLen(selectedFile) Dim place As String * 3 place = "TAG" Put #1, Position, place Position = Position + 2 For i = 1 To 125 Put #1, Position + i, CByte(0) Next i Put #1, Position + 125, CByte(148) End If End If txtTitle.Enabled = True txtArtist.Enabled = True txtAlbum.Enabled = True txtYear.Enabled = True Combo1.Enabled = True txtTrck.Enabled = True txtComm.Enabled = TruetxtTitle.BackColor = &H80000005 txtArtist.BackColor = &H80000005 txtAlbum.BackColor = &H80000005 txtYear.BackColor = &H80000005 Combo1.BackColor = &H80000005 txtTrck.BackColor = &H80000005 txtComm.BackColor = &H80000005Close #1 End SubPrivate Sub txtYear_Change() If Not IsNumeric(txtYear.Text) Then txtYear.Text = "" End If End Sub
Option Explicit
Public Type mp3Tag
Artist As String 'Artist
Album As String 'Album
Title As String 'Title
Year As String 'Year
Comments As String 'Comments
Genre As Integer 'Genre
End Type
Public Const sGenreMatrix = "Blues|Classic Rock|Country|Dance|Disco|Funk|Grunge|" + _
"Hip-Hop|Jazz|Metal|New Age|Oldies|Other|Pop|R&B|Rap|Reggae|Rock|Techno|" + _
"Industrial|Alternative|Ska|Death Metal|Pranks|Soundtrack|Euro-Techno|" + _
"Ambient|Trip Hop|Vocal|Jazz+Funk|Fusion|Trance|Classical|Instrumental|Acid|" + _
"House|Game|Sound Clip|Gospel|Noise|Alt. Rock|Bass|Soul|Punk|Space|Meditative|" + _
"Instrumental Pop|Instrumental Rock|Ethnic|Gothic|Darkwave|Techno-Industrial|Electronic|" + _
"Pop-Folk|Eurodance|Dream|Southern Rock|Comedy|Cult|Gangsta Rap|Top 40|Christian Rap|" + _
"Pop/Punk|Jungle|Native American|Cabaret|New Wave|Phychedelic|Rave|Showtunes|Trailer|" + _
"Lo-Fi|Tribal|Acid Punk|Acid Jazz|Polka|Retro|Musical|Rock & Roll|Hard Rock|Folk|" + _
"Folk/Rock|National Folk|Swing|Fast-Fusion|Bebob|Latin|Revival|Celtic|Blue Grass|" + _
"Avantegarde|Gothic Rock|Progressive Rock|Psychedelic Rock|Symphonic Rock|Slow Rock|" + _
"Big Band|Chorus|Easy Listening|Acoustic|Humour|Speech|Chanson|Opera|Chamber Music|" + _
"Sonata|Symphony|Booty Bass|Primus|Porn Groove|Satire|Slow Jam|Club|Tango|Samba|Folklore|" + _
"Ballad|power Ballad|Rhythmic Soul|Freestyle|Duet|Punk Rock|Drum Solo|A Capella|Euro-House|" + _
"Dance Hall|Goa|Drum & Bass|Club-House|Hardcore|Terror|indie|Brit Pop|Negerpunk|Polsk Punk|" + _
"Beat|Christian Gangsta Rap|Heavy Metal|Black Metal|Crossover|Comteporary Christian|" + _
"Christian Rock|Merengue|Salsa|Trash Metal|Anime|JPop|Synth Pop"
Public Function GetMp3Tag(FName As String) As mp3Tag
Dim Artist As String
Dim Album As String
Dim Title As String
Dim Year As String
Dim Comments As String
Dim Genre As Integer
If FName = "" Then Exit Function
If Dir(FName) = "" Then Exit Function
Dim FileNum As Integer
FileNum = FreeFile
Dim strInput As String
Open FName For Binary Access Read As FileNum
If LOF(FileNum) < 128 Then
Close FileNum
Exit Function
End If
Seek FileNum, LOF(FileNum) - 127
strInput = Space(3)
Get FileNum, , strInput
If strInput <> "TAG" Then
Close FileNum
GoTo Done:
End If
strInput = Space(30)
Get FileNum, , strInput
Title = Trim(strInput)
strInput = Space(30)
Get FileNum, , strInput
Artist = Trim(strInput)
strInput = Space(30)
Get FileNum, , strInput
Album = Trim(strInput)
strInput = Space(4)
Get FileNum, , strInput
Year = Trim(strInput)
strInput = Space(30)
Get FileNum, , strInput
Comments = Trim(strInput)
strInput = Space(1)
Get FileNum, , strInput
Genre = Asc(strInput)
Done:
GetMp3Tag.Title = Title
GetMp3Tag.Artist = Artist
GetMp3Tag.Album = Album
GetMp3Tag.Year = Year
GetMp3Tag.Comments = Comments
If Genre < 0 Or Genre > 254 Then Genre = 12
GetMp3Tag.Genre = CInt(Genre)
Close FileNum
End Function接下来在主窗体的Form_Load部分加入以下内容:
Dim i As Integer, GenreArray() As String
GenreArray = Split(sGenreMatrix, "|")
For i = LBound(GenreArray) To UBound(GenreArray)
Combo1.AddItem GenreArray(i)
Next i在 Command1_Click 部分加入以下内容:
Dim mp3Tag As mp3Tag
mp3Tag = GetMp3Tag("F:\TestMp3.mp3")
Text1.Text = mp3Tag.Artist
Text2.Text = mp3Tag.Album
Text3.Text = mp3Tag.Title
Text4.Text = mp3Tag.Year
Text5.Text = mp3Tag.Comments
Combo1.ListIndex = mp3Tag.Genre这样就能读出指定文件的ID3v1 Tag了。
Dim Artist As String * 30
Dim Album As String * 30
Dim Year As String * 4
Dim genre As Byte
Dim Comment As String * 29
Dim TrckNum As BytePublic Sub genr()
Dim genre(0 To 148)
genre(0) = "Blues"
genre(1) = "Classic Rock"
genre(2) = "Country"
genre(3) = "Dance"
genre(4) = "Disco"
genre(5) = "Funk"
genre(6) = "Grunge"
genre(7) = "Hip-Hop"
genre(8) = "Jazz"
genre(9) = "Metal"
genre(10) = "New Age"
genre(11) = "Oldies"
genre(12) = "Other"
genre(13) = "Pop"
genre(14) = "R&B"
genre(15) = "Rap"
genre(16) = "Reggae"
genre(17) = "Rock"
genre(18) = "Techno"
genre(19) = "Industrial"
genre(20) = "Alternative"
genre(21) = "Ska"
genre(22) = "Death Metal"
genre(23) = "Pranks"
genre(24) = "Soundtrack"
genre(25) = "Euro-Techno"
genre(26) = "Ambient"
genre(27) = "Trip-Hop"
genre(28) = "Vocal"
genre(29) = "Jazz+Funk"
genre(30) = "Fusion"
genre(31) = "Trance"
genre(32) = "Classical"
genre(33) = "Instrumental"
genre(34) = "Acid"
genre(35) = "House"
genre(36) = "Game"
genre(37) = "Sound Clip"
genre(38) = "Gospel"
genre(39) = "Noise"
genre(40) = "Alternative Rock"
genre(41) = "Bass"
genre(42) = "Soul"
genre(43) = "Punk"
genre(44) = "Space"
genre(45) = "Meditative"
genre(46) = "Instrumental Pop"
genre(47) = "Instrumental Rock"
genre(48) = "Ethnic"
genre(49) = "Gothic"
genre(50) = "Darkwave"
genre(51) = "Techno-Industrial"
genre(52) = "Electronic"
genre(53) = "Pop-Folk"
genre(54) = "Eurodance"
genre(55) = "Dream"
genre(56) = "Southern Rock"
genre(57) = "Comedy"
genre(58) = "Cult"
genre(59) = "Gangsta"
genre(60) = "Top 40"
genre(61) = "Christian Rap"
genre(62) = "Pop/Funk"
genre(63) = "Jungle"
genre(64) = "Native US"
genre(65) = "Cabaret"
genre(66) = "New Wave"
genre(67) = "Psychadelic"
genre(68) = "Rave"
genre(69) = "Showtunes"
genre(70) = "Trailer"
genre(71) = "Lo-Fi"
genre(72) = "Tribal"
genre(73) = "Acid Punk"
genre(74) = "Acid Jazz"
genre(75) = "Polka"
genre(76) = "Retro"
genre(77) = "Musical"
genre(78) = "Rock & Roll"
genre(79) = "Hard Rock"
genre(80) = "Folk"
genre(81) = "Folk-Rock"
genre(82) = "National Folk"
genre(83) = "Swing"
genre(84) = "Fast Fusion"
genre(85) = "Bebob"
genre(86) = "Latin"
genre(87) = "Revival"
genre(88) = "Celtic"
genre(89) = "Bluegrass"
genre(90) = "Avantgarde"
genre(91) = "Gothic Rock"
genre(92) = "Progressive Rock"
genre(93) = "Psychedelic Rock"
genre(94) = "Symphonic Rock"
genre(95) = "Slow Rock"
genre(96) = "Big Band"
genre(97) = "Chorus"
genre(98) = "Easy Listening"
genre(99) = "Acoustic"
genre(100) = "Humour"
genre(101) = "Speech"
genre(102) = "Chanson"
genre(103) = "Opera"
genre(104) = "Chamber Music"
genre(105) = "Sonata"
genre(106) = "Symphony"
genre(107) = "Booty Bass"
genre(108) = "Primus"
genre(109) = "Porn Groove"
genre(110) = "Satire"
genre(111) = "Slow Jam"
genre(112) = "Club"
genre(113) = "Tango"
genre(114) = "Samba"
genre(115) = "Folklore"
genre(116) = "Ballad"
genre(117) = "Power Ballad"
genre(118) = "Rhytmic Soul"
genre(119) = "Freestyle"
genre(120) = "Duet"
genre(121) = "Punk Rock"
genre(122) = "Drum Solo"
genre(123) = "Acapella"
genre(124) = "Euro-House"
genre(125) = "Dance Hall"
genre(126) = "Goa"
genre(127) = "Drum & Bass"
genre(128) = "Club-House"
genre(129) = "Hardcore"
genre(130) = "Terror"
genre(131) = "Indie"
genre(132) = "BritPop"
genre(133) = "Negerpunk"
genre(134) = "Polsk Punk"
genre(135) = "Beat"
genre(136) = "Christian Gangsta"
genre(137) = "Heavy Metal"
genre(138) = "Black Metal"
genre(139) = "Crossover"
genre(140) = "Contemporary C"
genre(141) = "Christian Rock"
genre(142) = "Merengue"
genre(143) = "Salsa"
genre(144) = "Thrash Metal"
genre(145) = "Anime"
genre(146) = "Jpop"
genre(147) = "SynthPop"
genre(148) = ""
For i = 0 To 148
frmId3.Combo1.AddItem genre(i), i
Next i
End SubPublic Sub Update(selectedFile As String)
Dim B As String
Dim A As String
On Error GoTo hell:
Open selectedFile For Binary Access Write As #1
savestate:
Position = FileLen(selectedFile) - 128
start = Position + 4
Title = Trim(frmId3.txtTitle.Text)
Put #1, start, Title
B = Len(frmId3.txtTitle.Text)
A = 30 - B
For i = 0 To A
Put #1, (start + B) + i, CByte(0)
Next istart = start + 30
Artist = Trim(frmId3.txtArtist.Text)
Put #1, start, Artist
B = Len(frmId3.txtArtist.Text)
A = 30 - B
For i = 0 To A
Put #1, (start + B) + i, CByte(0)
Next istart = start + 30
Album = Trim(frmId3.txtAlbum.Text)
Put #1, start, Album
B = Len(frmId3.txtAlbum.Text)
A = 30 - B
For i = 0 To A
Put #1, (start + B) + i, CByte(0)
Next istart = start + 30
Year = frmId3.txtYear.Text
Put #1, start, Year
B = Len(frmId3.txtYear.Text)
A = 30 - B
For i = 0 To A
Put #1, (start + B) + i, CByte(0)
Next istart = start + 4
Comment = Trim(frmId3.txtComm.Text)
Put #1, start, Comment
B = Len(frmId3.txtComm.Text)
A = 30 - B
For i = 0 To A
Put #1, (start + B) + i, CByte(0)
Next istart = start + 29
If frmId3.txtTrck.Text = "" Then
Put #1, start, CByte(0)
Else
TrckNum = CByte(frmId3.txtTrck.Text)
Put #1, start, TrckNum
End Ifstart = start + 1
For i = 0 To 148
If Combo1.ListIndex = i Then
genre = i
End If
Next i
Put #1, start, genre
Close #1
Exit Sub
hell:
Dim mes
mes = MsgBox("You can not modify this file while is playing...")
Close #1End Sub
Dim Detect As ByteIf frmId3.lblTest = "TAG" Then frmId3.cmdUpdate.Enabled = True
openstate:
Open selectedFile For Binary Access Read As #1
Position = FileLen(selectedFile) - 128Get #1, Position + 1, test
frmId3.lblTest = testGet #1, FileLen(selectedFile), Detect
lblDetect = DetectIf test = "TAG" ThenCheck1.Value = 1start = Position + 4
Get #1, start, Title
frmId3.txtTitle.Text = Trim(Title)start = start + 30
Get #1, start, Artist
frmId3.txtArtist.Text = Trim(Artist)start = start + 30
Get #1, start, Album
frmId3.txtAlbum.Text = Trim(Album)start = start + 30
Get #1, start, Year
frmId3.txtYear.Text = Trim(Year)start = start + 4
Get #1, start, Comment
frmId3.txtComm.Text = Trim(Comment)start = start + 29
Get #1, start, TrckNum
Select Case TrckNum
Case 0
frmId3.txtTrck = ""
Case Else
frmId3.txtTrck = TrckNum
End SelectFor i = 0 To 148
Select Case lblDetect
Case i
frmId3.Combo1.ListIndex = i
Case 255
frmId3.Combo1.ListIndex = 148
End Select
Next ifrmId3.txtTitle.Enabled = True
frmId3.txtArtist.Enabled = True
frmId3.txtAlbum.Enabled = True
frmId3.txtYear.Enabled = True
Combo1.Enabled = True
frmId3.txtTrck.Enabled = True
frmId3.txtComm.Enabled = TruefrmId3.txtTitle.BackColor = &H80000005
frmId3.txtArtist.BackColor = &H80000005
frmId3.txtAlbum.BackColor = &H80000005
frmId3.txtYear.BackColor = &H80000005
Combo1.BackColor = &H80000005
frmId3.txtTrck.BackColor = &H80000005
frmId3.txtComm.BackColor = &H80000005Else
frmId3.Check1.Value = 0
frmId3.txtTitle.Text = ""
frmId3.txtArtist.Text = ""
frmId3.txtAlbum.Text = ""
frmId3.txtYear.Text = ""
frmId3.Combo1.ListIndex = 148
frmId3.txtTrck.Text = ""
frmId3.txtComm.Text = ""frmId3.txtTitle.Enabled = False
frmId3.txtArtist.Enabled = False
frmId3.txtAlbum.Enabled = False
frmId3.txtYear.Enabled = False
frmId3.Combo1.Enabled = False
frmId3.txtTrck.Enabled = False
frmId3.txtComm.Enabled = FalsefrmId3.txtTitle.BackColor = &H8000000F
frmId3.txtArtist.BackColor = &H8000000F
frmId3.txtAlbum.BackColor = &H8000000F
frmId3.txtYear.BackColor = &H8000000F
frmId3.Combo1.BackColor = &H8000000F
frmId3.txtTrck.BackColor = &H8000000F
frmId3.txtComm.BackColor = &H8000000FEnd If
Close #1
End SubPrivate Sub cmdUpdate_Click()
Update (cdlId3.FileName)
End SubPrivate Sub Command1_Click()
txtTitle.Text = LCase(txtTitle.Text)
txtAlbum.Text = LCase(txtAlbum.Text)
txtArtist.Text = LCase(txtArtist.Text)
End SubPrivate Sub cmdCancel_Click()
Unload Me
End SubPrivate Sub Command2_Click()
cdlId3.Filter = "Mpeg Layer III files (*.mp3)|*.mp3"
cdlId3.ShowOpen
If cdlId3.FileName <> "" Then
Id3v1 (cdlId3.FileName)
Check1.Enabled = True
Else: Exit Sub
End If
End SubPrivate Sub Form_Load()
genr
frmId3.Combo1.ListIndex = 148
End Sub
Private Sub Check1_Click()
If Check1.Value = 1 Then
If lblTest = "TAG" Then
cmdUpdate.Enabled = True
Exit Sub
Else
cmdUpdate.Enabled = True
Open selectedFile For Binary Access Write As #1
Position = FileLen(selectedFile)
Dim place As String * 3
place = "TAG"
Put #1, Position, place
Position = Position + 2
For i = 1 To 125
Put #1, Position + i, CByte(0)
Next i
Put #1, Position + 125, CByte(148)
End If
End If
txtTitle.Enabled = True
txtArtist.Enabled = True
txtAlbum.Enabled = True
txtYear.Enabled = True
Combo1.Enabled = True
txtTrck.Enabled = True
txtComm.Enabled = TruetxtTitle.BackColor = &H80000005
txtArtist.BackColor = &H80000005
txtAlbum.BackColor = &H80000005
txtYear.BackColor = &H80000005
Combo1.BackColor = &H80000005
txtTrck.BackColor = &H80000005
txtComm.BackColor = &H80000005Close #1
End SubPrivate Sub txtYear_Change()
If Not IsNumeric(txtYear.Text) Then
txtYear.Text = ""
End If
End Sub