- Parametric effect engine: 23 shader families × palettes × variants (~2300 presets) with a filterable library and an effect sequence (auto-cycle by time or beat). - Effect categories: fractals/abstract, dancing silhouettes, SVG/Image source (loads any SVG/image as a recolourable audio-reactive effect; 50+ bundled CC0 SVGs), and VU-Meter (32-band spectrum bars, analogue needle, stereo LEDs). - Dual-window architecture: control panel + fullscreen output on an external display (reliable via simple-fullscreen); tabbed control UI (Audio, Effetti, Pad, Immagini, Testo, Registra, Schermo). - Audio: file playback + live input + output device selection, per-band visual EQ, audio playlist (reorder, hotkeys, per-track play/pause, repeat). - Pad bank: 5×4 launchpad with persistent assignments; pressing a pad stops the current. - Overlays: slideshow images (resizable), two freely positioned/resizable logos, scrolling ticker text. - MP4 recording of the composited output (visual + overlays + audio) via MediaRecorder + ffmpeg, with selectable aspect ratios (16:9, 9:16, 1:1, 4:3, 3:4, 21:9). - App icon (.icns) and dock icon; author Dj LuZa. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
89 lines
4.0 KiB
Markdown
89 lines
4.0 KiB
Markdown
# DJ Visualizer
|
||
|
||
> di **Dj LuZa** · info@djluza.com
|
||
|
||
App desktop (Electron) per Mac che mostra **frattali e visual astratti reattivi all'audio** su uno schermo esterno. L'audio può arrivare da un **file caricato** (con **playlist** riordinabile e tasti rapidi), da un **input live** (microfono / line-in) o dall'**audio di sistema** (il tuo set DJ) tramite un device virtuale tipo BlackHole. Puoi sovrapporre **immagini** e **scritte scorrevoli**.
|
||
|
||
Include un **motore di effetti parametrico**: 16 famiglie di shader × palette di colori × varianti di stile generano **oltre 1500 preset**, con una **sequenza di effetti** (playlist) ad auto-cambio a tempo o sul beat.
|
||
|
||
## Due finestre
|
||
|
||
All'avvio si aprono **due finestre**:
|
||
|
||
- **Controlli** — il pannello con tutte le funzioni (sorgente audio, scene, slider, immagini, testo, scelta monitor). Sta sul tuo schermo principale.
|
||
- **Output** — solo la visualizzazione, senza interfaccia. Va automaticamente a schermo intero sul monitor esterno se presente.
|
||
|
||
Comandi e tasti agiscono sul pannello Controlli e si riflettono sull'Output. Chiudendo la finestra Controlli si chiude tutta l'app.
|
||
|
||
## Avvio
|
||
|
||
```bash
|
||
npm install # solo la prima volta
|
||
npm start
|
||
```
|
||
|
||
## Controlli rapidi (tastiera)
|
||
|
||
| Tasto | Azione |
|
||
|-------|--------|
|
||
| `1`–`9` | Applica i primi 9 effetti della sequenza |
|
||
| `F` | Schermo intero output |
|
||
| `O` | Aggiungi brani alla playlist |
|
||
| `G` | Carica immagini |
|
||
| `T` | Mostra/nascondi testo scorrevole |
|
||
| `← →` | Cambia immagine |
|
||
| `Spazio` | Play/pausa del brano |
|
||
| tasti personalizzati | Avvio rapido di brani e effetti (assegnabili dal pannello con ⌨) |
|
||
|
||
Puoi anche **trascinare** brani (mp3/wav) o immagini direttamente sul pannello.
|
||
|
||
## Effetti
|
||
|
||
- **Libreria effetti**: oltre 1500 preset filtrabili per famiglia e ricercabili per nome. Clic per applicarli all'istante.
|
||
- **Sequenza effetti**: aggiungi i preset preferiti (➕), riordinali col drag, assegna tasti rapidi, e attiva **Auto-cambio** (a intervallo) o **Sul beat** (cambia a ritmo), con **Shuffle**.
|
||
- **Equalizzatore visual**: regola quanto Bassi/Medi/Alti influenzano la grafica.
|
||
|
||
## Playlist audio
|
||
|
||
Carica più brani, riordinali col drag della maniglia ⠿, assegna un tasto rapido a ciascuno (⌨), avvia/pausa per brano (▶/⏸) e attiva **Ripeti** per l'avanzamento automatico a fine traccia.
|
||
|
||
## Schermo esterno
|
||
|
||
Nel pannello, sezione **Schermo**: scegli il monitor (di default seleziona quello esterno) e premi **Vai** → la finestra si sposta e va a schermo intero su quel display. `F` per uscire.
|
||
|
||
## Sorgenti audio
|
||
|
||
- **File**: pulsante 📂 o trascina il file. L'audio si sente dalle casse del Mac.
|
||
- **Input live (mic / line-in)**: seleziona il device dal menu e premi *Usa input*. Utile con una scheda audio/mixer collegato all'ingresso.
|
||
- **Audio di sistema (il tuo set)**: serve un device virtuale, vedi sotto.
|
||
|
||
### Catturare l'audio di sistema con BlackHole
|
||
|
||
macOS non permette di catturare direttamente l'audio in uscita. Soluzione gratuita: **BlackHole**.
|
||
|
||
1. Installa BlackHole (2ch):
|
||
```bash
|
||
brew install blackhole-2ch
|
||
```
|
||
(oppure scaricalo da https://existential.audio/blackhole/)
|
||
|
||
2. Per **sentire l'audio E inviarlo al visualizer** allo stesso tempo, crea un **Multi-Output Device** in *Audio MIDI Setup* (Configurazione MIDI Audio):
|
||
- `+` in basso a sinistra → **Create Multi-Output Device**
|
||
- spunta sia le tue **casse/cuffie** sia **BlackHole 2ch**
|
||
- imposta questo Multi-Output come uscita del Mac (o del software DJ)
|
||
|
||
3. In DJ Visualizer scegli **BlackHole 2ch** come input live e premi *Usa input*.
|
||
|
||
> In alternativa, manda direttamente l'uscita del software DJ a BlackHole se preferisci non sentire nulla dalle casse del Mac.
|
||
|
||
## Personalizzare i visual
|
||
|
||
Le scene sono shader GLSL in `src/shaders.js` (array `SHADERS.scenes`). Ognuna riceve uniform audio: `uBass`, `uMid`, `uTreble`, `uLevel`, `uBeat`, più `uTime` e `uRes`. Aggiungere una scena = aggiungere uno shader all'array e un bottone in `index.html`.
|
||
|
||
## Build di un .app/.dmg
|
||
|
||
```bash
|
||
npm run dist
|
||
```
|
||
Genera un `.dmg` in `dist/` (richiede electron-builder, già incluso).
|