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