

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

![[Courses]](../icons/up.png)
![[Rich]](../icons/prev.png) ![[Home]](../icons/home.png) ![[Rich]](../icons/next.png)
![[PHome]](../icons/author.png) |
Overview
The purpose of this lab is develop a software application with a
graphical user interface that may be used to manage and play MP3 files.
Acknowledgement
This lab was developed by Dr. Chris
Taylor and relies on the Xaudio SDK.
Problem Statement
Your MP3 player application should meet the following minimum
requirements:
- Provide a graphical user interface using MFC. (If you would like a
quick review/introduction to MFC, please take a look
at a CS182 lab assignment that I
have previously assigned.)
- Display a track list that may be played. Tracks may be added to
the list by allowing the user to select:
- An MP3 file, or
- A tag file containing one or more tracks.
- Create a playlist and play the tracks in the order they are given in
the playlist.
- It should be possible to create a playlist by:
- Allowing the user to select the tracks (one at a time) to be
played.
- Randomly ordering all of the tracks in the tract list.
Implementation details
- Please download an updated version of the MP3
(MP3.h and MP3.cpp)
and place them in your project directory.
- Copy audio_output.h, decoder.h,
file_input.h, file_output.h,
mpeg_codec.h, properties.h,
wave_codec.h, and xaudio.h header files
from the xasdk-3.2.9.5\include subdirectory into the
project subdirectory (just like lab 1).
- Copy xaudio.lib and xaudio.dll from the
xasdk-3.2.9.5\lib\dynamic subdirectory into the
project subdirectory. (Note this is different than lab 1.)
- In the project settings (Alt-F7) do the following:
- Under the Link tab, add xaudio.lib
to the Object/library modules list.
- Add MP3.h and MP3.cpp to the
project.
Notes:
- The list of minimum requirements is quite short. In addition, each
team must select two additional features to add to their application.
The additional features must be agreed upon by members of the team and
receive your instructor's approval. This must be done by the
beginning of week 7 lab.
- You may modify the MP3 and
album classes if you desire. (Be sure to
include the modified source code in your report if you choose to modify
them.)
- This is supposed to be a fun lab, and I expect that many of you will
choose to add a number of additional features. You may wish to look
at other MP3 players like
dBpowerAMP Audio Player or
Winamp for additional ideas.
You may also find it useful to look at the samples directory
of the Xaudio distribution for ideas on how to actually implement some
of these features.
- The MP3 class used in the first two labs
makes use of the synchronous library; however, you may find that you
would prefer to use XAudio's asynchronous MP3 library instead. That
is fine with me; however, you will need to study the documentation
provided with the XAudio library in order to figure out how to use
it.
- Extra Credit: During the week 9 lab
each team will demonstrate their application. We will all vote for the
one that we like best. The top vote getting team will receive extra
credit on this assignment.
- An example of an implementation of the open and save dialog boxes is
available at
mindcracker.com
Lab Reports
- Four lab periods (weeks 6, 7, 8, and 9) are allocated for this lab
project:
- Week 6 - This lab period is dedicated to the design of the program
and classes. The design work will be done in groups (3 students)
and the client (instructor) will be available to clarify the project
requirements.
- Week 7 - This lab period is dedicated to implementation of the
application.
- Week 8 - This lab period is dedicated to implementation of the
application.
- Week 9 - The first half of this lab period is dedicated to
demonstrating and testing the program. Each team's program will be
tested and evaluated by another team. It is important that all
programs be complete and operational by the beginning of this lab
period.
The second half of the lab period is dedicated to demonstrating
the program to the class and voting on the "best" application.
- Both reports should be submitted
electronically following the
Electronic submission guidelines.
(You may wish to consult the sample
report before submitting your reports.) Be sure to keep copies of
all your files, in case something gets lost. It may be wise to keep a
diskette backup as well.
- Design report (due 11:00pm, the day after week 7 lab)
- List of team members.
- A list of additional features beyond the explicit requirements
(at least two) that you plan to implement.
- Description of each class and at least the public portion of
each class definition. Note that a full description of each class,
attribute, and behavior is required, though this may be in the
form of "internal documentation" (comments) in your
class definition.
- Description of the graphical user interface (it may be useful to
include a screenshot).
- One or more use cases describing operation of the program.
- A brief narrative report describing any problems encountered or
remaining questions.
- A project time log (for each team member) indicating the date and
times for each project work period, activity for each period
(e.g., requirements study, design), and the total amount of time
spent on the project. Summaries should be provided for each
team member and the team as a whole.
- Final project report (due 11:00pm, the day prior
to week 9 lab)
- Updated design report, narrative report, and time log.
- Documented source code
for your complete implementation.
- The project grade will be determined by considering the following factors:
- Meeting specifications and submission guidelines
- Technical quality
- GUI Design
- Design documentation
- Internal documentation
(comments)
- Program clarity (formatting, etc.)
- Narrative report and time log
- Program demonstration and test output
- Spelling, grammar
- Extra credit
- Timeliness of submission
All team members will also complete a peer
evaluation form, which will be used to aid in assigning individual
grades.
If you have any questions, or any part of the assignment is unclear, please
consult the instructor.
|