AdamFoxFinalProject

From CSWiki
Revision as of 15:59, 13 May 2008 by Afox (talk | contribs) (Chord Fingerings and Alterations)

Jump to: navigation, search

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.

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.


  • 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.
  • 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