v6.1 — every embedded preset is now a unique visual: 16-family seeded stand-in generator, approx badges, version-gated library re-seed

This commit is contained in:
Z User 2026-10-27 06:10:58 +00:00
parent c5180a9837
commit f3fd5100d0
95 changed files with 3605 additions and 2012 deletions

Binary file not shown.

View file

@ -10,6 +10,9 @@ datasource db {
// A preset script file living somewhere in the folder tree. // A preset script file living somewhere in the folder tree.
// folderPath is the full path from the virtual root, e.g. "root/embedded/Synth-C". // folderPath is the full path from the virtual root, e.g. "root/embedded/Synth-C".
// Names are unique per folder (files in a directory). // Names are unique per folder (files in a directory).
// approx = true marks embedded presets that are generated stand-ins rather
// than ports of the original's code (the original relies on effects the
// script engine cannot run).
model Preset { model Preset {
id String @id @default(cuid()) id String @id @default(cuid())
name String name String
@ -17,6 +20,7 @@ model Preset {
description String @default("") description String @default("")
content String content String
isBuiltIn Boolean @default(false) isBuiltIn Boolean @default(false)
approx Boolean @default(false)
folderPath String @default("root/user created") folderPath String @default("root/user created")
// Path to the original Winamp .avs binary in /public (downloadable), if any. // Path to the original Winamp .avs binary in /public (downloadable), if any.
originalFile String? originalFile String?
@ -40,5 +44,8 @@ model Settings {
defaultScript String? defaultScript String?
bandConfig String? bandConfig String?
beatConfig String? beatConfig String?
// Version stamp of the embedded preset library; when it changes, the
// root/embedded subtree is re-seeded from BUILTIN + EMBEDDED_LIBRARY.
embeddedSeed String?
updatedAt DateTime @updatedAt updatedAt DateTime @updatedAt
} }

View file

@ -1,7 +1,7 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
import { db } from '@/lib/db' import { db } from '@/lib/db'
import { BUILTIN_PRESETS } from '@/lib/ava/presets' import { BUILTIN_PRESETS } from '@/lib/ava/presets'
import { EMBEDDED_LIBRARY } from '@/lib/ava/embedded-presets' import { EMBEDDED_LIBRARY, EMBEDDED_SEED_VERSION } from '@/lib/ava/embedded-presets'
import { ensureFolderRows, isValidName, normalizeFolderPath } from '@/lib/server/preset-tree' import { ensureFolderRows, isValidName, normalizeFolderPath } from '@/lib/server/preset-tree'
export const dynamic = 'force-dynamic' export const dynamic = 'force-dynamic'
@ -18,18 +18,32 @@ const BASE_FOLDERS = [
] ]
/** /**
* One-time seed: folder backbone + the full embedded library * Version-gated seed: folder backbone + the full embedded library
* (5 hand-ported classics + 90 auto-ported Winamp AVS presets from the * (5 hand-ported classics + 90 Winamp AVS presets from the user's Google
* user's Google Drive collection, organized exactly as the drive folders * Drive collection, organized as Synth-C / Amp Picks / Dynamics / Envision).
* were: Synth-C / Amp Picks / Dynamics / Envision). *
* The embedded subtree (root/embedded/**) refreshes automatically whenever
* EMBEDDED_SEED_VERSION changes (i.e. the library was regenerated) — user
* presets outside root/embedded are never touched.
*/ */
async function ensureSeeded(): Promise<void> { async function ensureSeeded(): Promise<void> {
const folderCount = await db.folder.count() const settings = await db.settings.findUnique({
if (folderCount > 0) return where: { id: 'main' },
select: { embeddedSeed: true },
})
if (settings?.embeddedSeed === EMBEDDED_SEED_VERSION) return
try { try {
await db.folder.createMany({ data: BASE_FOLDERS.map((path) => ({ path })) }) await ensureFolderRows(BASE_FOLDERS)
// Migrate legacy pre-folder databases: old built-ins sat at the top level. // refresh the embedded library subtree (+ legacy stray built-ins)
await db.preset.deleteMany({ where: { isBuiltIn: true } }) await db.preset.deleteMany({
where: {
OR: [
{ folderPath: 'root/embedded' },
{ folderPath: { startsWith: 'root/embedded/' } },
{ isBuiltIn: true },
],
},
})
await db.preset.createMany({ await db.preset.createMany({
data: [ data: [
...BUILTIN_PRESETS.map((p) => ({ ...BUILTIN_PRESETS.map((p) => ({
@ -39,6 +53,7 @@ async function ensureSeeded(): Promise<void> {
content: p.content, content: p.content,
originalFile: p.originalFile ?? null, originalFile: p.originalFile ?? null,
isBuiltIn: true, isBuiltIn: true,
approx: false,
folderPath: 'root/embedded/Synth-C', folderPath: 'root/embedded/Synth-C',
})), })),
...EMBEDDED_LIBRARY.map((p) => ({ ...EMBEDDED_LIBRARY.map((p) => ({
@ -48,12 +63,17 @@ async function ensureSeeded(): Promise<void> {
content: p.content, content: p.content,
originalFile: p.originalFile ?? null, originalFile: p.originalFile ?? null,
isBuiltIn: true, isBuiltIn: true,
// the converter recorded the download nesting — normalize to the approx: p.approx ?? false,
// clean tree ("root/embedded/root/embedded/Amp Picks" → "root/embedded/Amp Picks") // tolerate old converter output that recorded the download nesting
folderPath: p.folder.replace('root/embedded/root/embedded/', 'root/embedded/'), folderPath: p.folder.replace('root/embedded/root/embedded/', 'root/embedded/'),
})), })),
], ],
}) })
await db.settings.upsert({
where: { id: 'main' },
update: { embeddedSeed: EMBEDDED_SEED_VERSION },
create: { id: 'main', embeddedSeed: EMBEDDED_SEED_VERSION },
})
} catch (err) { } catch (err) {
// Two first requests racing → unique violation: the other request seeded. // Two first requests racing → unique violation: the other request seeded.
if ((err as { code?: string })?.code !== 'P2002') throw err if ((err as { code?: string })?.code !== 'P2002') throw err
@ -73,6 +93,7 @@ export async function GET() {
description: true, description: true,
content: true, content: true,
isBuiltIn: true, isBuiltIn: true,
approx: true,
folderPath: true, folderPath: true,
originalFile: true, originalFile: true,
updatedAt: true, updatedAt: true,

View file

@ -278,6 +278,14 @@ function TreePreset({ preset, depth }: { preset: PresetItem; depth: number }) {
<span className={cn('truncate text-xs', running ? 'font-medium text-emerald-300' : 'text-zinc-300')}> <span className={cn('truncate text-xs', running ? 'font-medium text-emerald-300' : 'text-zinc-300')}>
{preset.name} {preset.name}
</span> </span>
{preset.approx && (
<span
title="Approximation — the original preset relies on effects the script engine can't run, so this is a uniquely generated stand-in"
className="shrink-0 rounded border border-amber-300/30 bg-amber-300/10 px-1 font-mono text-[9px] leading-4 text-amber-300/90"
>
≈
</span>
)}
</button> </button>
{preset.originalFile && ( {preset.originalFile && (
<a <a

File diff suppressed because it is too large Load diff

View file

@ -22,6 +22,9 @@ export interface PresetItem {
description: string description: string
content: string content: string
isBuiltIn: boolean isBuiltIn: boolean
/** true = generated stand-in (embedded presets whose original relies on
* effects the script engine cannot run); false = original/user code. */
approx?: boolean
/** Full path from the virtual root, e.g. "root/embedded/Synth-C". */ /** Full path from the virtual root, e.g. "root/embedded/Synth-C". */
folderPath: string folderPath: string
/** Path of the original Winamp .avs binary in /public, when shipped. */ /** Path of the original Winamp .avs binary in /public, when shipped. */

View file

@ -7,10 +7,12 @@
// (v6.0 = rename to Open Visualization Engine + version indicator). // (v6.0 = rename to Open Visualization Engine + version indicator).
// //
// History: // History:
// 6.1 — preset library quality pass: every embedded stand-in is now a UNIQUE
// generated visual (16 families × seeded parameters), approx badge
// 6.0 — renamed to "Open Visualization Engine" + footer version stamp // 6.0 — renamed to "Open Visualization Engine" + footer version stamp
// 5.0 — folder-tree Presets page (Task 9–11 state, restored in Task 12) // 5.0 — folder-tree Presets page (Task 9–11 state, restored in Task 12)
// 4.0 — link audio source (yt-dlp resolve + stream proxy) // 4.0 — link audio source (yt-dlp resolve + stream proxy)
export const APP_NAME = 'Open Visualization Engine' export const APP_NAME = 'Open Visualization Engine'
export const APP_SHORT = 'OVE' export const APP_SHORT = 'OVE'
export const APP_VERSION = '6.0' export const APP_VERSION = '6.1'

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

File diff suppressed because it is too large Load diff

View file

@ -28,7 +28,7 @@
// empty string = length 0) // empty string = length 0)
import { readFileSync, writeFileSync, mkdirSync, readdirSync, statSync, copyFileSync } from 'node:fs' import { readFileSync, writeFileSync, mkdirSync, readdirSync, statSync, copyFileSync } from 'node:fs'
import { join, basename, dirname, relative } from 'node:path' import { join, basename, dirname, relative, resolve } from 'node:path'
import { validateScript } from '../src/lib/ava/script' import { validateScript } from '../src/lib/ava/script'
import { AVA_HOOKS, resetEelBuffers } from '../src/lib/ava/expression' import { AVA_HOOKS, resetEelBuffers } from '../src/lib/ava/expression'
@ -454,185 +454,241 @@ function describeEffect(e: Effect): string {
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// fallback templates (for presets whose visuals are movement/APE driven) // fallback stand-in generator (for presets whose visuals are movement/APE
// driven).
//
// The original converter squeezed every unportable preset into one of 6 fixed
// templates, so a third of the library looked identical. This generator
// instead builds a UNIQUE visual per preset:
// * 16 distinct geometric families (rings, tunnel, starfield, lattice,
// swirl, kaleido, lissajous, spectrum bars, moire, fountain, rose,
// orbits, ribbon, web, rain, helix)
// * 6 color palettes (rainbow / fire / ice / neon-band / mono / duotone)
// * every numeric parameter (counts, speeds, twists, couplings, widths,
// persistence) drawn from a deterministic PRNG seeded by the preset NAME
// — same name always regenerates the same visual, different names always
// differ
// * the family is chosen from the original's unportable components so the
// vibe roughly matches (BlitterFeedback → tunnels, Mirror → kaleido,
// Starfield → starfield, DotFountain → fountain, …)
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
function fallbackTemplate(seed: number, name: string): { content: string; style: string } { /** Deterministic PRNG (mulberry32) — stable across runs/machines. */
const styles = [ function mulberry32(seed: number): () => number {
{ let a = seed >>> 0
style: 'pulse rings', return () => {
mode: 'lines', a |= 0
content: `name: ${JSON.stringify(name)} a = (a + 0x6d2b79f5) | 0
mode: lines let t = Math.imul(a ^ (a >>> 15), 1 | a)
blend: additive t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t
persist: 0.88 return ((t ^ (t >>> 14)) >>> 0) / 4294967296
linewidth: 2 }
}
/** float in [lo, hi], formatted for generated code */
const rr = (rng: () => number, lo: number, hi: number): string =>
String(Math.round((lo + rng() * (hi - lo)) * 1000) / 1000)
/** int in [lo, hi] */
const ri = (rng: () => number, lo: number, hi: number): number =>
Math.floor(lo + rng() * (hi - lo + 1))
const pick = <T,>(rng: () => number, arr: readonly T[]): T => arr[Math.floor(rng() * arr.length)]
// --- palettes ---------------------------------------------------------------
type PaletteName = 'rainbow' | 'fire' | 'ice' | 'neon' | 'mono' | 'duotone'
const PALETTE_NAMES: readonly PaletteName[] = ['rainbow', 'fire', 'ice', 'neon', 'mono', 'duotone']
/** red/green/blue lines for a luminance + phase expression pair. */
function colorLines(palette: PaletteName, lum: string, phase: string): string {
switch (palette) {
case 'fire':
return `red = min(1, ${lum} * 1.3)\ngreen = ${lum} * 0.5\nblue = ${lum} * 0.12`
case 'ice':
return `red = ${lum} * 0.3\ngreen = ${lum} * 0.65\nblue = min(1, ${lum} * 1.3)`
case 'neon':
return `red = ${lum} * (0.25 + bass * 0.95)\ngreen = ${lum} * (0.25 + mid * 0.95)\nblue = ${lum} * (0.25 + treb * 0.95)`
case 'mono':
return `red = ${lum} * 0.85\ngreen = ${lum} * 0.92\nblue = ${lum}`
case 'duotone':
return `red = ${lum} * abs(sin(${phase}))\ngreen = ${lum} * 0.22\nblue = ${lum} * abs(cos(${phase}))`
default:
return `red = ${lum} * (0.45 + 0.55 * sin(hue * 6.28318 + ${phase}))\ngreen = ${lum} * (0.45 + 0.55 * sin(hue * 6.28318 + ${phase} + 2.09))\nblue = ${lum} * (0.45 + 0.55 * sin(hue * 6.28318 + ${phase} + 4.19))`
}
}
function scriptHeader(name: string, mode: string, persist: string, linewidth: string): string {
return `name: ${JSON.stringify(name)}\nmode: ${mode}\nblend: additive\npersist: ${persist}\nlinewidth: ${linewidth}`
}
interface FamilyCtx {
rng: () => number
name: string
palette: PaletteName
hueSpeed: string
}
type FamilyFn = (ctx: FamilyCtx) => { style: string; content: string }
// --- the 16 families --------------------------------------------------------
function famPulseRings({ rng, name, palette, hueSpeed }: FamilyCtx) {
const rings = ri(rng, 5, 13)
const mode = pick(rng, ['lines', 'dots'] as const)
const speed = rr(rng, 0.18, 0.5)
const radBase = rr(rng, 0.16, 0.34)
const radBass = rr(rng, 0.35, 0.85)
const content = `${scriptHeader(name, mode, rr(rng, 0.78, 0.9), rr(rng, 1.4, 2.6))}
[init] [init]
n = 720 n = ${rings * ri(rng, 40, 72)}
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) hue = hue + dt * ${hueSpeed} + beat * 0.01
travel = travel + dt * (0.3 + bass_att * 1.4) travel = travel + dt * (${speed} + bass_att * 1.4)
flash = flash * 0.86
[beat] [beat]
flash = 1 flash = 1
[point] [point]
g = floor(i * 9) g = floor(i * ${rings})
gi = frac(i * 9) gi = frac(i * ${rings})
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) ph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))
a = gi * 6.28318 a = gi * 6.28318
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) rad = ph * (${radBase} + bass * ${radBass} + flash * 0.08)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
fade = sin(ph * 3.14159) fade = sin(ph * 3.14159)
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) ${colorLines(palette, 'fade * (0.35 + flash * 0.4)', 'g * 0.7')}
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) skip = if(above(ph, 0.96), 1, 0)
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19)) `
skip = if(above(ph, 0.95), 1, 0) return { style: 'pulse rings', content }
`, }
},
{ function famTunnel({ rng, name, palette, hueSpeed }: FamilyCtx) {
style: 'tunnel', const rings = ri(rng, 16, 30)
mode: 'lines', const twist = rr(rng, 0.1, 0.6)
content: `name: ${JSON.stringify(name)} const speed = rr(rng, 0.15, 0.4)
mode: lines const svC = rr(rng, 0.5, 1.3)
blend: additive const mode = pick(rng, ['lines', 'dots'] as const)
persist: 0.9 const content = `${scriptHeader(name, mode, rr(rng, 0.84, 0.92), rr(rng, 1.3, 2.2))}
linewidth: 1.6
[init] [init]
n = 900 n = ${rings * ri(rng, 28, 48)}
[frame] [frame]
t = t + dt * (0.25 + bass_att * 1.5) t = t + dt * (${speed} + bass_att * 1.5)
hue = hue + dt * 0.1 hue = hue + dt * ${hueSpeed}
[point] [point]
ring = floor(i * 24) ring = floor(i * ${rings})
ri = frac(i * 24) ri2 = frac(i * ${rings})
z = frac(ring / 24 + t) z = frac(ring / ${rings} + t)
rad = 0.06 + z * 0.9 rad = 0.05 + z * ${rr(rng, 0.75, 1.05)}
a = ri * 6.28318 + ring * 0.35 + sin(t * 0.7) * 2 a = ri2 * 6.28318 + ring * ${twist} + sin(t * 0.7) * 2
x = sin(a) * rad * (0.55 + sv * 0.9) / aspect x = sin(a) * rad * (0.55 + sv * ${svC}) / aspect
y = cos(a) * rad * (0.55 + sv * 0.9) y = cos(a) * rad * (0.55 + sv * ${svC})
f = (1 - z) * (0.35 + bass * 0.65) ${colorLines(palette, '(1 - z) * (0.3 + bass * 0.7)', `z * ${rr(rng, 2, 6)}`)}
red = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4)) `
green = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 2.09)) return { style: 'tunnel', content }
blue = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 4.19)) }
`,
}, function famStarfield({ rng, name, palette, hueSpeed }: FamilyCtx) {
{ const content = `${scriptHeader(name, 'dots', rr(rng, 0.76, 0.86), rr(rng, 2, 3))}
style: 'starfield',
mode: 'dots',
content: `name: ${JSON.stringify(name)}
mode: dots
blend: additive
persist: 0.82
linewidth: 2.5
[init] [init]
n = 850 n = ${ri(rng, 650, 1100)}
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) travel = travel + dt * (${rr(rng, 0.15, 0.35)} + vol_att * ${rr(rng, 1.2, 2)})
hue = hue + dt * 0.05 hue = hue + dt * ${hueSpeed}
[point] [point]
a = rand(i * 7.3) * 6.28318 a = rand(i * 7.3) * 6.28318
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7))
rad = z * z * 1.1 rad = z * z * ${rr(rng, 0.95, 1.25)}
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb)
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) ${colorLines(palette, 'tw', `i * ${rr(rng, 2, 8)}`)}
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09))
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19))
size = 1 + z * 3 * (0.5 + bass) size = 1 + z * 3 * (0.5 + bass)
skip = if(above(z, 0.97), 1, 0) skip = if(above(z, 0.97), 1, 0)
`, `
}, return { style: 'starfield', content }
{ }
style: 'lattice',
mode: 'dots', function famLattice({ rng, name, palette, hueSpeed }: FamilyCtx) {
content: `name: ${JSON.stringify(name)} const cols = ri(rng, 22, 44)
mode: dots const rotSpeed = rr(rng, 0.03, 0.12)
blend: additive const hCoup = rr(rng, 0.2, 0.55)
persist: 0.78 const span = rr(rng, 1.4, 1.9)
linewidth: 2.5 const content = `${scriptHeader(name, 'dots', rr(rng, 0.74, 0.84), rr(rng, 2, 3))}
[init] [init]
cols = 36 cols = ${cols}
n = cols * cols n = cols * cols
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) rot = rot + dt * (${rotSpeed} + mid * 0.4)
hue = hue + dt * (0.04 + treb * 0.1) hue = hue + dt * ${hueSpeed}
[point] [point]
cx = floor(i * cols) / (cols - 1) cx = floor(i * cols) / (cols - 1)
cy = frac(i * cols) cy = frac(i * cols)
h = sv * 0.35 h = sv * ${hCoup}
ux = (cx - 0.5) * 1.6 ux = (cx - 0.5) * ${span}
uy = (cy - 0.5) * 1.6 uy = (cy - 0.5) * ${span}
rx = ux * cos(rot) - uy * sin(rot) rx = ux * cos(rot) - uy * sin(rot)
ry = ux * sin(rot) + uy * cos(rot) ry = ux * sin(rot) + uy * cos(rot)
x = (rx / aspect) * (1 - h * 0.7) x = (rx / aspect) * (1 - h * 0.7)
y = ry * (1 - h * 0.7) y = ry * (1 - h * 0.7)
lum = 0.25 + h * 2.2 ${colorLines(palette, '0.22 + h * 2.2', `cx * ${rr(rng, 2, 5)}`)}
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5 size = 1.2 + h * 5
`, `
}, return { style: 'lattice', content }
{ }
style: 'swirl',
mode: 'lines', function famSwirl({ rng, name, palette, hueSpeed }: FamilyCtx) {
content: `name: ${JSON.stringify(name)} const arms = ri(rng, 3, 9)
mode: lines const twist = rr(rng, 0.8, 2.2)
blend: additive const dExp = rr(rng, 1.6, 2.6)
persist: 0.9 const speed = rr(rng, 0.2, 0.45)
linewidth: 1.6 const content = `${scriptHeader(name, 'lines', rr(rng, 0.86, 0.92), rr(rng, 1.3, 2))}
[init] [init]
n = 1100 n = ${ri(rng, 900, 1300)}
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) t = t + dt * (${speed} + bass_att * 1.8)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * ${hueSpeed} + beat * 0.012
[point] [point]
arm = floor(i * 5) arm = floor(i * ${arms})
fa = frac(i * 5) fa = frac(i * ${arms})
d = fa d = fa
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t ang = arm * ${rr(rng, 1.2, 1.6)} + d * ${twist} * 3.14159 + t
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) rad = (0.04 + pow(d, ${dExp}) * 1.15) * (0.7 + bass * 0.5)
x = sin(ang) * rad / aspect x = sin(ang) * rad / aspect
y = cos(ang) * rad y = cos(ang) * rad
red = (0.3 + 0.7 * d) * (0.3 + bass) ${colorLines(palette, '(0.3 + 0.7 * d) * (0.3 + mid)', `d * ${rr(rng, 2, 5)}`)}
green = (0.3 + 0.7 * d) * (0.25 + mid)
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2)
skip = if(below(fa, 0.04), 1, 0) skip = if(below(fa, 0.04), 1, 0)
`, `
}, return { style: 'swirl', content }
{ }
style: 'kaleido',
mode: 'lines', function famKaleido({ rng, name, palette, hueSpeed }: FamilyCtx) {
content: `name: ${JSON.stringify(name)} const segs = ri(rng, 6, 14)
mode: lines const lFreq = ri(rng, 4, 9)
blend: additive const content = `${scriptHeader(name, 'lines', rr(rng, 0.82, 0.9), rr(rng, 1.5, 2.4))}
persist: 0.86
linewidth: 1.8
[init] [init]
n = 560 segs = ${segs}
segs = 8 n = ${ri(rng, 460, 660)}
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) rot = rot + dt * (${rr(rng, 0.05, 0.15)} + mid_att * 0.5)
hue = hue + dt * (0.07 + treb * 0.08) hue = hue + dt * ${hueSpeed}
flash = flash * 0.85
[beat] [beat]
flash = 1 flash = 1
@ -641,22 +697,405 @@ flash = 1
seg = floor(i * segs) seg = floor(i * segs)
si = frac(i * segs) si = frac(i * segs)
a0 = si * 6.28318 / segs + rot a0 = si * 6.28318 / segs + rot
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05 amp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2)) rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * ${lFreq} + time * 2))
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1) a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
lum = 0.35 + amp * 1.2 ${colorLines(palette, '0.3 + amp * 1.3', 'seg * 0.8')}
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19))
skip = if(above(si, 0.96), 1, 0) skip = if(above(si, 0.96), 1, 0)
`, `
}, return { style: 'kaleido', content }
]
return styles[seed % styles.length]
} }
function famLissajous({ rng, name, palette, hueSpeed }: FamilyCtx) {
const fa0 = ri(rng, 2, 6)
const fb0 = ri(rng, 2, 7)
const phase = rr(rng, 0.5, 3)
const content = `${scriptHeader(name, 'lines', rr(rng, 0.86, 0.93), rr(rng, 1.4, 2.4))}
[init]
n = ${ri(rng, 600, 950)}
[frame]
t = t + dt * ${rr(rng, 0.2, 0.6)}
hue = hue + dt * ${hueSpeed}
[point]
ph = i * 6.28318 * ${rr(rng, 1, 3)}
fa = ${fa0} + mid * 0.35
fb = ${fb0} + bass * 0.45
x = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect
y = sin(ph * fb + t * 1.3 + ${phase}) * (0.5 + treb * 0.35)
${colorLines(palette, '0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6', 'ph * 0.5')}
`
return { style: 'lissajous', content }
}
function famSpectrum({ rng, name, palette, hueSpeed }: FamilyCtx) {
const bars = ri(rng, 28, 64)
const inner = rr(rng, 0.1, 0.28)
const height = rr(rng, 0.5, 0.9)
const content = `${scriptHeader(name, pick(rng, ['lines', 'dots'] as const), rr(rng, 0.8, 0.9), rr(rng, 1.4, 2.6))}
[init]
bars = ${bars}
n = bars * ${ri(rng, 8, 14)}
[frame]
rot = rot + dt * (${rr(rng, 0.04, 0.12)} + mid * 0.3)
hue = hue + dt * ${hueSpeed}
[point]
bar = floor(i * bars)
bi = frac(i * bars)
lvl = getspec(bar / bars, 0, 0)
h = lvl * ${height}
a = bar * 6.28318 / bars + rot
rad = ${inner} + bi * h
x = sin(a) * rad / aspect
y = cos(a) * rad
${colorLines(palette, '0.25 + bi * 0.75', 'bar * 6.28318 / bars')}
skip = if(above(bi, 0.97), 1, 0)
`
return { style: 'spectrum bars', content }
}
function famMoire({ rng, name, palette, hueSpeed }: FamilyCtx) {
const f = (): string => rr(rng, 2, 7)
const content = `${scriptHeader(name, 'dots', rr(rng, 0.72, 0.84), rr(rng, 1.8, 2.8))}
[init]
n = ${ri(rng, 1100, 1600)}
[frame]
t = t + dt * ${rr(rng, 0.3, 0.8)}
hue = hue + dt * ${hueSpeed}
[point]
u = rand(i * 1.7) * 2 - 1
w = rand(i * 3.3 + 11) * 2 - 1
m = sin((u * ${f()} + w * ${f()} + t) * 3.14159) * sin((u * ${f()} - w * ${f()} - t * 0.7) * 3.14159)
x = u * ${rr(rng, 0.85, 1.0)} / aspect
y = w * ${rr(rng, 0.85, 1.0)}
lum = max(0, m) * (0.3 + bass * 0.9) + 0.06
${colorLines(palette, 'lum', `u * ${rr(rng, 2, 6)}`)}
size = 1 + abs(m) * ${rr(rng, 2, 4)}
`
return { style: 'moire', content }
}
function famFountain({ rng, name, palette, hueSpeed }: FamilyCtx) {
const jets = ri(rng, 2, 5)
const grav = rr(rng, 0.7, 1.4)
const spread = rr(rng, 0.5, 1.2)
const content = `${scriptHeader(name, 'dots', rr(rng, 0.74, 0.86), rr(rng, 1.8, 2.8))}
[init]
n = ${ri(rng, 750, 1200)}
[frame]
tt = tt + dt * (0.5 + bass_att * 1.1)
hue = hue + dt * ${hueSpeed}
burst = burst * 0.9
[beat]
burst = 1
[point]
jet = floor(i * ${jets})
life = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))
a = jet * 6.28318 / ${jets} + rand(i * 5.1 + jet) * ${spread}
spd = 0.4 + rand(i * 9.2 + jet) * 0.8
px = cos(a) * spd * life
py = sin(a) * spd * life - ${grav} * life * life
x = px * (0.85 + bass * 0.35) / aspect
y = py
${colorLines(palette, 'max(0, 1 - life) * (0.35 + burst * 0.55)', 'life * 4')}
skip = if(above(life, 0.94), 1, 0)
`
return { style: 'fountain', content }
}
function famRose({ rng, name, palette, hueSpeed }: FamilyCtx) {
const k = ri(rng, 2, 7)
const loops = ri(rng, 1, 2)
const content = `${scriptHeader(name, 'lines', rr(rng, 0.84, 0.92), rr(rng, 1.5, 2.6))}
[init]
n = ${ri(rng, 700, 1000)}
[frame]
t = t + dt * (${rr(rng, 0.1, 0.3)} + mid * 0.5)
hue = hue + dt * ${hueSpeed}
flash = flash * 0.87
[beat]
flash = 1
[point]
th = i * 6.28318 * ${loops} + t
r = abs(cos(${k} * th + bass * ${rr(rng, 0.3, 0.9)}))
rad = r * (0.5 + bass * 0.3 + sv * 0.2 + flash * 0.08)
x = sin(th) * rad / aspect
y = cos(th) * rad
${colorLines(palette, '0.25 + 0.65 * r + v * 0.25', 'th * 0.5')}
`
return { style: 'rose', content }
}
function famOrbits({ rng, name, palette, hueSpeed }: FamilyCtx) {
const rings = ri(rng, 3, 7)
const sats = ri(rng, 2, 5)
const squashBase = rr(rng, 0.3, 0.6)
const content = `${scriptHeader(name, 'dots', rr(rng, 0.78, 0.88), rr(rng, 1.8, 3))}
[init]
rings = ${rings}
n = rings * ${ri(rng, 70, 110)}
[frame]
t = t + dt * (${rr(rng, 0.15, 0.4)} + bass_att * 0.6)
hue = hue + dt * ${hueSpeed}
squash = ${squashBase} + 0.25 * sin(t * ${rr(rng, 0.2, 0.5)})
[point]
ring = floor(i * rings)
ri3 = frac(i * rings)
r0 = 0.16 + ring * ${rr(rng, 0.1, 0.16)}
a = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4
x = sin(a) * r0 * (1 + bass * 0.18) / aspect
y = cos(a) * r0 * squash
sat = frac(ri3 * ${sats})
size = if(below(sat, 0.14), 3 + bass * 3, 1)
${colorLines(palette, '0.25 + bass * 0.5 + ring * 0.07', 'ring * 1.3')}
`
return { style: 'orbits', content }
}
function famRibbon({ rng, name, palette, hueSpeed }: FamilyCtx) {
const loops = ri(rng, 1, 3)
const wFreq = ri(rng, 2, 6)
const content = `${scriptHeader(name, 'lines', rr(rng, 0.88, 0.94), rr(rng, 1.4, 2.4))}
[init]
n = ${ri(rng, 800, 1200)}
[frame]
t = t + dt * (${rr(rng, 0.3, 0.7)} + bass_att * 0.8)
sway = sway + dt * (0.5 + treb)
hue = hue + dt * ${hueSpeed}
[point]
a = i * 6.28318 * ${loops}
wob = sin(a * ${wFreq} + t * 2) * (0.08 + treb * 0.3)
rad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * ${rr(rng, 0.15, 0.45)} - wob
x = sin(a) * rad / aspect
y = cos(a) * rad
${colorLines(palette, '0.3 + abs(v) * 1.2', 'a * 0.5')}
`
return { style: 'ribbon', content }
}
function famWeb({ rng, name, palette, hueSpeed }: FamilyCtx) {
const spokes = ri(rng, 14, 32)
const wFreq = ri(rng, 2, 5)
const content = `${scriptHeader(name, pick(rng, ['lines', 'dots'] as const), rr(rng, 0.8, 0.9), rr(rng, 1.3, 2.2))}
[init]
spokes = ${spokes}
n = spokes * ${ri(rng, 22, 40)}
[frame]
rot = rot + dt * (${rr(rng, 0.06, 0.16)} + mid * 0.4)
t = t + dt * ${rr(rng, 1.5, 3)}
hue = hue + dt * ${hueSpeed}
[point]
sp = floor(i * spokes)
si = frac(i * spokes)
a = sp * 6.28318 / spokes + rot
wave = sin(si * ${wFreq} * 3.14159 - t) * (0.03 + bass * 0.28)
rad = 0.12 + si * ${rr(rng, 0.75, 0.95)} + wave
x = sin(a) * rad / aspect
y = cos(a) * rad
${colorLines(palette, '(1 - si) * 0.45 + 0.15 + sv * 0.55', 'sp * 0.4')}
skip = if(above(si, 0.985), 1, 0)
`
return { style: 'web', content }
}
function famRain({ rng, name, palette, hueSpeed }: FamilyCtx) {
const cols = ri(rng, 40, 70)
const content = `${scriptHeader(name, 'dots', rr(rng, 0.7, 0.82), rr(rng, 1.6, 2.6))}
[init]
cols = ${cols}
n = ${ri(rng, 900, 1400)}
[frame]
fall = fall + dt * (${rr(rng, 0.4, 0.9)} + vol_att * ${rr(rng, 0.8, 1.5)})
hue = hue + dt * ${hueSpeed}
[point]
col = floor(i * cols)
ci = frac(i * cols)
xx = (col / cols - 0.5) * 1.9
yf = frac(rand(col * 3.7 + 1) + fall * (0.55 + rand(col + 5) * 0.5))
tail = rand(col * 1.3 + 9) * ${rr(rng, 0.25, 0.5)} + 0.04
yy = (yf * 2 - 1) * 1.05 + ci * tail
x = xx / aspect
y = yy
${colorLines(palette, '(1 - ci) * (0.2 + treb * 0.85) + 0.04', 'col * 0.3')}
skip = if(above(abs(yy), 1.02), 1, 0)
`
return { style: 'rain', content }
}
function famHelix({ rng, name, palette, hueSpeed }: FamilyCtx) {
const turns = ri(rng, 2, 6)
const content = `${scriptHeader(name, 'lines', rr(rng, 0.84, 0.92), rr(rng, 1.4, 2.4))}
[init]
n = ${ri(rng, 900, 1300)}
[frame]
t = t + dt * (${rr(rng, 0.15, 0.45)} + bass_att * 0.9)
hue = hue + dt * ${hueSpeed}
flash = flash * 0.86
[beat]
flash = 1
[point]
st = floor(i * 2)
si = frac(i * 2)
s = si * ${turns} * 6.28318 + t
ph = st * 3.14159
rad = (0.28 + bass * 0.32 + flash * 0.06) * (0.55 + 0.45 * (cos(s + ph) * 0.5 + 0.5))
x = sin(s + ph) * rad / aspect
y = (si - 0.5) * 1.8
${colorLines(palette, '0.25 + 0.55 * (cos(s + ph) * 0.5 + 0.5) + treb * 0.25', 's * 0.3')}
`
return { style: 'helix', content }
}
const FAMILIES: Record<string, FamilyFn> = {
'pulse rings': famPulseRings,
tunnel: famTunnel,
starfield: famStarfield,
lattice: famLattice,
swirl: famSwirl,
kaleido: famKaleido,
lissajous: famLissajous,
'spectrum bars': famSpectrum,
moire: famMoire,
fountain: famFountain,
rose: famRose,
orbits: famOrbits,
ribbon: famRibbon,
web: famWeb,
rain: famRain,
helix: famHelix,
}
const FAMILY_NAMES = Object.keys(FAMILIES)
/**
* Component → family affinity. The family is picked among the families hinted
* by the original's unportable components (union of all matches), so the
* stand-in's vibe roughly matches the original while same-component presets
* still spread across different families via the name-seeded RNG.
*/
const COMPONENT_FAMILY_HINTS: Array<[RegExp, string[]]> = [
[/blitterfeedback|rotoblitter|buffersave/i, ['tunnel', 'kaleido', 'moire']],
[/dynamicmovement|movement|dynamicshift/i, ['swirl', 'ribbon', 'web', 'moire']],
[/colormap|uniquetone|colorfade|colorclip|fastbright|colormodifier/i, ['spectrum bars', 'moire', 'orbits', 'lissajous']],
[/starfield/i, ['starfield', 'rain', 'helix']],
[/movingparticle|dotfountain/i, ['fountain', 'rain', 'starfield']],
[/water|bump|mosaic/i, ['pulse rings', 'web', 'moire', 'lattice']],
[/dotgrid|grain|scatter/i, ['lattice', 'rain', 'starfield', 'moire']],
[/mirror/i, ['kaleido', 'lissajous', 'rose']],
[/ring|rotstar/i, ['pulse rings', 'orbits', 'rose', 'tunnel']],
[/interference/i, ['moire', 'lissajous']],
[/bassspin/i, ['orbits', 'rose', 'swirl']],
[/oscilloscope|simple|svp/i, ['ribbon', 'lissajous', 'spectrum bars']],
]
function chooseFamilies(components: string[]): string[] {
const hits: string[] = []
for (const [re, fams] of COMPONENT_FAMILY_HINTS) {
if (components.some((c) => re.test(c))) {
for (const f of fams) if (!hits.includes(f)) hits.push(f)
}
}
return hits.length ? hits : FAMILY_NAMES
}
/** Known-good template used if a generated family somehow fails the smoke test. */
function safeFallback(name: string): string {
return `name: ${JSON.stringify(name)}
mode: lines
blend: additive
persist: 0.86
linewidth: 2
[init]
n = 640
[frame]
hue = hue + dt * 0.06 + beat * 0.01
travel = travel + dt * (0.3 + bass_att * 1.4)
flash = flash * 0.86
[beat]
flash = 1
[point]
g = floor(i * 8)
gi = frac(i * 8)
ph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))
a = gi * 6.28318
rad = ph * (0.24 + bass * 0.6 + flash * 0.08)
x = sin(a) * rad / aspect
y = cos(a) * rad
fade = sin(ph * 3.14159)
red = fade * (0.45 + 0.55 * sin(hue * 6.28318 + g * 0.7))
green = fade * (0.45 + 0.55 * sin(hue * 6.28318 + g * 0.7 + 2.09))
blue = fade * (0.45 + 0.55 * sin(hue * 6.28318 + g * 0.7 + 4.19))
skip = if(above(ph, 0.96), 1, 0)
`
}
/**
* Build the stand-in for one preset. Every parameter is drawn from a PRNG
* seeded by the preset name — the same name always regenerates the same
* visual; different names (even in the same family) look clearly different.
*/
/** Families already used by a stand-in in this converter run (full-coverage rotation). */
const usedStyles = new Set<string>()
function fallbackTemplate(
seed: number,
name: string,
components: string[] = [],
): { content: string; style: string } {
const rng = mulberry32(seed)
// 1) guarantee every family gets used at least once across a run (first
// fallbacks cycle through the unused ones — deterministic, files sorted)
// 2) otherwise mostly honor the component hints (vibe matches the original)
// 3) ~25% wild card so the archetype mix keeps rotating in large libraries
const hinted = chooseFamilies(components)
const unused = FAMILY_NAMES.filter((f) => !usedStyles.has(f))
const pool = unused.length ? unused : rng() < 0.25 ? FAMILY_NAMES : hinted
const style = pick(rng, pool)
usedStyles.add(style)
const palette = pick(rng, PALETTE_NAMES)
const hueSpeed = rr(rng, 0.03, 0.14)
const out = FAMILIES[style]({ rng, name, palette, hueSpeed })
return { content: out.content, style: out.style }
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// smoke test — runs the generated script headlessly through the real engine env // smoke test — runs the generated script headlessly through the real engine env
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
@ -754,6 +1193,8 @@ interface OutputPreset {
description: string description: string
originalFile: string originalFile: string
content: string content: string
/** true = generated stand-in (original relies on unportable effects). */
approx?: boolean
} }
function convertOne(file: string, relDir: string, absPath: string): { preset: OutputPreset; status: 'ported' | 'fallback'; note: string } { function convertOne(file: string, relDir: string, absPath: string): { preset: OutputPreset; status: 'ported' | 'fallback'; note: string } {
@ -762,7 +1203,9 @@ function convertOne(file: string, relDir: string, absPath: string): { preset: Ou
const cands: Candidates = { scopes: [], eeltrans: [], gv: [], comment: null, otherKinds: new Set() } const cands: Candidates = { scopes: [], eeltrans: [], gv: [], comment: null, otherKinds: new Set() }
collect(effects, cands) collect(effects, cands)
const folder = 'root/embedded/' + relDir // relDir already carries the clean tree ("root/embedded/Amp Picks") when the
// input mirrors the drive layout — only prefix when it does not.
const folder = relDir.startsWith('root/') ? relDir : 'root/embedded/' + relDir
const originalFile = `/avs-originals/embedded/${relDir}/${file}` const originalFile = `/avs-originals/embedded/${relDir}/${file}`
const desc = (extra: string): string => { const desc = (extra: string): string => {
const by = author ? ` by ${author}` : '' const by = author ? ` by ${author}` : ''
@ -771,15 +1214,34 @@ function convertOne(file: string, relDir: string, absPath: string): { preset: Ou
} }
const makeFallback = (reason: string) => { const makeFallback = (reason: string) => {
const tpl = fallbackTemplate(hashStr(name), name) const tpl = fallbackTemplate(hashStr(name), name, Array.from(cands.otherKinds))
const smoke = smokeTest(tpl.content)
if (!smoke.ok) {
// should never happen — every family is smoke-tested code; still, never
// emit a broken script.
return { return {
preset: { preset: {
folder, folder,
name, name,
author, author,
description: desc(`The original's visuals are driven by ${reason}, which the AVA script engine does not support — this is a generated stand-in that keeps the beat & band reactivity.`), description: desc(`The original is driven by ${reason}, which the script engine cannot run — replaced with a generated stand-in (beat & band reactive).`),
originalFile,
content: safeFallback(name),
approx: true,
},
status: 'fallback' as const,
note: `${reason} → safe stand-in (family "${tpl.style}" failed smoke: ${smoke.error})`,
}
}
return {
preset: {
folder,
name,
author,
description: desc(`The original is driven by ${reason}, which the script engine cannot run — replaced with a generated "${tpl.style}"-style visual, uniquely parameterized for this preset (beat & band reactive).`),
originalFile, originalFile,
content: tpl.content, content: tpl.content,
approx: true,
}, },
status: 'fallback' as const, status: 'fallback' as const,
note: `${reason} → ${tpl.style} stand-in`, note: `${reason} → ${tpl.style} stand-in`,
@ -913,6 +1375,11 @@ ${[point.trim(), colorPoint].filter(Boolean).join('\n')}
if (!smoke.ok) { if (!smoke.ok) {
return makeFallback(`unportable scope code (${smoke.error})`) return makeFallback(`unportable scope code (${smoke.error})`)
} }
// a "ported" scope that renders a handful of points is not the real visual
// (the meat is in movements/APEs) — those presets get stand-ins too.
if (smoke.n < 16) {
return makeFallback(`a trivial scope (n=${smoke.n}; the real work is movement/APE driven)`)
}
const perf = smoke.ms > 900 ? ' (heavy script — point count clamped)' : '' const perf = smoke.ms > 900 ? ' (heavy script — point count clamped)' : ''
if (smoke.ms > 900) { if (smoke.ms > 900) {
// clamp n for heavy scripts so the browser keeps 60fps // clamp n for heavy scripts so the browser keeps 60fps
@ -920,14 +1387,14 @@ ${[point.trim(), colorPoint].filter(Boolean).join('\n')}
const recheck = smokeTest(patched) const recheck = smokeTest(patched)
if (recheck.ok) { if (recheck.ok) {
return { return {
preset: { folder, name, author, description: desc(`Original ${scope.kind} code, machine-translated to the AVA script dialect.${perf}`), originalFile, content: patched }, preset: { folder, name, author, description: desc(`Original ${scope.kind} code, machine-translated to the AVA script dialect.${perf}`), originalFile, content: patched, approx: false },
status: 'ported', status: 'ported',
note: `ok (n clamped, ${smoke.ms}ms → ${recheck.ms}ms)`, note: `ok (n clamped, ${smoke.ms}ms → ${recheck.ms}ms)`,
} }
} }
} }
return { return {
preset: { folder, name, author, description: desc(`Original ${scope.kind} code, machine-translated to the AVA script dialect.`), originalFile, content }, preset: { folder, name, author, description: desc(`Original ${scope.kind} code, machine-translated to the AVA script dialect.`), originalFile, content, approx: false },
status: 'ported', status: 'ported',
note: `ok (${smoke.ms}ms, n=${smoke.n})`, note: `ok (${smoke.ms}ms, n=${smoke.n})`,
} }
@ -940,6 +1407,8 @@ ${[point.trim(), colorPoint].filter(Boolean).join('\n')}
const inputRoot = process.argv[2] ?? '/tmp/avsdrive/raw' const inputRoot = process.argv[2] ?? '/tmp/avsdrive/raw'
const outDir = 'tools/converted' const outDir = 'tools/converted'
const originalsDir = 'public/avs-originals/embedded' const originalsDir = 'public/avs-originals/embedded'
/** Bump when regenerating — written into embedded-presets.ts for the seed check. */
const SEED_VERSION = '6.1'
const SKIP_FOLDERS = new Set(['Synth-C']) // hand-adapted versions ship in BUILTIN_PRESETS const SKIP_FOLDERS = new Set(['Synth-C']) // hand-adapted versions ship in BUILTIN_PRESETS
@ -986,10 +1455,10 @@ for (const abs of files) {
const destAva = join(outDir, relDir, file.replace(/\.avs$/i, '.ava')) const destAva = join(outDir, relDir, file.replace(/\.avs$/i, '.ava'))
mkdirSync(dirname(destAva), { recursive: true }) mkdirSync(dirname(destAva), { recursive: true })
writeFileSync(destAva, r.preset.content) writeFileSync(destAva, r.preset.content)
// copy the original binary // copy the original binary (skip when re-running in-place — src IS the dest)
const destOrig = join(originalsDir, relDir, file) const destOrig = join(originalsDir, relDir, file)
mkdirSync(dirname(destOrig), { recursive: true }) mkdirSync(dirname(destOrig), { recursive: true })
copyFileSync(abs, destOrig) if (resolve(abs) !== resolve(destOrig)) copyFileSync(abs, destOrig)
} catch (err) { } catch (err) {
report.push({ file: rel, status: 'error', note: String(err) }) report.push({ file: rel, status: 'error', note: String(err) })
fallback++ fallback++
@ -1009,9 +1478,14 @@ const tsHeader = `// AVA — embedded preset library (AUTO-GENERATED by tools/co
// //
// ${results.length} Winamp AVS presets from the user's Google Drive collection, // ${results.length} Winamp AVS presets from the user's Google Drive collection,
// auto-ported to the AVA script dialect by the converter. Ported presets run // auto-ported to the AVA script dialect by the converter. Ported presets run
// the original SuperScope / Texer II code (machine-translated); stand-in // the original SuperScope / Texer II code (machine-translated); approx
// presets are generated visuals for originals that rely on effects the script // presets are UNIQUE generated stand-ins (16 families × seeded parameters)
// engine does not support (movements, APEs). // for originals that rely on effects the script engine cannot run.
//
// EMBEDDED_SEED_VERSION: bump whenever this library is regenerated — the
// GET /api/presets route re-seeds the root/embedded subtree when it changes.
export const EMBEDDED_SEED_VERSION = '${SEED_VERSION}'
export interface EmbeddedPreset { export interface EmbeddedPreset {
folder: string folder: string
@ -1020,13 +1494,15 @@ export interface EmbeddedPreset {
description: string description: string
originalFile?: string originalFile?: string
content: string content: string
/** true = generated stand-in (original relies on unportable effects). */
approx?: boolean
} }
` `
const lines: string[] = [] const lines: string[] = []
for (const p of results) { for (const p of results) {
lines.push(` {\n folder: ${JSON.stringify(p.folder)},\n name: ${JSON.stringify(p.name)},\n author: ${JSON.stringify(p.author)},\n description: ${JSON.stringify(p.description)},\n originalFile: ${JSON.stringify(p.originalFile)},\n content: ${JSON.stringify(p.content)},\n },`) lines.push(` {\n folder: ${JSON.stringify(p.folder)},\n name: ${JSON.stringify(p.name)},\n author: ${JSON.stringify(p.author)},\n description: ${JSON.stringify(p.description)},\n originalFile: ${JSON.stringify(p.originalFile)},\n approx: ${p.approx === true},\n content: ${JSON.stringify(p.content)},\n },`)
} }
const ts = tsHeader + `export const EMBEDDED_LIBRARY: EmbeddedPreset[] = [\n${lines.join('\n')}\n]\n` const ts = tsHeader + `export const EMBEDDED_LIBRARY: EmbeddedPreset[] = [\n${lines.join('\n')}\n]\n`
writeFileSync('src/lib/ava/embedded-presets.ts', ts) writeFileSync('src/lib/ava/embedded-presets.ts', ts)

View file

@ -2,97 +2,87 @@
{ {
"file": "root/embedded/Amp Picks/D&L - Life Is Violated.avs", "file": "root/embedded/Amp Picks/D&L - Life Is Violated.avs",
"status": "ported", "status": "ported",
"note": "ok (25ms, n=512)" "note": "ok (21ms, n=512)"
}, },
{ {
"file": "root/embedded/Amp Picks/Degnic - Retrowall (Yathosho's Supermicrocosm).avs", "file": "root/embedded/Amp Picks/Degnic - Retrowall (Yathosho's Supermicrocosm).avs",
"status": "fallback", "status": "fallback",
"note": "DynamicMovement, Movement, Invert → swirl stand-in" "note": "DynamicMovement, Movement, Invert → orbits stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Degnic-Adrealine rush.avs", "file": "root/embedded/Amp Picks/Degnic-Adrealine rush.avs",
"status": "fallback", "status": "fallback",
"note": "en03: Convolution Filter, Simple, Color Map → starfield stand-in" "note": "en03: Convolution Filter, Simple, Color Map → moire stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Duo - Alien Heart.avs", "file": "root/embedded/Amp Picks/Duo - Alien Heart.avs",
"status": "fallback", "status": "fallback",
"note": "Fadeout, ClearScreen, MovingParticle → pulse rings stand-in" "note": "Fadeout, ClearScreen, MovingParticle → tunnel stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Duo - Brainstorm.avs", "file": "root/embedded/Amp Picks/Duo - Brainstorm.avs",
"status": "fallback", "status": "fallback",
"note": "Invert, UniqueTone, Brightness → swirl stand-in" "note": "Invert, UniqueTone, Brightness → kaleido stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/EL-VIS - Molecules (S_KuPeRS Remix).avs", "file": "root/embedded/Amp Picks/EL-VIS - Molecules (S_KuPeRS Remix).avs",
"status": "fallback", "status": "fallback",
"note": "DynamicMovement, Color Map, Invert → starfield stand-in" "note": "DynamicMovement, Color Map, Invert → swirl stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/L1quid - Take the Veil.avs", "file": "root/embedded/Amp Picks/L1quid - Take the Veil.avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 15: Unexpected character '$') → lattice stand-in" "note": "unportable scope code (frame line 15: Unexpected character '$') → lissajous stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Nic01 - Rototronik.avs", "file": "root/embedded/Amp Picks/Nic01 - Rototronik.avs",
"status": "ported", "status": "ported",
"note": "ok (54ms, n=512)" "note": "ok (45ms, n=512)"
}, },
{ {
"file": "root/embedded/Amp Picks/S_KuPeRS - ...hidden track....avs", "file": "root/embedded/Amp Picks/S_KuPeRS - ...hidden track....avs",
"status": "fallback", "status": "fallback",
"note": "DynamicMovement, Color Map → starfield stand-in" "note": "DynamicMovement, Color Map → pulse rings stand-in"
},
{
"file": "root/embedded/Amp Picks/S_KuPeRS - A Tribute To Degnic.avs",
"status": "error",
"note": "Error: out of bytes"
}, },
{ {
"file": "root/embedded/Amp Picks/S_KuPeRS - Arctic Rainbow.avs", "file": "root/embedded/Amp Picks/S_KuPeRS - Arctic Rainbow.avs",
"status": "fallback", "status": "fallback",
"note": "BlitterFeedback, DynamicMovement, Movement → lattice stand-in" "note": "BlitterFeedback, DynamicMovement, Movement → rain stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/S_KuPeRS - Chinook.avs", "file": "root/embedded/Amp Picks/S_KuPeRS - Chinook.avs",
"status": "fallback", "status": "fallback",
"note": "ColorClip, ClearScreen, DynamicMovement → pulse rings stand-in" "note": "ColorClip, ClearScreen, DynamicMovement → spectrum bars stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/S_KuPeRS - Hexual Healing.avs", "file": "root/embedded/Amp Picks/S_KuPeRS - Hexual Healing.avs",
"status": "fallback", "status": "fallback",
"note": "Color Map → starfield stand-in" "note": "Color Map → lattice stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/S_KuPeRS - Inverse Kinetics.avs", "file": "root/embedded/Amp Picks/S_KuPeRS - Inverse Kinetics.avs",
"status": "fallback", "status": "fallback",
"note": "effect#2176, DynamicMovement → kaleido stand-in" "note": "effect#2176, DynamicMovement → fountain stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/S_KuPeRS - Kingish.avs", "file": "root/embedded/Amp Picks/S_KuPeRS - Kingish.avs",
"status": "fallback", "status": "fallback",
"note": "BlitterFeedback → starfield stand-in" "note": "BlitterFeedback → web stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/S_KuPeRS - Spirit Realm (Degnic's Plasmoid RMX).avs", "file": "root/embedded/Amp Picks/S_KuPeRS - Spirit Realm (Degnic's Plasmoid RMX).avs",
"status": "fallback", "status": "fallback",
"note": "BlitterFeedback, \u0005, DotPlane → swirl stand-in" "note": "BlitterFeedback, \u0005, DotPlane → ribbon stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/S_KuPeRS - Texering 002.avs", "file": "root/embedded/Amp Picks/S_KuPeRS - Texering 002.avs",
"status": "ported", "status": "ported",
"note": "ok (45ms, n=100)" "note": "ok (10ms, n=100)"
}, },
{ {
"file": "root/embedded/Amp Picks/S_KuPeRS - Upward Current.avs", "file": "root/embedded/Amp Picks/S_KuPeRS - Upward Current.avs",
"status": "fallback", "status": "fallback",
"note": "CustomBPM, DynamicMovement, Water → tunnel stand-in" "note": "CustomBPM, DynamicMovement, Water → rose stand-in"
},
{
"file": "root/embedded/Amp Picks/S_KuPeRS - female demands.avs",
"status": "error",
"note": "Error: out of bytes"
}, },
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Aqua-fumes.avs", "file": "root/embedded/Amp Picks/Tuggummi - Aqua-fumes.avs",
@ -102,82 +92,72 @@
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Club Seizure (color enhanced mix).avs", "file": "root/embedded/Amp Picks/Tuggummi - Club Seizure (color enhanced mix).avs",
"status": "fallback", "status": "fallback",
"note": "Movement, DynamicMovement, Multiplier → swirl stand-in" "note": "Movement, DynamicMovement, Multiplier → helix stand-in"
},
{
"file": "root/embedded/Amp Picks/Tuggummi - Different Load.avs",
"status": "error",
"note": "Error: out of bytes"
}, },
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Electro blobs.avs", "file": "root/embedded/Amp Picks/Tuggummi - Electro blobs.avs",
"status": "fallback", "status": "fallback",
"note": "MovingParticle, Color Map, BlitterFeedback → lattice stand-in" "note": "MovingParticle, Color Map, BlitterFeedback → kaleido stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Kaleidofied.avs", "file": "root/embedded/Amp Picks/Tuggummi - Kaleidofied.avs",
"status": "fallback", "status": "fallback",
"note": "Invert, Movement, Bump → pulse rings stand-in" "note": "Invert, Movement, Bump → ribbon stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Magma Flow II.avs", "file": "root/embedded/Amp Picks/Tuggummi - Magma Flow II.avs",
"status": "fallback", "status": "fallback",
"note": "Color Map, BufferSave, ClearScreen → swirl stand-in" "note": "Color Map, BufferSave, ClearScreen → orbits stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Multiple Orgasms.avs", "file": "root/embedded/Amp Picks/Tuggummi - Multiple Orgasms.avs",
"status": "fallback", "status": "fallback",
"note": "Movement, Color Map, BufferSave → kaleido stand-in" "note": "Movement, Color Map, BufferSave → web stand-in"
},
{
"file": "root/embedded/Amp Picks/Tuggummi - Odour Control.avs",
"status": "error",
"note": "Error: out of bytes"
}, },
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Pina Colada.avs", "file": "root/embedded/Amp Picks/Tuggummi - Pina Colada.avs",
"status": "fallback", "status": "fallback",
"note": "Color Map → kaleido stand-in" "note": "Color Map → swirl stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Scope in Spotlight II.avs", "file": "root/embedded/Amp Picks/Tuggummi - Scope in Spotlight II.avs",
"status": "fallback", "status": "fallback",
"note": "effect#117, Color Map, Invert → pulse rings stand-in" "note": "effect#117, Color Map, Invert → kaleido stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Solero Shots.avs", "file": "root/embedded/Amp Picks/Tuggummi - Solero Shots.avs",
"status": "fallback", "status": "fallback",
"note": "effect#28, FastBright, Movement → starfield stand-in" "note": "effect#28, FastBright, Movement → spectrum bars stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Square Minded.avs", "file": "root/embedded/Amp Picks/Tuggummi - Square Minded.avs",
"status": "fallback", "status": "fallback",
"note": "FastBright → kaleido stand-in" "note": "FastBright → moire stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/Tuggummi - Worm-O-Rama (Raz Remix).avs", "file": "root/embedded/Amp Picks/Tuggummi - Worm-O-Rama (Raz Remix).avs",
"status": "fallback", "status": "fallback",
"note": "MovingParticle, Filter, Simple → tunnel stand-in" "note": "MovingParticle, Filter, Simple → ribbon stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Zero-G Maze.avs", "file": "root/embedded/Amp Picks/UnConeD - Zero-G Maze.avs",
"status": "ported", "status": "ported",
"note": "ok (9ms, n=50)" "note": "ok (2ms, n=50)"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Cartoon Trip.avs", "file": "root/embedded/Amp Picks/UnConeD - Cartoon Trip.avs",
"status": "fallback", "status": "fallback",
"note": "DynamicMovement, FastBright, Color Reduction → starfield stand-in" "note": "DynamicMovement, FastBright, Color Reduction → spectrum bars stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Containment.avs", "file": "root/embedded/Amp Picks/UnConeD - Containment.avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (init line 12: Unexpected character '£') → lattice stand-in" "note": "unportable scope code (init line 12: Unexpected character '£') → ribbon stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Cubic Flower.avs", "file": "root/embedded/Amp Picks/UnConeD - Cubic Flower.avs",
"status": "ported", "status": "ported",
"note": "ok (8ms, n=40)" "note": "ok (6ms, n=40)"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Jello Cube.avs", "file": "root/embedded/Amp Picks/UnConeD - Jello Cube.avs",
@ -187,311 +167,286 @@
{ {
"file": "root/embedded/Amp Picks/UnConeD - Mercury.avs", "file": "root/embedded/Amp Picks/UnConeD - Mercury.avs",
"status": "fallback", "status": "fallback",
"note": "Blur, DynamicMovement, FastBright → pulse rings stand-in" "note": "Blur, DynamicMovement, FastBright → ribbon stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Neon Coaster.avs", "file": "root/embedded/Amp Picks/UnConeD - Neon Coaster.avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (beat line 18: Unexpected character '¤') → swirl stand-in" "note": "unportable scope code (beat line 18: Unexpected character '¤') → spectrum bars stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Plankton.avs", "file": "root/embedded/Amp Picks/UnConeD - Plankton.avs",
"status": "fallback", "status": "fallback",
"note": "DynamicMovement, FastBright → swirl stand-in" "note": "DynamicMovement, FastBright → pulse rings stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Reflectocube.avs", "file": "root/embedded/Amp Picks/UnConeD - Reflectocube.avs",
"status": "fallback", "status": "fallback",
"note": "Movement, DynamicMovement → starfield stand-in" "note": "Movement, DynamicMovement → swirl stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Speeder 3K.avs", "file": "root/embedded/Amp Picks/UnConeD - Speeder 3K.avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (init line 12: Unexpected character '¤') → tunnel stand-in" "note": "unportable scope code (init line 12: Unexpected character '¤') → starfield stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - TC Plasma.avs", "file": "root/embedded/Amp Picks/UnConeD - TC Plasma.avs",
"status": "fallback", "status": "fallback",
"note": "CustomBPM, DynamicMovement, FastBright → starfield stand-in" "note": "CustomBPM, DynamicMovement, FastBright → ribbon stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Tie Tunnel SSC.avs", "file": "root/embedded/Amp Picks/UnConeD - Tie Tunnel SSC.avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (init line 12: Unexpected character '¤') → pulse rings stand-in" "note": "unportable scope code (init line 12: Unexpected character '¤') → helix stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD - Zero-G Maze II.avs", "file": "root/embedded/Amp Picks/UnConeD - Zero-G Maze II.avs",
"status": "fallback", "status": "fallback",
"note": "DynamicMovement → pulse rings stand-in" "note": "DynamicMovement → swirl stand-in"
},
{
"file": "root/embedded/Amp Picks/UnConeD -Retrosquares.avs",
"status": "error",
"note": "Error: out of bytes"
}, },
{ {
"file": "root/embedded/Amp Picks/UnConeD -Zero-G Maze III.avs", "file": "root/embedded/Amp Picks/UnConeD -Zero-G Maze III.avs",
"status": "fallback", "status": "fallback",
"note": "BlitterFeedback, Movement, DynamicMovement → starfield stand-in" "note": "BlitterFeedback, Movement, DynamicMovement → tunnel stand-in"
},
{
"file": "root/embedded/Amp Picks/Yathosho - microcosm 02.avs",
"status": "error",
"note": "Error: out of bytes"
}, },
{ {
"file": "root/embedded/Amp Picks/amphirion - nebulous (skupers remix).avs", "file": "root/embedded/Amp Picks/amphirion - nebulous (skupers remix).avs",
"status": "fallback", "status": "fallback",
"note": "Water, UniqueTone, Interleave → kaleido stand-in" "note": "Water, UniqueTone, Interleave → lattice stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/el-vis - soundscape III (skupers remix).avs", "file": "root/embedded/Amp Picks/el-vis - soundscape III (skupers remix).avs",
"status": "fallback", "status": "fallback",
"note": "a trivial scope (the real work is movement/APE driven) → starfield stand-in" "note": "a trivial scope (the real work is movement/APE driven) → kaleido stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/fck - checkers with metaballs (skupers remix).avs", "file": "root/embedded/Amp Picks/fck - checkers with metaballs (skupers remix).avs",
"status": "ported", "status": "ported",
"note": "ok (59ms, n=500)" "note": "ok (16ms, n=500)"
}, },
{ {
"file": "root/embedded/Amp Picks/horse-fly - jinx (skupers remix).avs", "file": "root/embedded/Amp Picks/horse-fly - jinx (skupers remix).avs",
"status": "fallback", "status": "fallback",
"note": "ColorClip, Simple, Mosaic → tunnel stand-in" "note": "ColorClip, Simple, Mosaic → spectrum bars stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/jheriko - not quite a bendy tunnel (skupers remix).avs", "file": "root/embedded/Amp Picks/jheriko - not quite a bendy tunnel (skupers remix).avs",
"status": "fallback", "status": "fallback",
"note": "Interleave, DynamicMovement, effect#737 → pulse rings stand-in" "note": "Interleave, DynamicMovement, effect#737 → lissajous stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/justin - newpoop (for wa5).avs", "file": "root/embedded/Amp Picks/justin - newpoop (for wa5).avs",
"status": "fallback", "status": "fallback",
"note": "ColorModifier → swirl stand-in" "note": "ColorModifier → orbits stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/justin - the landscape is killing me (wa5remix).avs", "file": "root/embedded/Amp Picks/justin - the landscape is killing me (wa5remix).avs",
"status": "fallback", "status": "fallback",
"note": "DynamicDistanceModifier, ColorModifier → swirl stand-in" "note": "DynamicDistanceModifier, ColorModifier → rain stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Dragonscales.avs", "file": "root/embedded/Amp Picks/mig - Dragonscales.avs",
"status": "fallback", "status": "fallback",
"note": "CustomBPM, BufferSave, MovingParticle → lattice stand-in" "note": "CustomBPM, BufferSave, MovingParticle → lissajous stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Encapsulade.avs", "file": "root/embedded/Amp Picks/mig - Encapsulade.avs",
"status": "fallback", "status": "fallback",
"note": "BufferSave, SetRenderMode, CustomBPM → pulse rings stand-in" "note": "BufferSave, SetRenderMode, CustomBPM → spectrum bars stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Freekwyrms.avs", "file": "root/embedded/Amp Picks/mig - Freekwyrms.avs",
"status": "fallback", "status": "fallback",
"note": "BufferSave, SetRenderMode, MovingParticle → swirl stand-in" "note": "BufferSave, SetRenderMode, MovingParticle → spectrum bars stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Lilypod.avs", "file": "root/embedded/Amp Picks/mig - Lilypod.avs",
"status": "fallback", "status": "fallback",
"note": "BufferSave, MovingParticle, 2.8+ Effect List Config → pulse rings stand-in" "note": "BufferSave, MovingParticle, 2.8+ Effect List Config → fountain stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Mist Wisps.avs", "file": "root/embedded/Amp Picks/mig - Mist Wisps.avs",
"status": "fallback", "status": "fallback",
"note": "CustomBPM, BufferSave, MovingParticle → pulse rings stand-in" "note": "CustomBPM, BufferSave, MovingParticle → moire stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Nebulating - Hypercolorspace.avs", "file": "root/embedded/Amp Picks/mig - Nebulating - Hypercolorspace.avs",
"status": "fallback", "status": "fallback",
"note": "CustomBPM, BufferSave, Fadeout → swirl stand-in" "note": "CustomBPM, BufferSave, Fadeout → moire stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Reverb - Deep Net.avs", "file": "root/embedded/Amp Picks/mig - Reverb - Deep Net.avs",
"status": "fallback", "status": "fallback",
"note": "CustomBPM, BufferSave, Fadeout → kaleido stand-in" "note": "CustomBPM, BufferSave, Fadeout → lattice stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Slyde - Tri.avs", "file": "root/embedded/Amp Picks/mig - Slyde - Tri.avs",
"status": "fallback", "status": "fallback",
"note": "BufferSave, SetRenderMode, MovingParticle → swirl stand-in" "note": "BufferSave, SetRenderMode, MovingParticle → lissajous stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Solar Flaire.avs", "file": "root/embedded/Amp Picks/mig - Solar Flaire.avs",
"status": "fallback", "status": "fallback",
"note": "BufferSave, Fadeout, SetRenderMode → lattice stand-in" "note": "BufferSave, Fadeout, SetRenderMode → spectrum bars stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Spintronics - Backspin.avs", "file": "root/embedded/Amp Picks/mig - Spintronics - Backspin.avs",
"status": "fallback", "status": "fallback",
"note": "2.8+ Effect List Config, Simple, SetRenderMode → kaleido stand-in" "note": "2.8+ Effect List Config, Simple, SetRenderMode → fountain stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Starslappin.avs", "file": "root/embedded/Amp Picks/mig - Starslappin.avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 20: Expected ')' but found ';') → swirl stand-in" "note": "unportable scope code (frame line 20: Expected ')' but found ';') → kaleido stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Street Art - Fire Inside.avs", "file": "root/embedded/Amp Picks/mig - Street Art - Fire Inside.avs",
"status": "fallback", "status": "fallback",
"note": "BufferSave, Colorfade, Movement → swirl stand-in" "note": "BufferSave, Colorfade, Movement → fountain stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/mig - Swoo - Slow.avs", "file": "root/embedded/Amp Picks/mig - Swoo - Slow.avs",
"status": "fallback", "status": "fallback",
"note": "CustomBPM, BufferSave, Movement → kaleido stand-in" "note": "CustomBPM, BufferSave, Movement → ribbon stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/nixa - smell of music (skupers remix).avs", "file": "root/embedded/Amp Picks/nixa - smell of music (skupers remix).avs",
"status": "fallback", "status": "fallback",
"note": "Mirror, DynamicMovement, Movement → lattice stand-in" "note": "Mirror, DynamicMovement, Movement → web stand-in"
}, },
{ {
"file": "root/embedded/Amp Picks/p-k - bumpy.avs", "file": "root/embedded/Amp Picks/p-k - bumpy.avs",
"status": "fallback", "status": "fallback",
"note": "CustomBPM, Color Map → pulse rings stand-in" "note": "CustomBPM, Color Map → pulse rings stand-in"
}, },
{
"file": "root/embedded/Amp Picks/skupers - chinook (exclusive version).avs",
"status": "error",
"note": "Error: out of bytes"
},
{ {
"file": "root/embedded/Amp Picks/splendora.avs", "file": "root/embedded/Amp Picks/splendora.avs",
"status": "fallback", "status": "fallback",
"note": "Grain, Simple, Movement → lattice stand-in" "note": "Grain, Simple, Movement → swirl stand-in"
},
{
"file": "root/embedded/Amp Picks/yathosho - fabric (skupers remix).avs",
"status": "error",
"note": "Error: out of bytes"
}, },
{ {
"file": "root/embedded/Amp Picks/zxe-Urantia.avs", "file": "root/embedded/Amp Picks/zxe-Urantia.avs",
"status": "fallback", "status": "fallback",
"note": "effect#326, \u0001, UniqueTone → kaleido stand-in" "note": "effect#326, \u0001, UniqueTone → orbits stand-in"
}, },
{ {
"file": "root/embedded/Dynamics/01 dynamic duo - tentaclism (fake hboy rmx).avs", "file": "root/embedded/Dynamics/01 dynamic duo - tentaclism (fake hboy rmx).avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 20: Expected ')' but found ';') → swirl stand-in" "note": "unportable scope code (frame line 20: Expected ')' but found ';') → starfield stand-in"
}, },
{ {
"file": "root/embedded/Dynamics/02 dynamic duo - tentaclism (sky of contempt mix by drew).avs", "file": "root/embedded/Dynamics/02 dynamic duo - tentaclism (sky of contempt mix by drew).avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 20: Expected ')' but found ';') → tunnel stand-in" "note": "unportable scope code (frame line 20: Expected ')' but found ';') → orbits stand-in"
}, },
{ {
"file": "root/embedded/Dynamics/03 dynamic duo - tentaclism (microdee's grandpa was a tentaclist).avs", "file": "root/embedded/Dynamics/03 dynamic duo - tentaclism (microdee's grandpa was a tentaclist).avs",
"status": "ported", "status": "ported",
"note": "ok (16ms, n=40)" "note": "ok (4ms, n=40)"
}, },
{ {
"file": "root/embedded/Dynamics/04 dynamic duo - tentaclism (cathode ray mix by onionring of doom).avs", "file": "root/embedded/Dynamics/04 dynamic duo - tentaclism (cathode ray mix by onionring of doom).avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 19: Expected ')' but found ';') → swirl stand-in" "note": "unportable scope code (frame line 19: Expected ')' but found ';') → web stand-in"
}, },
{ {
"file": "root/embedded/Dynamics/05 dynamic duo - chromatics (glowy mix by meaningless-existance).avs", "file": "root/embedded/Dynamics/05 dynamic duo - chromatics (glowy mix by meaningless-existance).avs",
"status": "ported", "status": "fallback",
"note": "ok (2ms, n=4)" "note": "a trivial scope (n=4; the real work is movement/APE driven) → tunnel stand-in"
}, },
{ {
"file": "root/embedded/Dynamics/06 dynamic duo - tentaclism (midas remix).avs", "file": "root/embedded/Dynamics/06 dynamic duo - tentaclism (midas remix).avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 20: Expected ')' but found ';') → kaleido stand-in" "note": "unportable scope code (frame line 20: Expected ')' but found ';') → fountain stand-in"
}, },
{ {
"file": "root/embedded/Dynamics/07 dynamic duo - tentaclism (raz remix - ugly edit).avs", "file": "root/embedded/Dynamics/07 dynamic duo - tentaclism (raz remix - ugly edit).avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 20: Expected ')' but found ';') → swirl stand-in" "note": "unportable scope code (frame line 20: Expected ')' but found ';') → spectrum bars stand-in"
}, },
{ {
"file": "root/embedded/Dynamics/08 dynamic duo - tentaclism (the y.m.o. rework #1).avs", "file": "root/embedded/Dynamics/08 dynamic duo - tentaclism (the y.m.o. rework #1).avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 20: Expected ')' but found ';') → pulse rings stand-in" "note": "unportable scope code (frame line 20: Expected ')' but found ';') → web stand-in"
}, },
{ {
"file": "root/embedded/Dynamics/09 dynamic duo - tentaclism (kans of kansis mix by drew - edit).avs", "file": "root/embedded/Dynamics/09 dynamic duo - tentaclism (kans of kansis mix by drew - edit).avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 20: Expected ')' but found ';') → lattice stand-in" "note": "unportable scope code (frame line 20: Expected ')' but found ';') → moire stand-in"
}, },
{ {
"file": "root/embedded/Envision/01 amphirion - the pacifist (duo's underworld mix).avs", "file": "root/embedded/Envision/01 amphirion - the pacifist (duo's underworld mix).avs",
"status": "ported", "status": "fallback",
"note": "ok (32ms, n=4)" "note": "a trivial scope (n=4; the real work is movement/APE driven) → kaleido stand-in"
}, },
{ {
"file": "root/embedded/Envision/02 duo - biofeedback (hboy's organic mix).avs", "file": "root/embedded/Envision/02 duo - biofeedback (hboy's organic mix).avs",
"status": "ported", "status": "ported",
"note": "ok (4ms, n=50)" "note": "ok (2ms, n=50)"
},
{
"file": "root/embedded/Envision/03 zamuz - waterburn (duo's icy hot mix).avs",
"status": "error",
"note": "Error: out of bytes"
}, },
{ {
"file": "root/embedded/Envision/04 zamuz - roll-on mojo (duo remix).avs", "file": "root/embedded/Envision/04 zamuz - roll-on mojo (duo remix).avs",
"status": "fallback", "status": "fallback",
"note": "a trivial scope (the real work is movement/APE driven) → lattice stand-in" "note": "a trivial scope (the real work is movement/APE driven) → swirl stand-in"
}, },
{ {
"file": "root/embedded/Envision/05 duo - cafe de duo (vanish's wicked jungle massive remix).avs", "file": "root/embedded/Envision/05 duo - cafe de duo (vanish's wicked jungle massive remix).avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 19: Expected ')' but found ';') → starfield stand-in" "note": "unportable scope code (frame line 19: Expected ')' but found ';') → kaleido stand-in"
}, },
{ {
"file": "root/embedded/Envision/06 skupers - incantation (duo remix - edit).avs", "file": "root/embedded/Envision/06 skupers - incantation (duo remix - edit).avs",
"status": "ported", "status": "fallback",
"note": "ok (8ms, n=4)" "note": "a trivial scope (n=4; the real work is movement/APE driven) → kaleido stand-in"
}, },
{ {
"file": "root/embedded/Envision/07 duo - miraculous flow (nemo remix).avs", "file": "root/embedded/Envision/07 duo - miraculous flow (nemo remix).avs",
"status": "fallback", "status": "fallback",
"note": "UniqueTone, DynamicMovement, FastBright → swirl stand-in" "note": "UniqueTone, DynamicMovement, FastBright → ribbon stand-in"
}, },
{ {
"file": "root/embedded/Envision/08 duo - warm freeform (mykal remix).avs", "file": "root/embedded/Envision/08 duo - warm freeform (mykal remix).avs",
"status": "fallback", "status": "fallback",
"note": "a trivial scope (the real work is movement/APE driven) → starfield stand-in" "note": "a trivial scope (the real work is movement/APE driven) → web stand-in"
}, },
{ {
"file": "root/embedded/Envision/09 zxe - pleasure point (duo remix).avs", "file": "root/embedded/Envision/09 zxe - pleasure point (duo remix).avs",
"status": "fallback", "status": "fallback",
"note": "a trivial scope (the real work is movement/APE driven) → pulse rings stand-in" "note": "a trivial scope (the real work is movement/APE driven) → lissajous stand-in"
}, },
{ {
"file": "root/embedded/Envision/10 zamuz - heart dynamics (duo's high dose mix).avs", "file": "root/embedded/Envision/10 zamuz - heart dynamics (duo's high dose mix).avs",
"status": "fallback", "status": "fallback",
"note": "a trivial scope (the real work is movement/APE driven) → lattice stand-in" "note": "a trivial scope (the real work is movement/APE driven) → ribbon stand-in"
}, },
{ {
"file": "root/embedded/Envision/11 nemo - we build here (duo's building blocks remix).avs", "file": "root/embedded/Envision/11 nemo - we build here (duo's building blocks remix).avs",
"status": "fallback", "status": "fallback",
"note": "DynamicMovement, BufferSave, 2.8+ Effect List Config → lattice stand-in" "note": "DynamicMovement, BufferSave, 2.8+ Effect List Config → moire stand-in"
}, },
{ {
"file": "root/embedded/Envision/12 duo & vanish - wickedjunglesmassive (yathosho's cartographic re-rub).avs", "file": "root/embedded/Envision/12 duo & vanish - wickedjunglesmassive (yathosho's cartographic re-rub).avs",
"status": "fallback", "status": "fallback",
"note": "unportable scope code (frame line 19: Expected ')' but found ';') → pulse rings stand-in" "note": "unportable scope code (frame line 19: Expected ')' but found ';') → moire stand-in"
}, },
{ {
"file": "root/embedded/Envision/13 skupers - why i love you (duo's pulsedriver remix).avs", "file": "root/embedded/Envision/13 skupers - why i love you (duo's pulsedriver remix).avs",
"status": "ported", "status": "fallback",
"note": "ok (1ms, n=10)" "note": "a trivial scope (n=10; the real work is movement/APE driven) → kaleido stand-in"
}, },
{ {
"file": "root/embedded/Envision/14 duo - conjuring sands (skupers remix - edit).avs", "file": "root/embedded/Envision/14 duo - conjuring sands (skupers remix - edit).avs",
"status": "ported", "status": "fallback",
"note": "ok (4ms, n=15)" "note": "a trivial scope (n=15; the real work is movement/APE driven) → lissajous stand-in"
}, },
{ {
"file": "root/embedded/Envision/15 tuggummi - multiple overdose (duo remix).avs", "file": "root/embedded/Envision/15 tuggummi - multiple overdose (duo remix).avs",
"status": "ported", "status": "ported",
"note": "ok (49ms, n=400)" "note": "ok (28ms, n=400)"
}, },
{ {
"file": "root/embedded/Envision/16 duo - warm freeform (ya-tho-sho treatment).avs", "file": "root/embedded/Envision/16 duo - warm freeform (ya-tho-sho treatment).avs",
"status": "fallback", "status": "fallback",
"note": "a trivial scope (the real work is movement/APE driven) → swirl stand-in" "note": "a trivial scope (the real work is movement/APE driven) → pulse rings stand-in"
} }
] ]

View file

@ -1,25 +1,27 @@
name: "Retrowall (Yathosho's Supermicrocosm)" name: "Retrowall (Yathosho's Supermicrocosm)"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.843
linewidth: 1.6 linewidth: 2.178
[init] [init]
n = 1100 rings = 7
n = rings * 103
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) t = t + dt * (0.344 + bass_att * 0.6)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.112
squash = 0.315 + 0.25 * sin(t * 0.205)
[point] [point]
arm = floor(i * 5) ring = floor(i * rings)
fa = frac(i * 5) ri3 = frac(i * rings)
d = fa r0 = 0.16 + ring * 0.142
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t a = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) x = sin(a) * r0 * (1 + bass * 0.18) / aspect
x = sin(ang) * rad / aspect y = cos(a) * r0 * squash
y = cos(ang) * rad sat = frac(ri3 * 5)
red = (0.3 + 0.7 * d) * (0.3 + bass) size = if(below(sat, 0.14), 3 + bass * 3, 1)
green = (0.3 + 0.7 * d) * (0.25 + mid) red = 0.25 + bass * 0.5 + ring * 0.07 * (0.45 + 0.55 * sin(hue * 6.28318 + ring * 1.3))
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = 0.25 + bass * 0.5 + ring * 0.07 * (0.45 + 0.55 * sin(hue * 6.28318 + ring * 1.3 + 2.09))
skip = if(below(fa, 0.04), 1, 0) blue = 0.25 + bass * 0.5 + ring * 0.07 * (0.45 + 0.55 * sin(hue * 6.28318 + ring * 1.3 + 4.19))

View file

@ -1,25 +1,24 @@
name: "Adrealine rush" name: "Adrealine rush"
mode: dots mode: dots
blend: additive blend: additive
persist: 0.82 persist: 0.826
linewidth: 2.5 linewidth: 1.803
[init] [init]
n = 850 n = 1287
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) t = t + dt * 0.304
hue = hue + dt * 0.05 hue = hue + dt * 0.11
[point] [point]
a = rand(i * 7.3) * 6.28318 u = rand(i * 1.7) * 2 - 1
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) w = rand(i * 3.3 + 11) * 2 - 1
rad = z * z * 1.1 m = sin((u * 2.681 + w * 5.047 + t) * 3.14159) * sin((u * 6.682 - w * 2.465 - t * 0.7) * 3.14159)
x = sin(a) * rad / aspect x = u * 0.907 / aspect
y = cos(a) * rad y = w * 0.875
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) lum = max(0, m) * (0.3 + bass * 0.9) + 0.06
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) red = lum * 0.3
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) green = lum * 0.65
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) blue = min(1, lum * 1.3)
size = 1 + z * 3 * (0.5 + bass) size = 1 + abs(m) * 3.025
skip = if(above(z, 0.97), 1, 0)

View file

@ -1,29 +1,24 @@
name: "Alien Heart" name: "Alien Heart"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.897
linewidth: 2 linewidth: 1.95
[init] [init]
n = 720 n = 1015
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) t = t + dt * (0.377 + bass_att * 1.5)
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.038
[beat]
flash = 1
[point] [point]
g = floor(i * 9) ring = floor(i * 29)
gi = frac(i * 9) ri2 = frac(i * 29)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) z = frac(ring / 29 + t)
a = gi * 6.28318 rad = 0.05 + z * 0.917
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) a = ri2 * 6.28318 + ring * 0.423 + sin(t * 0.7) * 2
x = sin(a) * rad / aspect x = sin(a) * rad * (0.55 + sv * 0.656) / aspect
y = cos(a) * rad y = cos(a) * rad * (0.55 + sv * 0.656)
fade = sin(ph * 3.14159) red = (1 - z) * (0.3 + bass * 0.7) * abs(sin(z * 4.256))
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) green = (1 - z) * (0.3 + bass * 0.7) * 0.22
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) blue = (1 - z) * (0.3 + bass * 0.7) * abs(cos(z * 4.256))
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19))
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,25 +1,31 @@
name: "Brainstorm" name: "Brainstorm"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.859
linewidth: 1.6 linewidth: 2.309
[init] [init]
n = 1100 segs = 6
n = 584
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) rot = rot + dt * (0.093 + mid_att * 0.5)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.084
flash = flash * 0.85
[beat]
flash = 1
[point] [point]
arm = floor(i * 5) seg = floor(i * segs)
fa = frac(i * 5) si = frac(i * segs)
d = fa a0 = si * 6.28318 / segs + rot
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t amp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 9 + time * 2))
x = sin(ang) * rad / aspect a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
y = cos(ang) * rad x = sin(a) * rad / aspect
red = (0.3 + 0.7 * d) * (0.3 + bass) y = cos(a) * rad
green = (0.3 + 0.7 * d) * (0.25 + mid) red = 0.3 + amp * 1.3 * 0.85
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = 0.3 + amp * 1.3 * 0.92
skip = if(below(fa, 0.04), 1, 0) blue = 0.3 + amp * 1.3
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,25 +1,25 @@
name: "Molecules (S_KuPeRS Remix)" name: "Molecules (S_KuPeRS Remix)"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.82 persist: 0.88
linewidth: 2.5 linewidth: 1.388
[init] [init]
n = 850 n = 1119
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) t = t + dt * (0.211 + bass_att * 1.8)
hue = hue + dt * 0.05 hue = hue + dt * 0.042 + beat * 0.012
[point] [point]
a = rand(i * 7.3) * 6.28318 arm = floor(i * 3)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) fa = frac(i * 3)
rad = z * z * 1.1 d = fa
x = sin(a) * rad / aspect ang = arm * 1.551 + d * 1.047 * 3.14159 + t
y = cos(a) * rad rad = (0.04 + pow(d, 1.714) * 1.15) * (0.7 + bass * 0.5)
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) x = sin(ang) * rad / aspect
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) y = cos(ang) * rad
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) red = (0.3 + 0.7 * d) * (0.3 + mid) * abs(sin(d * 2.325))
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) green = (0.3 + 0.7 * d) * (0.3 + mid) * 0.22
size = 1 + z * 3 * (0.5 + bass) blue = (0.3 + 0.7 * d) * (0.3 + mid) * abs(cos(d * 2.325))
skip = if(above(z, 0.97), 1, 0) skip = if(below(fa, 0.04), 1, 0)

View file

@ -1,29 +1,22 @@
name: "Take the Veil" name: "Take the Veil"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.78 persist: 0.895
linewidth: 2.5 linewidth: 1.78
[init] [init]
cols = 36 n = 674
n = cols * cols
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) t = t + dt * 0.275
hue = hue + dt * (0.04 + treb * 0.1) hue = hue + dt * 0.052
[point] [point]
cx = floor(i * cols) / (cols - 1) ph = i * 6.28318 * 1.521
cy = frac(i * cols) fa = 3 + mid * 0.35
h = sv * 0.35 fb = 6 + bass * 0.45
ux = (cx - 0.5) * 1.6 x = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect
uy = (cy - 0.5) * 1.6 y = sin(ph * fb + t * 1.3 + 0.957) * (0.5 + treb * 0.35)
rx = ux * cos(rot) - uy * sin(rot) red = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + bass * 0.95)
ry = ux * sin(rot) + uy * cos(rot) green = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + mid * 0.95)
x = (rx / aspect) * (1 - h * 0.7) blue = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + treb * 0.95)
y = ry * (1 - h * 0.7)
lum = 0.25 + h * 2.2
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,25 +1,30 @@
name: "...hidden track..." name: "...hidden track..."
mode: dots mode: lines
blend: additive blend: additive
persist: 0.82 persist: 0.805
linewidth: 2.5 linewidth: 2.555
[init] [init]
n = 850 n = 205
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) hue = hue + dt * 0.045 + beat * 0.01
hue = hue + dt * 0.05 travel = travel + dt * (0.253 + bass_att * 1.4)
flash = flash * 0.86
[beat]
flash = 1
[point] [point]
a = rand(i * 7.3) * 6.28318 g = floor(i * 5)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) gi = frac(i * 5)
rad = z * z * 1.1 ph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))
a = gi * 6.28318
rad = ph * (0.232 + bass * 0.659 + flash * 0.08)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) fade = sin(ph * 3.14159)
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) red = min(1, fade * (0.35 + flash * 0.4) * 1.3)
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) green = fade * (0.35 + flash * 0.4) * 0.5
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) blue = fade * (0.35 + flash * 0.4) * 0.12
size = 1 + z * 3 * (0.5 + bass) skip = if(above(ph, 0.96), 1, 0)
skip = if(above(z, 0.97), 1, 0)

View file

@ -1,29 +1,27 @@
name: "Arctic Rainbow" name: "Arctic Rainbow"
mode: dots mode: dots
blend: additive blend: additive
persist: 0.78 persist: 0.789
linewidth: 2.5 linewidth: 1.877
[init] [init]
cols = 36 cols = 48
n = cols * cols n = 918
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) fall = fall + dt * (0.855 + vol_att * 1.119)
hue = hue + dt * (0.04 + treb * 0.1) hue = hue + dt * 0.034
[point] [point]
cx = floor(i * cols) / (cols - 1) col = floor(i * cols)
cy = frac(i * cols) ci = frac(i * cols)
h = sv * 0.35 xx = (col / cols - 0.5) * 1.9
ux = (cx - 0.5) * 1.6 yf = frac(rand(col * 3.7 + 1) + fall * (0.55 + rand(col + 5) * 0.5))
uy = (cy - 0.5) * 1.6 tail = rand(col * 1.3 + 9) * 0.297 + 0.04
rx = ux * cos(rot) - uy * sin(rot) yy = (yf * 2 - 1) * 1.05 + ci * tail
ry = ux * sin(rot) + uy * cos(rot) x = xx / aspect
x = (rx / aspect) * (1 - h * 0.7) y = yy
y = ry * (1 - h * 0.7) red = (1 - ci) * (0.2 + treb * 0.85) + 0.04 * 0.85
lum = 0.25 + h * 2.2 green = (1 - ci) * (0.2 + treb * 0.85) + 0.04 * 0.92
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3)) blue = (1 - ci) * (0.2 + treb * 0.85) + 0.04
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09)) skip = if(above(abs(yy), 1.02), 1, 0)
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,29 +1,27 @@
name: "Chinook" name: "Chinook"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.88 persist: 0.831
linewidth: 2 linewidth: 2.299
[init] [init]
n = 720 bars = 30
n = bars * 9
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) rot = rot + dt * (0.07 + mid * 0.3)
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.106
[beat]
flash = 1
[point] [point]
g = floor(i * 9) bar = floor(i * bars)
gi = frac(i * 9) bi = frac(i * bars)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) lvl = getspec(bar / bars, 0, 0)
a = gi * 6.28318 h = lvl * 0.893
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) a = bar * 6.28318 / bars + rot
rad = 0.142 + bi * h
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
fade = sin(ph * 3.14159) red = 0.25 + bi * 0.75 * 0.3
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) green = 0.25 + bi * 0.75 * 0.65
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) blue = min(1, 0.25 + bi * 0.75 * 1.3)
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19)) skip = if(above(bi, 0.97), 1, 0)
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,25 +1,28 @@
name: "Hexual Healing" name: "Hexual Healing"
mode: dots mode: dots
blend: additive blend: additive
persist: 0.82 persist: 0.785
linewidth: 2.5 linewidth: 2.432
[init] [init]
n = 850 cols = 34
n = cols * cols
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) rot = rot + dt * (0.072 + mid * 0.4)
hue = hue + dt * 0.05 hue = hue + dt * 0.062
[point] [point]
a = rand(i * 7.3) * 6.28318 cx = floor(i * cols) / (cols - 1)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) cy = frac(i * cols)
rad = z * z * 1.1 h = sv * 0.506
x = sin(a) * rad / aspect ux = (cx - 0.5) * 1.674
y = cos(a) * rad uy = (cy - 0.5) * 1.674
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) rx = ux * cos(rot) - uy * sin(rot)
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) ry = ux * sin(rot) + uy * cos(rot)
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) x = (rx / aspect) * (1 - h * 0.7)
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) y = ry * (1 - h * 0.7)
size = 1 + z * 3 * (0.5 + bass) red = min(1, 0.22 + h * 2.2 * 1.3)
skip = if(above(z, 0.97), 1, 0) green = 0.22 + h * 2.2 * 0.5
blue = 0.22 + h * 2.2 * 0.12
size = 1.2 + h * 5

View file

@ -1,31 +1,30 @@
name: "Inverse Kinetics" name: "Inverse Kinetics"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.86 persist: 0.805
linewidth: 1.8 linewidth: 2.613
[init] [init]
n = 560 n = 817
segs = 8
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) tt = tt + dt * (0.5 + bass_att * 1.1)
hue = hue + dt * (0.07 + treb * 0.08) hue = hue + dt * 0.103
burst = burst * 0.9
[beat] [beat]
flash = 1 burst = 1
[point] [point]
seg = floor(i * segs) jet = floor(i * 2)
si = frac(i * segs) life = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))
a0 = si * 6.28318 / segs + rot a = jet * 6.28318 / 2 + rand(i * 5.1 + jet) * 0.736
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05 spd = 0.4 + rand(i * 9.2 + jet) * 0.8
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2)) px = cos(a) * spd * life
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1) py = sin(a) * spd * life - 1.2 * life * life
x = sin(a) * rad / aspect x = px * (0.85 + bass * 0.35) / aspect
y = cos(a) * rad y = py
lum = 0.35 + amp * 1.2 red = max(0, 1 - life) * (0.35 + burst * 0.55) * abs(sin(life * 4))
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg)) green = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.22
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09)) blue = max(0, 1 - life) * (0.35 + burst * 0.55) * abs(cos(life * 4))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19)) skip = if(above(life, 0.94), 1, 0)
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,25 +1,27 @@
name: "Kingish" name: "Kingish"
mode: dots mode: dots
blend: additive blend: additive
persist: 0.82 persist: 0.813
linewidth: 2.5 linewidth: 2.025
[init] [init]
n = 850 spokes = 27
n = spokes * 22
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) rot = rot + dt * (0.102 + mid * 0.4)
hue = hue + dt * 0.05 t = t + dt * 2.987
hue = hue + dt * 0.075
[point] [point]
a = rand(i * 7.3) * 6.28318 sp = floor(i * spokes)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) si = frac(i * spokes)
rad = z * z * 1.1 a = sp * 6.28318 / spokes + rot
wave = sin(si * 2 * 3.14159 - t) * (0.03 + bass * 0.28)
rad = 0.12 + si * 0.92 + wave
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) red = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(sin(sp * 0.4))
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) green = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.22
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) blue = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(cos(sp * 0.4))
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) skip = if(above(si, 0.985), 1, 0)
size = 1 + z * 3 * (0.5 + bass)
skip = if(above(z, 0.97), 1, 0)

View file

@ -1,25 +1,23 @@
name: "Spirit Realm (Degnic's Plasmoid RMX)" name: "Spirit Realm (Degnic's Plasmoid RMX)"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.885
linewidth: 1.6 linewidth: 2.389
[init] [init]
n = 1100 n = 1199
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) t = t + dt * (0.344 + bass_att * 0.8)
hue = hue + dt * 0.08 + beat * 0.01 sway = sway + dt * (0.5 + treb)
hue = hue + dt * 0.085
[point] [point]
arm = floor(i * 5) a = i * 6.28318 * 2
fa = frac(i * 5) wob = sin(a * 3 + t * 2) * (0.08 + treb * 0.3)
d = fa rad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.422 - wob
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t x = sin(a) * rad / aspect
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) y = cos(a) * rad
x = sin(ang) * rad / aspect red = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5))
y = cos(ang) * rad green = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 2.09))
red = (0.3 + 0.7 * d) * (0.3 + bass) blue = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 4.19))
green = (0.3 + 0.7 * d) * (0.25 + mid)
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2)
skip = if(below(fa, 0.04), 1, 0)

View file

@ -1,25 +1,26 @@
name: "Upward Current" name: "Upward Current"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.914
linewidth: 1.6 linewidth: 1.629
[init] [init]
n = 900 n = 869
[frame] [frame]
t = t + dt * (0.25 + bass_att * 1.5) t = t + dt * (0.134 + mid * 0.5)
hue = hue + dt * 0.1 hue = hue + dt * 0.122
flash = flash * 0.87
[beat]
flash = 1
[point] [point]
ring = floor(i * 24) th = i * 6.28318 * 2 + t
ri = frac(i * 24) r = abs(cos(2 * th + bass * 0.656))
z = frac(ring / 24 + t) rad = r * (0.5 + bass * 0.3 + sv * 0.2 + flash * 0.08)
rad = 0.06 + z * 0.9 x = sin(th) * rad / aspect
a = ri * 6.28318 + ring * 0.35 + sin(t * 0.7) * 2 y = cos(th) * rad
x = sin(a) * rad * (0.55 + sv * 0.9) / aspect red = 0.25 + 0.65 * r + v * 0.25 * abs(sin(th * 0.5))
y = cos(a) * rad * (0.55 + sv * 0.9) green = 0.25 + 0.65 * r + v * 0.25 * 0.22
f = (1 - z) * (0.35 + bass * 0.65) blue = 0.25 + 0.65 * r + v * 0.25 * abs(cos(th * 0.5))
red = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4))
green = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 2.09))
blue = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 4.19))

View file

@ -1,25 +1,25 @@
name: "Aqua-fumes" name: "Aqua-fumes"
mode: dots mode: dots
blend: additive blend: additive
persist: 0.82 persist: 0.787
linewidth: 2.5 linewidth: 2.043
[init] [init]
n = 850 n = 966
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) travel = travel + dt * (0.347 + vol_att * 1.816)
hue = hue + dt * 0.05 hue = hue + dt * 0.076
[point] [point]
a = rand(i * 7.3) * 6.28318 a = rand(i * 7.3) * 6.28318
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7))
rad = z * z * 1.1 rad = z * z * 1.075
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb)
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) red = tw * abs(sin(i * 3.959))
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) green = tw * 0.22
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) blue = tw * abs(cos(i * 3.959))
size = 1 + z * 3 * (0.5 + bass) size = 1 + z * 3 * (0.5 + bass)
skip = if(above(z, 0.97), 1, 0) skip = if(above(z, 0.97), 1, 0)

View file

@ -1,25 +1,28 @@
name: "Club Seizure (color enhanced mix)" name: "Club Seizure (color enhanced mix)"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.864
linewidth: 1.6 linewidth: 2.379
[init] [init]
n = 1100 n = 946
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) t = t + dt * (0.322 + bass_att * 0.9)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.089
flash = flash * 0.86
[beat]
flash = 1
[point] [point]
arm = floor(i * 5) st = floor(i * 2)
fa = frac(i * 5) si = frac(i * 2)
d = fa s = si * 6 * 6.28318 + t
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t ph = st * 3.14159
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) rad = (0.28 + bass * 0.32 + flash * 0.06) * (0.55 + 0.45 * (cos(s + ph) * 0.5 + 0.5))
x = sin(ang) * rad / aspect x = sin(s + ph) * rad / aspect
y = cos(ang) * rad y = (si - 0.5) * 1.8
red = (0.3 + 0.7 * d) * (0.3 + bass) red = 0.25 + 0.55 * (cos(s + ph) * 0.5 + 0.5) + treb * 0.25 * (0.45 + 0.55 * sin(hue * 6.28318 + s * 0.3))
green = (0.3 + 0.7 * d) * (0.25 + mid) green = 0.25 + 0.55 * (cos(s + ph) * 0.5 + 0.5) + treb * 0.25 * (0.45 + 0.55 * sin(hue * 6.28318 + s * 0.3 + 2.09))
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) blue = 0.25 + 0.55 * (cos(s + ph) * 0.5 + 0.5) + treb * 0.25 * (0.45 + 0.55 * sin(hue * 6.28318 + s * 0.3 + 4.19))
skip = if(below(fa, 0.04), 1, 0)

View file

@ -1,29 +1,31 @@
name: "Electro blobs" name: "Electro blobs"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.78 persist: 0.866
linewidth: 2.5 linewidth: 1.536
[init] [init]
cols = 36 segs = 12
n = cols * cols n = 616
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) rot = rot + dt * (0.085 + mid_att * 0.5)
hue = hue + dt * (0.04 + treb * 0.1) hue = hue + dt * 0.131
flash = flash * 0.85
[beat]
flash = 1
[point] [point]
cx = floor(i * cols) / (cols - 1) seg = floor(i * segs)
cy = frac(i * cols) si = frac(i * segs)
h = sv * 0.35 a0 = si * 6.28318 / segs + rot
ux = (cx - 0.5) * 1.6 amp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06
uy = (cy - 0.5) * 1.6 rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 5 + time * 2))
rx = ux * cos(rot) - uy * sin(rot) a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
ry = ux * sin(rot) + uy * cos(rot) x = sin(a) * rad / aspect
x = (rx / aspect) * (1 - h * 0.7) y = cos(a) * rad
y = ry * (1 - h * 0.7) red = 0.3 + amp * 1.3 * 0.85
lum = 0.25 + h * 2.2 green = 0.3 + amp * 1.3 * 0.92
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3)) blue = 0.3 + amp * 1.3
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09)) skip = if(above(si, 0.96), 1, 0)
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,29 +1,23 @@
name: "Kaleidofied" name: "Kaleidofied"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.885
linewidth: 2 linewidth: 1.542
[init] [init]
n = 720 n = 1126
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) t = t + dt * (0.589 + bass_att * 0.8)
travel = travel + dt * (0.3 + bass_att * 1.4) sway = sway + dt * (0.5 + treb)
hue = hue + dt * 0.1
[beat]
flash = 1
[point] [point]
g = floor(i * 9) a = i * 6.28318 * 1
gi = frac(i * 9) wob = sin(a * 3 + t * 2) * (0.08 + treb * 0.3)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) rad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.232 - wob
a = gi * 6.28318
rad = ph * (0.25 + bass * 0.6 + flash * 0.08)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
fade = sin(ph * 3.14159) red = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5))
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) green = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 2.09))
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) blue = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 4.19))
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19))
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,25 +1,27 @@
name: "Magma Flow II" name: "Magma Flow II"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.804
linewidth: 1.6 linewidth: 2.633
[init] [init]
n = 1100 rings = 3
n = rings * 104
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) t = t + dt * (0.258 + bass_att * 0.6)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.036
squash = 0.387 + 0.25 * sin(t * 0.203)
[point] [point]
arm = floor(i * 5) ring = floor(i * rings)
fa = frac(i * 5) ri3 = frac(i * rings)
d = fa r0 = 0.16 + ring * 0.148
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t a = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) x = sin(a) * r0 * (1 + bass * 0.18) / aspect
x = sin(ang) * rad / aspect y = cos(a) * r0 * squash
y = cos(ang) * rad sat = frac(ri3 * 5)
red = (0.3 + 0.7 * d) * (0.3 + bass) size = if(below(sat, 0.14), 3 + bass * 3, 1)
green = (0.3 + 0.7 * d) * (0.25 + mid) red = 0.25 + bass * 0.5 + ring * 0.07 * abs(sin(ring * 1.3))
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = 0.25 + bass * 0.5 + ring * 0.07 * 0.22
skip = if(below(fa, 0.04), 1, 0) blue = 0.25 + bass * 0.5 + ring * 0.07 * abs(cos(ring * 1.3))

View file

@ -1,31 +1,27 @@
name: "Multiple Orgasms" name: "Multiple Orgasms"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.86 persist: 0.873
linewidth: 1.8 linewidth: 1.6
[init] [init]
n = 560 spokes = 30
segs = 8 n = spokes * 33
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) rot = rot + dt * (0.106 + mid * 0.4)
hue = hue + dt * (0.07 + treb * 0.08) t = t + dt * 2.164
hue = hue + dt * 0.106
[beat]
flash = 1
[point] [point]
seg = floor(i * segs) sp = floor(i * spokes)
si = frac(i * segs) si = frac(i * spokes)
a0 = si * 6.28318 / segs + rot a = sp * 6.28318 / spokes + rot
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05 wave = sin(si * 4 * 3.14159 - t) * (0.03 + bass * 0.28)
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2)) rad = 0.12 + si * 0.919 + wave
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
lum = 0.35 + amp * 1.2 red = (1 - si) * 0.45 + 0.15 + sv * 0.55 * (0.45 + 0.55 * sin(hue * 6.28318 + sp * 0.4))
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg)) green = (1 - si) * 0.45 + 0.15 + sv * 0.55 * (0.45 + 0.55 * sin(hue * 6.28318 + sp * 0.4 + 2.09))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09)) blue = (1 - si) * 0.45 + 0.15 + sv * 0.55 * (0.45 + 0.55 * sin(hue * 6.28318 + sp * 0.4 + 4.19))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19)) skip = if(above(si, 0.985), 1, 0)
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,31 +1,25 @@
name: "Pina Colada" name: "Pina Colada"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.86 persist: 0.887
linewidth: 1.8 linewidth: 1.779
[init] [init]
n = 560 n = 943
segs = 8
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) t = t + dt * (0.219 + bass_att * 1.8)
hue = hue + dt * (0.07 + treb * 0.08) hue = hue + dt * 0.098 + beat * 0.012
[beat]
flash = 1
[point] [point]
seg = floor(i * segs) arm = floor(i * 8)
si = frac(i * segs) fa = frac(i * 8)
a0 = si * 6.28318 / segs + rot d = fa
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05 ang = arm * 1.519 + d * 1.263 * 3.14159 + t
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2)) rad = (0.04 + pow(d, 2.354) * 1.15) * (0.7 + bass * 0.5)
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1) x = sin(ang) * rad / aspect
x = sin(a) * rad / aspect y = cos(ang) * rad
y = cos(a) * rad red = (0.3 + 0.7 * d) * (0.3 + mid) * (0.25 + bass * 0.95)
lum = 0.35 + amp * 1.2 green = (0.3 + 0.7 * d) * (0.3 + mid) * (0.25 + mid * 0.95)
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg)) blue = (0.3 + 0.7 * d) * (0.3 + mid) * (0.25 + treb * 0.95)
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09)) skip = if(below(fa, 0.04), 1, 0)
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19))
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,29 +1,31 @@
name: "Scope in Spotlight II" name: "Scope in Spotlight II"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.854
linewidth: 2 linewidth: 2.056
[init] [init]
n = 720 segs = 7
n = 462
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) rot = rot + dt * (0.107 + mid_att * 0.5)
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.035
flash = flash * 0.85
[beat] [beat]
flash = 1 flash = 1
[point] [point]
g = floor(i * 9) seg = floor(i * segs)
gi = frac(i * 9) si = frac(i * segs)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) a0 = si * 6.28318 / segs + rot
a = gi * 6.28318 amp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 4 + time * 2))
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
fade = sin(ph * 3.14159) red = min(1, 0.3 + amp * 1.3 * 1.3)
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) green = 0.3 + amp * 1.3 * 0.5
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) blue = 0.3 + amp * 1.3 * 0.12
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19)) skip = if(above(si, 0.96), 1, 0)
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,25 +1,27 @@
name: "Solero Shots" name: "Solero Shots"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.82 persist: 0.878
linewidth: 2.5 linewidth: 2.226
[init] [init]
n = 850 bars = 40
n = bars * 12
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) rot = rot + dt * (0.078 + mid * 0.3)
hue = hue + dt * 0.05 hue = hue + dt * 0.032
[point] [point]
a = rand(i * 7.3) * 6.28318 bar = floor(i * bars)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) bi = frac(i * bars)
rad = z * z * 1.1 lvl = getspec(bar / bars, 0, 0)
h = lvl * 0.813
a = bar * 6.28318 / bars + rot
rad = 0.218 + bi * h
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) red = 0.25 + bi * 0.75 * 0.3
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) green = 0.25 + bi * 0.75 * 0.65
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) blue = min(1, 0.25 + bi * 0.75 * 1.3)
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) skip = if(above(bi, 0.97), 1, 0)
size = 1 + z * 3 * (0.5 + bass)
skip = if(above(z, 0.97), 1, 0)

View file

@ -1,31 +1,24 @@
name: "Square Minded" name: "Square Minded"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.86 persist: 0.783
linewidth: 1.8 linewidth: 2.696
[init] [init]
n = 560 n = 1492
segs = 8
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) t = t + dt * 0.656
hue = hue + dt * (0.07 + treb * 0.08) hue = hue + dt * 0.13
[beat]
flash = 1
[point] [point]
seg = floor(i * segs) u = rand(i * 1.7) * 2 - 1
si = frac(i * segs) w = rand(i * 3.3 + 11) * 2 - 1
a0 = si * 6.28318 / segs + rot m = sin((u * 3.356 + w * 3.959 + t) * 3.14159) * sin((u * 3.01 - w * 6.626 - t * 0.7) * 3.14159)
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05 x = u * 0.994 / aspect
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2)) y = w * 0.856
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1) lum = max(0, m) * (0.3 + bass * 0.9) + 0.06
x = sin(a) * rad / aspect red = lum * 0.85
y = cos(a) * rad green = lum * 0.92
lum = 0.35 + amp * 1.2 blue = lum
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg)) size = 1 + abs(m) * 3.211
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19))
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,25 +1,23 @@
name: "Worm-O-Rama (Raz Remix)" name: "Worm-O-Rama (Raz Remix)"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.894
linewidth: 1.6 linewidth: 1.933
[init] [init]
n = 900 n = 1189
[frame] [frame]
t = t + dt * (0.25 + bass_att * 1.5) t = t + dt * (0.418 + bass_att * 0.8)
hue = hue + dt * 0.1 sway = sway + dt * (0.5 + treb)
hue = hue + dt * 0.102
[point] [point]
ring = floor(i * 24) a = i * 6.28318 * 3
ri = frac(i * 24) wob = sin(a * 3 + t * 2) * (0.08 + treb * 0.3)
z = frac(ring / 24 + t) rad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.282 - wob
rad = 0.06 + z * 0.9 x = sin(a) * rad / aspect
a = ri * 6.28318 + ring * 0.35 + sin(t * 0.7) * 2 y = cos(a) * rad
x = sin(a) * rad * (0.55 + sv * 0.9) / aspect red = 0.3 + abs(v) * 1.2 * (0.25 + bass * 0.95)
y = cos(a) * rad * (0.55 + sv * 0.9) green = 0.3 + abs(v) * 1.2 * (0.25 + mid * 0.95)
f = (1 - z) * (0.35 + bass * 0.65) blue = 0.3 + abs(v) * 1.2 * (0.25 + treb * 0.95)
red = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4))
green = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 2.09))
blue = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 4.19))

View file

@ -1,25 +1,27 @@
name: "Cartoon Trip" name: "Cartoon Trip"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.82 persist: 0.831
linewidth: 2.5 linewidth: 2.55
[init] [init]
n = 850 bars = 39
n = bars * 9
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) rot = rot + dt * (0.116 + mid * 0.3)
hue = hue + dt * 0.05 hue = hue + dt * 0.112
[point] [point]
a = rand(i * 7.3) * 6.28318 bar = floor(i * bars)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) bi = frac(i * bars)
rad = z * z * 1.1 lvl = getspec(bar / bars, 0, 0)
h = lvl * 0.83
a = bar * 6.28318 / bars + rot
rad = 0.189 + bi * h
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) red = 0.25 + bi * 0.75 * 0.85
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) green = 0.25 + bi * 0.75 * 0.92
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) blue = 0.25 + bi * 0.75
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) skip = if(above(bi, 0.97), 1, 0)
size = 1 + z * 3 * (0.5 + bass)
skip = if(above(z, 0.97), 1, 0)

View file

@ -1,29 +1,23 @@
name: "Containment" name: "Containment"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.78 persist: 0.935
linewidth: 2.5 linewidth: 1.8
[init] [init]
cols = 36 n = 847
n = cols * cols
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) t = t + dt * (0.436 + bass_att * 0.8)
hue = hue + dt * (0.04 + treb * 0.1) sway = sway + dt * (0.5 + treb)
hue = hue + dt * 0.071
[point] [point]
cx = floor(i * cols) / (cols - 1) a = i * 6.28318 * 2
cy = frac(i * cols) wob = sin(a * 2 + t * 2) * (0.08 + treb * 0.3)
h = sv * 0.35 rad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.25 - wob
ux = (cx - 0.5) * 1.6 x = sin(a) * rad / aspect
uy = (cy - 0.5) * 1.6 y = cos(a) * rad
rx = ux * cos(rot) - uy * sin(rot) red = min(1, 0.3 + abs(v) * 1.2 * 1.3)
ry = ux * sin(rot) + uy * cos(rot) green = 0.3 + abs(v) * 1.2 * 0.5
x = (rx / aspect) * (1 - h * 0.7) blue = 0.3 + abs(v) * 1.2 * 0.12
y = ry * (1 - h * 0.7)
lum = 0.25 + h * 2.2
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,29 +1,30 @@
name: "Jello Cube" name: "Jello Cube"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.813
linewidth: 2 linewidth: 2.201
[init] [init]
n = 720 n = 620
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) hue = hue + dt * 0.073 + beat * 0.01
travel = travel + dt * (0.3 + bass_att * 1.4) travel = travel + dt * (0.196 + bass_att * 1.4)
flash = flash * 0.86
[beat] [beat]
flash = 1 flash = 1
[point] [point]
g = floor(i * 9) g = floor(i * 10)
gi = frac(i * 9) gi = frac(i * 10)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) ph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))
a = gi * 6.28318 a = gi * 6.28318
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) rad = ph * (0.226 + bass * 0.743 + flash * 0.08)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
fade = sin(ph * 3.14159) fade = sin(ph * 3.14159)
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) red = fade * (0.35 + flash * 0.4) * abs(sin(g * 0.7))
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) green = fade * (0.35 + flash * 0.4) * 0.22
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19)) blue = fade * (0.35 + flash * 0.4) * abs(cos(g * 0.7))
skip = if(above(ph, 0.95), 1, 0) skip = if(above(ph, 0.96), 1, 0)

View file

@ -1,29 +1,23 @@
name: "Mercury" name: "Mercury"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.888
linewidth: 2 linewidth: 1.97
[init] [init]
n = 720 n = 1109
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) t = t + dt * (0.329 + bass_att * 0.8)
travel = travel + dt * (0.3 + bass_att * 1.4) sway = sway + dt * (0.5 + treb)
hue = hue + dt * 0.097
[beat]
flash = 1
[point] [point]
g = floor(i * 9) a = i * 6.28318 * 3
gi = frac(i * 9) wob = sin(a * 6 + t * 2) * (0.08 + treb * 0.3)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) rad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.31 - wob
a = gi * 6.28318
rad = ph * (0.25 + bass * 0.6 + flash * 0.08)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
fade = sin(ph * 3.14159) red = 0.3 + abs(v) * 1.2 * 0.3
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) green = 0.3 + abs(v) * 1.2 * 0.65
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) blue = min(1, 0.3 + abs(v) * 1.2 * 1.3)
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19))
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,25 +1,27 @@
name: "Neon Coaster" name: "Neon Coaster"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.897
linewidth: 1.6 linewidth: 2.488
[init] [init]
n = 1100 bars = 33
n = bars * 12
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) rot = rot + dt * (0.092 + mid * 0.3)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.066
[point] [point]
arm = floor(i * 5) bar = floor(i * bars)
fa = frac(i * 5) bi = frac(i * bars)
d = fa lvl = getspec(bar / bars, 0, 0)
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t h = lvl * 0.765
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) a = bar * 6.28318 / bars + rot
x = sin(ang) * rad / aspect rad = 0.193 + bi * h
y = cos(ang) * rad x = sin(a) * rad / aspect
red = (0.3 + 0.7 * d) * (0.3 + bass) y = cos(a) * rad
green = (0.3 + 0.7 * d) * (0.25 + mid) red = min(1, 0.25 + bi * 0.75 * 1.3)
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = 0.25 + bi * 0.75 * 0.5
skip = if(below(fa, 0.04), 1, 0) blue = 0.25 + bi * 0.75 * 0.12
skip = if(above(bi, 0.97), 1, 0)

View file

@ -1,25 +1,30 @@
name: "Plankton" name: "Plankton"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.83
linewidth: 1.6 linewidth: 2.37
[init] [init]
n = 1100 n = 627
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) hue = hue + dt * 0.033 + beat * 0.01
hue = hue + dt * 0.08 + beat * 0.01 travel = travel + dt * (0.435 + bass_att * 1.4)
flash = flash * 0.86
[beat]
flash = 1
[point] [point]
arm = floor(i * 5) g = floor(i * 11)
fa = frac(i * 5) gi = frac(i * 11)
d = fa ph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t a = gi * 6.28318
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) rad = ph * (0.194 + bass * 0.352 + flash * 0.08)
x = sin(ang) * rad / aspect x = sin(a) * rad / aspect
y = cos(ang) * rad y = cos(a) * rad
red = (0.3 + 0.7 * d) * (0.3 + bass) fade = sin(ph * 3.14159)
green = (0.3 + 0.7 * d) * (0.25 + mid) red = min(1, fade * (0.35 + flash * 0.4) * 1.3)
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = fade * (0.35 + flash * 0.4) * 0.5
skip = if(below(fa, 0.04), 1, 0) blue = fade * (0.35 + flash * 0.4) * 0.12
skip = if(above(ph, 0.96), 1, 0)

View file

@ -1,25 +1,25 @@
name: "Reflectocube" name: "Reflectocube"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.82 persist: 0.91
linewidth: 2.5 linewidth: 1.419
[init] [init]
n = 850 n = 1235
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) t = t + dt * (0.31 + bass_att * 1.8)
hue = hue + dt * 0.05 hue = hue + dt * 0.065 + beat * 0.012
[point] [point]
a = rand(i * 7.3) * 6.28318 arm = floor(i * 4)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) fa = frac(i * 4)
rad = z * z * 1.1 d = fa
x = sin(a) * rad / aspect ang = arm * 1.405 + d * 0.906 * 3.14159 + t
y = cos(a) * rad rad = (0.04 + pow(d, 1.825) * 1.15) * (0.7 + bass * 0.5)
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) x = sin(ang) * rad / aspect
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) y = cos(ang) * rad
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) red = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 4.537))
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) green = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 4.537 + 2.09))
size = 1 + z * 3 * (0.5 + bass) blue = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 4.537 + 4.19))
skip = if(above(z, 0.97), 1, 0) skip = if(below(fa, 0.04), 1, 0)

View file

@ -1,25 +1,25 @@
name: "Speeder 3K" name: "Speeder 3K"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.831
linewidth: 1.6 linewidth: 2.272
[init] [init]
n = 900 n = 949
[frame] [frame]
t = t + dt * (0.25 + bass_att * 1.5) travel = travel + dt * (0.156 + vol_att * 1.231)
hue = hue + dt * 0.1 hue = hue + dt * 0.04
[point] [point]
ring = floor(i * 24) a = rand(i * 7.3) * 6.28318
ri = frac(i * 24) z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7))
z = frac(ring / 24 + t) rad = z * z * 1.206
rad = 0.06 + z * 0.9 x = sin(a) * rad / aspect
a = ri * 6.28318 + ring * 0.35 + sin(t * 0.7) * 2 y = cos(a) * rad
x = sin(a) * rad * (0.55 + sv * 0.9) / aspect tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb)
y = cos(a) * rad * (0.55 + sv * 0.9) red = min(1, tw * 1.3)
f = (1 - z) * (0.35 + bass * 0.65) green = tw * 0.5
red = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4)) blue = tw * 0.12
green = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 2.09)) size = 1 + z * 3 * (0.5 + bass)
blue = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 4.19)) skip = if(above(z, 0.97), 1, 0)

View file

@ -1,25 +1,23 @@
name: "TC Plasma" name: "TC Plasma"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.82 persist: 0.932
linewidth: 2.5 linewidth: 1.976
[init] [init]
n = 850 n = 1072
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) t = t + dt * (0.432 + bass_att * 0.8)
hue = hue + dt * 0.05 sway = sway + dt * (0.5 + treb)
hue = hue + dt * 0.076
[point] [point]
a = rand(i * 7.3) * 6.28318 a = i * 6.28318 * 3
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) wob = sin(a * 4 + t * 2) * (0.08 + treb * 0.3)
rad = z * z * 1.1 rad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.223 - wob
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) red = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5))
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) green = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 2.09))
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) blue = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 4.19))
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19))
size = 1 + z * 3 * (0.5 + bass)
skip = if(above(z, 0.97), 1, 0)

View file

@ -1,29 +1,28 @@
name: "Tie Tunnel SSC" name: "Tie Tunnel SSC"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.851
linewidth: 2 linewidth: 2.021
[init] [init]
n = 720 n = 1179
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) t = t + dt * (0.17 + bass_att * 0.9)
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.129
flash = flash * 0.86
[beat] [beat]
flash = 1 flash = 1
[point] [point]
g = floor(i * 9) st = floor(i * 2)
gi = frac(i * 9) si = frac(i * 2)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) s = si * 6 * 6.28318 + t
a = gi * 6.28318 ph = st * 3.14159
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) rad = (0.28 + bass * 0.32 + flash * 0.06) * (0.55 + 0.45 * (cos(s + ph) * 0.5 + 0.5))
x = sin(a) * rad / aspect x = sin(s + ph) * rad / aspect
y = cos(a) * rad y = (si - 0.5) * 1.8
fade = sin(ph * 3.14159) red = min(1, 0.25 + 0.55 * (cos(s + ph) * 0.5 + 0.5) + treb * 0.25 * 1.3)
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) green = 0.25 + 0.55 * (cos(s + ph) * 0.5 + 0.5) + treb * 0.25 * 0.5
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) blue = 0.25 + 0.55 * (cos(s + ph) * 0.5 + 0.5) + treb * 0.25 * 0.12
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19))
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,29 +1,25 @@
name: "Zero-G Maze II" name: "Zero-G Maze II"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.916
linewidth: 2 linewidth: 1.457
[init] [init]
n = 720 n = 1049
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) t = t + dt * (0.267 + bass_att * 1.8)
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.038 + beat * 0.012
[beat]
flash = 1
[point] [point]
g = floor(i * 9) arm = floor(i * 7)
gi = frac(i * 9) fa = frac(i * 7)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) d = fa
a = gi * 6.28318 ang = arm * 1.253 + d * 0.88 * 3.14159 + t
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) rad = (0.04 + pow(d, 2.401) * 1.15) * (0.7 + bass * 0.5)
x = sin(a) * rad / aspect x = sin(ang) * rad / aspect
y = cos(a) * rad y = cos(ang) * rad
fade = sin(ph * 3.14159) red = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 2.064))
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) green = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 2.064 + 2.09))
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) blue = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 2.064 + 4.19))
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19)) skip = if(below(fa, 0.04), 1, 0)
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,25 +1,24 @@
name: "UnConeD -Zero-G Maze III" name: "UnConeD -Zero-G Maze III"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.82 persist: 0.853
linewidth: 2.5 linewidth: 1.507
[init] [init]
n = 850 n = 722
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) t = t + dt * (0.243 + bass_att * 1.5)
hue = hue + dt * 0.05 hue = hue + dt * 0.093
[point] [point]
a = rand(i * 7.3) * 6.28318 ring = floor(i * 19)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) ri2 = frac(i * 19)
rad = z * z * 1.1 z = frac(ring / 19 + t)
x = sin(a) * rad / aspect rad = 0.05 + z * 0.881
y = cos(a) * rad a = ri2 * 6.28318 + ring * 0.16 + sin(t * 0.7) * 2
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) x = sin(a) * rad * (0.55 + sv * 0.901) / aspect
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) y = cos(a) * rad * (0.55 + sv * 0.901)
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) red = (1 - z) * (0.3 + bass * 0.7) * 0.3
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) green = (1 - z) * (0.3 + bass * 0.7) * 0.65
size = 1 + z * 3 * (0.5 + bass) blue = min(1, (1 - z) * (0.3 + bass * 0.7) * 1.3)
skip = if(above(z, 0.97), 1, 0)

View file

@ -1,31 +1,28 @@
name: "nebulous (skupers remix)" name: "nebulous (skupers remix)"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.86 persist: 0.833
linewidth: 1.8 linewidth: 2.862
[init] [init]
n = 560 cols = 28
segs = 8 n = cols * cols
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) rot = rot + dt * (0.104 + mid * 0.4)
hue = hue + dt * (0.07 + treb * 0.08) hue = hue + dt * 0.08
[beat]
flash = 1
[point] [point]
seg = floor(i * segs) cx = floor(i * cols) / (cols - 1)
si = frac(i * segs) cy = frac(i * cols)
a0 = si * 6.28318 / segs + rot h = sv * 0.235
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05 ux = (cx - 0.5) * 1.448
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2)) uy = (cy - 0.5) * 1.448
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1) rx = ux * cos(rot) - uy * sin(rot)
x = sin(a) * rad / aspect ry = ux * sin(rot) + uy * cos(rot)
y = cos(a) * rad x = (rx / aspect) * (1 - h * 0.7)
lum = 0.35 + amp * 1.2 y = ry * (1 - h * 0.7)
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg)) red = 0.22 + h * 2.2 * (0.45 + 0.55 * sin(hue * 6.28318 + cx * 3.774))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09)) green = 0.22 + h * 2.2 * (0.45 + 0.55 * sin(hue * 6.28318 + cx * 3.774 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19)) blue = 0.22 + h * 2.2 * (0.45 + 0.55 * sin(hue * 6.28318 + cx * 3.774 + 4.19))
skip = if(above(si, 0.96), 1, 0) size = 1.2 + h * 5

View file

@ -1,25 +1,31 @@
name: "soundscape III (skupers remix)" name: "soundscape III (skupers remix)"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.82 persist: 0.851
linewidth: 2.5 linewidth: 1.939
[init] [init]
n = 850 segs = 14
n = 582
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) rot = rot + dt * (0.13 + mid_att * 0.5)
hue = hue + dt * 0.05 hue = hue + dt * 0.073
flash = flash * 0.85
[beat]
flash = 1
[point] [point]
a = rand(i * 7.3) * 6.28318 seg = floor(i * segs)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) si = frac(i * segs)
rad = z * z * 1.1 a0 = si * 6.28318 / segs + rot
amp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 4 + time * 2))
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) red = 0.3 + amp * 1.3 * abs(sin(seg * 0.8))
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) green = 0.3 + amp * 1.3 * 0.22
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) blue = 0.3 + amp * 1.3 * abs(cos(seg * 0.8))
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) skip = if(above(si, 0.96), 1, 0)
size = 1 + z * 3 * (0.5 + bass)
skip = if(above(z, 0.97), 1, 0)

View file

@ -1,25 +1,27 @@
name: "jinx (skupers remix)" name: "jinx (skupers remix)"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.814
linewidth: 1.6 linewidth: 1.769
[init] [init]
n = 900 bars = 46
n = bars * 12
[frame] [frame]
t = t + dt * (0.25 + bass_att * 1.5) rot = rot + dt * (0.046 + mid * 0.3)
hue = hue + dt * 0.1 hue = hue + dt * 0.043
[point] [point]
ring = floor(i * 24) bar = floor(i * bars)
ri = frac(i * 24) bi = frac(i * bars)
z = frac(ring / 24 + t) lvl = getspec(bar / bars, 0, 0)
rad = 0.06 + z * 0.9 h = lvl * 0.65
a = ri * 6.28318 + ring * 0.35 + sin(t * 0.7) * 2 a = bar * 6.28318 / bars + rot
x = sin(a) * rad * (0.55 + sv * 0.9) / aspect rad = 0.246 + bi * h
y = cos(a) * rad * (0.55 + sv * 0.9) x = sin(a) * rad / aspect
f = (1 - z) * (0.35 + bass * 0.65) y = cos(a) * rad
red = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4)) red = 0.25 + bi * 0.75 * abs(sin(bar * 6.28318 / bars))
green = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 2.09)) green = 0.25 + bi * 0.75 * 0.22
blue = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 4.19)) blue = 0.25 + bi * 0.75 * abs(cos(bar * 6.28318 / bars))
skip = if(above(bi, 0.97), 1, 0)

View file

@ -1,29 +1,22 @@
name: "not quite a bendy tunnel (skupers remix)" name: "not quite a bendy tunnel (skupers remix)"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.862
linewidth: 2 linewidth: 1.443
[init] [init]
n = 720 n = 806
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) t = t + dt * 0.276
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.055
[beat]
flash = 1
[point] [point]
g = floor(i * 9) ph = i * 6.28318 * 1.699
gi = frac(i * 9) fa = 2 + mid * 0.35
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) fb = 3 + bass * 0.45
a = gi * 6.28318 x = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) y = sin(ph * fb + t * 1.3 + 2.216) * (0.5 + treb * 0.35)
x = sin(a) * rad / aspect red = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.3
y = cos(a) * rad green = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.65
fade = sin(ph * 3.14159) blue = min(1, 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 1.3)
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7))
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09))
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19))
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,25 +1,27 @@
name: "newpoop (for wa5)" name: "newpoop (for wa5)"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.796
linewidth: 1.6 linewidth: 2.44
[init] [init]
n = 1100 rings = 4
n = rings * 98
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) t = t + dt * (0.176 + bass_att * 0.6)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.135
squash = 0.549 + 0.25 * sin(t * 0.439)
[point] [point]
arm = floor(i * 5) ring = floor(i * rings)
fa = frac(i * 5) ri3 = frac(i * rings)
d = fa r0 = 0.16 + ring * 0.12
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t a = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) x = sin(a) * r0 * (1 + bass * 0.18) / aspect
x = sin(ang) * rad / aspect y = cos(a) * r0 * squash
y = cos(ang) * rad sat = frac(ri3 * 5)
red = (0.3 + 0.7 * d) * (0.3 + bass) size = if(below(sat, 0.14), 3 + bass * 3, 1)
green = (0.3 + 0.7 * d) * (0.25 + mid) red = min(1, 0.25 + bass * 0.5 + ring * 0.07 * 1.3)
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = 0.25 + bass * 0.5 + ring * 0.07 * 0.5
skip = if(below(fa, 0.04), 1, 0) blue = 0.25 + bass * 0.5 + ring * 0.07 * 0.12

View file

@ -1,25 +1,27 @@
name: "the landscape is killing me (wa5remix)" name: "the landscape is killing me (wa5remix)"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.704
linewidth: 1.6 linewidth: 2.586
[init] [init]
n = 1100 cols = 54
n = 1193
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) fall = fall + dt * (0.514 + vol_att * 0.841)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.071
[point] [point]
arm = floor(i * 5) col = floor(i * cols)
fa = frac(i * 5) ci = frac(i * cols)
d = fa xx = (col / cols - 0.5) * 1.9
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t yf = frac(rand(col * 3.7 + 1) + fall * (0.55 + rand(col + 5) * 0.5))
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) tail = rand(col * 1.3 + 9) * 0.31 + 0.04
x = sin(ang) * rad / aspect yy = (yf * 2 - 1) * 1.05 + ci * tail
y = cos(ang) * rad x = xx / aspect
red = (0.3 + 0.7 * d) * (0.3 + bass) y = yy
green = (0.3 + 0.7 * d) * (0.25 + mid) red = (1 - ci) * (0.2 + treb * 0.85) + 0.04 * (0.45 + 0.55 * sin(hue * 6.28318 + col * 0.3))
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = (1 - ci) * (0.2 + treb * 0.85) + 0.04 * (0.45 + 0.55 * sin(hue * 6.28318 + col * 0.3 + 2.09))
skip = if(below(fa, 0.04), 1, 0) blue = (1 - ci) * (0.2 + treb * 0.85) + 0.04 * (0.45 + 0.55 * sin(hue * 6.28318 + col * 0.3 + 4.19))
skip = if(above(abs(yy), 1.02), 1, 0)

View file

@ -1,29 +1,22 @@
name: "Dragonscales" name: "Dragonscales"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.78 persist: 0.885
linewidth: 2.5 linewidth: 2.375
[init] [init]
cols = 36 n = 938
n = cols * cols
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) t = t + dt * 0.353
hue = hue + dt * (0.04 + treb * 0.1) hue = hue + dt * 0.094
[point] [point]
cx = floor(i * cols) / (cols - 1) ph = i * 6.28318 * 2.096
cy = frac(i * cols) fa = 2 + mid * 0.35
h = sv * 0.35 fb = 3 + bass * 0.45
ux = (cx - 0.5) * 1.6 x = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect
uy = (cy - 0.5) * 1.6 y = sin(ph * fb + t * 1.3 + 2.866) * (0.5 + treb * 0.35)
rx = ux * cos(rot) - uy * sin(rot) red = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + bass * 0.95)
ry = ux * sin(rot) + uy * cos(rot) green = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + mid * 0.95)
x = (rx / aspect) * (1 - h * 0.7) blue = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + treb * 0.95)
y = ry * (1 - h * 0.7)
lum = 0.25 + h * 2.2
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,29 +1,27 @@
name: "Encapsulade" name: "Encapsulade"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.814
linewidth: 2 linewidth: 2.058
[init] [init]
n = 720 bars = 64
n = bars * 9
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) rot = rot + dt * (0.103 + mid * 0.3)
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.072
[beat]
flash = 1
[point] [point]
g = floor(i * 9) bar = floor(i * bars)
gi = frac(i * 9) bi = frac(i * bars)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) lvl = getspec(bar / bars, 0, 0)
a = gi * 6.28318 h = lvl * 0.85
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) a = bar * 6.28318 / bars + rot
rad = 0.262 + bi * h
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
fade = sin(ph * 3.14159) red = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars))
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) green = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 2.09))
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) blue = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 4.19))
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19)) skip = if(above(bi, 0.97), 1, 0)
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,25 +1,27 @@
name: "Freekwyrms" name: "Freekwyrms"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.864
linewidth: 1.6 linewidth: 1.436
[init] [init]
n = 1100 bars = 46
n = bars * 12
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) rot = rot + dt * (0.09 + mid * 0.3)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.063
[point] [point]
arm = floor(i * 5) bar = floor(i * bars)
fa = frac(i * 5) bi = frac(i * bars)
d = fa lvl = getspec(bar / bars, 0, 0)
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t h = lvl * 0.722
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) a = bar * 6.28318 / bars + rot
x = sin(ang) * rad / aspect rad = 0.216 + bi * h
y = cos(ang) * rad x = sin(a) * rad / aspect
red = (0.3 + 0.7 * d) * (0.3 + bass) y = cos(a) * rad
green = (0.3 + 0.7 * d) * (0.25 + mid) red = min(1, 0.25 + bi * 0.75 * 1.3)
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = 0.25 + bi * 0.75 * 0.5
skip = if(below(fa, 0.04), 1, 0) blue = 0.25 + bi * 0.75 * 0.12
skip = if(above(bi, 0.97), 1, 0)

View file

@ -1,29 +1,30 @@
name: "Lilypod" name: "Lilypod"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.88 persist: 0.787
linewidth: 2 linewidth: 1.928
[init] [init]
n = 720 n = 885
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) tt = tt + dt * (0.5 + bass_att * 1.1)
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.04
burst = burst * 0.9
[beat] [beat]
flash = 1 burst = 1
[point] [point]
g = floor(i * 9) jet = floor(i * 4)
gi = frac(i * 9) life = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) a = jet * 6.28318 / 4 + rand(i * 5.1 + jet) * 0.722
a = gi * 6.28318 spd = 0.4 + rand(i * 9.2 + jet) * 0.8
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) px = cos(a) * spd * life
x = sin(a) * rad / aspect py = sin(a) * spd * life - 0.744 * life * life
y = cos(a) * rad x = px * (0.85 + bass * 0.35) / aspect
fade = sin(ph * 3.14159) y = py
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) red = max(0, 1 - life) * (0.35 + burst * 0.55) * abs(sin(life * 4))
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) green = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.22
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19)) blue = max(0, 1 - life) * (0.35 + burst * 0.55) * abs(cos(life * 4))
skip = if(above(ph, 0.95), 1, 0) skip = if(above(life, 0.94), 1, 0)

View file

@ -1,29 +1,24 @@
name: "Mist Wisps" name: "Mist Wisps"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.88 persist: 0.758
linewidth: 2 linewidth: 2.24
[init] [init]
n = 720 n = 1297
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) t = t + dt * 0.323
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.1
[beat]
flash = 1
[point] [point]
g = floor(i * 9) u = rand(i * 1.7) * 2 - 1
gi = frac(i * 9) w = rand(i * 3.3 + 11) * 2 - 1
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) m = sin((u * 2.207 + w * 6.547 + t) * 3.14159) * sin((u * 5.739 - w * 2.319 - t * 0.7) * 3.14159)
a = gi * 6.28318 x = u * 0.85 / aspect
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) y = w * 0.957
x = sin(a) * rad / aspect lum = max(0, m) * (0.3 + bass * 0.9) + 0.06
y = cos(a) * rad red = lum * (0.25 + bass * 0.95)
fade = sin(ph * 3.14159) green = lum * (0.25 + mid * 0.95)
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) blue = lum * (0.25 + treb * 0.95)
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) size = 1 + abs(m) * 3.505
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19))
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,25 +1,24 @@
name: "Nebulating - Hypercolorspace" name: "Nebulating - Hypercolorspace"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.792
linewidth: 1.6 linewidth: 2.678
[init] [init]
n = 1100 n = 1374
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) t = t + dt * 0.423
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.123
[point] [point]
arm = floor(i * 5) u = rand(i * 1.7) * 2 - 1
fa = frac(i * 5) w = rand(i * 3.3 + 11) * 2 - 1
d = fa m = sin((u * 3.51 + w * 2.666 + t) * 3.14159) * sin((u * 6.323 - w * 6.393 - t * 0.7) * 3.14159)
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t x = u * 0.959 / aspect
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) y = w * 0.871
x = sin(ang) * rad / aspect lum = max(0, m) * (0.3 + bass * 0.9) + 0.06
y = cos(ang) * rad red = min(1, lum * 1.3)
red = (0.3 + 0.7 * d) * (0.3 + bass) green = lum * 0.5
green = (0.3 + 0.7 * d) * (0.25 + mid) blue = lum * 0.12
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) size = 1 + abs(m) * 3.799
skip = if(below(fa, 0.04), 1, 0)

View file

@ -1,31 +1,28 @@
name: "Reverb - Deep Net" name: "Reverb - Deep Net"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.86 persist: 0.818
linewidth: 1.8 linewidth: 2.394
[init] [init]
n = 560 cols = 29
segs = 8 n = cols * cols
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) rot = rot + dt * (0.041 + mid * 0.4)
hue = hue + dt * (0.07 + treb * 0.08) hue = hue + dt * 0.089
[beat]
flash = 1
[point] [point]
seg = floor(i * segs) cx = floor(i * cols) / (cols - 1)
si = frac(i * segs) cy = frac(i * cols)
a0 = si * 6.28318 / segs + rot h = sv * 0.525
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05 ux = (cx - 0.5) * 1.845
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2)) uy = (cy - 0.5) * 1.845
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1) rx = ux * cos(rot) - uy * sin(rot)
x = sin(a) * rad / aspect ry = ux * sin(rot) + uy * cos(rot)
y = cos(a) * rad x = (rx / aspect) * (1 - h * 0.7)
lum = 0.35 + amp * 1.2 y = ry * (1 - h * 0.7)
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg)) red = 0.22 + h * 2.2 * abs(sin(cx * 2.712))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09)) green = 0.22 + h * 2.2 * 0.22
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19)) blue = 0.22 + h * 2.2 * abs(cos(cx * 2.712))
skip = if(above(si, 0.96), 1, 0) size = 1.2 + h * 5

View file

@ -1,25 +1,22 @@
name: "Slyde - Tri" name: "Slyde - Tri"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.863
linewidth: 1.6 linewidth: 1.626
[init] [init]
n = 1100 n = 938
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) t = t + dt * 0.483
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.076
[point] [point]
arm = floor(i * 5) ph = i * 6.28318 * 2.841
fa = frac(i * 5) fa = 6 + mid * 0.35
d = fa fb = 2 + bass * 0.45
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t x = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) y = sin(ph * fb + t * 1.3 + 1.909) * (0.5 + treb * 0.35)
x = sin(ang) * rad / aspect red = min(1, 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 1.3)
y = cos(ang) * rad green = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.5
red = (0.3 + 0.7 * d) * (0.3 + bass) blue = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.12
green = (0.3 + 0.7 * d) * (0.25 + mid)
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2)
skip = if(below(fa, 0.04), 1, 0)

View file

@ -1,29 +1,27 @@
name: "Solar Flaire" name: "Solar Flaire"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.78 persist: 0.866
linewidth: 2.5 linewidth: 1.678
[init] [init]
cols = 36 bars = 59
n = cols * cols n = bars * 11
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) rot = rot + dt * (0.076 + mid * 0.3)
hue = hue + dt * (0.04 + treb * 0.1) hue = hue + dt * 0.107
[point] [point]
cx = floor(i * cols) / (cols - 1) bar = floor(i * bars)
cy = frac(i * cols) bi = frac(i * bars)
h = sv * 0.35 lvl = getspec(bar / bars, 0, 0)
ux = (cx - 0.5) * 1.6 h = lvl * 0.607
uy = (cy - 0.5) * 1.6 a = bar * 6.28318 / bars + rot
rx = ux * cos(rot) - uy * sin(rot) rad = 0.241 + bi * h
ry = ux * sin(rot) + uy * cos(rot) x = sin(a) * rad / aspect
x = (rx / aspect) * (1 - h * 0.7) y = cos(a) * rad
y = ry * (1 - h * 0.7) red = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars))
lum = 0.25 + h * 2.2 green = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 2.09))
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3)) blue = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 4.19))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09)) skip = if(above(bi, 0.97), 1, 0)
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,31 +1,30 @@
name: "Spintronics - Backspin" name: "Spintronics - Backspin"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.86 persist: 0.804
linewidth: 1.8 linewidth: 2.037
[init] [init]
n = 560 n = 1157
segs = 8
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) tt = tt + dt * (0.5 + bass_att * 1.1)
hue = hue + dt * (0.07 + treb * 0.08) hue = hue + dt * 0.12
burst = burst * 0.9
[beat] [beat]
flash = 1 burst = 1
[point] [point]
seg = floor(i * segs) jet = floor(i * 4)
si = frac(i * segs) life = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))
a0 = si * 6.28318 / segs + rot a = jet * 6.28318 / 4 + rand(i * 5.1 + jet) * 0.547
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05 spd = 0.4 + rand(i * 9.2 + jet) * 0.8
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2)) px = cos(a) * spd * life
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1) py = sin(a) * spd * life - 0.712 * life * life
x = sin(a) * rad / aspect x = px * (0.85 + bass * 0.35) / aspect
y = cos(a) * rad y = py
lum = 0.35 + amp * 1.2 red = min(1, max(0, 1 - life) * (0.35 + burst * 0.55) * 1.3)
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg)) green = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.5
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09)) blue = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.12
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19)) skip = if(above(life, 0.94), 1, 0)
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,25 +1,31 @@
name: "Starslappin" name: "Starslappin"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.842
linewidth: 1.6 linewidth: 2.148
[init] [init]
n = 1100 segs = 7
n = 545
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) rot = rot + dt * (0.087 + mid_att * 0.5)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.125
flash = flash * 0.85
[beat]
flash = 1
[point] [point]
arm = floor(i * 5) seg = floor(i * segs)
fa = frac(i * 5) si = frac(i * segs)
d = fa a0 = si * 6.28318 / segs + rot
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t amp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2))
x = sin(ang) * rad / aspect a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
y = cos(ang) * rad x = sin(a) * rad / aspect
red = (0.3 + 0.7 * d) * (0.3 + bass) y = cos(a) * rad
green = (0.3 + 0.7 * d) * (0.25 + mid) red = 0.3 + amp * 1.3 * (0.25 + bass * 0.95)
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = 0.3 + amp * 1.3 * (0.25 + mid * 0.95)
skip = if(below(fa, 0.04), 1, 0) blue = 0.3 + amp * 1.3 * (0.25 + treb * 0.95)
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,25 +1,30 @@
name: "Street Art - Fire Inside" name: "Street Art - Fire Inside"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.757
linewidth: 1.6 linewidth: 2.052
[init] [init]
n = 1100 n = 1065
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) tt = tt + dt * (0.5 + bass_att * 1.1)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.108
burst = burst * 0.9
[beat]
burst = 1
[point] [point]
arm = floor(i * 5) jet = floor(i * 4)
fa = frac(i * 5) life = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))
d = fa a = jet * 6.28318 / 4 + rand(i * 5.1 + jet) * 1.184
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t spd = 0.4 + rand(i * 9.2 + jet) * 0.8
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) px = cos(a) * spd * life
x = sin(ang) * rad / aspect py = sin(a) * spd * life - 1.383 * life * life
y = cos(ang) * rad x = px * (0.85 + bass * 0.35) / aspect
red = (0.3 + 0.7 * d) * (0.3 + bass) y = py
green = (0.3 + 0.7 * d) * (0.25 + mid) red = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.3
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.65
skip = if(below(fa, 0.04), 1, 0) blue = min(1, max(0, 1 - life) * (0.35 + burst * 0.55) * 1.3)
skip = if(above(life, 0.94), 1, 0)

View file

@ -1,31 +1,23 @@
name: "Swoo - Slow" name: "Swoo - Slow"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.86 persist: 0.919
linewidth: 1.8 linewidth: 1.852
[init] [init]
n = 560 n = 1159
segs = 8
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) t = t + dt * (0.461 + bass_att * 0.8)
hue = hue + dt * (0.07 + treb * 0.08) sway = sway + dt * (0.5 + treb)
hue = hue + dt * 0.046
[beat]
flash = 1
[point] [point]
seg = floor(i * segs) a = i * 6.28318 * 3
si = frac(i * segs) wob = sin(a * 3 + t * 2) * (0.08 + treb * 0.3)
a0 = si * 6.28318 / segs + rot rad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.199 - wob
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2))
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
lum = 0.35 + amp * 1.2 red = 0.3 + abs(v) * 1.2 * 0.3
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg)) green = 0.3 + abs(v) * 1.2 * 0.65
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09)) blue = min(1, 0.3 + abs(v) * 1.2 * 1.3)
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19))
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,29 +1,27 @@
name: "smell of music (skupers remix)" name: "smell of music (skupers remix)"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.78 persist: 0.805
linewidth: 2.5 linewidth: 1.342
[init] [init]
cols = 36 spokes = 31
n = cols * cols n = spokes * 34
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) rot = rot + dt * (0.118 + mid * 0.4)
hue = hue + dt * (0.04 + treb * 0.1) t = t + dt * 2.453
hue = hue + dt * 0.113
[point] [point]
cx = floor(i * cols) / (cols - 1) sp = floor(i * spokes)
cy = frac(i * cols) si = frac(i * spokes)
h = sv * 0.35 a = sp * 6.28318 / spokes + rot
ux = (cx - 0.5) * 1.6 wave = sin(si * 3 * 3.14159 - t) * (0.03 + bass * 0.28)
uy = (cy - 0.5) * 1.6 rad = 0.12 + si * 0.868 + wave
rx = ux * cos(rot) - uy * sin(rot) x = sin(a) * rad / aspect
ry = ux * sin(rot) + uy * cos(rot) y = cos(a) * rad
x = (rx / aspect) * (1 - h * 0.7) red = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.3
y = ry * (1 - h * 0.7) green = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.65
lum = 0.25 + h * 2.2 blue = min(1, (1 - si) * 0.45 + 0.15 + sv * 0.55 * 1.3)
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3)) skip = if(above(si, 0.985), 1, 0)
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,29 +1,30 @@
name: "bumpy" name: "bumpy"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.88 persist: 0.798
linewidth: 2 linewidth: 1.642
[init] [init]
n = 720 n = 640
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) hue = hue + dt * 0.119 + beat * 0.01
travel = travel + dt * (0.3 + bass_att * 1.4) travel = travel + dt * (0.394 + bass_att * 1.4)
flash = flash * 0.86
[beat] [beat]
flash = 1 flash = 1
[point] [point]
g = floor(i * 9) g = floor(i * 10)
gi = frac(i * 9) gi = frac(i * 10)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) ph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))
a = gi * 6.28318 a = gi * 6.28318
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) rad = ph * (0.28 + bass * 0.544 + flash * 0.08)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
fade = sin(ph * 3.14159) fade = sin(ph * 3.14159)
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) red = fade * (0.35 + flash * 0.4) * 0.3
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) green = fade * (0.35 + flash * 0.4) * 0.65
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19)) blue = min(1, fade * (0.35 + flash * 0.4) * 1.3)
skip = if(above(ph, 0.95), 1, 0) skip = if(above(ph, 0.96), 1, 0)

View file

@ -1,29 +1,25 @@
name: "splendora" name: "splendora"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.78 persist: 0.867
linewidth: 2.5 linewidth: 1.513
[init] [init]
cols = 36 n = 974
n = cols * cols
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) t = t + dt * (0.211 + bass_att * 1.8)
hue = hue + dt * (0.04 + treb * 0.1) hue = hue + dt * 0.068 + beat * 0.012
[point] [point]
cx = floor(i * cols) / (cols - 1) arm = floor(i * 9)
cy = frac(i * cols) fa = frac(i * 9)
h = sv * 0.35 d = fa
ux = (cx - 0.5) * 1.6 ang = arm * 1.515 + d * 1.922 * 3.14159 + t
uy = (cy - 0.5) * 1.6 rad = (0.04 + pow(d, 1.746) * 1.15) * (0.7 + bass * 0.5)
rx = ux * cos(rot) - uy * sin(rot) x = sin(ang) * rad / aspect
ry = ux * sin(rot) + uy * cos(rot) y = cos(ang) * rad
x = (rx / aspect) * (1 - h * 0.7) red = (0.3 + 0.7 * d) * (0.3 + mid) * abs(sin(d * 2.585))
y = ry * (1 - h * 0.7) green = (0.3 + 0.7 * d) * (0.3 + mid) * 0.22
lum = 0.25 + h * 2.2 blue = (0.3 + 0.7 * d) * (0.3 + mid) * abs(cos(d * 2.585))
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3)) skip = if(below(fa, 0.04), 1, 0)
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,31 +1,27 @@
name: "Urantia" name: "Urantia"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.86 persist: 0.862
linewidth: 1.8 linewidth: 2.9
[init] [init]
n = 560 rings = 4
segs = 8 n = rings * 101
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) t = t + dt * (0.393 + bass_att * 0.6)
hue = hue + dt * (0.07 + treb * 0.08) hue = hue + dt * 0.094
squash = 0.387 + 0.25 * sin(t * 0.454)
[beat]
flash = 1
[point] [point]
seg = floor(i * segs) ring = floor(i * rings)
si = frac(i * segs) ri3 = frac(i * rings)
a0 = si * 6.28318 / segs + rot r0 = 0.16 + ring * 0.141
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05 a = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2)) x = sin(a) * r0 * (1 + bass * 0.18) / aspect
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1) y = cos(a) * r0 * squash
x = sin(a) * rad / aspect sat = frac(ri3 * 2)
y = cos(a) * rad size = if(below(sat, 0.14), 3 + bass * 3, 1)
lum = 0.35 + amp * 1.2 red = 0.25 + bass * 0.5 + ring * 0.07 * (0.25 + bass * 0.95)
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg)) green = 0.25 + bass * 0.5 + ring * 0.07 * (0.25 + mid * 0.95)
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09)) blue = 0.25 + bass * 0.5 + ring * 0.07 * (0.25 + treb * 0.95)
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19))
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,25 +1,25 @@
name: "tentaclism (fake hboy rmx)" name: "tentaclism (fake hboy rmx)"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.833
linewidth: 1.6 linewidth: 2.485
[init] [init]
n = 1100 n = 952
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) travel = travel + dt * (0.231 + vol_att * 1.898)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.056
[point] [point]
arm = floor(i * 5) a = rand(i * 7.3) * 6.28318
fa = frac(i * 5) z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7))
d = fa rad = z * z * 0.992
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t x = sin(a) * rad / aspect
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) y = cos(a) * rad
x = sin(ang) * rad / aspect tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb)
y = cos(ang) * rad red = min(1, tw * 1.3)
red = (0.3 + 0.7 * d) * (0.3 + bass) green = tw * 0.5
green = (0.3 + 0.7 * d) * (0.25 + mid) blue = tw * 0.12
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) size = 1 + z * 3 * (0.5 + bass)
skip = if(below(fa, 0.04), 1, 0) skip = if(above(z, 0.97), 1, 0)

View file

@ -1,25 +1,27 @@
name: "tentaclism (sky of contempt mix by drew)" name: "tentaclism (sky of contempt mix by drew)"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.9 persist: 0.83
linewidth: 1.6 linewidth: 2.652
[init] [init]
n = 900 rings = 3
n = rings * 87
[frame] [frame]
t = t + dt * (0.25 + bass_att * 1.5) t = t + dt * (0.201 + bass_att * 0.6)
hue = hue + dt * 0.1 hue = hue + dt * 0.06
squash = 0.564 + 0.25 * sin(t * 0.401)
[point] [point]
ring = floor(i * 24) ring = floor(i * rings)
ri = frac(i * 24) ri3 = frac(i * rings)
z = frac(ring / 24 + t) r0 = 0.16 + ring * 0.108
rad = 0.06 + z * 0.9 a = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4
a = ri * 6.28318 + ring * 0.35 + sin(t * 0.7) * 2 x = sin(a) * r0 * (1 + bass * 0.18) / aspect
x = sin(a) * rad * (0.55 + sv * 0.9) / aspect y = cos(a) * r0 * squash
y = cos(a) * rad * (0.55 + sv * 0.9) sat = frac(ri3 * 4)
f = (1 - z) * (0.35 + bass * 0.65) size = if(below(sat, 0.14), 3 + bass * 3, 1)
red = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4)) red = 0.25 + bass * 0.5 + ring * 0.07 * abs(sin(ring * 1.3))
green = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 2.09)) green = 0.25 + bass * 0.5 + ring * 0.07 * 0.22
blue = f * (0.45 + 0.55 * sin(hue * 6.28318 + z * 4 + 4.19)) blue = 0.25 + bass * 0.5 + ring * 0.07 * abs(cos(ring * 1.3))

View file

@ -1,25 +1,27 @@
name: "tentaclism (cathode ray mix by onionring of doom)" name: "tentaclism (cathode ray mix by onionring of doom)"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.873
linewidth: 1.6 linewidth: 1.987
[init] [init]
n = 1100 spokes = 26
n = spokes * 38
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) rot = rot + dt * (0.076 + mid * 0.4)
hue = hue + dt * 0.08 + beat * 0.01 t = t + dt * 1.652
hue = hue + dt * 0.062
[point] [point]
arm = floor(i * 5) sp = floor(i * spokes)
fa = frac(i * 5) si = frac(i * spokes)
d = fa a = sp * 6.28318 / spokes + rot
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t wave = sin(si * 5 * 3.14159 - t) * (0.03 + bass * 0.28)
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) rad = 0.12 + si * 0.882 + wave
x = sin(ang) * rad / aspect x = sin(a) * rad / aspect
y = cos(ang) * rad y = cos(a) * rad
red = (0.3 + 0.7 * d) * (0.3 + bass) red = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.3
green = (0.3 + 0.7 * d) * (0.25 + mid) green = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.65
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) blue = min(1, (1 - si) * 0.45 + 0.15 + sv * 0.55 * 1.3)
skip = if(below(fa, 0.04), 1, 0) skip = if(above(si, 0.985), 1, 0)

View file

@ -1,24 +1,24 @@
# Auto-ported from "05 dynamic duo - chromatics (glowy mix by meaningless-existance).avs" (Winamp AVS / dynamic duo)
# SuperScope point program, 4 AVSTrans macros expanded.
name: "chromatics (glowy mix by meaningless-existance)" name: "chromatics (glowy mix by meaningless-existance)"
author: "dynamic duo"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.857
linewidth: 2 linewidth: 1.543
ysign: -1
[init] [init]
n=w;pi=acos(-1); n = 731
[frame] [frame]
t=t-0.045;t2=t2-t2r;tm2=tm2*0.9+tm2c*0.1;tm=tm*0.9+tm2c*0.1; t = t + dt * (0.338 + bass_att * 1.5)
hue = hue + dt * 0.042
[beat]
tm2c=rnd(315)*0.04+1;tmc=rnd(315)*0.04+1;t2r=rnd(10)*0.01-0.05;
[point] [point]
x=i*2-1;y=-0.99; ring = floor(i * 17)
red=sin(i*2*pi+t)*0.5+0.5;; ri2 = frac(i * 17)
blue=sin(i*tm*2+t2)*0.5+0.5; z = frac(ring / 17 + t)
green=sin(i*tm2*2-t*0.33)*0.5+0.5; rad = 0.05 + z * 0.805
a = ri2 * 6.28318 + ring * 0.411 + sin(t * 0.7) * 2
x = sin(a) * rad * (0.55 + sv * 1.073) / aspect
y = cos(a) * rad * (0.55 + sv * 1.073)
red = (1 - z) * (0.3 + bass * 0.7) * abs(sin(z * 2.074))
green = (1 - z) * (0.3 + bass * 0.7) * 0.22
blue = (1 - z) * (0.3 + bass * 0.7) * abs(cos(z * 2.074))

View file

@ -1,31 +1,30 @@
name: "tentaclism (midas remix)" name: "tentaclism (midas remix)"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.86 persist: 0.848
linewidth: 1.8 linewidth: 2.168
[init] [init]
n = 560 n = 757
segs = 8
[frame] [frame]
rot = rot + dt * (0.08 + mid_att * 0.5) tt = tt + dt * (0.5 + bass_att * 1.1)
hue = hue + dt * (0.07 + treb * 0.08) hue = hue + dt * 0.053
burst = burst * 0.9
[beat] [beat]
flash = 1 burst = 1
[point] [point]
seg = floor(i * segs) jet = floor(i * 2)
si = frac(i * segs) life = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))
a0 = si * 6.28318 / segs + rot a = jet * 6.28318 / 2 + rand(i * 5.1 + jet) * 1.14
amp = 0.12 + sv * 0.55 + bass * 0.25 + flash * 0.05 spd = 0.4 + rand(i * 9.2 + jet) * 0.8
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2)) px = cos(a) * spd * life
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1) py = sin(a) * spd * life - 1.009 * life * life
x = sin(a) * rad / aspect x = px * (0.85 + bass * 0.35) / aspect
y = cos(a) * rad y = py
lum = 0.35 + amp * 1.2 red = min(1, max(0, 1 - life) * (0.35 + burst * 0.55) * 1.3)
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg)) green = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.5
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 2.09)) blue = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.12
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + seg + 4.19)) skip = if(above(life, 0.94), 1, 0)
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,25 +1,27 @@
name: "tentaclism (raz remix - ugly edit)" name: "tentaclism (raz remix - ugly edit)"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.873
linewidth: 1.6 linewidth: 1.756
[init] [init]
n = 1100 bars = 44
n = bars * 11
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) rot = rot + dt * (0.118 + mid * 0.3)
hue = hue + dt * 0.08 + beat * 0.01 hue = hue + dt * 0.119
[point] [point]
arm = floor(i * 5) bar = floor(i * bars)
fa = frac(i * 5) bi = frac(i * bars)
d = fa lvl = getspec(bar / bars, 0, 0)
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t h = lvl * 0.767
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) a = bar * 6.28318 / bars + rot
x = sin(ang) * rad / aspect rad = 0.145 + bi * h
y = cos(ang) * rad x = sin(a) * rad / aspect
red = (0.3 + 0.7 * d) * (0.3 + bass) y = cos(a) * rad
green = (0.3 + 0.7 * d) * (0.25 + mid) red = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars))
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 2.09))
skip = if(below(fa, 0.04), 1, 0) blue = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 4.19))
skip = if(above(bi, 0.97), 1, 0)

View file

@ -1,29 +1,27 @@
name: "tentaclism (the y.m.o. rework #1)" name: "tentaclism (the y.m.o. rework #1)"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.88 persist: 0.831
linewidth: 2 linewidth: 1.694
[init] [init]
n = 720 spokes = 32
n = spokes * 27
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) rot = rot + dt * (0.073 + mid * 0.4)
travel = travel + dt * (0.3 + bass_att * 1.4) t = t + dt * 1.807
hue = hue + dt * 0.131
[beat]
flash = 1
[point] [point]
g = floor(i * 9) sp = floor(i * spokes)
gi = frac(i * 9) si = frac(i * spokes)
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) a = sp * 6.28318 / spokes + rot
a = gi * 6.28318 wave = sin(si * 2 * 3.14159 - t) * (0.03 + bass * 0.28)
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) rad = 0.12 + si * 0.758 + wave
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
fade = sin(ph * 3.14159) red = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(sin(sp * 0.4))
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) green = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.22
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) blue = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(cos(sp * 0.4))
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19)) skip = if(above(si, 0.985), 1, 0)
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,29 +1,24 @@
name: "tentaclism (kans of kansis mix by drew - edit)" name: "tentaclism (kans of kansis mix by drew - edit)"
mode: dots mode: dots
blend: additive blend: additive
persist: 0.78 persist: 0.827
linewidth: 2.5 linewidth: 2.039
[init] [init]
cols = 36 n = 1449
n = cols * cols
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) t = t + dt * 0.447
hue = hue + dt * (0.04 + treb * 0.1) hue = hue + dt * 0.034
[point] [point]
cx = floor(i * cols) / (cols - 1) u = rand(i * 1.7) * 2 - 1
cy = frac(i * cols) w = rand(i * 3.3 + 11) * 2 - 1
h = sv * 0.35 m = sin((u * 6.164 + w * 5.725 + t) * 3.14159) * sin((u * 2.761 - w * 2.167 - t * 0.7) * 3.14159)
ux = (cx - 0.5) * 1.6 x = u * 0.936 / aspect
uy = (cy - 0.5) * 1.6 y = w * 0.903
rx = ux * cos(rot) - uy * sin(rot) lum = max(0, m) * (0.3 + bass * 0.9) + 0.06
ry = ux * sin(rot) + uy * cos(rot) red = min(1, lum * 1.3)
x = (rx / aspect) * (1 - h * 0.7) green = lum * 0.5
y = ry * (1 - h * 0.7) blue = lum * 0.12
lum = 0.25 + h * 2.2 size = 1 + abs(m) * 3.26
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,31 +1,31 @@
# Auto-ported from "01 amphirion - the pacifist (duo's underworld mix).avs" (Winamp AVS / amphirion)
# SuperScope point program, 4 AVSTrans macros expanded.
name: "the pacifist (duo's underworld mix)" name: "the pacifist (duo's underworld mix)"
author: "amphirion"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.856
linewidth: 2 linewidth: 1.75
ysign: -1
[init] [init]
n=2 segs = 14
n = 483
[frame] [frame]
xt=1-xtd; rot = rot + dt * (0.149 + mid_att * 0.5)
yt=1-ytd; hue = hue + dt * 0.117
flash = flash * 0.85
[beat] [beat]
xtd=rnd(20)*.1; flash = 1
ytd=rnd(20)*.1;
rd=rnd(20)*.1;
gd=rnd(20)*.1;
bd=rnd(20)*.1;
[point] [point]
x=i*.3+xt*.5-getosc(0,0.4,0)*.25; seg = floor(i * segs)
y=yt*.5-getosc(0,0.2,0)*.25; si = frac(i * segs)
size=10*(w/h)*(1+getosc(0,0.2,0)); a0 = si * 6.28318 / segs + rot
red=.2+rd; amp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06
green=.5+gd; rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 4 + time * 2))
blue=.2+bd; a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
x = sin(a) * rad / aspect
y = cos(a) * rad
red = 0.3 + amp * 1.3 * (0.45 + 0.55 * sin(hue * 6.28318 + seg * 0.8))
green = 0.3 + amp * 1.3 * (0.45 + 0.55 * sin(hue * 6.28318 + seg * 0.8 + 2.09))
blue = 0.3 + amp * 1.3 * (0.45 + 0.55 * sin(hue * 6.28318 + seg * 0.8 + 4.19))
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,29 +1,25 @@
name: "roll-on mojo (duo remix)" name: "roll-on mojo (duo remix)"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.78 persist: 0.889
linewidth: 2.5 linewidth: 1.751
[init] [init]
cols = 36 n = 950
n = cols * cols
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) t = t + dt * (0.251 + bass_att * 1.8)
hue = hue + dt * (0.04 + treb * 0.1) hue = hue + dt * 0.089 + beat * 0.012
[point] [point]
cx = floor(i * cols) / (cols - 1) arm = floor(i * 3)
cy = frac(i * cols) fa = frac(i * 3)
h = sv * 0.35 d = fa
ux = (cx - 0.5) * 1.6 ang = arm * 1.538 + d * 1.277 * 3.14159 + t
uy = (cy - 0.5) * 1.6 rad = (0.04 + pow(d, 1.775) * 1.15) * (0.7 + bass * 0.5)
rx = ux * cos(rot) - uy * sin(rot) x = sin(ang) * rad / aspect
ry = ux * sin(rot) + uy * cos(rot) y = cos(ang) * rad
x = (rx / aspect) * (1 - h * 0.7) red = (0.3 + 0.7 * d) * (0.3 + mid) * abs(sin(d * 3.995))
y = ry * (1 - h * 0.7) green = (0.3 + 0.7 * d) * (0.3 + mid) * 0.22
lum = 0.25 + h * 2.2 blue = (0.3 + 0.7 * d) * (0.3 + mid) * abs(cos(d * 3.995))
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3)) skip = if(below(fa, 0.04), 1, 0)
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,25 +1,31 @@
name: "cafe de duo (vanish's wicked jungle massive remix)" name: "cafe de duo (vanish's wicked jungle massive remix)"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.82 persist: 0.873
linewidth: 2.5 linewidth: 1.915
[init] [init]
n = 850 segs = 10
n = 623
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) rot = rot + dt * (0.112 + mid_att * 0.5)
hue = hue + dt * 0.05 hue = hue + dt * 0.038
flash = flash * 0.85
[beat]
flash = 1
[point] [point]
a = rand(i * 7.3) * 6.28318 seg = floor(i * segs)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) si = frac(i * segs)
rad = z * z * 1.1 a0 = si * 6.28318 / segs + rot
amp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06
rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 9 + time * 2))
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) red = 0.3 + amp * 1.3 * (0.25 + bass * 0.95)
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) green = 0.3 + amp * 1.3 * (0.25 + mid * 0.95)
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) blue = 0.3 + amp * 1.3 * (0.25 + treb * 0.95)
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) skip = if(above(si, 0.96), 1, 0)
size = 1 + z * 3 * (0.5 + bass)
skip = if(above(z, 0.97), 1, 0)

View file

@ -1,40 +1,31 @@
# Auto-ported from "06 skupers - incantation (duo remix - edit).avs" (Winamp AVS / skupers)
# Texer II point program, 4 AVSTrans macros expanded.
name: "incantation (duo remix - edit)" name: "incantation (duo remix - edit)"
author: "skupers" mode: lines
mode: dots
blend: additive blend: additive
persist: 0.78 persist: 0.892
linewidth: 3 linewidth: 1.682
ysign: -1
[init] [init]
n=h;pi=acos(-1);xasp=min(h/w,1);yasp=min(w/h,1); segs = 14
n = 476
[frame] [frame]
xm1=xm1+xm1r;ym1=ym1+ym1r;xm=sin(xm1)*0.4;ym=sin(ym1)*0.4;redf=redf+redr;greenf=greenf+greenr;bluef=bluef+bluer;rx=rx+rxo;ry=ry+ryo;rz=rz+rzo;rzo=rzo*0.97;cx=cos(sin(rx));sx=sin(sin(rx));cy=cos(sin(ry));sy=sin(sin(ry));cz=cos(rz);sz=sin(rz); rot = rot + dt * (0.088 + mid_att * 0.5)
hue = hue + dt * 0.074
flash = flash * 0.85
[beat] [beat]
xm1r=getosc(0.2,0,0)/5;ym1r=getosc(0.3,0,0)/8;redr=rnd(10)/100-0.05;greenr=rnd(10)/100-0.05;bluer=rnd(10)/100-0.05;rxo=getosc(0.5,0.02,0)/15;ryo=getosc(0.3,0.02,0)/15;rzo=-abs(getosc(0.7,0.02,0)/4)-0.05; flash = 1
[point] [point]
k=getspec(i*80*n%n/n,1/n,0); seg = floor(i * segs)
r=i*pi*2;d=getspec(.3,0,1)+.25+k; si = frac(i * segs)
x1=cos(r*4)*d; a0 = si * 6.28318 / segs + rot
y1=sin(r)*d*cos(i*99); amp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06
z1=cos(r)*d*sin(i*99); rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2))
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
x1d=x1*cz-y1*sz; x = sin(a) * rad / aspect
y1d=x1*sz+y1*cz; y = cos(a) * rad
y2d=y1d*cx-z1*sx; red = 0.3 + amp * 1.3 * abs(sin(seg * 0.8))
z2d=y1d*sx+z1*cx; green = 0.3 + amp * 1.3 * 0.22
x3d=x1d*cy-z2d*sy; blue = 0.3 + amp * 1.3 * abs(cos(seg * 0.8))
z3d=x1d*sy+z2d*cy; skip = if(above(si, 0.96), 1, 0)
zi=1/(z3d+3);
x=if(above(z3d+3,0.1),x3d*zi,x)*xasp-xm;
y=if(above(z3d+3,0.1),y2d*zi,y)*yasp-ym;
alpha=if(below(z3d+2.4,0),0,1);
red=alpha*(1+k)/(3+sin(redf))*(1-z3d);
blue=alpha*k/(4+sin(bluef))*(1-z3d);
green=alpha*k/(3+sin(greenf))*(1-z3d);

View file

@ -1,25 +1,23 @@
name: "miraculous flow (nemo remix)" name: "miraculous flow (nemo remix)"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.91
linewidth: 1.6 linewidth: 1.628
[init] [init]
n = 1100 n = 981
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) t = t + dt * (0.579 + bass_att * 0.8)
hue = hue + dt * 0.08 + beat * 0.01 sway = sway + dt * (0.5 + treb)
hue = hue + dt * 0.122
[point] [point]
arm = floor(i * 5) a = i * 6.28318 * 3
fa = frac(i * 5) wob = sin(a * 6 + t * 2) * (0.08 + treb * 0.3)
d = fa rad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.202 - wob
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t x = sin(a) * rad / aspect
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) y = cos(a) * rad
x = sin(ang) * rad / aspect red = min(1, 0.3 + abs(v) * 1.2 * 1.3)
y = cos(ang) * rad green = 0.3 + abs(v) * 1.2 * 0.5
red = (0.3 + 0.7 * d) * (0.3 + bass) blue = 0.3 + abs(v) * 1.2 * 0.12
green = (0.3 + 0.7 * d) * (0.25 + mid)
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2)
skip = if(below(fa, 0.04), 1, 0)

View file

@ -1,25 +1,27 @@
name: "warm freeform (mykal remix)" name: "warm freeform (mykal remix)"
mode: dots mode: dots
blend: additive blend: additive
persist: 0.82 persist: 0.898
linewidth: 2.5 linewidth: 1.303
[init] [init]
n = 850 spokes = 32
n = spokes * 37
[frame] [frame]
travel = travel + dt * (0.2 + vol_att * 1.6) rot = rot + dt * (0.135 + mid * 0.4)
hue = hue + dt * 0.05 t = t + dt * 2.906
hue = hue + dt * 0.077
[point] [point]
a = rand(i * 7.3) * 6.28318 sp = floor(i * spokes)
z = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7)) si = frac(i * spokes)
rad = z * z * 1.1 a = sp * 6.28318 / spokes + rot
wave = sin(si * 3 * 3.14159 - t) * (0.03 + bass * 0.28)
rad = 0.12 + si * 0.868 + wave
x = sin(a) * rad / aspect x = sin(a) * rad / aspect
y = cos(a) * rad y = cos(a) * rad
tw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb) red = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(sin(sp * 0.4))
red = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3)) green = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.22
green = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 2.09)) blue = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(cos(sp * 0.4))
blue = tw * (0.5 + 0.5 * sin(hue * 6.28318 + i * 3 + 4.19)) skip = if(above(si, 0.985), 1, 0)
size = 1 + z * 3 * (0.5 + bass)
skip = if(above(z, 0.97), 1, 0)

View file

@ -1,29 +1,22 @@
name: "pleasure point (duo remix)" name: "pleasure point (duo remix)"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.87
linewidth: 2 linewidth: 1.808
[init] [init]
n = 720 n = 856
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) t = t + dt * 0.572
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.036
[beat]
flash = 1
[point] [point]
g = floor(i * 9) ph = i * 6.28318 * 2.087
gi = frac(i * 9) fa = 2 + mid * 0.35
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) fb = 7 + bass * 0.45
a = gi * 6.28318 x = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) y = sin(ph * fb + t * 1.3 + 1.499) * (0.5 + treb * 0.35)
x = sin(a) * rad / aspect red = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.3
y = cos(a) * rad green = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.65
fade = sin(ph * 3.14159) blue = min(1, 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 1.3)
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7))
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09))
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19))
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,29 +1,23 @@
name: "heart dynamics (duo's high dose mix)" name: "heart dynamics (duo's high dose mix)"
mode: dots mode: lines
blend: additive blend: additive
persist: 0.78 persist: 0.909
linewidth: 2.5 linewidth: 1.819
[init] [init]
cols = 36 n = 1105
n = cols * cols
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) t = t + dt * (0.35 + bass_att * 0.8)
hue = hue + dt * (0.04 + treb * 0.1) sway = sway + dt * (0.5 + treb)
hue = hue + dt * 0.091
[point] [point]
cx = floor(i * cols) / (cols - 1) a = i * 6.28318 * 3
cy = frac(i * cols) wob = sin(a * 5 + t * 2) * (0.08 + treb * 0.3)
h = sv * 0.35 rad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.184 - wob
ux = (cx - 0.5) * 1.6 x = sin(a) * rad / aspect
uy = (cy - 0.5) * 1.6 y = cos(a) * rad
rx = ux * cos(rot) - uy * sin(rot) red = 0.3 + abs(v) * 1.2 * abs(sin(a * 0.5))
ry = ux * sin(rot) + uy * cos(rot) green = 0.3 + abs(v) * 1.2 * 0.22
x = (rx / aspect) * (1 - h * 0.7) blue = 0.3 + abs(v) * 1.2 * abs(cos(a * 0.5))
y = ry * (1 - h * 0.7)
lum = 0.25 + h * 2.2
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,29 +1,24 @@
name: "we build here (duo's building blocks remix)" name: "we build here (duo's building blocks remix)"
mode: dots mode: dots
blend: additive blend: additive
persist: 0.78 persist: 0.739
linewidth: 2.5 linewidth: 2.311
[init] [init]
cols = 36 n = 1183
n = cols * cols
[frame] [frame]
rot = rot + dt * (0.05 + mid * 0.4) t = t + dt * 0.515
hue = hue + dt * (0.04 + treb * 0.1) hue = hue + dt * 0.134
[point] [point]
cx = floor(i * cols) / (cols - 1) u = rand(i * 1.7) * 2 - 1
cy = frac(i * cols) w = rand(i * 3.3 + 11) * 2 - 1
h = sv * 0.35 m = sin((u * 6.135 + w * 2.876 + t) * 3.14159) * sin((u * 3.312 - w * 5.365 - t * 0.7) * 3.14159)
ux = (cx - 0.5) * 1.6 x = u * 0.99 / aspect
uy = (cy - 0.5) * 1.6 y = w * 0.98
rx = ux * cos(rot) - uy * sin(rot) lum = max(0, m) * (0.3 + bass * 0.9) + 0.06
ry = ux * sin(rot) + uy * cos(rot) red = min(1, lum * 1.3)
x = (rx / aspect) * (1 - h * 0.7) green = lum * 0.5
y = ry * (1 - h * 0.7) blue = lum * 0.12
lum = 0.25 + h * 2.2 size = 1 + abs(m) * 3.466
red = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3))
green = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 2.09))
blue = lum * (0.6 + 0.4 * sin(hue * 6.28318 + cx * 3 + 4.19))
size = 1.2 + h * 5

View file

@ -1,29 +1,24 @@
name: "wickedjunglesmassive (yathosho's cartographic re-rub)" name: "wickedjunglesmassive (yathosho's cartographic re-rub)"
mode: lines mode: dots
blend: additive blend: additive
persist: 0.88 persist: 0.805
linewidth: 2 linewidth: 1.835
[init] [init]
n = 720 n = 1292
[frame] [frame]
hue = hue + dt * (0.06 + mid * 0.2) t = t + dt * 0.675
travel = travel + dt * (0.3 + bass_att * 1.4) hue = hue + dt * 0.035
[beat]
flash = 1
[point] [point]
g = floor(i * 9) u = rand(i * 1.7) * 2 - 1
gi = frac(i * 9) w = rand(i * 3.3 + 11) * 2 - 1
ph = frac(rand(g * 5.1 + 1) + travel * (0.6 + rand(g + 17) * 0.8)) m = sin((u * 3.6 + w * 6.394 + t) * 3.14159) * sin((u * 5.053 - w * 4.781 - t * 0.7) * 3.14159)
a = gi * 6.28318 x = u * 0.897 / aspect
rad = ph * (0.25 + bass * 0.6 + flash * 0.08) y = w * 0.959
x = sin(a) * rad / aspect lum = max(0, m) * (0.3 + bass * 0.9) + 0.06
y = cos(a) * rad red = lum * (0.45 + 0.55 * sin(hue * 6.28318 + u * 4.308))
fade = sin(ph * 3.14159) green = lum * (0.45 + 0.55 * sin(hue * 6.28318 + u * 4.308 + 2.09))
red = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7)) blue = lum * (0.45 + 0.55 * sin(hue * 6.28318 + u * 4.308 + 4.19))
green = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 2.09)) size = 1 + abs(m) * 2.706
blue = fade * (0.3 + 0.7 * sin(hue * 6.28318 + g * 0.7 + 4.19))
skip = if(above(ph, 0.95), 1, 0)

View file

@ -1,25 +1,31 @@
# Auto-ported from "13 skupers - why i love you (duo's pulsedriver remix).avs" (Winamp AVS / skupers)
# SuperScope point program, 4 AVSTrans macros expanded.
name: "why i love you (duo's pulsedriver remix)" name: "why i love you (duo's pulsedriver remix)"
author: "skupers"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.88 persist: 0.843
linewidth: 2 linewidth: 1.547
ysign: -1
[init] [init]
n=10;pi=acos(-1); segs = 8
n = 528
[frame] [frame]
t=t-t1;t1=t1*0.9+getspec(0.05,0,0)*0.1 rot = rot + dt * (0.074 + mid_att * 0.5)
hue = hue + dt * 0.052
flash = flash * 0.85
[beat] [beat]
flash = 1 flash = 1
[point] [point]
y=i*2.1-1.05;x=0; seg = floor(i * segs)
col=i; si = frac(i * segs)
red=col; a0 = si * 6.28318 / segs + rot
green=col*.6; amp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06
blue=0; rad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2))
a = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)
x = sin(a) * rad / aspect
y = cos(a) * rad
red = 0.3 + amp * 1.3 * 0.85
green = 0.3 + amp * 1.3 * 0.92
blue = 0.3 + amp * 1.3
skip = if(above(si, 0.96), 1, 0)

View file

@ -1,33 +1,22 @@
# Auto-ported from "14 duo - conjuring sands (skupers remix - edit).avs" (Winamp AVS / duo)
# Texer II point program, 4 AVSTrans macros expanded.
name: "conjuring sands (skupers remix - edit)" name: "conjuring sands (skupers remix - edit)"
author: "duo" mode: lines
mode: dots
blend: additive blend: additive
persist: 0.78 persist: 0.922
linewidth: 3 linewidth: 2.216
ysign: -1
[init] [init]
n=15; n = 874
[frame] [frame]
pfx=pfx+pbx; pfy=pfy+pby; pfz=pfz+pbz; xs=sin(pfx); xc=cos(pfx); ys=sin(pfy); yc=cos(pfy); zs=sin(pfz); zc=cos(pfz); t = t + dt * 0.211
hue = hue + dt * 0.039
[beat]
pbx=rnd(10)/70; pby=rnd(10)/70; pbz=rnd(10)/70;
[point] [point]
c=i*(3.14159265358979)*15; ph = i * 6.28318 * 2.729
x1=cos(c); fa = 6 + mid * 0.35
y1=i*2-1; fb = 5 + bass * 0.45
z1=sin(c); x = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect
x2=x1*xs-y1*xc; y = sin(ph * fb + t * 1.3 + 1.092) * (0.5 + treb * 0.35)
y2=y1*xs+x1*xc; red = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * abs(sin(ph * 0.5))
z2=z1*ys-y2*yc; green = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.22
x3=y2*ys+z1*yc; blue = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * abs(cos(ph * 0.5))
y3=x2*zs-z2*zc;
z3=z2*zs+x2*zc+3.5;
x=x3/z3;
y=y3/z3;
red=v*3; green=v*3; blue=v*3;

View file

@ -1,25 +1,30 @@
name: "warm freeform (ya-tho-sho treatment)" name: "warm freeform (ya-tho-sho treatment)"
mode: lines mode: lines
blend: additive blend: additive
persist: 0.9 persist: 0.855
linewidth: 1.6 linewidth: 1.459
[init] [init]
n = 1100 n = 572
[frame] [frame]
t = t + dt * (0.3 + bass_att * 1.8) hue = hue + dt * 0.129 + beat * 0.01
hue = hue + dt * 0.08 + beat * 0.01 travel = travel + dt * (0.44 + bass_att * 1.4)
flash = flash * 0.86
[beat]
flash = 1
[point] [point]
arm = floor(i * 5) g = floor(i * 13)
fa = frac(i * 5) gi = frac(i * 13)
d = fa ph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))
ang = arm * 1.2566 + d * (1.4 + mid * 3) * 3.14159 + t a = gi * 6.28318
rad = (0.05 + d * d * 1.15) * (0.7 + bass * 0.5) rad = ph * (0.305 + bass * 0.472 + flash * 0.08)
x = sin(ang) * rad / aspect x = sin(a) * rad / aspect
y = cos(ang) * rad y = cos(a) * rad
red = (0.3 + 0.7 * d) * (0.3 + bass) fade = sin(ph * 3.14159)
green = (0.3 + 0.7 * d) * (0.25 + mid) red = fade * (0.35 + flash * 0.4) * 0.85
blue = (0.3 + 0.7 * d) * (0.2 + treb + hue * 0.2) green = fade * (0.35 + flash * 0.4) * 0.92
skip = if(below(fa, 0.04), 1, 0) blue = fade * (0.35 + flash * 0.4)
skip = if(above(ph, 0.96), 1, 0)

View file

@ -764,3 +764,70 @@ Stage Summary:
on every large change; the stamp renders bottom-right of the footer and the on every large change; the stamp renders bottom-right of the footer and the
document title carries it too. Users can name local backups by the stamp document title carries it too. Users can name local backups by the stamp
(e.g. "OVE v6.0") and cross-check against z.ai Version History. (e.g. "OVE v6.0") and cross-check against z.ai Version History.
---
Task ID: 14
Agent: main (Z.ai Code)
Task: v6.1 — preset library quality pass: every embedded stand-in is now a
UNIQUE visual (user reported "Containment" and "Dragonscales" look identical)
Root cause:
- The old converter had only 6 fixed fallback templates chosen by
seed % 6, so 76 of 90 embedded presets collapsed into 6 identical visuals
(19×swirl, 16×pulse-rings, 14×starfield, 12×lattice, 10×kaleido, 5×tunnel);
library-wide only 25 of 95 distinct script bodies.
Work Log:
- tools/convert-avs.ts — REPLACED the fallback generator:
* 16 geometric families (pulse rings, tunnel, starfield, lattice, swirl,
kaleido, lissajous, spectrum bars, moire, fountain, rose, orbits, ribbon,
web, rain, helix), each parameterized.
* 6 palettes (rainbow / fire / ice / neon-band / mono / duotone).
* Every numeric parameter drawn from mulberry32 seeded by hashStr(preset
name) — same name regenerates the same visual forever; different names
always differ (counts, speeds, twists, couplings, widths, persistence).
* Family chosen from the original's unportable components (BlitterFeedback
→ tunnel/kaleido/moire, Movement → swirl/ribbon/web, Mirror → kaleido,
DotFountain → fountain, …) + guaranteed full 16-family rotation per run
(unused-families first) + 25% wild card.
* Every generated fallback is smoke-tested; a known-good safeFallback is
the last resort (never emits a broken script).
* Fixed during regen: getspec() needs 3 args (spectrum family); tiny-n
guard (ported scopes rendering <16 points now also become stand-ins —
5 more presets rescued); folder path no longer double-prefixed
("root/embedded/root/embedded/…" → clean at the source); same-path
copyFileSync guard so the converter can re-run in place.
- Regenerated src/lib/ava/embedded-presets.ts from public/avs-originals/
embedded/ (90 presets: 9 ported original-code + 81 unique stand-ins; all
16 families used, max 9 presets per family, 90/90 distinct bodies).
- prisma/schema.prisma — Preset.approx Boolean (marks stand-ins), Settings.
embeddedSeed String? (seed-version marker). db push + client regenerated;
dev server restarted once to pick up the new client.
- GET /api/presets — ensureSeeded is now VERSION-GATED: when Settings.
embeddedSeed !== EMBEDDED_SEED_VERSION ('6.1', exported from
embedded-presets.ts), the root/embedded subtree + stray built-ins are
deleted and re-seeded from BUILTIN + EMBEDDED (user presets untouched).
Future library regenerations propagate automatically on next request.
Response now includes approx per preset.
- src/lib/store.ts — PresetItem.approx?: boolean.
- src/components/ava/presets-tab.tsx — amber "≈" badge on tree rows for
approx presets (tooltip explains: original relies on effects the script
engine can't run; uniquely generated stand-in).
- src/lib/version.ts — APP_VERSION '6.1'.
- VERIFIED: API re-seed → 95 presets / 7 folders, 81 approx + 14 original
code, 95/95 distinct bodies, Containment ≠ Dragonscales (different
families + parameters); VLM image comparison of live screenshots confirms
clearly different visuals (organic single loop vs woven orbital knot);
Kingish (594 pts) renders; ≈ badges (60 of 66 Amp Picks rows); Randomize
over root scope switches presets at 3 s (Kingish → Plankton); export zip
66 entries with clean paths; zero console/page errors; lint clean.
Stage Summary:
- Every embedded preset is now visually unique (95/95 distinct bodies).
- Honesty layer: approx stand-ins are badged "≈" in the tree; descriptions
name the generated family; the original .avs download remains one click.
- Regeneration pipeline: bun tools/convert-avs.ts public/avs-originals/
embedded → bump SEED_VERSION in the converter → DB refreshes itself via
the embeddedSeed marker on the next GET /api/presets.
- 9 error files (parser "out of bytes") remain excluded — parser hardening
is future work if those originals matter.