160 likes | 238 Views
Implementation and Testing Dylan Barrett Karen Tipping, Mike Smith. My Beats. Project Overview. Goal: Dynamically create tracks from mp3 file for Guitar Hero like game Develop a set of heuristics to create the best possible tracks for the songs
E N D
Implementation and Testing Dylan Barrett Karen Tipping, Mike Smith My Beats
Project Overview • Goal: Dynamically create tracks from mp3 file for Guitar Hero like game • Develop a set of heuristics to create the best possible tracks for the songs • Output files that are playable on Frets on Fire, an existing Guitar Hero clone
Tools • We will be using: • Java SE 6 • analyze • Frets on Fire • JUnit • eclipse
Project Structure • Broken down into 6 modules: • MyBeats (Main module) • AnalyzeInteraction • TrackGenerator • MidiGenerator • OggGenerator • DataStructures
Project Structure Midi Mp3 Ogg
The MyBeats Module • Entry point of application • Parse command line arguments and options • java MyBeats -t “My Song” -a “Artist” song.mp3 • GetOpt • Coordinates flow among other modules • Exception handling
The AnalyzeInteraction Module • Uploads mp3 file to analyze server • Queries analyze server for XML file • Stores information from XML into Segment data structure
The TrackGenerator Module • Largest part of project • Map Segments to Notes • Map Notes to Buttons • Constantly adjusting heuristics • Decide difficulty levels
The MidiGenerator Module • Takes list of buttons for the song as input • Creates a Midi file formatted to work with Frets on Fire • The track for each difficulty level can be included in a single Midi file 60 61 62 63 64 SuperEasy Easy Medium Hard 72 73 74 75 76 84 85 86 87 88 96 100 97 98 99
The OggGenerator Module • Frets on Fire uses the Ogg file format, rather than mp3, for the background music • Need to convert the mp3 file to Ogg • Cross Platform solution? • Separate downloads for each major OS • Single download which adapts to OS
The DataStructures Module • Contains data structures used by all other modules • SongInfo class • Segment class • Note class • Button class
Existing Libraries • javax.sound.midi • Contains classes that can be used to input, output, and work with midi files • javax.xml • Useful for parsing xml files obtained from analyze • GetOpt • Makes parsing options from the command line easy!
Unit Testing • Need to test each module • Each group member will test the other members' code • Try to break the program • Example: Command line input in the MyBeats module • Test each function of each module using JUnit
Who Does What • MyBeats (Main module) --> Dylan and Karen • AnalyzeInteraction --> Mike • TrackGenerator --> Mike, Dylan, Karen • MidiGenerator --> Dylan • OggGenerator --> Karen • DataStructures --> Mike, Dylan, Karen • Unit Testing --> Mike, Dylan, Karen
Looking Forward • Complete individual modules • Write unit tests for each module • Prepare for integration