Adapter-Pluggable daw-editor
·
14 commits
to main
since this release
Summary
<daw-editor> is now adapter-agnostic — consumers provide their own PlayoutAdapter (NativePlayoutAdapter or TonePlayoutAdapter). No default adapter or AudioContext created internally.
Published Packages
| Package | Version | Change |
|---|---|---|
@waveform-playlist/engine |
13.0.0 | Breaking: ppqn required on PlayoutAdapter, adapter is source of truth |
@waveform-playlist/playout |
12.1.0 | TonePlayoutAdapter gains tempo/meter, cross-context worklet bridge |
@waveform-playlist/worklets |
12.1.0 | addRecordingWorkletModule / addMeterWorkletModule (SAC pattern) |
@waveform-playlist/recording |
12.0.1 | Internal: uses new worklet helpers |
@dawcore/components |
0.0.12 | Breaking: adapter required, transport getter removed, sample-rate attribute removed |
@dawcore/transport |
0.0.9 | Exposes audioContext and ppqn getters |
Highlights
- Adapter pluggability — choose between Native Web Audio (multi-tempo, multi-meter, metronome) and Tone.js (effects, MIDI synths)
- PPQN driven by adapter — adapter is the source of truth for tick resolution;
setPpqn?()lets the editor request, adapter decides - Cross-context worklet support (SAC pattern) — recording works with both adapters via callback injection for
addModuleand optionalcreateAudioWorkletNode/createMediaStreamSourceon the adapter - Examples restructured —
examples/dawcore-native/andexamples/dawcore-tone/with basic, multiclip, beats-grid, and recording pages - Independent versioning — packages now follow their own semver based on actual changes
Breaking Changes (dawcore 0.0.x)
editor.adapter = new NativePlayoutAdapter(new AudioContext())required before useeditor.transportremoved — useadapter.transportdirectlyeditor.audioContextsetter removed — context comes from adaptersample-rateattribute removed — rate determined by adapter's AudioContext
Migration
// Before
import '@dawcore/components';
// editor auto-created AudioContext + NativePlayoutAdapter
// After
import '@dawcore/components';
import { NativePlayoutAdapter } from '@dawcore/transport';
const editor = document.querySelector('daw-editor');
editor.adapter = new NativePlayoutAdapter(new AudioContext());Closes #378