# Forslag: Visuelle Waveforms som UI-primitiv

## Idé
Podcast handler om lyd, men i Sidelinja-editoren er lyd foreløpig kun tekst eller en usynlig boks. Generer komprimerte audio-peaks fra lydfiler og rendrer dem som visuelle bølgeformer (SoundCloud-stil) overalt der lyd refereres — i editoren, i segment-embeds, i Podcastfabrikken.

## Hvorfor er dette interessant?
- Gjør manuell redigering og verifisering av transkripsjoner mye mer intuitivt
- Tidsstempler og Aha-markører kan lyse opp oppå bølgene
- Visuell representasjon av lyd er forventet i 2026 — ren tekst føles utdatert
- `{{segment:uuid}}` i editoren kan rendres som en interaktiv bølgeform i stedet for en flat lydspiller

## Hva bygger den på?
- **Podcastfabrikken** — lydfilene og segmentene
- **Jobbkø** — ny jobbtype `generate_waveform`
- **Editor** — `{{segment:uuid}}`-embeds rendrer waveform i stedet for enkel player
- **Studioet** — Aha-markører vises oppå bølgeformen

## Gjennomføring

### 1. Generere peaks
Utvid `whisper_transcribe`-jobben (eller opprett separat `generate_waveform`-jobb) til å generere en komprimert array med audio-peaks:

```
Verktøy: audiowaveform (BBC, C++, rask) eller ffmpeg
Input: MP3/WAV
Output: JSON-array med peaks (f.eks. 800 datapunkter per minutt)
Lagring: media_files.metadata (JSONB) eller separat fil
```

### 2. Svelte-komponent: `<Waveform>`
- Rendrer peaks som SVG eller Canvas
- Klikkbar: hopp til tidspunkt i lyden
- Overlay: Aha-markører, segment-grenser, talerskifter
- Responsiv: tilpasser seg containerbredde
- Brukes i: editor-embeds, Podcastfabrikken, segment-visning

### 3. Editor-integrasjon
`{{segment:uuid}}` i rendered-modus viser:
```
┌──────────────────────────────────────────┐
│ ▶ Episode 42, 14:23–21:07               │
│ ░▓▓░▓▓▓░░▓▓░▓░░▓▓▓▓░░▓░░▓▓░▓▓▓░░▓▓░▓  │
│     ^Aha          ^Støre nevnt           │
└──────────────────────────────────────────┘
```

## Åpne spørsmål
- Peaks per minutt: 800 er nok for de fleste visninger. Trenger vi flere nivåer (zoom)?
- Farger: Mono-farge eller fargekode per taler (krever diarisering)?
- Lagring: Inline i JSONB eller som separat `.json`-fil i media/?

## Innsats: Lav–Middels
## Wow-faktor: Høy
