feat(audio): move beat routing server-side and extend presets

Route beat-triggered manual selects from the controller server, add preset background and beat-counter UI support, and bump led-driver to include the matching pattern/runtime fixes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-09 20:08:05 +12:00
parent 1db905eaae
commit 822d9d8e01
21 changed files with 2453 additions and 109 deletions

View File

@@ -1 +1,291 @@
{"on":{"min_delay":10,"max_delay":10000,"max_colors":1,"supports_manual":true},"off":{"min_delay":10,"max_delay":10000,"max_colors":0,"supports_manual":true},"rainbow":{"n1":"Step Rate","min_delay":10,"max_delay":10000,"max_colors":0,"supports_manual":true},"colour_cycle":{"n1":"Step Rate","min_delay":10,"max_delay":10000,"max_colors":10,"supports_manual":true},"transition":{"min_delay":10,"max_delay":10000,"max_colors":10,"supports_manual":false},"chase":{"n1":"Colour 1 Length","n2":"Colour 2 Length","n3":"Step 1","n4":"Step 2","min_delay":10,"max_delay":10000,"max_colors":2,"has_background":true,"supports_manual":true},"pulse":{"n1":"Attack","n2":"Hold","n3":"Decay","min_delay":10,"max_delay":10000,"max_colors":10,"has_background":true,"supports_manual":true},"circle":{"n1":"Head Rate","n2":"Max Length","n3":"Tail Rate","n4":"Min Length","min_delay":10,"max_delay":10000,"max_colors":2,"has_background":true,"supports_manual":true},"blink":{"min_delay":10,"max_delay":10000,"max_colors":10,"has_background":true,"supports_manual":true},"flicker":{"n1":"Min brightness","min_delay":10,"max_delay":10000,"max_colors":10,"supports_manual":true},"flame":{"n1":"Min brightness","n2":"Breath period (ms)","n3":"Spark gap min (ms, 0=default 10\u201330 s, -1=off)","n4":"Spark gap max (ms)","min_delay":10,"max_delay":10000,"max_colors":10,"supports_manual":false},"twinkle":{"n1":"Twinkle activity (1\u2013255, higher = more changes)","n2":"Density (0\u2013255, higher = more of the strip lit)","n3":"Min adjacent LEDs per twinkle (same as max for fixed length)","n4":"Max adjacent LEDs per twinkle (same as min for fixed length)","min_delay":10,"max_delay":10000,"max_colors":10,"has_background":true,"supports_manual":true},"radiate":{"n1":"Node spacing (LEDs)","n2":"Out time (ms)","n3":"In time (ms)","min_delay":10,"max_delay":10000,"max_colors":2,"has_background":true,"supports_manual":true},"meteor_rain":{"n1":"Tail length","n2":"Speed (LEDs per frame)","n3":"Fade amount (1-255)","min_delay":10,"max_delay":10000,"max_colors":10,"supports_manual":true},"scanner":{"n1":"Eye width","n2":"End pause (frames)","min_delay":10,"max_delay":10000,"max_colors":10,"has_background":true,"supports_manual":true},"gradient_scroll":{"n1":"Scroll step rate","min_delay":10,"max_delay":10000,"max_colors":10,"supports_manual":false},"comet_dual":{"n1":"Tail length","n2":"Speed","n3":"Gap","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"sparkle_trail":{"n1":"Spark density","n2":"Decay","max_colors":10,"min_delay":10,"max_delay":10000,"supports_manual":true},"wave":{"n1":"Wavelength","n2":"Amplitude","n3":"Drift speed","max_colors":10,"min_delay":10,"max_delay":10000,"supports_manual":false},"plasma":{"n1":"Scale","n2":"Speed","n3":"Contrast","max_colors":10,"min_delay":10,"max_delay":10000,"supports_manual":false},"segment_chase":{"n1":"Segment size","n2":"Phase step","n3":"Segment phase offset","n4":"Gap per segment","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"bar_graph":{"n1":"Level percent","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"breathing_dual":{"n1":"Phase offset","n2":"Ease","max_colors":10,"min_delay":10,"max_delay":10000,"supports_manual":false},"strobe_burst":{"n1":"Burst count","n2":"Burst gap","n3":"Cooldown","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"rain_drops":{"n1":"Drop rate","n2":"Ripple width","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"fireflies":{"n1":"Count","n2":"Twinkle speed","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"clock_sweep":{"n1":"Hand width","n2":"Marker interval","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"marquee":{"n1":"On length","n2":"Off length","n3":"Step","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"aurora":{"n1":"Band count","n2":"Shimmer","max_colors":10,"min_delay":10,"max_delay":10000,"supports_manual":false},"snowfall":{"n1":"Flake density","n2":"Fall speed","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"heartbeat":{"n1":"Pulse 1 ms","n2":"Pulse 2 ms","n3":"Pause ms","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"orbit":{"n1":"Orbit count","n2":"Base speed","max_colors":10,"min_delay":10,"max_delay":10000,"has_background":true,"supports_manual":true},"palette_morph":{"n1":"Morph ms","n2":"Warp rate","n3":"Turbulence","max_colors":10,"min_delay":10,"max_delay":10000,"supports_manual":false}}
{
"on": {
"min_delay": 10,
"max_delay": 10000,
"max_colors": 1,
"supports_manual": true
},
"off": {
"min_delay": 10,
"max_delay": 10000,
"max_colors": 0,
"supports_manual": true
},
"rainbow": {
"n1": "Step Rate",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 0,
"supports_manual": true
},
"colour_cycle": {
"n1": "Step Rate",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 10,
"supports_manual": true
},
"transition": {
"min_delay": 10,
"max_delay": 10000,
"max_colors": 10,
"supports_manual": false
},
"chase": {
"n1": "Colour 1 Length",
"n2": "Colour 2 Length",
"n3": "Step 1",
"n4": "Step 2",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 2,
"has_background": true,
"supports_manual": true
},
"pulse": {
"n1": "Attack",
"n2": "Hold",
"n3": "Decay",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 10,
"has_background": true,
"supports_manual": true
},
"circle": {
"n1": "Head Rate",
"n2": "Max Length",
"n3": "Tail Rate",
"n4": "Min Length",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 2,
"has_background": true,
"supports_manual": false
},
"blink": {
"min_delay": 10,
"max_delay": 10000,
"max_colors": 10,
"has_background": true,
"supports_manual": false
},
"flicker": {
"n1": "Min brightness",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 10,
"supports_manual": true
},
"flame": {
"n1": "Min brightness",
"n2": "Breath period (ms)",
"n3": "Spark gap min (ms, 0=default 1030 s, -1=off)",
"n4": "Spark gap max (ms)",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 10,
"supports_manual": false
},
"twinkle": {
"n1": "Twinkle activity (1255, higher = more changes)",
"n2": "Density (0255, higher = more of the strip lit)",
"n3": "Min adjacent LEDs per twinkle (same as max for fixed length)",
"n4": "Max adjacent LEDs per twinkle (same as min for fixed length)",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 10,
"has_background": true,
"supports_manual": false
},
"radiate": {
"n1": "Node spacing (LEDs)",
"n2": "Out time (ms)",
"n3": "In time (ms)",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 2,
"has_background": true,
"supports_manual": true
},
"meteor_rain": {
"n1": "Tail length",
"n2": "Speed (LEDs per frame)",
"n3": "Fade amount (1-255)",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 10,
"supports_manual": true
},
"scanner": {
"n1": "Eye width",
"n2": "End pause (frames)",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 10,
"has_background": true,
"supports_manual": true
},
"gradient_scroll": {
"n1": "Scroll step rate",
"min_delay": 10,
"max_delay": 10000,
"max_colors": 10,
"supports_manual": true
},
"comet_dual": {
"n1": "Tail length",
"n2": "Speed",
"n3": "Gap",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": true
},
"sparkle_trail": {
"n1": "Spark density",
"n2": "Decay",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"supports_manual": true
},
"wave": {
"n1": "Wavelength",
"n2": "Amplitude",
"n3": "Drift speed",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"supports_manual": false
},
"plasma": {
"n1": "Scale",
"n2": "Speed",
"n3": "Contrast",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"supports_manual": false
},
"segment_chase": {
"n1": "Segment size",
"n2": "Phase step",
"n3": "Segment phase offset",
"n4": "Gap per segment",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": true
},
"bar_graph": {
"n1": "Level percent",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": false
},
"breathing_dual": {
"n1": "Phase offset",
"n2": "Ease",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"supports_manual": false
},
"strobe_burst": {
"n1": "Burst count",
"n2": "Burst gap",
"n3": "Cooldown",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": true
},
"rain_drops": {
"n1": "Drop rate",
"n2": "Ripple width",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": true
},
"fireflies": {
"n1": "Count",
"n2": "Twinkle speed",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": true
},
"clock_sweep": {
"n1": "Hand width",
"n2": "Marker interval",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": true
},
"marquee": {
"n1": "On length",
"n2": "Off length",
"n3": "Step",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": true
},
"aurora": {
"n1": "Band count",
"n2": "Shimmer",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"supports_manual": false
},
"snowfall": {
"n1": "Flake density",
"n2": "Fall speed",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": true
},
"heartbeat": {
"n1": "Pulse 1 ms",
"n2": "Pulse 2 ms",
"n3": "Pause ms",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": true
},
"orbit": {
"n1": "Orbit count",
"n2": "Base speed",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"has_background": true,
"supports_manual": true
},
"palette_morph": {
"n1": "Morph ms",
"n2": "Warp rate",
"n3": "Turbulence",
"max_colors": 10,
"min_delay": 10,
"max_delay": 10000,
"supports_manual": false
}
}