README front door: value, problem, entry points, live versus planned

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-10-22 20:10:32 +02:00
commit f0872b4f06

View file

@ -1,32 +1,30 @@
# Perlines # Perlines
Perlines is the 2012 Aethervis trail idea rebuilt as a Fensalir client. Perlines is the 2012 Aethervis trail idea rebuilt as a Fensalir client: audio becomes a rolling field resource that Fensalir's renderer draws as a storm of curl-noise trails, with no private line renderer in the client.
The Unity version owned trails through `LineRenderer` and `TrailRenderer` **Valuable here:** the signal path. `src/Perlines/PerlinesSignalProcessor.cs` turns audio into FFT energy, adaptively whitens it per band, detects the key, and projects bins onto musical scale-note lanes. `src/Perlines/PerlinesRuntime.cs` writes one Float32 column per frame into a rolling field resource and hands it to Fensalir (`Perlin4D.cs` and `SmoothNoise.cs` supply the noise). It is a worked example of a Fensalir client that owns a signal and leaves visibility, reservoir reuse, bloom and reconstruction to the renderer.
objects. This version owns only the signal: a procedural audio frame is sent
through an FFT, adaptively whitened per band, written into a rolling Float32 **Problem it solves:** the Unity version owned trails through `LineRenderer` and `TrailRenderer` objects, so the renderer could not reason about them. Here the renderer owns the trails and Perlines owns only the signal.
field resource, and lowered through Fensalir's TubeField path. The renderer owns
visibility, reservoir reuse, bloom, and final reconstruction. **Entry points:** client project `src/Perlines/Perlines.csproj` (solution `Perlines.sln`); design and authority map in `docs/system-map.md`; launched through Fensalir's `scripts/dev-reload.ps1`. Requires a sibling checkout of `GameCult/Fensalir` (Windows, D3D12).
**Status:** live as a demo. Input is a Fensalir-owned Windows system-loopback stem when one is available, otherwise a procedural fallback signal. Last commit 2026-05-31.
## Run ## Run
From `E:\Projects\Fensalir`: From the root of the Fensalir checkout (Perlines checked out beside it):
```powershell ```powershell
.\scripts\dev-reload.ps1 -ClientProject E:\Projects\Perlines\src\Perlines\Perlines.csproj .\scripts\dev-reload.ps1 -ClientProject ..\Perlines\src\Perlines\Perlines.csproj
``` ```
Headless smoke test from Fensalir: Headless smoke test, also from Fensalir:
```powershell ```powershell
.\scripts\dev-reload.ps1 -Headless -ClientProject E:\Projects\Perlines\src\Perlines\Perlines.csproj .\scripts\dev-reload.ps1 -Headless -ClientProject ..\Perlines\src\Perlines\Perlines.csproj
``` ```
Headless PNG capture from this repo: `scripts/run-dev.ps1` and `scripts/capture-headless.ps1` in this repo wrap the same launch and a headless PNG capture, but both hardcode the Fensalir location as `E:\Projects\Fensalir`, which does not exist on current workstations. Edit that path before running them.
```powershell
E:\Projects\Perlines\scripts\capture-headless.ps1
```
## Live Model ## Live Model