Every wanted to make your own Mp3 Player instead of using WinAmp etc...This is your chance. Read this tuturial and find out how you can make your own Mp3 Player.
Welcome!
In the tutorial I will try to explain how to make your own mp3 player using the Media Player control.
It will be a fully featured audio player with a playlist and options like: "Repeat" and "Random Play".
Gray Text = Things to do!
Blue Text = Source Code
Red Text = Information about the code etc...
1) Start VB
2) Press CTRL + T
3) Insert: Windows Media Player Control, Microsoft Common Dialog Control and Microsoft Windows Common Controls.
4) Put on your form: 6 Command buttons (Playback), A Label (Time Label), A Textbox, 2 Sliders (Volume and seekbar), A Listbox (PLS)
5) Set the Media Player Control Invisible.
The first thing we'll have to do is making a "Open File" button. This way a user is able to choose an audio file.
Select one of the 6 command buttons you've created earlier in this tutorial and put the following code on it.On Error Resume Next
CommonDialog1.Filter = "Audio Files|*.wav;*.mid;*.mp3;mp2;*.mod|"
CommonDialog1.Flags = cdlOFNHideReadOnly
CommonDialog1.CancelError = True
CommonDialog1.DialogTitle = "Choose an mediafile to open"
CommonDialog1.FileName = ""
CommonDialog1.ShowOpen
List1.AddItem CommonDialog1.FileName
List1.ListIndex = List1.ListIndex + 1
MediaPlayer1.FileName = CommonDialog1.FileName
Text1.Text = CommonDialog1.FilenameLine1: Prevents the program from giving errors
Line2: It will display only mp3, wav, mid files etc...
Line3: This will remove the "Read Only" checkbox at the end of the open dialog
Line4: This will handle the error you get if you click the cancel button
Line5: This will set the text between the "..." on the titlebar of the open dialog
Line5: This will show the open dialog
Line6: An Empty Line!
Line7: This will put the file you've selected in the listbox (Used as playlist Control)
Line8: This will select the file you've chosen in the PlayList
Line9: This tells the Media Player Control which file it needs to play
Line10: Put the name of the file we're going to play in the "Filename" textbox.
Now that we're playing a file we can put other code in our player such as "Play Selected Track"...
Select one of the 5 command buttons you've created earlier in this tutorial and put the following code on it.On Error Resume Next
MediaPlayer1.FileName = List1.Text
Mediaplayer1.Play
text1.text = mediaplayer1.filenameLine1: Prevents the program from giving errors
Line2: The first line tells the Media Player Control the filename. In this case the selected item in the PlayList.
Line3: The second line tells the control that it must play the filename which was set above
Line4: Put the name of the file we're going to play in the "Filename" textbox.
I don't know what you think, But I'd like to be able to Pause the playing track :-)
Select one of the 4 command buttons you've created earlier in this tutorial and put the following code on it.On Error Resume Next
If MediaPlayer1.PlayState = mpPlaying Then
MediaPlayer1.Pause
Else
MediaPlayer1.Play
End IfLine1: Prevents the program from giving errors
Line2: If the Media Control is playing a file then...
Line3: Pause the playing file!
Line4: Else. If it's not playing a file. So it's either stoped or already paused...
Line5: Play the file which is still in the memory of the Media Player Control.
Every audio player contains a stop button. Well here's the code for it...
Select one of the 3 command buttons you've created earlier in this tutorial and put the following code on it.On Error Resume Next
Mediaplayer1.stopLine1: Prevents the program from giving errors
Line2: Stop playing the current file.
Well, If a player contains a PlayList I'd like to be able to switch between my tracks. Here's the "Previous Track" code.
Select one of the 2 command buttons you've created earlier in this tutorial and put the following code on it.On Error Resume Next
List1.ListIndex = List1.ListIndex - 1
MediaPlayer1.FileName = List1.Text
MediaPlayer1.Play
text1.text = mediaplayer1.filenameLine1: Prevents the program from giving errors
Line2: This will go one item back from the selected item.
Line3: This tells the Media Player Control which file it needs to play
Line4: Say to the Media Player control : Play the file I've set above!
Line5: Put the name of the file we're going to play in the "Filename" textbox.
Well, If a player contains a PlayList I'd like to be able to switch between my tracks. Here's the "Next Track" code.
Select the last commandbutton that's left and put the following code on it.On Error Resume Next
List1.ListIndex = List1.ListIndex + 1
MediaPlayer1.FileName = List1.Text
MediaPlayer1.Play
text1.text = mediaplayer1.filenameLine1: Prevents the program from giving errors
Line2: This will go one item further than the selected item.
Line3: Tell the Media Player control which file it needs to load. In this case the selected item in the PlayList.
Line4: Play the file!
Line5: Put the name of the file we're going to play in the "Filename" textbox.
Now that the PlayBack controls are done we can add some more code to our player.
Put the following code in your form. It's a function which is called in the next Sub.Function ConvertTime(i As Integer)
Secs = i Mod 60
Mins = Int(i / 60) Mod 60
Hours = Int(i / 3600)
If Secs < 10 Then Secs = "0" & Secs
If Mins < 10 Then Mins = "0" & Mins
ConvertTime = Hours & ":" & Mins & ":" & Secs
End FunctionLine1: This is the name of the function and the statement which tells VB it's a function.
Line2: We make a variable named secs which converts I (which is specified when the function is called) to seconds
Line3: We make a variable named mins which converts I to minutes
Line4: We make a variable which hours which converts I to hours
Line5: If the number of seconds is less the then we put a 0 before the seconds like this: 01,02,03 etc...
Line6: The same as above but now with minutes
Line7: Now we update the sub with the output format which you can get in the next sub.
Line8: The end of this function :-(
Now that you've placed the above function in your code we're ready to call it.
Insert a Timer Control in your project and put the following code on it. Don't forget to set it's interval to: "1000".
Interval="1000": This means that the timer will update the Timer Window every second.If MediaPlayer1.PlayState = mpPlaying Then
Label1.Caption = ConvertTime(Round(MediaPlayer1.CurrentPosition, 0)) & " / " & ConvertTime(Round(MediaPlayer1.Duration, 0))
Else
Label1.Caption = "00:00:00 / 0:00:00"
End IfLine1: Are we playing a file ?
Line2: If we are playing a file update the Timer Window every second with the time of the file you're playing
Line3: If we are not playing a file...
Line4: Put the following text in your Timer Window: "00:00:00 / 00:00:00"
Line5: Stop our check functionNote: The time of the file will be showed like this: "03:46:13 / 04:12:34"
The "03:46:13" indicates the current playing time and "04:12:34" indicates the total time of the file.
We have playback controls, a PlayList and a Timer Window but we don't have a seekbar yet!
Insert a Timer Control in your project and put the following code on it. Don't forget to set it's interval to: "1000".
Interval="1000": This means that the timer will update the Seekbar control's position every second.On Error Resume Next
Slider1.Max = MediaPlayer1.Duration
Slider1.Value = MediaPlayer1.CurrentPositionLine1: Prevents the program from giving errors
Line2: The Maximum value of the slider is the duration of the file we're playing
Line3: Update the position of the slider to the current position of the Media Player Control
We're not ready with our slider yet because we want to change the position of the track when moving the slider.
Put the following code in the Slider1_Scroll() function.On Error Resume next
MediaPlayer1.CurrentPosition = Slider1.ValueLine1: Prevents the program from ginving errors
Line2: Update the position of the file we're playing to the slider's position. Easy huh?
Earlier in this tutorial I said you had to put 2 slider control's on your form.
Well, We've already used 1 slider so now we're going to use the second one. This one is for the Volume Control.
Put the following code in the Slider2_Scroll() function and set the Max Value of the slider to: "2500"Dim a As Integer, b As Integer
Dim d, c
c = Slider2.Value - 2500
MediaPlayer1.Volume = c
b = Slider2.Min
a = Slider2.ValueLine1: Make 2 variables called "a" and "b" and say to VB they are an Integer.
Line2: Set variable "D" and "C"
Line3: Update variable c with Slider2's value - 2500
Line4: Set the volume of the Media Player control from Slider2's value
Line5: Variable "b" is The Minium Value of Slider 2
Line6: Variable "a" is the Maximum Value of Slider 2
Well, Just to make sure a few things you need to place this code in the Form itself.
Put the following code in the Form_Load function.timer1.interval = 1000
timer2.interval = 1000
Slider2.Max = 2500Line1: Set the interval of Timer1 to "1000" in case you forgot :-)
Line2: Set the interval of Timer2 to "1000" in case you forgot :-)
Line3: Set the maximum value of the volume slider to "2500" in case you forgot :-)
Congratulations! You're Audio Player is now ready!
You will find some more useful code for it below...
If you want to have an "Mute" option in your Audio Player use the following code.
If MediaPlayer1.Mute = True Then
MediaPlayer1.Mute = False
Else
MediaPlayer1.Mute = True
End IfLine1: If the sound is muted then...
Line2: UnMute the sound!
Line3: Mute the sound because it's not muted yet!
Line4: Stop the check function
Your audio player contains a PlayList but why would you need a PlayList if it cannot contain more than 1 file.
Here's the code to add files to your PlayList.On Error Resume Next
CommonDialog1.Filter = "Audio Files|*.wav;*.mid;*.mp3;mp2;*.mod|"
CommonDialog1.Flags = cdlOFNHideReadOnly
CommonDialog1.CancelError = True
CommonDialog1.DialogTitle = "Add File"
CommonDialog1.FileName = ""
CommonDialog1.ShowOpen
List1.AddItem CommonDialog1.FileNameLine1: Prevents the program from giving errors
Line2: It will display only mp3, wav, mid files etc...
Line3: This will remove the "Read Only" checkbox at the end of the open dialog
Line4: This will handle the error you get if you click the cancel button
Line5: This will set the text between the "..." on the titlebar of the open dialog
Line6: This will clear the previous selected Filename in the Open Dialog
Line7: This will show the open dialog
Line8: An Empty Line!
Line9: Add the selected file to our PlayList
Here's the code to remove the selected item from your PlayList...
If List1.ListIndex > -1 Then
On Error Resume Next
If list1.text = mediaplayer1.filename then msgbox "You can't remove the file you're playing":exit sub
List1.RemoveItem List1.ListIndex
End IfLine1: If the PlayList's index is bigger than -1 go on. This means that there's actually something.
Line2: Prevents the program from giving errors
Line3: If the item you're trying to remove is the current playing item show a msgbox telling the user the item cannot be removed. Also stop the code so it won't be removed. This code is needed because it will keep your PlayList working. If you remove this line the player can't determine anymore which file was playing and it won't go next anymore from the file you were playing. It starts the list again.
Line4: Remove the selected line from the PlayList
Line5: Stop our check function
Here's the code to move the selected item in your PlayList one line up.
on error resume next
Dim nItem As Integer
With lstItems
If List1.ListIndex < 0 Then Exit Sub
nItem = List1.ListIndex
If nItem = 0 Then Exit Sub
List1.AddItem List1.Text, nItem - 1
List1.RemoveItem nItem + 1
List1.Selected(nItem - 1) = True
End WithLine1: Prevents the program from giving errors
Line2: Set 'NItem" as variable and tell VB that it's an Integer
Line3: Tell VB that we're working with the List Items
Line4: If the List Index is smaller that 0 it can't move up anymore so STOP the code
Line5: Tell VB that our variable the index of the selected item in our PlayList is
Line6: If the index is 0 STOP because the line can't move up further.
Line7: Add the listindex text one item before the selected item
Line8: Remove the current selected item
Line9: Select the line we've just moved one line up
Line10: Tell VB we're not working with the List Items anymore
Here's the code to move the selected item in your PlayList one line down.
on error resume next
Dim nItem As Integer
With lstItems
If List1.ListIndex < 0 Then Exit Sub
nItem = List1.ListIndex
If nItem = List1.ListCount - 1 Then Exit Sub
List1.AddItem List1.Text, nItem + 2
List1.RemoveItem nItem
List1.Selected(nItem + 1) = True
End WithLine1: Prevents the program from giving errors
Line2: Set 'NItem" as variable and tell VB that it's an Integer
Line3: Tell VB that we're working with the List Items
Line4: If the List Index is smaller that 0 it can't move up anymore so STOP the code
Line5: Tell VB that our variable the index of the selected item in our PlayList is
Line6: If the index is at the end of the PlayList it can't go down anymore so STOP the code
Line7: Add the listindex text one item after the current item. The listbox works a bit strange so line1 is actually line2
Line8: Remove the current selected item
Line9: Select the line we've just moved one line down
Line10: Tell VB we're not working with the List Items anymore
Here's the code to clear the whole PlayList...
ask = MsgBox("Do you want to clear your list ?", vbQuestion + vbYesNo, "Confirm")
If ask = vbYes Then
List1.clear
Else
End IfLine1: We show a Msgbox which asks the user if he/she really want to clear the PlayList
Line2: If they answer YES...
Line3: The PlayList will be cleared
Line4: If they answer something else...NO in this case!
Line5: Don't do anything
Line6: Stop the check function
Here's the code to save your PlayList...
On Error Resume Next
CommonDialog1.Filter = "PlayList File (M3u)|*.m3u|PlayList File (Pls)|*.pls"
CommonDialog1.DialogTitle = "Save List"
CommonDialog1.Flags = cdlOFNHideReadOnly
CommonDialog1.ShowSave
CommonDialog1.CancelError = True
Open CommonDialog1.FileName For Output As #1
For X = 0 To List1.ListCount - 1
Print #1, List1.List(X)
Next X
Close #1Line1: Prevents the program from giving errors
Line2: It can only save your PlayList as: "M3u or Pls"
Line3: This will set the text between the "..." on the titlebar of the save dialog
Line4: This will remove the "Read Only" checkbox at the end of the save dialog
Line5: This will show the save dialog
Line6: This will handle the error you get if you click the cancel button
Line7: An empty line!
Line8: Open the selected file and place it in a variable called #1
Line9: Make sure we save the whole PlayList
Line10: Write the contents to the selected file
Line11: Go on till we have saved all items
Line12: Close the file
Here's the code to open a previously saved PlayList file...
On Error Resume Next
On Error GoTo err
Close #1
Dim X
OpenFile:
CommonDialog1.Filter = "All Supported|*.m3u;*.pls|"
CommonDialog1.DialogTitle = "Open List"
CommonDialog1.Flags = cdlOFNHideReadOnly
CommonDialog1.ShowOpen
CommonDialog1.CancelError = True
Open CommonDialog1.FileName For Input As #1
List1.clear
Do
Input #1, X
List1.AddItem (X)
Loop
Close #1
err:
Exit SubLine1: Prevents the program from giving errors
Line2: If there's an error go the a sub called: "err"
Line3: Close all files so we don't get any errors while trying to open a file
Line4: A sub called "OpenFile
Line5: It will display only mp3, wav, mid files etc...
Line6: This will set the text between the "..." on the titlebar of the open dialog
Line7: This will remove the "Read Only" checkbox at the end of the save dialog
Line8: This will show the open dialog
Line9: This will handle the error you get if you click the cancel button
Line10: Load the file that was selected into the memory as variable #1
Line11: Clear the list before adding new items in it
Line12: Do function
Line13: Load all contents into variable X
Line14: Add X to our PlayList
Line15: Gon on till we have placed all files in our PlayList
Line16: Close the files which was opened
Line17: Error Handler sub which is called above
Line18: Stop the code. If case there's an error
Here's the code to repeat the current playing file...
Insert a checkbox on your form. Add the following code in the "EndOfStream" function of the Media Player control.if check1.value = 1 then
mediaplayer1.play
else
end ifLine1: If the checkbox is checked...
Line2: Play the file again!
Line3: If it's not checked...
Line4: Stop our check function
Here's the code to stop playing after the current playing track...
Put a checkbox on your form. Add the following code in the "EndOfStream" function of the Media Player control.if check2.value = 1 then
mediaplayer1.stop
else
end ifLine1: If the checkbox is checked...
Line2: Stop Playing!
Line3: If it's not checked...
Line4: Stop our check function
Here's the code to play normal. After it's done it will start playing the next track in your PlayList.
Put a checkbox on your form. Add the following code in the "EndOfStream" function of the Media Player control.if check3.value = 1 then
list1.listindex = list1.listindex + 1
mediaplayer1.filename = list1.text
mediaplayer1.play
text1.text = mediaplayer1.filename
else
end ifLine1: If the checkbox is checked...
Line2: Select the next line in the PlayList from the selected item.
Line3: Tell the Media Player Control that it needs to load the selected item in the PlayList
Line4: Play the loaded file
Line5: Update our Filename Window with the current playing track
Line6: If it's not checked...
Line7: Stop our check function
A very important thing that you must do is the following...
You must make a function that will select the current playing track every time it's done playing.
If you don't do this the player will play the next track from the item you've selected and not from the file you're playing.
Put the following code in the "EndOfStream" function of the Media Player control...filename.text = mediaplayer1.filename
Line1: Put the filename of the current played track in a textbox so we can look it up later.
Now add the following code in the "_Change" function of the textbox called "filename".If Trim(filename.Text) <> "" Then
For i = 0 To List1.ListCount - 1
If Left(List1.List(i), Len(Trim(filename.Text))) = Trim(filename.Text) Then
List1.Selected(i) = True
Else
List1.Selected(i) = False
End If
Next i
End IfLine1: Check if the textbox contains some text
Line2: Search the whole list
Line3: Search the list for contents of the textbox
Line4: If it's found select the item that was found --> Now the player goes next from this selected item. This was the playing item!
Line5: If it was not found don't select anything. But the file is always found because you were playing it :-)
Line6: Stop check function
Line7: Go on till end of PlayList
Line8: Stop check function
I hope you know how you can make your own Mp3 Player after reading this tutorial.
Please, Send as much feedback as you want and DON'T VORGET TO VOTE FOR MY WORK!
Some people are complaining about using the Media Player Control but I don't care.
As long as we have fun with it it's good, and another great thing is that you don't have to use WinAmp anymore :-)Since English is not my Primary Language there can be some spelling faults in it.
Please, Report them and I'll fix it. Dutch is my primary language...Enjoy your own Mp3 Player !!
KEVIN,
[email protected]