DJ Visualizer Pi: standalone Node+WebSocket server with mobile PWA remote
New separate project (the Electron Mac app stays untouched). Reuses the visual engine (WebGL shaders, effect catalog, Web Audio) verbatim and replaces Electron IPC with a Node HTTP+WebSocket server: - server.js: serves the kiosk output page + mobile control PWA, relays the same ctl/rpt JSON protocol over WebSocket, plus REST for media library/upload, JSON state (pads), waveform peaks and MP4 recording (ffmpeg). - public/js/net.js: window.djv shim over WebSocket+HTTP so output.js runs intact. - public/index.html + control.js: touch-first mobile remote (effects, media/queue, ticker, pads, audio/EQ, fullscreen + recording). - PWA (manifest + service worker + generated icons). - scripts/: Chromium kiosk launcher + install-pi.sh (systemd units for Pi 5). Verified: REST endpoints, WebSocket relay both directions, control PWA loads the 2958-effect catalog and renders. (Headless WebGL output not testable without GPU.) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
commit
b94c787231
81 files changed
+23994
No files matched your search
@@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="393.48242"
|
||||
height="453.78821"
|
||||
viewBox="0 0 393.48242 453.78821"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="minimal speaker icon 2.svg"
|
||||
inkscape:export-filename="/home/qubodup/x22.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90"
|
||||
style="shape-rendering:crispEdges">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient3880">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#57b7ec"
|
||||
id="stop3882" />
|
||||
<stop
|
||||
offset="1"
|
||||
style="stop-color:#066b9d"
|
||||
id="stop3884" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4142136"
|
||||
inkscape:cx="339.25784"
|
||||
inkscape:cy="316.67811"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1734"
|
||||
inkscape:window-height="865"
|
||||
inkscape:window-x="73"
|
||||
inkscape:window-y="130"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:snap-bbox="false"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:snap-smooth-nodes="true"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-55,-285.4683)">
|
||||
<path
|
||||
id="path4241"
|
||||
transform="translate(0,-27.637839)"
|
||||
d="m 363.85547,318.10547 -17.97656,17.58203 c 0,0 16.52752,15.94264 33.54101,50.1875 17.0135,34.24487 34.04492,86.33391 34.04492,157.11719 0,70.78408 -17.06532,121.54454 -34.04492,154.59179 C 362.44113,730.63529 346.13086,745.5 346.13086,745.5 l 18.37695,16.39453 c 0,0 25.53075,-23.20254 43.41016,-58.00586 17.88345,-34.70163 35.56445,-87.96437 35.56445,-160.5957 0,-73.00015 -17.7147,-127.24969 -35.55859,-163.16992 -17.84472,-35.91701 -44.0625,-61.71485 -44.0625,-61.71485 z m -52.71094,50.07226 -0.004,0.20508 -19.48046,16.78711 c 0,0 12.92971,12.15877 26.22851,38.08008 13.29878,25.92052 26.73242,65.32349 26.73242,119.03516 0,53.71168 -13.46915,92.01625 -26.73242,117.01757 -13.26331,25.00132 -25.97656,36.0625 -25.97656,36.0625 l 18.125,17.03907 c 0,0 21.89304,-19.7706 36.0957,-46.54492 14.20264,-26.77354 28.2461,-67.57237 28.2461,-123.57032 0,-56.00118 -14.07896,-97.72991 -28.2461,-125.33789 -14.16715,-27.61443 -34.98828,-48.77344 -34.98828,-48.77344 z m -99.39062,16.84375 c -2.36303,-0.19454 -5.70772,1.16692 -10.40625,4.38282 -18.79515,12.864 -87.07422,87.34765 -87.07422,87.34765 -0.59554,0 -1.06454,0.21213 -1.64258,0.27539 l -52.63086,0 0,130.88477 54.27734,0 c 0,0 67.06648,74.75904 87.07422,87.62305 20.00722,12.86347 15.88086,-7.12385 15.88086,-15.88086 l 0,-274.64258 c 0,-6.56856 1.61235,-19.4036 -5.47656,-19.98828 z m 39.89453,30.81446 -20.26953,18.96094 c 0,0 47.66406,33.54316 47.66406,106.67968 0,73.1333 -47.41211,104.41016 -47.41211,104.41016 l 19.76367,21.18555 c 0,0 57.40625,-46.41246 57.40625,-125.58789 0,-79.18107 -57.1543,-125.63672 -57.1543,-125.63672 z"
|
||||
style="fill:#2e2e2e;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccssccccscccccccsscccscccccccccsssccccccscccc" />
|
||||
<path
|
||||
style="fill:#343434;fill-opacity:1;stroke:none;stroke-width:5.27213335"
|
||||
d="m 363.85547,318.10547 -17.97656,17.58203 c 0,0 16.52752,15.94264 33.54101,50.1875 17.0135,34.24487 34.04492,86.33391 34.04492,157.11719 0,70.78408 -17.06532,121.54454 -34.04492,154.59179 C 362.44113,730.63529 346.13086,745.5 346.13086,745.5 l 18.37695,16.39453 c 0,0 25.53075,-23.20254 43.41016,-58.00586 17.88345,-34.70163 35.56445,-87.96437 35.56445,-160.5957 0,-73.00015 -17.7147,-127.24969 -35.55859,-163.16992 -17.84472,-35.91701 -44.0625,-61.71485 -44.0625,-61.71485 z m -52.71094,50.07226 -0.004,0.20508 -19.48046,16.78711 c 0,0 12.92971,12.15877 26.22851,38.08008 13.29878,25.92052 26.73242,65.32349 26.73242,119.03516 0,53.71168 -13.46915,92.01625 -26.73242,117.01757 -13.26331,25.00132 -25.97656,36.0625 -25.97656,36.0625 l 18.125,17.03907 c 0,0 21.89304,-19.7706 36.0957,-46.54492 14.20264,-26.77354 28.2461,-67.57237 28.2461,-123.57032 0,-56.00118 -14.07896,-97.72991 -28.2461,-125.33789 -14.16715,-27.61443 -34.98828,-48.77344 -34.98828,-48.77344 z m -99.39062,16.84375 c -2.36303,-0.19454 -5.70772,1.16692 -10.40625,4.38282 -18.79515,12.864 -87.07422,87.34765 -87.07422,87.34765 -0.59554,0 -1.06454,0.21213 -1.64258,0.27539 l -52.63086,0 0,130.88477 54.27734,0 c 0,0 67.06648,74.75904 87.07422,87.62305 20.00722,12.86347 15.88086,-7.12385 15.88086,-15.88086 l 0,-274.64258 c 0,-6.56856 1.61235,-19.4036 -5.47656,-19.98828 z m 39.89453,30.81446 -20.26953,18.96094 c 0,0 47.66406,33.54316 47.66406,106.67968 0,73.1333 -47.41211,104.41016 -47.41211,104.41016 l 19.76367,21.18555 c 0,0 57.40625,-46.41246 57.40625,-125.58789 0,-79.18107 -57.1543,-125.63672 -57.1543,-125.63672 z"
|
||||
transform="translate(0,-27.637839)"
|
||||
id="path2842"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccssccccscccccccsscccscccccccccsssccccccscccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.0 KiB |
Reference in new issue
Block a user