Midi is a primitive type for encoding Time values. Midi can be constructed with or without the new keyword. Midi can be passed into the parameter of any method which takes time as an argument.



new MidiClass (
context:BaseContext ,

The context associated with the time value. Used to computeTransport and context-relative timing.

value?:TimeValue ,

The time value as a number, string or object


Unit values

) => MidiClass


static A4 #


The concert tuning pitch which is used to generate all the other pitch values from notes. A4's values in Hertz.

debug #


Set this debug flag to log all events that happen in this class.

disposed #

readonly boolean

Indicates if the instance was disposed. 'Disposing' an instance means that all of the Web Audio nodes that were created for the instance are disconnected and freed for garbage collection.

name #


static version #


The version number semver


dispose #

disconnect and dispose.

dispose ( ) => this

fromType #

Coerce a time type into this units type.

fromType (
type:TimeBaseClass<any , any >

Any time type units

) => this

static ftom #

Convert a frequency value to a MIDI note.

ftom (

The value to frequency value to convert.

) => MidiNote

static getDefaults #

Returns all of the default options belonging to the class.

getDefaults ( ) => BaseToneOptions

harmonize #

Takes an array of semitone intervals and returns an array of frequencies transposed by those intervals.

Tone.Frequency("A4").harmonize([0, 3, 7]); // ["A4", "C5", "E5"]
harmonize (
intervals:Interval []
) => FrequencyClass []
Returns an array of Frequencies

static mtof #

Convert a MIDI note to frequency value.

mtof (

The midi number to convert.

) => Hertz
The corresponding frequency value

quantize #

Quantize the time by the given subdivision. Optionally add a percentage which will move the time value towards the ideal quantized value by that percentage.

Tone.Time(21).quantize(2); // returns 22
Tone.Time(0.6).quantize("4n", 0.5); // returns 0.55
quantize (
subdiv:Time ,

The subdivision to quantize to

percent= 1:number

Move the time value towards the quantized value by a percentage.

) => MidiNote

toBarsBeatsSixteenths #

Return the time encoded as Bars:Beats:Sixteenths.

toBarsBeatsSixteenths ( ) => BarsBeatsSixteenths

toFrequency #

Return the value of the frequency as a MIDI note

Tone.Midi(60).toFrequency(); // 261.6255653005986
toFrequency ( ) => Hertz

toMidi #

Return the value of the frequency as a MIDI note

Tone.Midi(60).toMidi(); // 60
toMidi ( ) => MidiNote

toMilliseconds #

Return the time in milliseconds.

toMilliseconds ( ) => Milliseconds

toNotation #

Convert a Time to Notation. The notation values are will be the closest representation between 1m to 128th note.

// if the Transport is at 120bpm:
Tone.Time(2).toNotation(); // returns "1m"
toNotation ( ) => Subdivision

toNote #

Return the value of the frequency in Scientific Pitch Notation

Tone.Frequency(69, "midi").toNote(); // "A4"
toNote ( ) => Note

toSamples #

Return the time in samples

toSamples ( ) => Samples

toSeconds #

Return the duration of one cycle in seconds.

toSeconds ( ) => Seconds

toString #

Convert the class to a string

const osc = new Tone.Oscillator();
toString ( ) => string

toTicks #

Return the duration of one cycle in ticks

toTicks ( ) => Ticks

transpose #

Transposes the frequency by the given number of semitones.

Tone.Midi("A4").transpose(3); // "C5"
transpose (
) => MidiClass
A new transposed MidiClass

valueOf #

Evaluate the time value. Returns the time in seconds.

valueOf ( ) => MidiNote