# Vintage Oscilloscope

Traço de osciloscópio alimentado por um buffer de amostras.

- Nome no registry: `vintage-oscilloscope`
- Tipo: componente
- Dependências npm: nenhuma
- Demo: https://ui.visantlabs.com/c/vintage-oscilloscope
- Categorias: conteudo, audio, canvas

## Quando usar

- Use quando: Desenhar forma de onda ao vivo a partir de um buffer de áudio, em synth ou analisador
- Evite quando: Áudio gravado com play e busca: voice-note; série de dados no tempo, streamgraph

## Instalar

```bash
npx shadcn@latest add @visant/vintage-oscilloscope
```

## Usar

```tsx
<VintageOscilloscope
  mode="scope"
  height={180}
  width={380}
/>
```

## API

### VintageOscilloscope

- `active?: boolean = true` — Relógio. `false` congela o desenho — use com o palco fora da tela.
- `analyser?: AnalyserNode` — Fonte ao vivo. Quando vem, manda no `data`: a peça lê o buffer a cada quadro e não passa por estado do React — sessenta `setState` por segundo repintariam a árvore inteira pra mexer um pixel.
- `chrome?: boolean = true` — Moldura, scanlines e rótulo do modo. Desligue quando o tubo já é do pai.
- `className?: string`
- `color?: string = "var(--vintage-light)"`
- `data?: Float32Array<ArrayBuffer> | number[]` — Amostras. Em `wave`/`scope`/`rings`/`grid` são do domínio do tempo (−1…1); em `fft`, magnitudes em dB, como o modo sempre leu.
- `fill?: boolean = false` — Ocupa o pai inteiro em vez de `width`×`height`. É como a TV o encaixa.
- `height?: number = 120`
- `mode?: "wave" | "fft" | "scope" | "rings" | "grid" = "wave"`
- `params?: VintageScopeParams`
- `width?: number = 320` — Largura natural do desenho. Com `fill`, vira só o piso do buffer.
