assignment two:
portable media player simulation

This assignment is intended to help you learn to understand the relationships between users and program design. We will also learn how to use the Java Swing toolkit to build graphical user interfaces (GUI's), and how to play audio files and show images. As part of the assignment, you will conduct a needs and requirements evaluation, create a design briefing, and build a functional prototype.

needs and requirements

Before you start coding, conduct a Needs and Requirements Analysis, by looking at existing media players, and interviewing users. Examine how media is organized and played in existing designs. This will include how you use the controls to see choices and select media files and playlists, listing available possibilities (including metadata).

Part of your assignment is to present a study of existing interfaces, and an explanation of your choice of features. Recall the vocabluarly and methods suggested by Norman, Tog, Rodgers-Sharp-Preece, and Winograd/Liddle as you conduct your analysis. Write clearly. Illustrate examples with photos. You are strongly encouraged to take your written analysis to the Writing Center *before* you turn it in. Be explicit about which data collection techniques you use: e.g., observation, interview, questionnaire, heuristic evaluation, cognitive walkthrough, ... Articulate the sources of your data.

Describe your data collection process (number of participants, structure, questions, observations). Analyze the data clearly and concisely. Don't present every piece of your raw data. Consider the structure of your presentation carefully. Organize it well!

Do present a clear set of needs; connect the derivation of each need to what you learned through data collection. The process and products need to be tightly related. Make sure to remember that the next steps are to design and build a prototype. Address here the concrete issues that will arise later in the development cycle.
due tuesday, 9/30

design briefing

The next deliverable is a Design Briefing, which is motivated by the Needs and Requirements. Make sure to address the design of the player and interactive controls. How do you make lots of information and media available through a small interface footprint? The Design Briefing is a synthesis, in which you develop a design, and explain design choices. Explain which features you have chosen to implement, and why. Address important details. Again, use the interaction design vocabulary from the readings to articulate key ideas. You can mimic successful prior design features that you discovered in that deliverable; you should also develop new ideas, that extend or transform the prior work. Include images and sketches, as well as text. The Design Briefing describes what you will build in the next deliverable. Be sure to be aware of the functionalities required there, as you develop this.

Develop specific design scenarios that illustrate important design attributes and features. Show screen shots / sketches with canned data from the scenarios, to illustrate what it will look like. In these scenarios, include narrative to explain what is happening, and how it works.
due tuesday, 10/6

functional prototype

Use Java to construct an interactive interface that simulates the functionality of a portable media player. Create an input system using buttons, sliders, and any simulated custom i/o controls that you like.
You are limited to a display area that is 320x480 for data plus another 320x240 for interactive controls. All interactions should take place through the control area. That is, the mouse cannot be used to click on the display area.
You will need to develop a multithreaded architecture, so that playing audio does not occur directly in the gui event handling thread.
The media player needs to be able to
  • Navigate a library of music, enabling selection of songs and playlists.
  • Play, pause, skip backwards to the start of the song and to the previous song, skip forwards to the next song.
  • Control the volume of the current song.
  • Have its controls behave sensibly and powerfully *while* a song is playing.
Here are some other functionalities you may wish to implement. Of course, this list is not complete. Design your own!
  • Fast-forward and rewind scrub -- play the audio faster than usual, in either direction.
  • Photo collection browsing and slide shows.
  • Integration of photo shows with music playback.

We are providing a library for reading audio metadata from MP3 files, another library for storing audio metadata in XML. We also provide a sample audio library in this format. The libraries are available as a .zip file of projects, or through direct SVN access.

Libraries

This .zip file contains 3 Eclipse projects:

  • ecologylabFundamental (which provides XML to/from Java translation, among other capabilities)
  • ecologylabAudio (which includes the JavaZoom MP3 SPI, objects for extracting and storing MP3 metadata, and code for MP3 playback)
  • hcsi2007 (which includes some free sample MP3s and an annotated tutorial demo application that reads the samples and plays them back, as well as includes instructions on how to do it yourself)
To use them, simply drop them into your Eclipse workspace, the included .project files should handle the rest automatically. To run the demo application (hcsi2007/TestAudioApp.java), right click on it and choose "Run as...", "Java Application".

To use the SVN access (which provides the absolute latest version of all the code), you will need to install the Subclipse plugin. You will then use the following URLs with username anonymous and no password; you should "Checkout..." the trunk for each project from Eclipse:

implementation and final documentation due tuesday, 10/13
Turn in a CD with all documents for this assignment. The top-level directory of this CD must contain an runnable jar file, which i can double-click to run your application, assuming I have the JRE installed. You do this by right-clicking the file with your static void main method, and selecting Export-Java-Runnable JAR fie. The executable jar file will also refer to the jar files you depending on as libraries. Note this is not just an archive jar file -- you must make it executable. The CD should contain your audio files and source files. Include your eclipse project file & workspace, but do not assume we will actually use them in the evaluation. Also make sure that your CD includes copies of your Needs and Requirements and Design Briefing deliverables. Additionally, turn-in a hard copy printout of your source code.

  • Create a course home page (for this course only!). It can be simple. Within it, create a section or page for deliverables for this assignment. Create a link to each deliverable in that place, including reports, documentation, source code, and running project. You need to e-mail andruid at cs.tamu.edu with the URL for your course home page.
  • You also need to turn in a physical copy of your reports, source code, and your documentation to the Interface Ecology Lab, Richardson 909.
  • designed for mozilla 1+ and ie 6+
    an interface ecology lab production