# Time

Installation

##### Clone this wiki locally

All methods which take time as an argument accept a String or Number. Time encoded as a Number is assumed to be seconds and returned. Time encoded as a String can take various forms in order to synchronize it to the Tone.Transport.

## Examples:

### Numbers

A number will be evaluated as the time (in seconds).

• `1.2` = 1.2 seconds
• `"3"` = 3 seconds

### Notation

Describes time in BPM and time signature relative values.

• `"4n"` = quarter note
• `"8t"` = eighth note triplet
• `"2m"` = two measures
• `"8n."` = dotted-eighth note

### Transport Time

Tempo and time signature relative time in the form BARS:QUARTERS:SIXTEENTHS.

• `"32:0:0"` = start of the 32nd measure.
• `"4:3:2"` = 4 bars + 3 quarter notes + 2 sixteenth notes.
• `"1:2"` = 1 bar + 2 quarter notes (sixteenth notes can be omitted)

### Frequency

Seconds can also be described in Hz.

• `"1hz"` = 1 second
• `"5hz"` = 0.2 seconds

### Ticks

A time relative to the Transport's PPQ (Pulse Per Quarter). The number before the 'i' needs to be an integer.

• `"1i"` = 1 tick
• `"192i"` = 1 quarter note at 192 PPQ

### Now-Relative

Prefix any of the above with "+" and it will be interpreted as "the current time plus whatever expression follows"

• `"+1m"` = 1 measure from now
• `"+0.5"` = half a second from now

### No Argument

Methods which accept time, no argument (`undefined`) will be interpreted as "now" (i.e. the `audioContext.currentTime`).

For example, Tone.MonoSynth's `triggerAttack` method will accept a time as the second argument, or if a value is ommitted, the it will default to "now".

```synth.triggerAttack();//context.currentTime
synth.triggerRelease("+4n"); //a quarter-note from now```

## Quantization

Using the `@` symbol, a Time can be quantized relative to the the Transport's grid.

• `"@1m"` = If the Transport is started, this will return the time of the next measure