@tonaljs/mode

Functions to work with musical modes

Usage no npm install needed!

<script type="module">
  import tonaljsMode from 'https://cdn.skypack.dev/@tonaljs/mode';
</script>

README

@tonaljs/mode tonal npm version

@tonaljs/mode greek modes dictionary

Usage

ES6:

import { Mode } from "@tonaljs/tonal";

node:

const { Mode } = require("@tonaljs/tonal");

API

get(name: string) => object

Given a mode name, returns a Mode object with the following fields:

  • name: the mode name
  • aliases: alternative mode names
  • modeNum: the mode number (0...7)
  • mode: the mode number
  • alt: the alterations
  • triad: the triad chord type
  • seventh: the seventh chord type

Example:

Mode.get("major");
// {
//   name: "ionian",
//   aliases: ["major"]
//   intervals: ["1P", "2M", "3M", "4P", "5P", "6M", "7M"]
//   modeNum: 0,
//   mode: 2773,
//   alt: 0,
//   triad: "",
//   seventh: "Maj7",
// }

names() => string[]

Get a list of all mode names.

Mode.names();
// => ["ionian", "dorian", "phrygian", "lydian", "mixolydian", "aeolian", "locrian"];

all() => object[]

Return a list of known modes

Mode.all();

notes(modeName: string, tonic: string) => string[]

Find notes of a mode with tonic:

Mode.notes("ionian", "C");
// => ["C", "D", "E", "F", "G", "A", "B"];
Mode.notes("major", "C");
// => ["C", "D", "E", "F", "G", "A", "B"];
Mode.notes("minor", "C");
// => ["C", "D", "Eb", "F", "G", "Ab", "Bb"];

triads(modeName: string, tonic: string) => string[]

Return the triads of a mode with tonic:

Mode.triads("major", "C");
// => ["C", "Dm", "Em", "F", "G", "Am", "Bdim"];

seventhChords(modeName: string, tonic: string) => string[]

Return the seventh chords of a mode with tonic:

Mode.seventhChords("major", "C");
// => ["CMaj7", "Dm7", "Em7", "FMaj7", "G7", "Am7", "B7b5"];

relativeTonic(destination: string, source: string, tonic: string)

Find a relative tonic. For example, the "minor" relative tonic of "C major" is "A":

Mode.relativeTonic("minor", "major", "C"); // => "A"

How to?

Get notes from a mode?

For example, "A major" mode:

import { Mode, Note } from "@tonaljs/tonal";

Mode.get("major").intervals.map(Note.transposeFrom("A"));
["A", "B", "C#", "D", "E", "F#", "G#"];

Want more?

Take a look to @tonal/key