| Path: | app/models/chord.rb |
| Last Update: | Thu Apr 02 23:29:56 -0400 2009 |
A chord object represents a chord defined as an unordered collection of tones (non-octaval). Mixes in the KeyContext module to provide optional key context on the chord.
Chords should be created by indexing the Chord class like an array, like so:
Chord[symbol]
An alternative method of resolving a chord is to use the resolve method, though this is likely to become deprecated in the future when chord progression support/representation is added:
Chord.resolve(symbol)
This resolves a specified chord symbol into a new chord object using data regarding chord symbol-to-chord relationships. symbol can be any standard jazz chord symbol representable as plain ASCII (unicode support for other symbols such as full-diminished circle in the works). Can be prefixed with a key.
A chord object has the following associations, exposed by methods:
Chord['maj'] Chord['min7' Chord['maj7#11'] Chord['7#9']
Chord['C7'] Chord['Bbalt'] Chord['Gbmaj7']
Use notes to retrieve a collection of notes, which actually delegates to +tones.notes+:
Chord['C7'].notes # => ['C', 'E', 'G', 'Bb'] Chord['Cmaj7#11'].notes # => ["C", "E", "G", "B", "F#"]
Note the 11 is correctly interpreted as E# and not enharmonic F here:
Chord['Bmaj7#11'].notes # => ["B", "D#", "F#", "A#", "E#"]
Also correctly interpet tones off of enharmonic base keys:
Chord['Gbmaj7'].notes # => ["Gb", "Bb", "Db", "F"] Chord['F#maj7'].notes # => ["F#", "A#", "C#", "E#"]
Chord['min7'].modes.names # .names == .map(&:name) # => ['Dorian'] Chord['min7'].modes[0].scale.name # => "Major" Chord['Amin7'].modes.names # => ['A Dorian']