250 likes | 367 Views
Dynamically Generated Music Tracks. A New Approach to the Modern Guitar Hero. Our Team. Michael Smith (myself) Dylan Barrett Karen Tipping. Currently. Current play along music games allow: Instrumental controllers (guitar, drums) Different difficulty levels Variety of pre-made songs.
E N D
Dynamically Generated Music Tracks • A New Approach to the Modern Guitar Hero
Our Team • Michael Smith (myself) • Dylan Barrett • Karen Tipping
Currently • Current play along music games allow: • Instrumental controllers (guitar, drums) • Different difficulty levels • Variety of pre-made songs
Examples • “Guitar Hero” - Activision • “Rock Band” - Harmonix • “Frets of Fire” - Open Source Project
Music Tracks • All the current games function the same. • Tracks pre-coded by hand. • Can only play songs that have been composed. • Composed tracks are ‘perfect’.
Downside • Limited song selection • Song ownership
Alternative • Dynamically create music tracks • For song of players choice
Imagine A New Game • When a user plays the game: • Can play any song they own • At a desired difficulty level • Can play any instrument in song • If they have the add-on for it
Instrument Add-On • Each instrument fundamentally different from others. • Different handlers for different functionality. • Similar to device drivers. • Ex: Guitar add-on lets user play any guitar track found in any song
So.... • User will choose a song • User will choose a difficulty setting • User will choose an instrument • Game will generate a track for that song • For that instrument • At that difficulty setting
Project Scope • Described game very complex • Only have a single semester • Narrow down the focus to create an effective Proof of Concept demonstration • Take advantage of tools already available to save time
Existing Framework • Open Source “Frets of Fire” • Designed for guitar • Playable track stored as MIDI file • MIDI file basically a musical XML
Our Goal • Create a tool that: • Takes a Guitar only song • Analyzes the song • Outputs a playable track • In Frets of Fire format • At a selected difficulty setting
Data Gathering • Need location and values of musical notes • Similar to creating a music visualization • Tool called Analyze from The Echo Nest • Returns XML file with comprehensive data about a submitted song • the.echonest.com/analyze/
Analyze Demo • Music visualizer created by Anita Lillie of MIT using this tool shows its power.
Data Recording • Parse the XML to: • locate notes • find song structure (solo’s, chorus, etc...) • Create a Musical Data Structure to record the information • Linked List • Node contains Note and Timing
Track Generation • Range of notes need to be compressed • Need to fit range of controller • Ex: Current Guitar games have 5 notes • Not all notes should be put into track • Ex: Hendrix vs Average Player • Variations between difficulty levels
Difficulty Levels • Easy (least note density, more repetitive) • Find common repeated note structures • Fewest notes needed for that structure • Medium • Greater density, less repetitive notes • Hard • Solo’s, high note density, least predictable • For harder levels, add in more of
How to Decide • Structural analysis on the song • A Suffix Tree can find common sub-sequences/patterns of notes • Use a set of Heuristics to make decisions • Evaluate note density, timing, etc... • Heuristic values can be adjusted • Player response = better gameplay
First Stage Tasks • Timeline: 2 - 3 weeks • Reverse Engineer FoF MIDI file format • Use javax.sound.midi to create MIDI files • Simple music clips to understand Analyze • Create java functions to extract the data
Second Stage Tasks • Timeline: 3 - 4 weeks • Define Musical Structure • Create a set of plausible Heuristics • Consult with School of Music
Third Stage Tasks • Timeline: 1 - 2 weeks • Generate FoF formatted songs • using all previously created tools
Fourth Stage Tasks • Timeline: remaining time • Test code for errors • Run game to tweak heuristics for better play