VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Make your own Mp3 Player

by Kevin (5 Submissions)
Category: Sound/MP3
Compatability: Visual Basic 3.0
Difficulty: Intermediate
Date Added: Wed 3rd February 2021
Rating: (20 Votes)

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.

Rate 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.File
name


Line1: 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.filename


Line1: 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 If


Line1: 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.stop


Line1: 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.filename


Line1: 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.filename


Line1: 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 Function


Line1: 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 If


Line1: 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 function


Note: 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.CurrentPosition


Line1: 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.Value


Line1: 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.Value


Line1: 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 = 2500


Line1: 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 If


Line1: 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.FileName


Line1: 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 If


Line1: 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 With


Line1: 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 With


Line1: 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 If


Line1: 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 #1


Line1: 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 Sub


Line1: 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 if


Line1: 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 if


Line1: 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 if


Line1: 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 If


Line1: 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]



Download this snippet    Add to My Saved Code

Make your own Mp3 Player Comments

No comments have been posted about Make your own Mp3 Player. Why not be the first to post a comment about Make your own Mp3 Player.

Post your comment

Subject:
Message:
0/1000 characters