ARTICLE

Poorman's iPod MP3 Player in C# and .NET

Posted by Mike Gold Articles | Visual C# January 18, 2007
Tags: .NET, C#, iPod, mp3, music, player
This article is an update to an article written by George Steeves on how to create an MP3 player using C# and .NET using the moon valley mp3p.ocx control.
Reader Level:
Download Files:
 

PoormansIpod.jpg

Figure 1 - Music Player

Introduction

This article is based upon one written on C# Corner by George Steeves on creating a Simple MP3 player.  This article upgrades the player to the .NET 2.0 Framework,  and adds some features to the player, such as the ability to view a song list inside a folder.  It also allows you to play, stop and pause the song.  The download also includes a necessary file (xaudio.dll )  which is required by the mp3p.ocx file developed by moon valley.

Installation

A setup project is included with the download as well as the actual installation of the mp3 player.  Run the installation first so that it registers the activex control and installs the necessary dlls.  You can test out the mp3 player after installing by going to the desktop or the start menu.

The Code

The Poorman's iPod player uses .NET to wrap the mp3p.ocx ActiveX control.  The control has some basic music file capabilities such as the ability to play, pause, or stop your song.  To use the control, you initially need to open the mp3 file into the control.  At this point, you can control the state of the song.  Below is the code for opening a song from the playlist:

Listing 1 - Opening a song into the mp3p.ocx control

/// <summary>
///
Opens a selected song into the mp3 activex control
/// </summary>
private void OpenSelectedSong()
 {

 // make sure the previous output is closed
   axMp3P1.OutputClose();
  //  get the path of the selected mp3 file and open it
 
if (lbSongs.SelectedIndex >= 0)
  {
    
string songPath = String.Format("{0}\\{1}.mp3", _currentPath, lbSongs.SelectedItem.ToString());
     axMp3P1.InputOpen(songPath);
  }
}

The program allows you to browse for a particular song on your file system.  Initially the program puts you in the "My Music" folder (which is under "My Documents").  If you tend to keep all your music here, then it will be easier to access them.  If you don't keep your music in this folder, you can change the line of code below located inside the constructor of the form

Listing 2 - Setting the starting place of the Folder Browser to the My Music Folder

folderBrowserDialog1.RootFolder = Environment.SpecialFolder.MyMusic;

Browsing for the song folder is accomplished through the ShowDialog method of the FolderBrowserDialog as shown in listing 3.  The btnBrowse_click method brings up the folder browser, and upon clicking ok, sets the selected music folder directory in which to look for the songs to play.  Then the method loops through each mp3 file in the selected folder and adds it to the list box.

Listing 3 - Browsing for a song folder

private void btnBrowse_Click(object sender, EventArgs e)
 {
  
// open the folder browser
   
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
     {
        
// find out which directory was chosen
         _currentPath = folderBrowserDialog1.SelectedPath;
        
DirectoryInfo dir = new DirectoryInfo(_currentPath);
         lbSongs.Items.Clear();
// go through each mp3 file in the directory
// and add it to the list box
 
    foreach (FileInfo nextFile in dir.GetFiles("*.mp3"))
        {
               lbSongs.Items.Add(nextFile.Name.Remove(nextFile.Name.LastIndexOf(
'.')));  // also remove the mp3 extension
         }
  
// clear the paused flag
         _pausePressed =
false;

    } 
// end if DialogResult is OK
}

Playing, Pausing, and Stopping the Player

The mp3p.ocx control has methods to play, stop, and pause the player.   To play, simply call Play() as shown in listing 4.  Similarly you can call Pause, to pause the player, and Stop, to stop the player.

Listing 4 - Play Button Event Handler

/// <summary>
///
Plays the current selected song
/// </summary>
///
<param name="sender"></param>
///
<param name="e"></param>
private void btnStart_Click(object sender, EventArgs e)
 {
  
if (_pausePressed == false)
   {
      OpenSelectedSong();
   }

  axMp3P1.Play();
_pausePressed =
false;
}

Conclusion

If you are wondering how to get a hold of mp3 files,  you can either sign up for Napster, or copy the tracks off your existing CDs.  The way I get the tracks off my current CD's into MP3 format is through an add-in to the Windows Media Player that lets me rip tracks into MP3 format. (The latest Windows Media Player may already have mp3 ripping capability without the add-in).  Anyway, enjoy playing your music.  If you have a computer at work, you can use this player with your headphones to enhance your working experience.  Happy Listening!

Login to add your contents and source code to this article
post comment
     

which setup u are talking about?
please explain.
i am getting same errors . it says are you missing a reference or namespace axmp3plib could not found.

Posted by ram kumar Jul 16, 2010

this is very nice player . thanx man ...its very helpful to me.

Posted by nimz Mar 10, 2010

hi friends
i wanted to drag & drop function coding for playlist in audioplayer. plz send me dat.

Posted by nimz Mar 10, 2010

?????????????????????????

Posted by warut warut Mar 01, 2010

This is very nice, thanks.
I've changed it a little, added better UI and a drag and drop capability and now i'm using this as my new lightweight mp3 player :D

Danny, Locksmith Los Angeles

Posted by danny dror Jun 14, 2009
COMMENT USING
PREMIUM SPONSORS
DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and add new content to existing PDF documents from within your applications.
Get Career Advice from Experts
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.