tonal-distance
v2.2.2
Published
Transpose notes and find intervals between them
Downloads
10,324
Maintainers
Readme
Distance
Transpose notes by intervals and find distances between notes
Example
// es6
import * as Distance from "tonal-distance"
Distance.interval("C3", "C4") // => "1P"
Example
// es6 import selected functions
import { interval, semitones, transpose } from "tonal-distance"
semitones("C" ,"D") // => 2
interval("C4", "G4") // => "5P"
transpose("C4", "P5") // => "G4"
Example
// included in tonal facade
const Tonal = require("tonal");
Tonal.Distance.transpose("C4", "P5")
Tonal.Distance.transposeBy("P5", "C4")
- Distance
.transpose(note, interval)
⇒ string.trFifths(pitchClass, fifhts)
⇒ string.fifths(to, from)
.transposeBy(note, interval)
⇒ string.add(interval1, interval2)
⇒ string.subtract(minuend, subtrahend)
⇒ string.interval(from, to)
⇒ string.semitones(from, to)
⇒ Integer
Distance.transpose(note, interval)
⇒ string
Transpose a note by an interval. The note can be a pitch class.
This function can be partially applied.
Kind: static method of Distance
Returns: string - the transposed note
| Param | Type | | --- | --- | | note | string | | interval | string |
Example
import { tranpose } from "tonal-distance"
transpose("d3", "3M") // => "F#3"
// it works with pitch classes
transpose("D", "3M") // => "F#"
// can be partially applied
["C", "D", "E", "F", "G"].map(transpose("M3)) // => ["E", "F#", "G#", "A", "B"]
Distance.trFifths(pitchClass, fifhts)
⇒ string
Transpose a pitch class by a number of perfect fifths.
It can be partially applied.
Kind: static method of Distance
Returns: string - the transposed pitch class
| Param | Type | Description | | --- | --- | --- | | pitchClass | string | the pitch class | | fifhts | Integer | the number of fifths |
Example
import { trFifths } from "tonal-transpose"
[0, 1, 2, 3, 4].map(trFifths("C")) // => ["C", "G", "D", "A", "E"]
// or using tonal
Distance.trFifths("G4", 1) // => "D"
Distance.fifths(to, from)
Get the distance in fifths between pitch classes
Can be partially applied.
Kind: static method of Distance
| Param | Type | Description | | --- | --- | --- | | to | string | note or pitch class | | from | string | note or pitch class |
Distance.transposeBy(note, interval)
⇒ string
The same as transpose with the arguments inverted.
Can be partially applied.
Kind: static method of Distance
Returns: string - the transposed note
| Param | Type | | --- | --- | | note | string | | interval | string |
Example
import { tranposeBy } from "tonal-distance"
transposeBy("3m", "5P") // => "7m"
Distance.add(interval1, interval2)
⇒ string
Add two intervals
Can be partially applied.
Kind: static method of Distance
Returns: string - the resulting interval
| Param | Type | | --- | --- | | interval1 | string | | interval2 | string |
Example
import { add } from "tonal-distance"
add("3m", "5P") // => "7m"
Distance.subtract(minuend, subtrahend)
⇒ string
Subtract two intervals
Can be partially applied
Kind: static method of Distance
Returns: string - interval diference
| Param | Type | | --- | --- | | minuend | string | | subtrahend | string |
Distance.interval(from, to)
⇒ string
Find the interval between two pitches. It works with pitch classes (both must be pitch classes and the interval is always ascending)
Can be partially applied
Kind: static method of Distance
Returns: string - the interval distance
| Param | Type | Description | | --- | --- | --- | | from | string | distance from | | to | string | distance to |
Example
import { interval } from "tonal-distance"
interval("C2", "C3") // => "P8"
interval("G", "B") // => "M3"
Example
import * as Distance from "tonal-distance"
Distance.interval("M2", "P5") // => "P4"
Distance.semitones(from, to)
⇒ Integer
Get the distance between two notes in semitones
Kind: static method of Distance
Returns: Integer - the distance in semitones or null if not valid notes
| Param | Type | Description | | --- | --- | --- | | from | String | Pitch | first note | | to | String | Pitch | last note |
Example
import { semitones } from "tonal-distance"
semitones("C3", "A2") // => -3
// or use tonal
Tonal.Distance.semitones("C3", "G3") // => 7