One JSON patch, two runtimes: browser DSP and a JUCE plugin
Sharing a sound definition between a WebAudio engine and a native C++ plugin without drift.
Published
Audio DSPJUCEThe goal
Design a tone in the browser, load it in a DAW, and hear the same thing. That only works if both runtimes interpret a single description of the signal chain identically.
Designing the schema
Describe modules by type, with explicit parameter names, units and ranges — decibels, hertz, milliseconds — rather than raw 0–1 values whose meaning depends on the code. Version the schema so older patches can be migrated rather than silently misread.
Verifying it
Render a set of test patches through both the browser engine and the plugin with the same input signal, then compare the outputs numerically. Small differences from floating-point ordering are expected; anything larger points at a module that interprets a parameter differently.