Files
djaudiovisualizer/build/gen-icon.js
T
lucianoandClaude Opus 4.8 47728d0d2a Effects engine, SVG/VU/silhouette categories, pad bank, MP4 recording, dual-window UI
- 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>
2026-06-19 15:25:39 +02:00

22 lines
885 B
JavaScript

// Renders build/icon-source.html offscreen and writes build/icon_1024.png.
const { app, BrowserWindow } = require('electron');
const path = require('path');
const fs = require('fs');
app.whenReady().then(() => {
const win = new BrowserWindow({ width: 1024, height: 1024, show: false,
webPreferences: { offscreen: false } });
win.loadFile(path.join(__dirname, 'icon-source.html'));
win.webContents.once('did-finish-load', () => {
setTimeout(async () => {
const dataUrl = await win.webContents.executeJavaScript(
'document.getElementById("c").toDataURL("image/png")');
const b64 = dataUrl.replace(/^data:image\/png;base64,/, '');
fs.writeFileSync(path.join(__dirname, 'icon_1024.png'), Buffer.from(b64, 'base64'));
console.log('WROTE icon_1024.png');
app.quit();
}, 400);
});
});
app.on('window-all-closed', () => app.quit());