Skip to content

Latest commit

 

History

History
185 lines (122 loc) · 5.68 KB

CHANGELOG.md

File metadata and controls

185 lines (122 loc) · 5.68 KB

Changelog

[Unreleased]

  • Fix chords so that they generate a barre and a non-barre version and prevent barre chords from picking notes before the barre.

[4.0.6]

  • Change the CLI into a more intuitive one

[4.0.0]

  • Includes totally revamped, easy to use command line interface.

[3.4.2]

  • Fixes guitar strings rendering order (#41)

[3.4.1]

  • Removes #dig monkey-patching

[3.4.0]

  • Adds find-guitar-chord command. It allows discovering a guitar chord name.

[3.3.3]

  • Fixes a bug in greek modes for accidental notes

[3.3.2]

  • Fixes greek modes so now they output correct sharps/flats
  • Adds a coherence criteria for picking best guitar chords (based on distance between freqs.)

[3.2.0]

  • Adds custom_guitar and custom_guitar_frets

[3.1.3]

  • Several fixes.
  • Interactive mode
  • It's all or nothing! If the terminal doesn't support true color, default to black and white and display message suggesting some cool terminal apps

[3.0.0]

Changes

  • This is a huge architectural refactor. Hopefully the last big one. All code were redivided into the modules:

    1. Coltrane::Theory concentrates all music theory logic
    2. Coltrane::Representation contain musical instruments and any other needed musical-related abstract representations.
    3. Coltrane::Renderers right now contains the TextRenderer which has the ability of rendering Theory Objects, Representation Objects, etc
    4. Coltrane::Commands are ways of fetching Theory and Representation objects. They also glue Mercenary (the gem used for the CLI) into everything else.

[2.2.0]

  • Intervals were completely refactored according to #11 and (#12). Thanks @art-of-dom for the valuable information. We now have new interval classes and new ways on how to deal with them. Check the wiki for more details.

[2.1.0]

  • Correct Flat/Sharp on Diatonic Scales

  • Fix chords so that they generate a barre and a non-barre version and prevent barre chords from picking notes before the barre.

Adds

  • Pitches and Voicings. Pitches are a way of expressing notes in a specific octave. Voicings are a way of expressing a chord with the exact pitches

  • Introduces a little sound synthesizer (experimental, macOS-only). Use --sound to activate it wherever the program outputs chords.

  • Introduces some modules classes to provide Guitar Chord finding. ColtraneInstruments::Guitar::Base.find('C6/9')

  • Introduces DiatonicScale and Key classes.

Changes

  • Guitar Chords are now outputted using the default guitar chord notation

[2.0.0]

Changes

  • Code has been completely refactored. Things are organized around frequencies. Intervals are backed by cents, which is an logarithmic measure used to measure the distance between 2 frequencies.

    We have now a distinction between PitchClass and Note. The first is a generic concept of Notes while the latter deals with sharps and flats logic.

    That refactor will allow us to in the next versions refactor scales so that they output proper sharps and flats (#3).

[1.2.3]

Fixes

  • Bug in progression command

[1.2.2]

Fixes

  • A bug of the previous functionality that generated a infinite loop if a command wasn't found

[1.2.0]

Adds

  • An interactive mode, so you don't have to type coltrane all the time.
  • Adds notable progressions: You can type coltrane progression jazz in C
  • Adds tritone substitution for chord, for the library only for now Chord.new(name: 'CM7').tritone_substitution
  • Adds chord unary operators. + Note for adding a note to a chord, + Interval or Integer for transposing the chord
  • Adds slash chords Chord.new(name: 'CM/B')
  • Adds chord #function for Roman Chords, when they're on Diatonic Major scale, returning Dominant, Submediant, Tonic, etc

Fixes

  • Fixes a bug in Piano

[1.1.2]

Fixes

  • Progression specs
  • Comments out classic progressions for now

Adds

  • Progression.find(*%w[AM DM F#m EM])

[1.1.0]

Changes

  • The qualities are now more procedural, less hardcoded as possible. The refactor has caused the chord list shorter. That may be an issue for some users, and if so, it should be addressed in next versions. However, I believe that reduces the spam, since we are focusing on the more relevant chords, as they're the basis for building more "exotic" chords.

  • Intervals are now registered and displayed in the english language order. Ex: Minor Third was 3m and now is m3.

Adds

  • A lot of helper methods for obtaining interval information! Interval has methods like #minor_third?, #major_second?, which are pretty self-explanatory. #full_name and #full_names are also added, the latter returning intervals that are pretty much the same, such as Major Second and Major Ninth. Interval sequences have methods like #has_minor_third? and #third, which will return the third it has, no matter if its major, or minor.

  • Roman Chords and Chord Progressions are finally here! It's a bit experimental yet, the latter definitely needs more specs.

Fixes

  • The changelog

[1.0.25]

Fixes

  • Ruby version on the gemspec

[1.0.25]

Removes

  • Caching, as after some refactoring it made no sense anymore

Adds

  • Progressions and Roman Chords
  • Adds Progression command to the CLI

[1.0.24]

Adds

  • Some coloring on guitar output
  • Chromatic Scale

Fixes

  • Adjusts the marked frets alignment

Changes

  • Removes Natural sign padding for guitar instruments

[1.0.23]

Adds

  • A changelog

Fixes

  • #- operation on Note against number