Core & Transport
Core
The Core module provides top-level Tone.js functions for managing the audio context.
Functions
1// Start the audio context (must be called from a user gesture)2Core.start() // promise<unit>34// Get the current audio time5Core.now() // seconds67// Get the most recent audio time8Core.immediate() // seconds910// Get references to global singletons11Core.getContext() // Context.t12Core.getTransport() // Transport.t13Core.getDestination() // Destination.t1415// Wait for all audio buffers to load16Core.loaded() // promise<unit>1718// Check Web Audio API support19Core.supported() // bool2021// Get the Tone.js version string22Core.version // stringContext
The Context wraps the native Web Audio AudioContext and provides additional features.
1// Create a new context2let ctx = Context.make()34// Properties5ctx->Context.currentTime // seconds6ctx->Context.state // audioContextState7ctx->Context.sampleRate // float8ctx->Context.lookAhead // seconds9ctx->Context.setLookAhead(0.1)10ctx->Context.latencyHint // string1112// Lifecycle13ctx->Context.resume() // promise<unit>14ctx->Context.close() // promise<unit>15ctx->Context.dispose()Transport
The Transport is Tone.js's main timekeeper. It provides scheduling, tempo, time signature, and looping.
Playback
1let transport = Core.getTransport()23transport->Transport.start()4transport->Transport.startAt(~time="0")5transport->Transport.stop()6transport->Transport.pause()7transport->Transport.toggle()8transport->Transport.cancel()Scheduling
1// Schedule a one-time event2let id = transport->Transport.schedule(time => {3 Console.log2("event at", time)4}, "0:0:0")56// Schedule a repeating event7let id2 = transport->Transport.scheduleRepeat(time => {8 Console.log2("repeat at", time)9}, "4n")1011// Schedule a one-time event that auto-clears12let _ = transport->Transport.scheduleOnce(_time => {13 Console.log("once!")14}, "1m")1516// Clear a scheduled event17transport->Transport.clear(id)Tempo & Time
1// BPM (returns Param.t for automation)2transport->Transport.bpm34// Position5transport->Transport.position // "0:0:0"6transport->Transport.setPosition("1:0:0")7transport->Transport.seconds // float8transport->Transport.ticks // int9transport->Transport.state // "started" | "stopped" | "paused"1011// Time signature12transport->Transport.timeSignature // int13transport->Transport.setTimeSignature(4)1415// Swing16transport->Transport.swing // normalRange17transport->Transport.setSwing(0.5)Looping
1transport->Transport.setLoop(true)2transport->Transport.setLoopStart("0:0:0")3transport->Transport.setLoopEnd("4:0:0")45// Or set both at once6transport->Transport.setLoopPoints("0:0:0", "4:0:0")Destination
Destination represents the master output. All audio is routed here by default.
1let dest = Core.getDestination()23dest->Destination.volume // Param.t4dest->Destination.mute // bool5dest->Destination.setMute(true)AudioNode
AudioNode is the base type for all audio-producing and audio-processing nodes.
1// Connect nodes together2nodeA->AudioNode.connect(nodeB)3nodeA->AudioNode.disconnect()4nodeA->AudioNode.disconnectFrom(nodeB)56// Connect to the speakers7node->AudioNode.toDestination()89// Chain multiple nodes: A -> B -> C -> ...10nodeA->AudioNode.chain([nodeB, nodeC])1112// Fan out: A -> B, A -> C13nodeA->AudioNode.fan([nodeB, nodeC])1415// Properties16node->AudioNode.numberOfInputs // int17node->AudioNode.numberOfOutputs // int18node->AudioNode.channelCount // int1920// Cleanup21node->AudioNode.dispose()