Preset format
A preset is JSON describing an NTSC/VHS transformation. It does not include UI state, file paths, or React internals. Same source, settings, and seed should match wherever the engine can run.
Envelope
schemaVersion: currently1tool:ntsc-vhsname: human labelengine:ntsc-rssettings: nested named parameters
Versioning
Unknown future schema versions are rejected. Missing keys in an ntsc-rs v1 file fall back to engine defaults. Extra keys are ignored. A bump to schemaVersion 2 would be additive only if old files still load.
ntsc-rs files
Flat JSON with version: 1 and snake_case keys such as tracking_noise_height is accepted as an ntsc-rs native preset. Export from this app is the nested Sewer Signal document, not a claim of byte-identical ntsc-rs GUI files.
Example
{
"schemaVersion": 1,
"tool": "ntsc-vhs",
"name": "Studio master",
"engine": "ntsc-rs",
"settings": {
"randomSeed": 0,
"useField": "interleavedUpperFirst",
"filterType": "butterworth",
"inputLumaFilter": "notch",
"chromaLowpassIn": "full",
"compositeSharpening": 1,
"compositeNoise": {
"enabled": true,
"intensity": 0.05,
"frequency": 0.5,
"detail": 1
},
"snow": {
"intensity": 0.00025,
"anisotropy": 0.5
},
"scanlinePhaseShift": "deg180",
"scanlinePhaseShiftOffset": 0,
"chromaDemodulation": "notch",
"lumaSmear": 0.5,
"headSwitching": {
"enabled": true,
"height": 8,
"offset": 3,
"horizontalShift": 72,
"startMidLine": {
"enabled": true,
"position": 0.95,
"jitter": 0.03
}
},
"trackingNoise": {
"enabled": true,
"height": 12,
"waveIntensity": 15,
"snowIntensity": 0.025,
"snowAnisotropy": 0.25,
"noiseIntensity": 0.25
},
"ringing": {
"enabled": true,
"frequency": 0.45,
"power": 4,
"scale": 4
},
"lumaNoise": {
"enabled": true,
"intensity": 0.01,
"frequency": 0.5,
"detail": 1
},
"chromaNoise": {
"enabled": true,
"intensity": 0.1,
"frequency": 0.05,
"detail": 2
},
"chromaPhaseError": 0,
"chromaPhaseNoise": 0.001,
"chromaDelay": {
"horizontal": 0,
"vertical": 0
},
"vhs": {
"enabled": true,
"tapeSpeed": "lp",
"chromaLoss": 0.000025,
"verticalChromaBlend": true,
"sharpen": {
"enabled": true,
"intensity": 0.25,
"frequency": 1
},
"edgeWave": {
"enabled": true,
"intensity": 0.5,
"speed": 4,
"frequency": 0.05,
"detail": 2
}
},
"chromaLowpassOut": "full",
"scale": {
"enabled": true,
"horizontal": 1,
"vertical": 1,
"scaleWithVideoSize": false
}
}
}
Import / export
On the VHS tool: Export JSON / Import JSON. Invalid JSON, wrong tool IDs, and unknown versions fail with a readable error. ntscQT presets are refused.