Releases: greird/chordictionaryjs
Improved chord detection and naming
This release includes a major refactoring of the way chords are identified and named.
It previously relied on a hardcoded formulas list. It now dynamically adds extensions (e.g. "minor", "flat 5th", "sus4") to a chord name based on a set of rules.
Hence, it can now name many more chords.
The tests still have to be straightened in order to prevent the apparition of wrong chord names.
New methods to parse tab, tuning and chord name
This release adds the following features:
- New
parseTuning
method to break a string into notes (e.g.EADGBE
becomes["E", "A", "D", "G", "B", "E"]
- New
parseTab
method to break a string into frets (e.g.X32010
becomes["x", 3, 2, 0, 1, 0]
- New
parseChord
method to break a string into a chord root and quality (e.g.Csus4
becomes["C", "sus4"]
- New
notes
constant containing the list of all 12 notes. - New
tuning
constant containing a list of common tunings.
Check the new Documentation to learn more about those new features.
New chord object structure with additional details (Breaking changes)
List of functional changes:
- 7#11 chords are now found
- Major 9 and minor 9 and maj7#11 chords are found as long as no note is skipped (ex. they must contain a 5th)
- getChordInfo now returns a notes array even if chords are not found
- getChordInfo now return a
chords
array contain an object for each chord identified - Each chord object contains the name, pitch, formula, list of intervals, list of semitones (integer formula), list of notes, quality and suffix.
- getChordLayout now takes 1 mandatory
tab
string and 1 optionaloptions
object as parameters. - isValidTuning and isValidTab are now available outside the Instrument class scope and should be called via
chordictionary.isValidTab()
andchordictionary.isValidTuning()
.
Now available as an IIFE, an ES6 module and a CommonJS module
The whole build process has been updated and all dev dependencies have been updated to their latest version.
Methods are unchanged, but the library is now transpiled into different versions:
- IIFE (to be used with a <script> tag)
- CommonJS (for installation through NPM)
- ES6 (basically the raw library in ES6)
I plan to get back to work on this project, there's still a long road ahead !