Skip to main content

midi

Type Aliases

NoteKey

type NoteKey = typeof noteKeys[number];

Defined in: midi.ts:22


ScaleName

type ScaleName = keyof typeof scaleIntervals;

Defined in: midi.ts:131


WhiteKey

type WhiteKey = typeof whiteKeys[number];

Defined in: midi.ts:5

Variables

noteKeys

const noteKeys: readonly ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"];

Defined in: midi.ts:7


scaleIntervals

const scaleIntervals: object;

Defined in: midi.ts:109

Semitones above the root, for each supported scale.

Every entry starts at 0 and stays inside one octave, so a scale is a set of pitch classes rather than a set of notes: inScale compares against it with the octave taken out.

ionian and aeolian are the same sets as major and naturalMinor; both spellings are here because both are what someone reaches for depending on whether they are thinking in keys or in modes.

Type Declaration

aeolian
readonly aeolian: readonly [0, 2, 3, 5, 7, 8, 10];
blues
readonly blues: readonly [0, 3, 5, 6, 7, 10];
chromatic
readonly chromatic: readonly [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
dorian
readonly dorian: readonly [0, 2, 3, 5, 7, 9, 10];
harmonicMinor
readonly harmonicMinor: readonly [0, 2, 3, 5, 7, 8, 11];
ionian
readonly ionian: readonly [0, 2, 4, 5, 7, 9, 11];
locrian
readonly locrian: readonly [0, 1, 3, 5, 6, 8, 10];
lydian
readonly lydian: readonly [0, 2, 4, 6, 7, 9, 11];
major
readonly major: readonly [0, 2, 4, 5, 7, 9, 11];
majorPentatonic
readonly majorPentatonic: readonly [0, 2, 4, 7, 9];
melodicMinor
readonly melodicMinor: readonly [0, 2, 3, 5, 7, 9, 11];
minorPentatonic
readonly minorPentatonic: readonly [0, 3, 5, 7, 10];
mixolydian
readonly mixolydian: readonly [0, 2, 4, 5, 7, 9, 10];
naturalMinor
readonly naturalMinor: readonly [0, 2, 3, 5, 7, 8, 10];
phrygian
readonly phrygian: readonly [0, 1, 3, 5, 7, 8, 10];
wholeTone
readonly wholeTone: readonly [0, 2, 4, 6, 8, 10];

whiteKeys

const whiteKeys: readonly ["A", "B", "C", "D", "E", "F", "G"];

Defined in: midi.ts:3

Functions

inScale()

function inScale(
note,
root,
name
): boolean;

Defined in: midi.ts:144

Whether a note belongs to a scale, regardless of the octave either sits in.

Parameters

ParameterTypeDescription
notestring | numbernoteNumber: 0 ~ 127 or noteName e.g. 'C3'
rootstring | numberthe note the scale is built on, in the same two forms
name| "major" | "naturalMinor" | "harmonicMinor" | "melodicMinor" | "ionian" | "dorian" | "phrygian" | "lydian" | "mixolydian" | "aeolian" | "locrian" | "majorPentatonic" | "minorPentatonic" | "blues" | "wholeTone" | "chromatic"-

Returns

boolean

Example

inScale('F#4', 'D3', 'major') // true

isBlackKey()

function isBlackKey(note): boolean;

Defined in: midi.ts:83

Parameters

ParameterTypeDescription
notestring | numbernoteNumber: 0 ~ 127 or noteName e.g. 'C3'

Returns

boolean


isWhiteKey()

function isWhiteKey(note): boolean;

Defined in: midi.ts:67

Parameters

ParameterTypeDescription
notestring | numbernoteNumber: 0 ~ 127 or noteName e.g. 'C3'

Returns

boolean


noteKey()

function noteKey(noteNumber): "A" | "B" | "C" | "D" | "E" | "F" | "G" | "C#" | "D#" | "F#" | "G#" | "A#";

Defined in: midi.ts:60

Convert noteNumber to noteKey

Parameters

ParameterType
noteNumbernumber

Returns

"A" | "B" | "C" | "D" | "E" | "F" | "G" | "C#" | "D#" | "F#" | "G#" | "A#"


noteName()

function noteName(noteNumber):
| `A${number}`
| `B${number}`
| `C${number}`
| `D${number}`
| `E${number}`
| `F${number}`
| `G${number}`
| `C#${number}`
| `D#${number}`
| `F#${number}`
| `G#${number}`
| `A#${number}`;

Defined in: midi.ts:51

Convert noteNumber to noteName C-1 = 0 G9 = 127

Parameters

ParameterTypeDescription
noteNumbernumbernoteNumber

Returns

| `A${number}` | `B${number}` | `C${number}` | `D${number}` | `E${number}` | `F${number}` | `G${number}` | `C#${number}` | `D#${number}` | `F#${number}` | `G#${number}` | `A#${number}`


noteNumber()

function noteNumber(noteName): number;

Defined in: midi.ts:38

Convert noteName to noteNumber

Parameters

ParameterType
noteNamestring

Returns

number


noteToFrequency()

function noteToFrequency(
note,
detune?,
a4?
): number;

Defined in: midi.ts:93

Parameters

ParameterTypeDefault valueDescription
notestring | numberundefinednoteNumber: 0 ~ 127 or noteName e.g. 'C3'
detunenumber0[cent]
a4number440A4 frequency [Hz]

Returns

number

frequency [Hz]


parseNoteName()

function parseNoteName(noteName): object;

Defined in: midi.ts:24

Parameters

ParameterType
noteNamestring

Returns

object

accidental
accidental: "" | "b" | "#" | "##" | "bb";
letter
letter: "A" | "B" | "C" | "D" | "E" | "F" | "G";
octave
octave: number;

scaleNotes()

function scaleNotes(
root,
name,
octaves?
): number[];

Defined in: midi.ts:168

The notes of a scale, ascending from root.

The octave above the root is not included: ask for more octaves instead, so that concatenating the result of two calls does not repeat a note.

Parameters

ParameterTypeDefault valueDescription
rootstring | numberundefinednoteNumber: 0 ~ 127 or noteName e.g. 'C3'
name| "major" | "naturalMinor" | "harmonicMinor" | "melodicMinor" | "ionian" | "dorian" | "phrygian" | "lydian" | "mixolydian" | "aeolian" | "locrian" | "majorPentatonic" | "minorPentatonic" | "blues" | "wholeTone" | "chromatic"undefined-
octavesnumber1how many octaves to cover

Returns

number[]

Example

scaleNotes('C3', 'majorPentatonic') // [48, 50, 52, 55, 57]