tonal-interval
v2.2.2
Published
Music interval creation and manipulation
Downloads
12,348
Readme
Interval
Interval.semitones("4P") // => 5 Interval.invert("3m") // => "6M" Interval.simplify("9m") // => "2m"Install
- Interval
- static
- .num(interval) ⇒ string
- .name(ivl) ⇒ Integer
- .semitones(str) ⇒ Number
- .chroma(interval) ⇒ Integer
- .ic(props) ⇒ string
- .build(interval) ⇒ string
- .simplify(interval) ⇒ string
- inner
- ~names(qualities) ⇒ Array
- ~props(interval) ⇒ Object
- ~num(interval) ⇒ Integer
- ~fromSemitones(num) ⇒ string
- static
Interval.num(interval) ⇒ string
Kind: static method of Interval
Returns: string - the interval name or null if not valid interval
| Param | Type | Description | | --- | --- | --- | | interval | string | the interval string or array |
Example
Interval.name("m-3") // => "-3m"
Interval.name("3") // => null
Interval.name(ivl) ⇒ Integer
Kind: static method of Interval
Returns: Integer - the number of semitones or null if not an interval
| Param | Type | | --- | --- | | ivl | string |
Example
import { semitones } from "tonal-interval"
semitones("P4") // => 5
// or using tonal
Tonal.Interval.semitones("P5") // => 7
Interval.semitones(str) ⇒ Number
Kind: static method of Interval
| Param | Type | | --- | --- | | str | string |
Interval.chroma(interval) ⇒ Integer
Kind: static method of Interval
Returns: Integer - A value between 0 and 6
| Param | Type | Description | | --- | --- | --- | | interval | String | Integer | the interval or the number of semitones |
Example
Interval.ic("P8") // => 0
Interval.ic("m6") // => 4
Interval.ic(10) // => 2
["P1", "M2", "M3", "P4", "P5", "M6", "M7"].map(ic) // => [0, 2, 4, 5, 5, 3, 1]
Interval.ic(props) ⇒ string
Kind: static method of Interval
Returns: string - the interval name
| Param | Type | Description | | --- | --- | --- | | props | Object | the interval property object |
Example
Interval.build({ step: 1, alt: -1, oct: 0, dir: 1 }) // => "1d"
Interval.build({ num: 9, alt: -1 }) // => "9m"
Interval.build(interval) ⇒ string
Kind: static method of Interval
Returns: string - the simplified interval
| Param | Type | Description | | --- | --- | --- | | interval | string | the interval to simplify |
Example
Interval.simplify("9M") // => "2M"
["8P", "9M", "10M", "11P", "12P", "13M", "14M", "15P"].map(Interval.simplify)
// => [ "8P", "2M", "3M", "4P", "5P", "6M", "7M", "8P" ]
Interval.simplify("2M") // => "2M"
Interval.simplify("-2M") // => "7m"
Interval.simplify(interval) ⇒ string
Kind: static method of Interval
Returns: string - the inverted interval
| Param | Type | Description | | --- | --- | --- | | interval | string | the interval to invert in interval shorthand notation or interval array notation |
Example
Interval.invert("3m") // => "6M"
Interval.invert("2M") // => "7m"
Interval~names(qualities) ⇒ Array
Kind: inner method of Interval
Returns: Array - the interval names
| Param | Type | Description | | --- | --- | --- | | qualities | string | (Optional, default "PMm") the valid types |
Example
Interval.names() // => [ "1P", "2m", "2M", "3m", "3M", "4P", "5P", "6m", "6M", "7m", "7M", "8P" ]
Interval.names("P") // => [ "1P", "4P", "5P", "8P" ]
Interval.names("PM") // => [ "1P", "2M", "3M", "4P", "5P", "6M", "7M", "8P" ]
Interval.names("Pm") // => [ "1P", "2m", "3m", "4P", "5P", "6m", "7m", "8P" ]
Interval.names("d") // => []
Interval~props(interval) ⇒ Object
Kind: inner method of Interval
Returns: Object - the interval in the form [number, alt]
| Param | Type | Description | | --- | --- | --- | | interval | string | the interval |
Interval~num(interval) ⇒ Integer
Kind: inner method of Interval
| Param | Type | Description | | --- | --- | --- | | interval | string | the interval |
Example
Interval.num("m2") // => 2
Interval.num("P9") // => 9
Interval.num("P-4") // => -4
Interval~fromSemitones(num) ⇒ string
Kind: inner method of Interval
Returns: string - the interval name
| Param | Type | Description | | --- | --- | --- | | num | Integer | the number of semitones (can be negative) |
Example
import { fromSemitones } from "tonal-interval"
fromSemitones(7) // => "5P"
// or using tonal
Tonal.Distance.fromSemitones(-7) // => "-5P"