3PM is an MFC application for playing MP3 audio files.


About MP3s:

MPEG-1 audio layer 3 (MP3) is a digital audio compression algorithm that achieves a compression factor of about twelve while preserving sound quality. It does this by optimising the compression according to the range of sound that people can actually hear. MP3 is currently (July 1999) the most powerful algorithm in a series of audio encoding standards developed under the sponsorship of the Moving Picture Experts Group (MPEG) and formalised by the International Organization for Standardization (ISO).

MP3 is very different from Layer 2, using an additional MDCT layer to increase frequency resolution. Its scale factor groups are more optimised for the human ear, and it uses nonlinear sample quantisation and Huffman coding.

MP3 files (filename extension ".mp3") can be downloaded from many World-Wide Web sites and can be played using software available for most operating systems (also downloadable), e.g. Winamp for PC, MacAmp for Macintosh, and mpeg123 for Unix.

MP3 files are usually downloaded completely before playing but streaming MP3 is also possible. A program called a "ripper" can be used to copy a selection from a music CD onto your hard disk and another program called an encoder can convert it to an MP3 file.

(Definition acquired from FOLDOC)




The Programming:

The dialog-based application was developed entirely in Microsoft Visual C++. The major audio functions employs the MCIWnd series macros (VFW32.LIB). 3PM requires Windows NT 4.0 or later (Windows 98 or later is recommended). The application was first developed in the Microsoft Visual Studio 6.0 environment and was later imported to Microsoft Visual Studio .NET.


  • CFileDialog class was used for saving and loading dialog display. The old Windows' file dialog was used so that the applications may run under older versions of Windows (such as Windows NT 4.0 and Windows 98).
  • CListCtrl class and a linked list was used for playlist control.
  • CFile class was used for reading and writing playlist data to disk. Errors catching was implemented.
  • CProgressCtrl class was used for volume control and playtime control. Point hit testing was implemented in the OnLButtonDown function for seeking capabilities.
  • Boolean flags was used for determining mute, random, and repeat status.
  • Conditions were added to the OnSysCommand function so that the application dialog will not be closed with the 'Enter' or 'Esc' keys.
  • 3PM may be used for opening wave and midi files as well. These files, however, do not contain any ID3 information.


  • Small application size - for the size of about 140KB with MFC dynamically linked or 256KB with MFC statically linked, 3PM may be fit even on a diskette. It can also be easily sent thru email.
  • Independent from the operating system - You do not need to "install" this application in order to use it. 3PM will not alter any of your system configurations.
  • Short loading time - applications with many add-ons take time to open. Programs such as the Windows Media Player, Real Audio Player, Quick Time, or Winamp may take even minutes to load if the computer is low in system resources. 3PM, on the other hand, opens almost instantaneously. If you just wanted to enjoy your MP3s, why use an application that also plays movies or other media types?


Version History:


3PM Player was originally developed as a software design project for Boston University (SC447, Fall 2001).

Alpha v0.1:

  • Open, play, pause, and stop functions added
  • Volume control functions added
  • ID3 information added

Alpha v0.2:

  • Playlist functions added
  • Prev and Next functions added
  • Graphical buttons added

Alpha v0.3:

  • Graphical background added
  • Seek capabilities added

Alpha v0.4:

  • Save and load playlist functions added