JavaScript library for microtonal tuning systems.
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
initialize the 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
orfloat
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