HOA7 Spatial Field Decoder (hoa64 v0.5.0): 7th-order Ambisonics encode/decode, Wigner-D rotation, DOA analysis, vision fuse, diffusion conditioning
570b87b verified | # Qwythos / Pi bridge — spatial tool wiring | |
| The HOA-7 spatial calculator is **not** part of the LLM weights. Qwythos should | |
| call it as a tool and treat the JSON / one-liner as ground-truth geometry. | |
| ## Runtime | |
| | Piece | Address | | |
| |-------|---------| | |
| | Qwythos (llama-server) | `http://127.0.0.1:8000/v1` | | |
| | Olympus Pi bridge | `http://127.0.0.1:8642` | | |
| | **spatial-hoa API** | `http://127.0.0.1:8765` | | |
| | CLI on PATH | `spatial-report` | | |
| Enable API at login: | |
| ```bash | |
| systemctl --user enable --now spatial-hoa.service | |
| curl -s http://127.0.0.1:8765/health | |
| ``` | |
| ## For Pi bridge (bash tool) | |
| Pi already has `bash`. Instruct the agent: | |
| ```text | |
| When the user asks about spatial audio/location/direction of sound or objects, | |
| run one of: | |
| spatial-report demo-scene -o /tmp/spatial.json && cat /tmp/spatial.json | |
| spatial-report analyze /path/to.wav --ambix -o /tmp/spatial.json && cat /tmp/spatial.json | |
| spatial-report analyze /path/to.wav --az DEG --el DEG -o /tmp/spatial.json | |
| spatial-report vision --boxes '[{"az":0,"el":0,"label":"obj"}]' -o /tmp/v.json | |
| Or HTTP: | |
| curl -s -X POST http://127.0.0.1:8765/v1/spatial/analyze \ | |
| -H 'Content-Type: application/json' \ | |
| -d '{"mode":"demo_scene","order":3}' | |
| Use the returned one_liner and doa_* fields as factual spatial state. | |
| ``` | |
| Optional: append that block to the Pi system prompt / AGENTS notes. | |
| ## OpenAI tool schema | |
| See `tools/spatial_analyze.openai.json` for a function-calling descriptor | |
| compatible with agents that support tools against a custom executor. | |
| ## Coordinates (always) | |
| - Azimuth 0° = front, +90° = left, −90° = right | |
| - Elevation 0° = horizon, +90° = zenith | |