Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Summer 2001 Project Milestones
Movie Editor Requirements
The semester project is to write a movie editor in Squeak. Users should be able to create a movie, modify it, and play it back. You can to visit Summer 2001 Media for Movies to get or share pictures, sounds, and MPEG's.
Milestone 1 should be done individually. The rest of the milestones should be done in groups of 2-4 – not 5, and not 1.
The last two milestones are intentionally not listed – if you make a flexible design which doesn't have much duplicated code, then they will be easy. If you have a rigid design or if you have a lot of duplicated code, then the final milestones will be much harder.
Each milestone is due in class on the due date. Turn in your code using the Summer 2001 Turnin Information, and, except for milestone 1, turn in things like design documentations as hard copy in class.
The final milestone should include all of the functionality from milestones 2 and onward. You will not be graded on previous requirements until the last milestone, except so far as new requirements rely on older ones to work. Probably, you should try to keep all functionality working, anyway, in order to make life easier at the end of the semester.
Milestone 1: Basic Programmatic Interface
The first milestone implements some basics in what will likely be a
core class in your final design. This milestone is the only one where
specific classes and methods are required – later, you must decide for yourself how to break down the requirements into methods. (In fact, you can totally redo these methods if you want to.)
From a workspace, "
Movie new" should create a new
movie, which should respond to the following messages:
- addPictureFile:at:fromSeconds:toSeconds:- schedule an image from the specified file to appear at the specified screen coordinates between the given times. The movie starts at time 0 seconds. The coordinates 1@1 are at the upper left corner of the screen. Note: image times may overlap! The picture file will be either a JPG or a GIF.
- printSummary - print a summary of the movie to the Transcript. The summary should include each picture to be displayed, its location, and the start and end time for displaying it.
- play - play the movie from beginning to end.
For example, the following code schedules three pictures in a movie
and then plays them:
| myMovie |
myMovie := Movie new.
myMovie addPictureFile: 'first.gif' at: 1@1 fromSeconds: 0 toSeconds: 10.
myMovie addPictureFile: 'second.gif' at: 1@1 fromSeconds: 10 toSeconds: 20.
myMovie addPictureFile: 'popup.gif' at: 50@50 fromSeconds: 15 toSeconds: 18.
- 30% addPictureFile:etc:
- 30% printSummary
- 30% play
- 10% play handles images with overlapping times, play stays synchronized
Milestone 2: Making Plans
Plan the code and the user interface through milestone 4. This
milestone is design only – there is no programming involved. Your
turnin should include:
Sample Team Templates
- A description of the user interface, including at least one screen mockup and at least one walkthrough of a usage scenario. (You should really have several scenarios that you have walked through informally, but you are only required to document one of them.)
- CRC cards for the program.
- At least one scenario, along with a walkthrough. Again, you should really have more than one, but you are only required to document one of them.
- A UML diagram of the classes in your system
- A division of the assignment into tasks, including which team member will do which tasks.
- A timeline for finishing each part of the project
- 30% UI description and scenario
- 30% analysis and CRC cards, with a scenario
- 30% design and UML diagram
- 10% timeline and division
Clarifications on M2
- There are two scenarios to turn in: a user-interface scenario, and an analysis scenario.
- You've already seen a few analysis scenarios – when I asked people to step through the way that an alarm would get triggered the day we did AlarmClock designs, I was asking people to step through a scenario. Do the same thing for this project, except on paper. Really, you should be able to just write down a scenario you have already stepped through with CRC cards.
- The user interface scenario hasn't been talked about in class, but it shouldn't be hard. Just describe something a user might want to do, and then describe the sequence of activities they make along with the sequence of responses the system will make. For example:
- A user wants to edit a page on the coweb.
- The user navigates to the page they want to edit, as normal.
- The user hits the "edit" link.
- A new web page appears with a text area in the middle containing the page's text.
- The user modifies the text as desired.
- The user presses the "save" button.
- A new page appears with the modified text.
Milestone 3: User Interface and Progress Control
Functionally, this milestone should add the ability to pause, resume,
and rewind a movie. This milestone should also include a user
interface of your designe. The user interface should allow the
- View the current contents of the movie, including the list of image files and the times that each image will appear.
- Add a new picture to the movie.
- Remove a picture from the movie.
- (optional until milestone 4) Modify the start time, end time, and location of an image
- Play, pause, resume, and rewind the movie. (Clarification: rewind means to rewind all the way to the beginning, so that the user can replay the movie.)
- 30% analysis
- 30% design
- 40% functionality:
- 15% add, remove, and modify images
- 15% play, pause, and resume
- 10% view summary
Milestone 4: Media Types
This milestone adds several new kinds of media in addition to bitmap
images. The playback times of items may overlap!
Squeak supports all of these types directly, so your work is to make
them all function together in your movie editor. The new media types
- MPEG movies. Display the video frames from an MPEG movie file. See Playing MPEG files in Squeak
- MIDI files. Play the sequence of notes stored in a MIDI file.
- WAV files, for sound effects. Play the samples stored in a WAV file.
- text messages. Display a string of text at some location on the screen, for a specified amount of time.
The requirements for images extend to all of these media types. Notably:
- The user should be able to add new items.
- The user should be able to specify a start time for all media types.
- The user should be able to specify an end time and a screen location for text messages.
- The user interface should inform the user of what pictures, MPEG movies, sound files, and text messages are currently included in the movie.
- Pausing should suspend MPEG and MIDI playback, but not necessarily WAV playback.
- For full credit, items must stay synchronized with each other even if one item takes a long time to display. An exception is WAV files: just play them and let them take as long as they take. The system may drop frames or slow down time, but items should start and stop in the right order.
- 30% analysis
- 30% design
- 32% functionality:
- 8% for each of MPEG, MIDI, WAV, and TXT
- 8% programming (good comments, names, categories)
Not-So-Secret Milestone 5: Saving to Disk
- It should be possible to save movies to disk and then load them in another image on another computer. The movie should be saved in a single file!. The user interface should be updated to allow saving and loading movies to disk.
- Additionally, for at least one operating system, work out a mechanism for conveniently loading and playing movies the way a normal movie file would be played back on the operating system. For example, on Macintoshes or MS Windows, perhaps find a way that double clicking on a movie file and play it back. On MS Windows or Unix, perhaps write a "playmovie" batch file or script that takes one argument and plays it would be acceptible. It is okay if you need a special Squeak image file, so long as the same image file can be used to load any movie file.
http://minnow.cc.gatech.edu/squeak/425 has some info on this, as does http://pbl.cc.gatech.edu/myswiki/137 (read the FAQ on automatic startup).
Along with your code, submit a sample movie file along with instructions for starting loading it on the platform of your choice.
- 25 analysis
- 30 design
- 40 functionality:
- 10 general saving/loading implementation, including the UI
- 25 for midi,mpeg,wav,picture,text (5 apiece)
- 5 platform-specific loading mechanism
- 5 programming style: class comments, occasional method comments, category usage, class and method names
Clarifications on M5
You do not need to use Windows media player to play your movie. You do not need to include any scripts or squeak images you need, in the movie file.
The one-file requirement simply means that your movie editor's files should work the same way MS Word's files work. If you create a Word file with several pictures to it, and you save that file, then Word will create a single .DOC file containing all of your text and pictures for that document. If you give that single .DOC file to another person who has word, then they can simply double-click on the .DOC file and it will load.
On the other hand, if the person doesn't have Word (like your instructor!), then they won't be able to "play" the .DOC file. Instead, they must first purchase and install Word. Likewise for your system. Assume the target user has already downloaded (purchased?) and installed your movie viewer. Once they have the viewer, you should then be able to send them a new movie with just one file.
Check out Double-Clickable Movies, Step by Step for some ideas.
Super-Secret Milestone 6: Reflective Components
- Now it should be possible to add components that can modify the way the movie is played back. The following components should be accessible to users:
- buttons that pause and resume the playback (one button that does both).
- buttons that skip to a certain position in the movie, specified as a time in seconds
- buttons that allow advanced users to insert code. The code should be able to access the movie object, and ask it to do things like pause or jump to a specific frame.
- Work out playing back a movie on a second OS, just as was done in Milestone 4. Again, submit instructions and a sample movie.
CLARIFICATION: the fancy buttons execute when the viewer clicks on them. Note that there are two users for the movie editor: the person creating a movie, and the person viewing a movie.
- 30 points - analysis, includid CRC cards
- 25 points - design, including UML class diagram
- 20 points - fancy buttons
- 6 points - UI allows adding, modifying, and remove them
- 9 points - the new buttons function during playback
- 5 points - the new buttons can be saved and loaded
- 5 points - loading script for a second platform
- 20 points - previous requirements
- 10 other media types: text, pictures, MIDI, WAV, MPEG
- 5 load/save mechanism
- 3 movies items stay synchronized during playback
- 2 loading script for the first platform
Links to this Page