npm

@tonaljs/pitch-distance
TypeScript icon, indicating that this package has built-in type declarations

5.0.4 • Public • Published

@tonaljs/pitch-distance tonal npm version

Pitch distance and transposition

Usage

⚠️ It's probably you don't need to use this package directly. Use tonal-note.

import { transpose, distance } from "@tonaljs/pitch-distance";
transpose("C4", "5P"); // => "G4"
distance("C4", "G4"); // => "5P"

API

transpose(note: string, interval: string) => string

Transpose a note by an interval. It returns the note name or "" if not valid parameters.

Examples:

transpose("d3", "3M"); // => "F#3"
transpose("D", "3M"); // => "F#"
["C", "D", "E", "F", "G"].map((pc) => transpose(pc, "M3"));
// => ["E", "F#", "G#", "A", "B"]

This function always returns a string:

transpose("one", "two"); // => ""

distance(from: string, to: string) => string

Find the distance between two notes. It returns the interval name, or "" if not valid parameters.

Examples:

distance("C3", "E4"); // => "10M"

If one of the note is a pitch class, the interval will be simple:

distance("C", "E"); // => "3M"
distance("C", "E4"); // => "3M"
distance("C4", "E"); // => "3M"

This function always returns a string:

distance("today", "tomorrow"); // => ""

Want more?

Take a look to @tonaljs/note or @tonaljs/interval modules.

FAQ

How do I get the note frequency and midi number?

note("C4").octave; // => 4
note("C4").midi; // => 60

How do I know if a note name is valid?

note("C4").empty; // => false
note("x").empty; // => true
note("x").name; // => ""
note("x").octave; // => undefined
// remove all invalid note names
[...].map(note).filter(n => !n.empty).map(n => n.name)

How do I know if two notes are enharmonics?

You can test the midi numbers:

note("Cb4").midi === note("B3").midi;

Or better yet, use the height property that is also present on pitch classes (in notes without octaves midi property is null):

note("Cb").height === note("B").height;

How do I change the octave of a note?

note("Cb4").pc + 5; // => "Cb5"

Package Sidebar

Install

npm i @tonaljs/pitch-distance

Weekly Downloads

1,054

Version

5.0.4

License

MIT

Unpacked Size

20.2 kB

Total Files

9

Last publish

Collaborators

  • danigb