Adam Fox's Final Project: Guitar Hero Interface
For my final project, I used ChucK to build an two different instruments that can be played with a Guitar Hero controller.
Rhythm Guitar Hero
The first instrument uses the Karplus Strong algorithm to simulate a six-string acoustic guitar that strums chords. The chords are preprogrammed, such that each voicing is consistent with that of a real acoustic guitar. Some of the methods implemented for the class RhythmGuitarHero are:
- .capo(int, READ/WRITE) ... tunes the guitar up by half-steps, simulating a capo
- .setStrumSpeed(float, READ/WRITE) ... sets the strum speed (0 is instantaneous, 1 is a slow arpeggio)
- .startPlaying() ... puts the guitar in interactive mode, allowing live performance
How to Play the Rhythm Guitar
Once the .startPlaying method is accessed, the interactive mode is turned on.
- One can perform a "strum" with button 8. It is possible to strum in either direction, up or down.
- Holding down buttons 1-4 correspond to six different chords in one key; the default key is C. The guitar does not support diminished triads or diminished 7th chords.
- Simultaneously holding the A button will alter the chord. (The "most common alteration" is used)
- Button 6 shifts the key up one half step. Button 7 shifts the key down one half step.
Chord Fingerings and Alterations
- I Chord: Button 1. Alteration: Dominant 7th
- ii Chord: Buttons 1, 2. Alteration: Major 3rd
- iii Chord: Buttons 1, 2, 3. Alteration: Major 3rd
- IV Chord: Buttons 1, 2, 3, 4. Alteration: Minor 3rd
- V Chord: Buttons 2, 3, 4. Alteration: Dominant 7th
- vi Chord: Buttons 3, 4. Alteration: Major 3rd
The rhythm guitar does not support the diminished vii chord.
The second class LeadGuitarHero is designed to give the freedom to play some riffs and "hammer" solos. The sound is implemented with an enveloped SndBuf (guitar sound is provided here). Right now, it supports solos on the blues scale.
- Your code
- If it's short, you can make a new page for it like RhythmGuitarHero
- Or, if there's a lot of it, put it in a .zip file so that people can upload it.
- We suggest: put it in your public_html directory on your network drive, then make a link, e.g. to http://www.princeton.edu/~yourname/yourfile.zip. Let us know if you need any help!
- Instructions on how to run your code
- A sound (or video!) recording of your piece, if possible
- See directions above on putting it on your network drive and linking to it