@joshuawilliams/interval

1.0.4 • Public • Published

Interval

Find any musical interval and the interval between two notes. Enter the note, the interval, and specify if you want a downward interval. The enharmonically correct note name will be returned.

Example:

const { interval, between } = require('@joshuawilliams/interval');

// Perfect
interval('Gb','P4') // => 'Cb'
// Minor
interval('A','m7') // => 'G'
// Major
interval('C#','M3') // => 'E#'
// Augmented
interval('Bb','A5') // => 'F#'
// Diminished
interval('A','d7') // => 'Gb'

// Intervals down
interval('Bb','m3','down') // => 'G'
interval('C#','M6','down') // => 'E'

// Double sharps and flats
interval('Dx','d5') // => 'A#'
interval('Ebb','A2') // => 'F'

// Triple (or more) sharps and flats
interval('Bx#', 'm2') // => 'Cx#'

// Extended intervals
interval('F','M13') // => 'D'
interval('G', 'm9') // => 'Ab'

// Tritone
interval('A', 'TT') // => 'D#'

// Doubly diminished and augmented
interval('E','dd3') // => 'Gbb'
interval('F','AA5') // => 'Cx'

// Intervals between two notes
between('A','E') // => 'P5'
between('Db','F') // => 'M3'
between('G#','D') // => 'd5'
between('Cb','F') // => 'A4'
between('E', 'G') // => 'm3'

interval(note, interval, direction)

  1. The first argument is the note. It should be a letter from 'A'-'G', and can be flatted with 'b', sharped with '#', double flatted with 'bb', and double sharped with 'x'.
  2. The second argument is the interval, consisting of an interval quality and the interval number.
  3. The third argument can be used to indicate a descending interval with either 'down' or 'descending'

Interval options:

Quality Description Number options
P Perfect 1, 4, 5, 8, 11, 12, etc.
m minor 2, 3, 6, 7, 9, 10, 13, etc.
M Major 2, 3, 6, 7, 9, 10, 13, etc.
d diminished* Any
A Augmented* Any
TT Tritone None
*Diminished and augmented can be doubled or tripled (or more) by repeating the 'd' or 'A'. 'ddd4' for example would represent a triply diminished 4th.

between(note1, note2)

  1. Both arguments are notes. Each note needs to be a letter from 'A'-'G', and can be flatted with 'b', sharped with '#', double flatted with 'bb', and double sharped with 'x'.
  2. between() will return the interval between both the notes. It will interpret the note1 as the lower note and note 2 as the higher note.

Package Sidebar

Install

npm i @joshuawilliams/interval

Weekly Downloads

0

Version

1.0.4

License

MIT

Unpacked Size

25.8 kB

Total Files

18

Last publish

Collaborators

  • jswill88