Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

my pLayer 3

Created Date:

6 May 2002

Last Updated / Completion Date:

Status:

Complete

Project Types:

in |

This was essentially an MP3 player, so the name is a play on the words ‘MPEG-1 Audio Layer 3’.

As I write this I am listening to the album in the screenshot above, on this player, in a Windows XP virtual machine!

Visual Basic 6
Option Explicit
Dim Fso As New Scripting.FileSystemObject
Dim Con As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim strSQL As String
Dim conStr As String
Public MP3 As New clsID3MP3
Dim INIFile As New clsINI
Dim lastButton As Integer
Dim splPercent As Integer
Dim splSPercent As Integer
Dim i As Long

Function ScanFolder(folderPath As String) As Boolean
'On Error GoTo Err

    Dim currFolder As Folder
    Dim subFolders As Folders
    Dim fileItem As File
    Dim folderItem As Folder
    Dim allFiles As Files
    Dim numFiles As Integer
    
    Set currFolder = Fso.GetFolder(folderPath)
    Set subFolders = currFolder.subFolders
    Set allFiles = currFolder.Files
    frmScan.Show
    DoEvents
    For Each folderItem In subFolders
        ScanFolder (folderItem.path)
    Next
    For Each fileItem In allFiles
        tlbControls.Tag = tlbControls.Tag + 1
    Next
    ScanFolder = True
    Exit Function
Err:
    ErrorMsg
    ScanFolder = False

End Function

Sub ScanAndAddFiles(folderPath As String)
'On Error GoTo Err
    
    Dim currFolder As Folder
    Dim subFolders As Folders
    Dim fileItem As File
    Dim folderItem As Folder
    Dim allFiles As Files
    Dim numFiles As Integer
    Dim newKey As Integer
    
    Set currFolder = Fso.GetFolder(folderPath)
    Set subFolders = currFolder.subFolders
    Set allFiles = currFolder.Files
    Set Con = New ADODB.Connection
    Set Rs = New ADODB.Recordset
    conStr = "driver={Microsoft Access Driver (*.mdb)};DBQ=" & Me.Tag
    Con.Open conStr
    frmScan.lblScan.Caption = "Adding file information to the database..."
    For Each folderItem In subFolders
        DoEvents
        If frmScan.cmdCancel.Tag = 1 Then
            MsgBox "Process Aborted. " & tlbControls.Tag & " Files added to the database.", vbCritical, "Aborted"
            frmScan.cmdCancel.Tag = 2
            Exit Sub
        ElseIf frmScan.cmdCancel.Tag = 2 Then
            Exit Sub
        End If
        ScanAndAddFiles (folderItem.path)
    Next
    For Each fileItem In allFiles
        DoEvents
        If UCase(Right(fileItem.path, 4)) = ".MP3" Then
            'Debug.Print fileItem.Path
            MP3.FileName = fileItem.path
            'If Mid(MP3.UniqueKey, 6) Then
            'If Left(MP3.UniqueKey, 5) = "RCUK#" Then
                'code if file has UID
             '   Debug.Print MP3.FileName
           ' Else
                Mp.FileName = fileItem.path
                strSQL = "SELECT DISTINCT Max(Main.iUniqueKey) AS MaxKey FROM Main"
                Set Rs = Con.Execute(strSQL)
                If IsNull(Rs!maxKey) Then
                    newKey = 1
                Else
                    newKey = Rs!maxKey + 1
                End If
                MP3.UniqueKey = "RCUK#" & newKey
                If Not MP3.Update(ID3TT_ALL) Then MsgBox "Update failed..."
                strSQL = "INSERT INTO Main (File, iUniqueKey, iAlbum, iArtist, iTitle, iGenre, iYear, " & _
                    "iTrackNo, mLength, mFrames, mMPEGVer, mLayer, mDataRate, mSampleRate, iComment) VALUES ('" & _
                    Replace(fileItem.path, "'", "~") & "', '" & _
                    Replace(newKey, "'", "~") & "', '" & _
                    Replace(MP3.Album, "'", "~") & "', '" & _
                    Replace(MP3.Artist, "'", "~") & "', '" & _
                    Replace(MP3.Title, "'", "~") & "', '" & _
                    Replace(MP3.Genre, "'", "~") & "', '" & _
                    Replace(MP3.Year, "'", "~") & "', '" & _
                    Replace(MP3.Track, "'", "~") & "', '" & _
                    Replace(Mp.TrackLength, "'", "~") & "', '" & _
                    Replace(Mp.Frames, "'", "~") & "', '" & _
                    Replace(Mp.MPEGVersion, "'", "~") & "', '" & _
                    Replace(Mp.Layer, "'", "~") & "', '" & _
                    Replace(Mp.DataRate, "'", "~") & "', '" & _
                    Replace(Mp.SampleRate, "'", "~") & "', '" & _
                    Replace(MP3.Comments, "'", "~") & "')"
                Con.Execute strSQL
                'Debug.Print strSQL
                'Debug.Print "Path = " & fileItem.path
                tlbControls.Tag = tlbControls.Tag + 1
                DoEvents
                frmScan.lblScanVal.Caption = tlbControls.Tag
            'End If
        End If
        frmScan.progScan.Value = frmScan.progScan.Value + 1
    Next
    Exit Sub
Err:
    ErrorMsg
    
End Sub

Private Sub cmbGenre_GotFocus()

    If cmbGenre.ListCount = 0 Then
        LoadGenreList
    End If
    
End Sub

Private Sub cmdClear_Click()

    Set picAttach.Picture = Nothing
    
End Sub

Private Sub cmdLoad_Click()

On Error GoTo Err

    cmDlg.CancelError = True
   ' On Error GoTo Err
    cmDlg.Filter = "Image Files (*.jpg, *.bmp, *.gif)|*.bmp;*.gif;*.jpg |Icons (*.ico) |*.ico"
    cmDlg.InitDir = App.path & "\Images"
    cmDlg.ShowOpen
    picAttach.Picture = LoadPicture(cmDlg.FileName)
    Exit Sub
Err:
    Exit Sub

End Sub

Private Sub Form_Load()
'On Error GoTo Err

    Dim picPath As String
    
    If RegGetSplitMain = "" Then
        splPercent = 30
    Else
        splPercent = RegGetSplitMain
    End If
    If RegGetSplitSec = "" Then
        splSPercent = 60
    Else
        splSPercent = RegGetSplitSec
    End If
    Me.Tag = RegGetDB
    If Me.Tag = "" Then
        MsgBox "No Database specified. Please specify one in Tools > Options."
    Else
        LoadDBData
    End If
    Me.Width = 12120
    Me.Height = 8700
    Set splitMain.Control1 = trBrowser
    Set splitMain.Control2 = splitSec
    Set splitSec.Control1 = lstTracks
    Set splitSec.Control2 = picID3
    splitMain.SplitPercent = splPercent
    splitSec.SplitPercent = splSPercent
    picPath = RegGetPic
    If picPath = "" Then
        Exit Sub
    Else
        lstTracks.Picture = LoadPicture(picPath)
    End If
    Exit Sub
Err:
    ErrorMsg

End Sub

Private Sub Form_Resize()
    
'    tabView.Left = 0
'    tabView.Top = picID3.Top
'    tabView.Width = Me.Width
'    tabView.Height = Me.Height
    splitMain.Left = 30
    splitMain.Top = 1000
    splitMain.Width = Me.Width - 170
    If Me.Height - 2070 > 0 Then splitMain.Height = Me.Height - 2070
   ' splitExp.Width = Me.Width - 200
    'If Me.Height - 4000 > 500 Then splitExp.Height = Me.Height - 4000
    'If Not RegGetSplitMain = "" Then MsgBox RegGetSplitMain 'splitMain.SplitPercent = RegGetSplitMain
    picID3_Resize


End Sub

Private Sub lstFrames_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
    
    lstFrames.SortKey = ColumnHeader.Index - 1
    lstFrames.Sorted = True

End Sub

Private Sub lstTracks_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

    lstTracks.SortKey = ColumnHeader.Index - 1
    lstTracks.Sorted = True
    
End Sub

Private Sub mnuComp_Click()
'On Error GoTo Err

    Dim isComp As Boolean
    Dim tmpTreeItem As Integer
    
    tmpTreeItem = trBrowser.SelectedItem.Index
    If trBrowser.SelectedItem.Parent = "Album" Then
        isComp = True
        mnuComp.Checked = True
    Else
        isComp = False
        mnuComp.Checked = False
    End If
    Set Con = New ADODB.Connection
    Set Rs = New ADODB.Recordset
    conStr = "driver={Microsoft Access Driver (*.mdb)};DBQ=" & Me.Tag
    Con.Open conStr
    strSQL = "UPDATE Main SET Main.IsCompilation = " & isComp & " WHERE Main!iAlbum = '" & Right(trBrowser.DropHighlight.Key, Len(trBrowser.DropHighlight.Key) - 3) & "'"
    Con.Execute strSQL
    Con.Close
    LoadDBData
    trBrowser.Nodes(tmpTreeItem).EnsureVisible
    trBrowser.Nodes(tmpTreeItem).Selected = True
    Exit Sub
Err:
    ErrorMsg
        
End Sub

Private Sub mnuNewPlist_Click()

    trBrowser.Nodes.Add "Pl", tvwChild, "kPl", "New Playlist", 1, 1

End Sub

Private Sub mnuOptions_Click()

    frmOptions.Show
    
End Sub

Private Sub mnuSearch_Click()
'On Error GoTo Err
    
    Dim folderPath As String
    Dim Result As String
    
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Result = BrowseForFolder("Please select a folder to scan...", Me)
    If Not Result = "" Then
        folderPath = Result
    Else
        Exit Sub
    End If
    Result = ScanFolder(folderPath)
    If Result = False Then Exit Sub
    frmScan.progScan.Max = tlbControls.Tag
    tlbControls.Tag = 0
    ScanAndAddFiles (folderPath)
    If frmScan.cmdCancel.Tag = 1 Or frmScan.cmdCancel.Tag = 2 Then
        frmScan.lblScan.Caption = "Aborted!"
    Else
        frmScan.lblScan.Caption = "Complete!"
    End If
    Con.Close
    tlbControls.Tag = 0
    frmScan.cmdDone.Enabled = True
    Form_Load
    Exit Sub
Err:
    ErrorMsg

End Sub

Private Sub picID3_Resize()

    tabView.Top = 0
    tabView.Left = 0
    tabView.Width = picID3.Width
    If picID3.Height - 100 > 0 Then tabView.Height = picID3.Height - 100
    If tabView.Tab = 0 Then
        picTag.BorderStyle = 0
        picSlider.BorderStyle = 0
        picTag.Left = 0
        picTag.Top = 0
        picSlider.Left = 0
        picSlider.Width = picID3.Width - scrTag.Width - 80
        picTag.Width = picID3.Width
        If picID3.Height - 500 > 0 Then picTag.Height = picID3.Height - 500
        scrTag.Top = 0
        scrTag.Left = picTag.Width - scrTag.Width - 60
        scrTag.Height = picTag.Height
        If 8200 - picTag.Height > 0 Then
            scrTag.Enabled = True
            scrTag.Max = (8200 - picTag.Height) / 10
        Else
            scrTag.Enabled = False
            picSlider.Top = 0
        End If
    End If
    If tabView.Tab = 1 Then
        lstFrames.Left = 100
        lstFrames.Top = 100
        lstFrames.Width = picID3.Width - 250
        If picID3.Height - 700 > 0 Then lstFrames.Height = picID3.Height - 700
        If tabView.Height < 1000 Then
            lstFrames.Visible = False
        Else
            lstFrames.Visible = True
        End If
    End If
    If tabView.Tab = 2 Then
        txtLyrics.Top = 100
        txtLyrics.Left = 100
        txtLyrics.Width = picID3.Width - 250
        If picID3.Height - 700 > 0 Then txtLyrics.Height = picID3.Height - 700
    End If
    If tabView.Tab = 3 Then
        picInfo.BorderStyle = 0
        picSlider2.BorderStyle = 0
        picInfo.Left = 0
        picInfo.Top = 0
        picInfo.Width = picID3.Width
        If picID3.Height - 500 > 0 Then picInfo.Height = picID3.Height - 500
        picSlider2.Left = 0
        picSlider2.Width = picID3.Width - scrInfo.Width - 80
        scrInfo.Top = 0
        scrInfo.Left = picInfo.Width - scrInfo.Width - 60
        scrInfo.Height = picInfo.Height
        If 3400 - picInfo.Height > 0 Then
            scrInfo.Enabled = True
            scrInfo.Max = (3400 - picInfo.Height) / 10
        Else
            scrInfo.Enabled = False
            picSlider2.Top = 0
        End If

        If picID3.Height - 500 > 0 Then picInfo.Height = picID3.Height - 500
    End If
    
    
End Sub

Private Sub scrInfo_Change()

    picSlider2.Top = -scrInfo.Value * 10

End Sub

Private Sub scrInfo_Scroll()

    picSlider2.Top = -scrInfo.Value * 10

End Sub

Private Sub scrTag_Change()

    picSlider.Top = -scrTag.Value * 10

End Sub

Private Sub scrTag_Scroll()

    picSlider.Top = -scrTag.Value * 10

End Sub


Private Sub splitMain_Resize()

    RegSetSplitMain (splitMain.SplitPercent)

End Sub

Private Sub splitSec_Resize()

    RegSetSplitSec (splitSec.SplitPercent)

End Sub

Private Sub tabView_Click(PreviousTab As Integer)
    
    picID3_Resize
    If Not lstTracks.SelectedItem Is Nothing Then
        RefreshPanes
    End If
    
End Sub

Private Sub trBrowser_DblClick()
'On Error GoTo Err

    If NodeHasParent(trBrowser.SelectedItem) = True Then
        If lastButton = 1 Then
'            Select Case trBrowser.SelectedItem.Key
'                Case "Al": 'MsgBox "Case"
'                Case "Co": 'MsgBox "Case"
'                Case "Ar": 'MsgBox "Case"
'                Case "Ge": 'MsgBox "Case"
'                Case Else
                    frmPlayer.Show
                    frmPlayer.wMP.Stop
                    frmPlayer.wMP.FileName = lstTracks.SelectedItem.SubItems(5)
                    frmPlayer.txtDuration = Format(Int(wMP.Duration / 60), "00") & ":" & Format(wMP.Duration Mod 60, "00")
                    frmPlayer.PlayTrack
'            End Select
        End If
        RefreshPanes
    End If
    lstTracks.Refresh
    Exit Sub
Err:
    ErrorMsg
    
End Sub

Private Sub trBrowser_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        
    If Button = 2 Then
        Set trBrowser.DropHighlight = trBrowser.SelectedItem
    Else
        Set trBrowser.DropHighlight = Nothing
    End If

End Sub

Private Sub trBrowser_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

    lastButton = Button
    If Button = 2 And trBrowser.Nodes.Count > 0 Then
       ' Set trBrowser.DropHighlight = trBrowser.Nodes(1)

        Select Case trBrowser.DropHighlight.Key
            Case "Al": 'MsgBox "Case"
            Case "Co": 'MsgBox "Case"
            Case "Ar": 'MsgBox "Case"
            Case "Ge": 'MsgBox "Case"
            Case Else:
                Select Case trBrowser.DropHighlight.Parent.Key
                    Case "Al"
                        mnuComp.Visible = True
                        mnuComp.Checked = False
                        mnuRename.Visible = True
                    Case "Co"
                        mnuComp.Visible = True
                        mnuComp.Checked = True
                        mnuRename.Visible = True
                    Case "Ge"
                        mnuComp.Visible = False
                        mnuRename.Visible = False
                    Case Else
                        mnuComp.Visible = False
                        mnuRename.Visible = True
                End Select
                PopupMenu mnuAlbum
      End Select
    End If
    Set trBrowser.DropHighlight = Nothing

End Sub

Private Sub trBrowser_NodeClick(ByVal Node As MSComctlLib.Node)
'On Error GoTo Err
    
    Dim attrTrack As String
    Dim lstItem As ListItem
    lstTracks.ListItems.Clear
    If NodeHasParent(Node) = True Then
        Select Case trBrowser.SelectedItem.Parent.Key
            Case "Al": attrTrack = "iAlbum"
            Case "Ar": attrTrack = "iArtist"
            Case "Ge": attrTrack = "iGenre"
            Case "Co": attrTrack = "iAlbum"
        End Select
        conStr = "driver={Microsoft Access Driver (*.mdb)};DBQ=" & Me.Tag
        Con.Open conStr
        strSQL = "SELECT iUniqueKey, iTrackNo, iTitle, iArtist, iAlbum, iGenre, File FROM Main WHERE " & attrTrack & " = '" & Right(trBrowser.SelectedItem.Key, Len(trBrowser.SelectedItem.Key) - 3) & "' "
        Set Rs = Con.Execute(strSQL)
        Do While Rs.EOF = False
            Set lstItem = lstTracks.ListItems.Add()
            If Not IsNull(Rs!iTrackNo) Then
                If Rs!iTrackNo < 10 Then
                    lstItem.Text = "0" & Rs!iTrackNo
                Else
                    lstItem.Text = Rs!iTrackNo
                End If
            Else
                lstItem.Text = "N/A"
            End If
            lstItem.SubItems(1) = Replace(Rs!iTitle, "~", "'")
            lstItem.SubItems(2) = Replace(Rs!iArtist, "~", "'")
            lstItem.SubItems(3) = Replace(Rs!iGenre, "~", "'")
            lstItem.SubItems(4) = Replace(Rs!iAlbum, "~", "'")
            lstItem.SubItems(5) = Replace(Rs!File, "~", "'")
            Rs.MoveNext
        Loop
        Con.Close
        RefreshPanes
    End If
    lstTracks.Refresh
    Exit Sub
Err:
    ErrorMsg
        
End Sub

Private Sub lstTracks_DblClick()
    
    frmPlayer.Show
    wMP.FileName = lstTracks.SelectedItem.ListSubItems(5).Text
    'trackLen = wMP.Duration
    frmPlayer.txtDuration = Format(Int(wMP.Duration / 60), "00") & ":" & Format(wMP.Duration Mod 60, "00")
    frmPlayer.PlayTrack
    
End Sub

Private Sub lstTracks_ItemClick(ByVal Item As MSComctlLib.ListItem)

    frmPlayer.Show
    If Not wMP.PlayState = mpPlaying Then
        frmPlayer.wMP.FileName = lstTracks.SelectedItem.ListSubItems(5).Text
        frmPlayer.txtDuration = Format(Int(wMP.Duration / 60), "00") & ":" & Format(wMP.Duration Mod 60, "00")
    End If
    RefreshPanes
    
End Sub



Private Sub TracksAutoScroll()
MsgBox "d"


End Sub

Sub LoadDBData()
'On Error GoTo Err
    
    Dim strArtist
    
    Set Rs = New ADODB.Recordset
    Set Con = New ADODB.Connection
    conStr = "driver={Microsoft Access Driver (*.mdb)};DBQ=" & Me.Tag
    Con.Open conStr
    trBrowser.Nodes.Clear
    DoEvents
    strSQL = "SELECT DISTINCT iAlbum, Min(iArtist) AS Artist FROM Main  WHERE IsCompilation = 0 GROUP BY iAlbum ORDER BY MIN(iArtist)"
    Set Rs = Con.Execute(strSQL)
    If IsNull(Rs!iAlbum) Then
        Con.Close
        Exit Sub
    End If
    trBrowser.Nodes.Add , , "Al", "Album", 1, 1
    Do While Rs.EOF = False
        If Not IsNull(Rs!Artist) Then strArtist = Replace(Rs!Artist, "~", "'")
        trBrowser.Nodes.Add "Al", tvwChild, "kAl" & Rs!iAlbum, strArtist & " - " & Replace(Rs!iAlbum, "~", "'"), 1, 1
        Rs.MoveNext
    Loop
    strSQL = "SELECT DISTINCT iAlbum, Min(iYear) AS MinYear From Main WHERE IsCompilation = -1 GROUP BY iAlbum"
    Set Rs = Con.Execute(strSQL)
    trBrowser.Nodes.Add , , "Co", "Compilation", 1, 1
    Do While Rs.EOF = False
        trBrowser.Nodes.Add "Co", tvwChild, "kCo" & Rs!iAlbum, Replace(Rs!iAlbum, "~", "'"), 1, 1
        Rs.MoveNext
    Loop
    strSQL = "SELECT DISTINCT iArtist, Min(iYear) AS MinYear From Main GROUP BY iArtist"
    Set Rs = Con.Execute(strSQL)
    trBrowser.Nodes.Add , , "Ar", "Artist", 5, 5
    Do While Rs.EOF = False
        trBrowser.Nodes.Add "Ar", tvwChild, "kAr" & Rs!iArtist, Replace(Rs!iArtist, "~", "'"), 5, 5
        Rs.MoveNext
    Loop
    strSQL = "SELECT DISTINCT iGenre, Min(iYear) AS MinYear From Main GROUP BY iGenre"
    Set Rs = Con.Execute(strSQL)
    trBrowser.Nodes.Add , , "Ge", "Genre", 3, 3
    Do While Rs.EOF = False
        trBrowser.Nodes.Add "Ge", tvwChild, "kGe" & Rs!iGenre, Replace(Rs!iGenre, "~", "'"), 3, 3
        Rs.MoveNext
    Loop
    Con.Close
    trBrowser.Nodes.Add , , "Np", "Now Playing", 1, 1
    trBrowser.Nodes.Add , , "Pl", "Playlists", 1, 1
    trBrowser.Nodes.Add , , "Hi", "History", 1, 1
    trBrowser.Nodes.Add , , "PoAl", "Most Popular Albums", 1, 1
    trBrowser.Nodes.Add , , "PoTr", "Most Popular Tracks", 1, 1
    Exit Sub
Err:
    ErrorMsg
    
End Sub


Private Sub CreateRegistryEntries()

    MsgBox "Code here to create default reg entries"

End Sub

Private Function NodeHasParent(Node As MSComctlLib.Node) As Boolean
On Error GoTo Err

    NodeHasParent = True
    Dim strNode As String
    strNode = Node.Parent
    Exit Function
    
Err:
    NodeHasParent = False
    Exit Function
    
End Function

Private Sub RefreshPanes()

    Dim SelTrack As String
    SelTrack = lstTracks.SelectedItem.ListSubItems(5).Text
    Select Case tabView.Tab
        Case 0: LoadFields SelTrack
        Case 1: LoadFramesGrid SelTrack
        Case 2: LoadLyrics SelTrack
        Case 3: LoadInfo SelTrack
    End Select

End Sub

Private Sub LoadFields(MP3Filename As String)

    Dim sDesc As String
    txtComments = ""
    MP3.FileName = MP3Filename
    txtArtist.Text = MP3.Artist
    txtAlbum.Text = MP3.Album
    'cmbGenre.Text = MP3.Genre
    txtTitle.Text = MP3.Song
    txtTrack.Text = MP3.Track & "/" & MP3.TotalTracks
    txtYear.Text = MP3.Year
    txtID.Text = MP3.UniqueKey
    picAttach.Picture = MP3.Picture
    For i = 1 To MP3.colFrames.Count
        If MP3.colFrames(i).FrameAbbr = "COMM" Then
            If MP3.colFrames(i).sDescription <> "" Then sDesc = MP3.colFrames(i).sDescription & ": "
            txtComments.Text = txtComments.Text & sDesc & MP3.colFrames(i).vValue & Chr(13) & Chr(10)
        End If
    Next i

End Sub

Private Sub LoadFramesGrid(MP3Filename As String)

    Dim frNo As String
    lstFrames.ListItems.Clear
    MP3.FileName = MP3Filename
    For i = 1 To MP3.colFrames.Count
        If i < 10 Then
            frNo = "0" & i
        Else
            frNo = i
        End If
        With lstFrames.ListItems.Add(, , frNo)
            .SubItems(1) = MP3.colFrames(i).eType
            .SubItems(2) = MP3.colFrames(i).FrameAbbr
            .SubItems(3) = MP3.colFrames(i).FrameTitle
            .SubItems(4) = MP3.colFrames(i).sDescription
            .SubItems(5) = MP3.colFrames(i).vValue
        End With
    Next i

End Sub

Private Sub LoadLyrics(MP3Filename As String)

    txtLyrics = MP3.LyricsUnsynced

End Sub

Private Sub LoadInfo(MP3Filename As String)

    Mp.FileName = MP3Filename
    lblSize.Caption = Mp.FileSize
    lblLength.Caption = Mp.TrackLength
    lblFrames.Caption = Mp.Frames
    lblVer.Caption = Mp.MPEGVersion
    lblLayer.Caption = Mp.Layer
    lblDataRate.Caption = Mp.DataRate
    lblSampleRate.Caption = Mp.SampleRate
    lblChannel.Caption = Mp.ChannelMode
    lblCopy.Caption = Mp.Copyrighted
    lblOriginal.Caption = Mp.Original

End Sub

Private Sub LoadGenreList()

    cmbGenre.AddItem "Blues": cmbGenre.ItemData(cmbGenre.NewIndex) = 0
    cmbGenre.AddItem "Classic Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 1
    cmbGenre.AddItem "Country": cmbGenre.ItemData(cmbGenre.NewIndex) = 2
    cmbGenre.AddItem "Dance": cmbGenre.ItemData(cmbGenre.NewIndex) = 3
    cmbGenre.AddItem "Disco": cmbGenre.ItemData(cmbGenre.NewIndex) = 4
    cmbGenre.AddItem "Funk": cmbGenre.ItemData(cmbGenre.NewIndex) = 5
    cmbGenre.AddItem "Grunge": cmbGenre.ItemData(cmbGenre.NewIndex) = 6
    cmbGenre.AddItem "Hip-Hop": cmbGenre.ItemData(cmbGenre.NewIndex) = 7
    cmbGenre.AddItem "Jazz": cmbGenre.ItemData(cmbGenre.NewIndex) = 8
    cmbGenre.AddItem "Metal": cmbGenre.ItemData(cmbGenre.NewIndex) = 9
    cmbGenre.AddItem "New Age": cmbGenre.ItemData(cmbGenre.NewIndex) = 10
    cmbGenre.AddItem "Oldies": cmbGenre.ItemData(cmbGenre.NewIndex) = 11
    cmbGenre.AddItem "Other": cmbGenre.ItemData(cmbGenre.NewIndex) = 12
    cmbGenre.AddItem "Pop": cmbGenre.ItemData(cmbGenre.NewIndex) = 13
    cmbGenre.AddItem "R&B": cmbGenre.ItemData(cmbGenre.NewIndex) = 14
    cmbGenre.AddItem "Rap": cmbGenre.ItemData(cmbGenre.NewIndex) = 15
    cmbGenre.AddItem "Reggae": cmbGenre.ItemData(cmbGenre.NewIndex) = 16
    cmbGenre.AddItem "Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 17
    cmbGenre.AddItem "Techno": cmbGenre.ItemData(cmbGenre.NewIndex) = 18
    cmbGenre.AddItem "Industrial": cmbGenre.ItemData(cmbGenre.NewIndex) = 19
    cmbGenre.AddItem "Alternative": cmbGenre.ItemData(cmbGenre.NewIndex) = 20
    cmbGenre.AddItem "Ska": cmbGenre.ItemData(cmbGenre.NewIndex) = 21
    cmbGenre.AddItem "Death Metal": cmbGenre.ItemData(cmbGenre.NewIndex) = 22
    cmbGenre.AddItem "Pranks": cmbGenre.ItemData(cmbGenre.NewIndex) = 23
    cmbGenre.AddItem "Soundtrack": cmbGenre.ItemData(cmbGenre.NewIndex) = 24
    cmbGenre.AddItem "Euro-Techno": cmbGenre.ItemData(cmbGenre.NewIndex) = 25
    cmbGenre.AddItem "Ambient": cmbGenre.ItemData(cmbGenre.NewIndex) = 26
    cmbGenre.AddItem "Trip-Hop": cmbGenre.ItemData(cmbGenre.NewIndex) = 27
    cmbGenre.AddItem "Vocal": cmbGenre.ItemData(cmbGenre.NewIndex) = 28
    cmbGenre.AddItem "Jazz+Funk": cmbGenre.ItemData(cmbGenre.NewIndex) = 29
    cmbGenre.AddItem "Fusion": cmbGenre.ItemData(cmbGenre.NewIndex) = 30
    cmbGenre.AddItem "Trance": cmbGenre.ItemData(cmbGenre.NewIndex) = 31
    cmbGenre.AddItem "Classical": cmbGenre.ItemData(cmbGenre.NewIndex) = 32
    cmbGenre.AddItem "Instrumental": cmbGenre.ItemData(cmbGenre.NewIndex) = 33
    cmbGenre.AddItem "Acid": cmbGenre.ItemData(cmbGenre.NewIndex) = 34
    cmbGenre.AddItem "House": cmbGenre.ItemData(cmbGenre.NewIndex) = 35
    cmbGenre.AddItem "Game": cmbGenre.ItemData(cmbGenre.NewIndex) = 36
    cmbGenre.AddItem "Sound Clip": cmbGenre.ItemData(cmbGenre.NewIndex) = 37
    cmbGenre.AddItem "Gospel": cmbGenre.ItemData(cmbGenre.NewIndex) = 38
    cmbGenre.AddItem "Noise": cmbGenre.ItemData(cmbGenre.NewIndex) = 39
    cmbGenre.AddItem "Alt. Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 40
    cmbGenre.AddItem "Bass": cmbGenre.ItemData(cmbGenre.NewIndex) = 41
    cmbGenre.AddItem "Soul": cmbGenre.ItemData(cmbGenre.NewIndex) = 42
    cmbGenre.AddItem "Punk": cmbGenre.ItemData(cmbGenre.NewIndex) = 43
    cmbGenre.AddItem "Space": cmbGenre.ItemData(cmbGenre.NewIndex) = 44
    cmbGenre.AddItem "Meditative": cmbGenre.ItemData(cmbGenre.NewIndex) = 45
    cmbGenre.AddItem "Instrumental Pop": cmbGenre.ItemData(cmbGenre.NewIndex) = 46
    cmbGenre.AddItem "Instrumental Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 47
    cmbGenre.AddItem "Ethnic": cmbGenre.ItemData(cmbGenre.NewIndex) = 48
    cmbGenre.AddItem "Gothic": cmbGenre.ItemData(cmbGenre.NewIndex) = 49
    cmbGenre.AddItem "Darkwave": cmbGenre.ItemData(cmbGenre.NewIndex) = 50
    cmbGenre.AddItem "Techno-Industrial": cmbGenre.ItemData(cmbGenre.NewIndex) = 51
    cmbGenre.AddItem "Electronic": cmbGenre.ItemData(cmbGenre.NewIndex) = 52
    cmbGenre.AddItem "Pop-Folk": cmbGenre.ItemData(cmbGenre.NewIndex) = 53
    cmbGenre.AddItem "Eurodance": cmbGenre.ItemData(cmbGenre.NewIndex) = 54
    cmbGenre.AddItem "Dream": cmbGenre.ItemData(cmbGenre.NewIndex) = 55
    cmbGenre.AddItem "Southern Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 56
    cmbGenre.AddItem "Comedy": cmbGenre.ItemData(cmbGenre.NewIndex) = 57
    cmbGenre.AddItem "Cult": cmbGenre.ItemData(cmbGenre.NewIndex) = 58
    cmbGenre.AddItem "Gangsta": cmbGenre.ItemData(cmbGenre.NewIndex) = 59
    cmbGenre.AddItem "Top 40": cmbGenre.ItemData(cmbGenre.NewIndex) = 60
    cmbGenre.AddItem "Christian Rap": cmbGenre.ItemData(cmbGenre.NewIndex) = 61
    cmbGenre.AddItem "Pop/Funk": cmbGenre.ItemData(cmbGenre.NewIndex) = 62
    cmbGenre.AddItem "Jungle": cmbGenre.ItemData(cmbGenre.NewIndex) = 63
    cmbGenre.AddItem "Native American": cmbGenre.ItemData(cmbGenre.NewIndex) = 64
    cmbGenre.AddItem "Cabaret": cmbGenre.ItemData(cmbGenre.NewIndex) = 65
    cmbGenre.AddItem "New Wave": cmbGenre.ItemData(cmbGenre.NewIndex) = 66
    cmbGenre.AddItem "Psychadelic": cmbGenre.ItemData(cmbGenre.NewIndex) = 67
    cmbGenre.AddItem "Rave": cmbGenre.ItemData(cmbGenre.NewIndex) = 68
    cmbGenre.AddItem "Showtunes": cmbGenre.ItemData(cmbGenre.NewIndex) = 69
    cmbGenre.AddItem "Trailer": cmbGenre.ItemData(cmbGenre.NewIndex) = 70
    cmbGenre.AddItem "Lo-Fi": cmbGenre.ItemData(cmbGenre.NewIndex) = 71
    cmbGenre.AddItem "Tribal": cmbGenre.ItemData(cmbGenre.NewIndex) = 72
    cmbGenre.AddItem "Acid Punk": cmbGenre.ItemData(cmbGenre.NewIndex) = 73
    cmbGenre.AddItem "Acid Jazz": cmbGenre.ItemData(cmbGenre.NewIndex) = 74
    cmbGenre.AddItem "Polka": cmbGenre.ItemData(cmbGenre.NewIndex) = 75
    cmbGenre.AddItem "Retro": cmbGenre.ItemData(cmbGenre.NewIndex) = 76
    cmbGenre.AddItem "Musical": cmbGenre.ItemData(cmbGenre.NewIndex) = 77
    cmbGenre.AddItem "Rock & Roll": cmbGenre.ItemData(cmbGenre.NewIndex) = 78
    cmbGenre.AddItem "Hard Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 79
    cmbGenre.AddItem "Folk": cmbGenre.ItemData(cmbGenre.NewIndex) = 80
    cmbGenre.AddItem "Folk-Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 81
    cmbGenre.AddItem "National Folk": cmbGenre.ItemData(cmbGenre.NewIndex) = 82
    cmbGenre.AddItem "Swing": cmbGenre.ItemData(cmbGenre.NewIndex) = 83
    cmbGenre.AddItem "Fast Fusion": cmbGenre.ItemData(cmbGenre.NewIndex) = 84
    cmbGenre.AddItem "Bebob": cmbGenre.ItemData(cmbGenre.NewIndex) = 85
    cmbGenre.AddItem "Latin": cmbGenre.ItemData(cmbGenre.NewIndex) = 86
    cmbGenre.AddItem "Revival": cmbGenre.ItemData(cmbGenre.NewIndex) = 87
    cmbGenre.AddItem "Celtic": cmbGenre.ItemData(cmbGenre.NewIndex) = 88
    cmbGenre.AddItem "Bluegrass": cmbGenre.ItemData(cmbGenre.NewIndex) = 89
    cmbGenre.AddItem "Avantgarde": cmbGenre.ItemData(cmbGenre.NewIndex) = 90
    cmbGenre.AddItem "Gothic Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 91
    cmbGenre.AddItem "Progressive Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 92
    cmbGenre.AddItem "Psychedelic Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 93
    cmbGenre.AddItem "Symphonic Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 94
    cmbGenre.AddItem "Slow Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 95
    cmbGenre.AddItem "Big Band": cmbGenre.ItemData(cmbGenre.NewIndex) = 96
    cmbGenre.AddItem "Chorus": cmbGenre.ItemData(cmbGenre.NewIndex) = 97
    cmbGenre.AddItem "Easy Listening": cmbGenre.ItemData(cmbGenre.NewIndex) = 98
    cmbGenre.AddItem "Acoustic": cmbGenre.ItemData(cmbGenre.NewIndex) = 99
    cmbGenre.AddItem "Humour": cmbGenre.ItemData(cmbGenre.NewIndex) = 100
    cmbGenre.AddItem "Speech": cmbGenre.ItemData(cmbGenre.NewIndex) = 101
    cmbGenre.AddItem "Chanson": cmbGenre.ItemData(cmbGenre.NewIndex) = 102
    cmbGenre.AddItem "Opera": cmbGenre.ItemData(cmbGenre.NewIndex) = 103
    cmbGenre.AddItem "Chamber Music": cmbGenre.ItemData(cmbGenre.NewIndex) = 104
    cmbGenre.AddItem "Sonata": cmbGenre.ItemData(cmbGenre.NewIndex) = 105
    cmbGenre.AddItem "Symphony": cmbGenre.ItemData(cmbGenre.NewIndex) = 106
    cmbGenre.AddItem "Booty Bass": cmbGenre.ItemData(cmbGenre.NewIndex) = 107
    cmbGenre.AddItem "Primus": cmbGenre.ItemData(cmbGenre.NewIndex) = 108
    cmbGenre.AddItem "Porn Groove": cmbGenre.ItemData(cmbGenre.NewIndex) = 109
    cmbGenre.AddItem "Satire": cmbGenre.ItemData(cmbGenre.NewIndex) = 110
    cmbGenre.AddItem "Slow Jam": cmbGenre.ItemData(cmbGenre.NewIndex) = 111
    cmbGenre.AddItem "Club": cmbGenre.ItemData(cmbGenre.NewIndex) = 112
    cmbGenre.AddItem "Tango": cmbGenre.ItemData(cmbGenre.NewIndex) = 113
    cmbGenre.AddItem "Samba": cmbGenre.ItemData(cmbGenre.NewIndex) = 114
    cmbGenre.AddItem "Folklore": cmbGenre.ItemData(cmbGenre.NewIndex) = 115
    cmbGenre.AddItem "Ballad": cmbGenre.ItemData(cmbGenre.NewIndex) = 116
    cmbGenre.AddItem "Power Ballad": cmbGenre.ItemData(cmbGenre.NewIndex) = 117
    cmbGenre.AddItem "Rhythmic Soul": cmbGenre.ItemData(cmbGenre.NewIndex) = 118
    cmbGenre.AddItem "Freestyle": cmbGenre.ItemData(cmbGenre.NewIndex) = 119
    cmbGenre.AddItem "Duet": cmbGenre.ItemData(cmbGenre.NewIndex) = 120
    cmbGenre.AddItem "Punk Rock": cmbGenre.ItemData(cmbGenre.NewIndex) = 121
    cmbGenre.AddItem "Drum Solo": cmbGenre.ItemData(cmbGenre.NewIndex) = 122
    cmbGenre.AddItem "A Capella": cmbGenre.ItemData(cmbGenre.NewIndex) = 123
    cmbGenre.AddItem "Euro-House": cmbGenre.ItemData(cmbGenre.NewIndex) = 124
    cmbGenre.AddItem "Dance Hall": cmbGenre.ItemData(cmbGenre.NewIndex) = 125

End Sub
Expand

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *