- 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>
22 lines
885 B
JavaScript
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());
|