Skip to content

EZ Web Audio / createTransport

Function: createTransport()

Call Signature

createTransport(options): Promise<Transport>

Defined in: packages/core/src/index.ts:977

Create a global Transport clock for multi-track synchronization.

The Transport provides a Worker-backed clock that multiple BeatTracks can lock to, enabling perfect multi-track synchronization that survives background tab throttling.

Parameters

options

TransportOptions

Transport configuration (bpm, timeSignature, ticksPerBeat)

Returns

Promise<Transport>

Promise resolving to a Transport instance

Example

typescript
import { createTransport, createBeatTrack } from 'ez-web-audio'

const transport = await createTransport({ bpm: 120, timeSignature: [4, 4] })
const kick = await createBeatTrack(['kick.mp3'], { numBeats: 4 })

kick.syncTo(transport, { noteType: 1/4 })
transport.start()

transport.on('tick', (e) => {
  console.log(`Position: ${e.detail.bar}:${e.detail.beat}:${e.detail.tick}`)
})

Call Signature

createTransport(audioContext, options): Promise<Transport>

Defined in: packages/core/src/index.ts:978

Create a global Transport clock for multi-track synchronization.

The Transport provides a Worker-backed clock that multiple BeatTracks can lock to, enabling perfect multi-track synchronization that survives background tab throttling.

Parameters

audioContext

BaseAudioContext

options

TransportOptions

Transport configuration (bpm, timeSignature, ticksPerBeat)

Returns

Promise<Transport>

Promise resolving to a Transport instance

Example

typescript
import { createTransport, createBeatTrack } from 'ez-web-audio'

const transport = await createTransport({ bpm: 120, timeSignature: [4, 4] })
const kick = await createBeatTrack(['kick.mp3'], { numBeats: 4 })

kick.syncTo(transport, { noteType: 1/4 })
transport.start()

transport.on('tick', (e) => {
  console.log(`Position: ${e.detail.bar}:${e.detail.beat}:${e.detail.tick}`)
})