JSPM

@tonaljs/pitch-distance

5.0.5
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 19403
    • Score
      100M100P100Q154353F
    • License MIT

    Parse intervals in shorthand notation

    Package Exports

    • @tonaljs/pitch-distance
    • @tonaljs/pitch-distance/dist/index.js
    • @tonaljs/pitch-distance/dist/index.mjs

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@tonaljs/pitch-distance) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    @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"