1c5b728e8b
FastAPI web server with REST + WebSocket, 5 Jinja2 HTML pages, mobile-friendly dark theme CSS, page-specific JS controllers, and Avahi mDNS service advertisement for pedal.local. Files: src/web/server.py — FastAPI app with 17 REST endpoints + /ws WebSocket src/web/__init__.py — Package init with WebServer, WebServerDeps exports src/web/templates/*.html — Dashboard, Presets, Models, IRs, Settings (base) src/web/static/style.css — Dark mobile-first CSS (80-82% max-width) src/web/static/websocket.js — Auto-reconnecting WebSocket manager src/web/static/app.js — Dashboard live updates + REST helpers src/web/static/presets.js — Bank/preset CRUD modal UI src/web/static/models.js — NAM model list/load/upload src/web/static/irs.js — IR file list/load/upload etc/avahi/pi-multifx-pedal.service — Avahi service advertisement scripts/setup-mdns.sh — One-shot mDNS setup (avahi, hostname, restart) main.py — Wire WebServer into boot/shutdown requirements.txt — Add fastapi, uvicorn, jinja2, python-multipart tests/test_web.py — 36 tests (pages, REST, WebSocket, errors) All 36 tests pass.
38 lines
603 B
Plaintext
38 lines
603 B
Plaintext
# Pi Multi-FX Pedal — Requirements
|
|
# Core audio
|
|
jackclient-python>=0.5.5
|
|
numpy>=1.24
|
|
|
|
# NAM inference (on RPi 4B aarch64)
|
|
# libtorch via nam Python package
|
|
neural-amp-modeler>=0.8.0
|
|
|
|
# IR convolution
|
|
# scipy for wav/IR file loading
|
|
scipy>=1.10
|
|
|
|
# UI
|
|
RPi.GPIO>=0.7.1
|
|
adafruit-circuitpython-ssd1306>=2.12
|
|
adafruit-circuitpython-neopixel>=6.3
|
|
pillow>=10.0
|
|
|
|
# MIDI
|
|
python-rtmidi>=1.5
|
|
pyserial>=3.5
|
|
|
|
# Config & presets
|
|
pyyaml>=6.0
|
|
orjson>=3.9
|
|
|
|
# Web UI
|
|
fastapi>=0.110
|
|
uvicorn[standard]>=0.27
|
|
jinja2>=3.1
|
|
python-multipart>=0.0.9
|
|
websockets>=12.0
|
|
|
|
# Testing
|
|
pytest>=7.0
|
|
pytest-asyncio>=0.21
|
|
pytest-mock>=3.11 |