@instrumentbible/tune.js

1.0.1 • Public • Published

tune.js 🎵

JavaScript library for various tuning systems. Calculate cents for different temperaments.

DISCLAIMER: this library is a work in progress Try the live demo.

Features

  • calculate cents based on various temperaments
  • calculate nth harmonic of a given frequency
  • ftom (frequency to MIDI function)
  • mtof (MIDI to frequency function)
  • get note name for a given MIDI note

supported temperaments

Setup

import tune.js library

<script src="tune.js"></script>

now you can use the library to create a tuner

// create a tuner
myTuner = new Tuner();
// use custom options
var options = {
	temperament: 'equal',
	fundamental: 440
};

// create a new tuner
var myTuner = new Tuner(options);

Functions

temperament

set the current temperament

myTuner.setTemperament("meantone");

get the current temperament

myTuner.getTemperament();
// meantone

tune

calculate the cents given a specific frequency

myTuner.tune(448);
// -7.887184708183386

Other (static) functions

harmonic series

get nth harmonic of a given frequency

harmonic(frequency, partial)

get the 3rd harmonic of 440

Tuner.harmonic(440, 3);
// 1320

MIDI to frequency (mtof)

calculate the frequency given a specific MIDI note

Tuner.mtof(60);
// 261.6255653005986

frequency to MIDI (ftom)

calculate the MIDI note given a specific frequency

Tuner.ftom(440);
// 69

MIDI note to note name

get note name from MIDI note number

you can use a negative number to get the flat

Tuner.getNoteName(63);
// D#

// use negative number for flat
Tuner.getNoteName(-63);
// Eb

or use a second argument sharp or flat to get enharmonic note name

Tuner.getNoteName(63, 'sharp');
// D#

Tuner.getNoteName(63, 'flat');
// Eb

tune.js API

attributes

attribute type options default
temperament string equal, just, pythagorean, meantone, werckmeister equal
fundamental number any integer or float 440

Options

temperament

Set the temperament for a given tuner.

Type: string Default: equal Available values: equal just pythagorean meantone werckmeisterI werckmeisterII werckmeisterIII

Examples

// create a new tuner with meantone temperament
var myTuner = new Tuner({
	temperament: "meantone"
});

// set temperament to pythagorean 
myTuner.setTemperament('pythagorean');

// get current temperament
myTuner.getTemperament();
// pythagorean

fundamental

Set the target frequency for a given tuner.

Type: number
Default: 440 Available values: integer or float

Examples

// create a new tuner with fundamental 440
var myTuner = new Tuner({
	fundamental: 440
});

// update fundamental to 442
myTuner.setFundamental(442);

// get current fundamental
myTuner.getFundamental();
// 442

Functions

tune()

Calculte cents

Examples

// create a new tuner
var myTuner = new Tuner({
	temperament: 'meantone',
	fundamental: 440
});

// calculate cents
myTuner.tune(439);
// -3.939100787161778

Readme

Keywords

Package Sidebar

Install

npm i @instrumentbible/tune.js

Weekly Downloads

1

Version

1.0.1

License

MIT

Unpacked Size

90.2 kB

Total Files

8

Last publish

Collaborators

  • joshstovall