DATE: February 3, 2000
TO: Joonhyuk Kang and Dr. Brian L. Evans
FROM: Hamood-ur Rehman
SUBJECT: A proposal to design and implement a graphical user interface for an MP3 audio player
PROJECT SUMMARY
In my project, I will design and implement a graphical user interface (GUI) for an MP3 (MPEG-1 Layer-3) player. The MP3 player will be able to play MP3 audio files. The MP3 player will make use of a previously developed decoding engine to play the audio files. The decoding engine decodes an input stream and produces output samples that can be used by the MP3 player to play the audio input. The player will provide an easy to use GUI.
BACKGROUND
MP3 audio is a popular format for digital music. MP3 music may be downloaded over the Internet to handheld devices or to desktop players. As used in digital music, the MP3 format compresses the audio information about 10:1 and maintains high audio quality. MP3 uses concepts from digital signal processing, coding, and psychoacoustics. In an MP3 player, the user may choose to rewind, fast forward, or play the next track. Any user interface would need to be tightly coupled to the MP3 decoder engine.
My technical area concentrates on digital signal processing (DSP). I found the project very interesting because it will require me to use my knowledge of DSP and programming. The DSP courses that I have taken give me sufficient background in the field. The project requires me to learn Java programming language as well. My programming experience in other languages will help me accomplish that.
PROBLEM DESCRIPTION
The main goal of this project is to develop a player interface to an MP3 decoder. The overall design will be modular with the interface being a separate program to the decoder. The decoder and the interface would run independently. However, they must communicate. They will communicate via exchanging messages. The player will send control messages to the decoder, and the decoder will also send messages to the player. The overall operation can be summarized in Figure 1.
Figure 1: MP3 Audio Playback System
PROCEDURE
Programming with Java will do the implementation of the MP3 player. Java is an object oriented programming language. This implementation requires understanding of the decoder used.
I will first understand the decoder to figure out how an interface could be implemented. This would involve going through the code of the decoding engine and reading the relevant documentation, if available. Then, a simple interface will be implemented to see how the player will interact with the decoder. More features to the player will then be added to utilize the capabilities of the decoding engine. The MP3 player will be tested extensively by playing MP3 files and using the features available through the MP3 player.
DESIGN
The design process starts from the problem specification. The task at hand will be sub-divided into smaller and manageable sub-tasks. My design will be modular, which means that sub-tasks will be implemented such that they are loosely coupled. Each module will perform preferably just one well-defined task. These modules will communicate with one another through their interfaces to comprise the solution. To achieve modularity, I plan to combine object-oriented design (OOD) and top down design (TDD) methodologies.
The modular design shall facilitate isolation of errors, elimination of redundancies, and ease of modifications. It will also make the programs more readable. Since the MP3 player operations are dependent on the decoder, the decoder’s design and implementation will force some constraints on my design.
SPECIFICATIONS
The MP3 player will have an easy-to-use interface that will play MP3 audio. It will be a separate module interfaced to the decoder. The player will provide various features to the user such as play, stop, pause etc. The functionality of the player will be limited by the underlying decoding engine's capabilities. The features offered will be tested.
RESOURCES
The major resources required include compilers, books [1], decoder engine source code [2], and a computer. I will make use of the university's computer and library facilities to work on my project. The Internet will also be good a resource. Two of the decoders available on the Internet with their source codes are:
1. ISO MPEG Audio Subgroup Software Simulation Group (1996): The decoder passes all lower sampling frequency compliance bitstreams for MPEG 1 and MPEG 2. The decoder program has a very crude implementation of bitstream synchword detection. It may not be able to correctly decode valid bitstreams which have false synchword patterns in the ancillary data portion of the bitstream. No warranties are associated with this software. The software can be used for evaluation purposes.
2. MPEGTV's XAudio decoding engines: These engines will decode MPEG Audio Layers 1, 2 and 3 (MP1, MP2 and MP3), at all bitrates and frequencies as well as MPEG 2.5 extension bitstreams (lower sampling rates). The engines can be used from a variety of different languages including Java, C++, and Scripting languages. Different versions are available for the Unix and Windows platforms. This software development kit is free for individual use and developmental and evaluation purposes.
Due to the apparent advantages of the XAudio decoders [2], I will be using a XAudio decoding engine.
DEVELOPMENTAL COSTS
Most of the resources are easily available. The decoding engine can be downloaded from the Internet. A suitable commercial compiler and a personal computer can be purchased. Campus libraries and computers are also accessible. The major costs would be associated with purchasing any Java books, a compiler, and the time spent as the project would involve thorough understanding of the decoder, and learning Java.
SCHEDULE OUTLINE
February 24, 2000: Understand the decoder, and learn Java.
March 20, 2000: Build and test the initial interface.
April 14, 2000: Add functionality to the interface and improve GUI.
April 25, 2000: Test and Debug.
CONCLUSION
The project aims at producing a Graphical User interface for an existing MP3 decoder engine. The design would make it possible to listen to MP3 audio using this MP3 player. This project will be a great deal of learning. Besides gaining DSP knowledge as used in MP3 technology, I will learn Java that will add to my programming skills. Since it is an ambitious project requiring a lot of time, time will be a major limitation.
REFERENCES
[1] H. M. Deitel and P. J. Deitel, Java How to Program. New Jersey: Prentice Hall, 1998.
Laura Lemay and Rogers Cadenhead, Java 2. Indiana: Sams, 1999.
[2] "Xaudio – SDK and Developer’s Resources,"
http://www.xaudio.com/developers/developers.php, Jan. 27, 1996