diff --git a/db/custom.db b/db/custom.db index a9fd39d..fc48a15 100755 Binary files a/db/custom.db and b/db/custom.db differ diff --git a/src/components/ava/help-panel.tsx b/src/components/ava/help-panel.tsx index 468aa21..d008bc2 100755 --- a/src/components/ava/help-panel.tsx +++ b/src/components/ava/help-panel.tsx @@ -23,6 +23,9 @@ const FRAME_VARS: [string, string][] = [ ['w / h', 'canvas size in pixels'], ['aspect', 'canvas width / height -- divide x by it for perfect circles'], ['persist', 'motion-trail persistence 0..0.98 (writable per frame)'], + ['bgrot', 'background spin in radians per frame -- + clockwise, - counter-clockwise; 0 = off (set in [init] / [frame] / [beat]; persists like any variable)'], + ['bgx / bgy', 'background drift per frame, the -1..1 screen convention (y is up) -- slide the whole picture up, down, left or right'], + ['bgzoom', 'background scale per frame -- below 1 draw-in (shrinks toward the center), above 1 blow-out (expands); 1 = off'], ] const POINT_VARS: [string, string][] = [ @@ -62,6 +65,9 @@ const EXAMPLES: [string, string][] = [ ['rot = rot + dt * 1.2 + beat * 0.4', 'beat kick'], ['ang = rand(i) * 6.28318', 'stable per-point random'], ['x = sin(i * 6.28318 + t) * rad / aspect', 'circle'], + ['bgrot = dir * (0.004 + exp(-beatage * 3) * 0.02)', 'the background spins to the music -- every beat accelerates it, then it relaxes (slow persist blends the trails)'], + ['if(above(bass, bass_att * 1.25), dir = -dir, 0)', 'a hard hit flips the background spin direction -- put this in [beat]'], + ['bgzoom = 1 - 0.001', 'draw-in -- the picture slowly spirals toward the center'], ] function HelpTable({ rows, mono = true }: { rows: [string, string][]; mono?: boolean }) { diff --git a/src/lib/ava/embedded-presets.ts b/src/lib/ava/embedded-presets.ts index 4a68d4f..87ff444 100755 --- a/src/lib/ava/embedded-presets.ts +++ b/src/lib/ava/embedded-presets.ts @@ -7,16 +7,18 @@ // for originals that rely on effects the script engine cannot run. // // The "Zai-Magic" folder at the END of EMBEDDED_LIBRARY is the exception to -// "do not edit": ten presets HAND-AUTHORED for this engine (v7.00) to show -// off beat-synced color — they use hsvr/hsvg/hsvb, beatage, megabuf particle -// physics, getspec() and loop(). If the converter ever regenerates this -// file, keep that section verbatim. +// "do not edit": eleven presets HAND-AUTHORED for this engine (v7.00 + the +// v7.12 osc-rotations addition) to show off beat-synced color and the v7.12 +// background transform -- they use hsvr/hsvg/hsvb, beatage, megabuf particle +// physics, getspec(), loop() and the bg* framebuffer controls. If the +// converter ever regenerates this file, keep that section verbatim. // // EMBEDDED_SEED_VERSION: bump whenever this library is regenerated — the // GET /api/presets route re-seeds the root/embedded subtree when it changes -// (v7.10: em dashes in descriptions/script comments replaced with '--'). +// (v7.10: em dashes in descriptions/script comments replaced with '--'; +// v7.12: eleventh Zai-Magic preset "osc-rotations" added). -export const EMBEDDED_SEED_VERSION = '7.10' +export const EMBEDDED_SEED_VERSION = '7.12' export interface EmbeddedPreset { folder: string @@ -842,11 +844,13 @@ export const EMBEDDED_LIBRARY: EmbeddedPreset[] = [ }, // ========================================================================== - // Zai-Magic — ten presets hand-authored for this engine (v7.00). - // Every one is built around BEAT-SYNCED COLOR: the color wheel turns on - // the kick, palettes swap per beat or per 4-beat bar, and kick envelopes - // (beatage) drive brightness. Techniques span all three render modes, - // megabuf particle physics, direct getspec() calls and loop() setup. + // Zai-Magic — eleven presets hand-authored for this engine (v7.00; the + // eleventh, "osc-rotations", shipped with v7.12). Every one is built around + // BEAT-SYNCED COLOR: the color wheel turns on the kick, palettes swap per + // beat or per 4-beat bar, and kick envelopes (beatage) drive brightness; + // osc-rotations adds the v7.12 background transform (bgrot/bgzoom) to the + // toolkit. Techniques span all three render modes, megabuf particle + // physics, direct getspec() calls and loop() setup. // KEEP VERBATIM when regenerating this file with the converter. // ========================================================================== { @@ -1314,6 +1318,46 @@ red = hsvr(hue, sat, lum + flash * lit * 0.55) green = hsvg(hue, sat, lum + flash * lit * 0.55) blue = hsvb(hue, sat, lum + flash * lit * 0.55) size = 2.4 + lit * 1.7 + treb * 1.2 +`, + }, + { + folder: "root/embedded/Zai-Magic", + name: "osc-rotations", + author: "Zai", + description: + "A stationary centered oscilloscope over a background that rotates to the music -- every beat temporarily accelerates the spin, a hard hit flips it between clockwise and counter-clockwise, and the fade to black stays slow so the colors blend. The left and right points of the line color-shift together while the center points hold their own hue. Hand-authored for OVE (v7.12 background transform + mirror-symmetric hsv color).", + content: `name: "osc-rotations" +author: "Zai" +mode: lines +blend: additive +persist: 0.965 +linewidth: 2.2 + +[init] +n = 512 +hue = 0.58 +dir = 1 + +[frame] +punch = exp(-beatage * 3.2) +bgrot = dir * (0.0032 + punch * (0.014 + vol_att * 0.012)) +bgzoom = 1 - 0.0009 - punch * 0.0011 +hue = frac(hue + dt * 0.012 + beat * 0.02) + +[beat] +if(above(bass, bass_att * 1.25), dir = -dir, 0) + +[point] +x = i * 2 - 1 +y = v * (0.3 + vol_att * 0.8) +d = abs(i - 0.5) * 2 +h = hue + d * 0.34 +lum = 0.5 + 0.38 * vol_att + punch * 0.22 +red = hsvr(h, 0.95, lum) +green = hsvg(h, 0.95, lum) +blue = hsvb(h, 0.95, lum) +size = 2 + punch * 1.6 +alpha = 0.92 `, }, ] diff --git a/src/lib/ava/engine.ts b/src/lib/ava/engine.ts index 018abbd..2f9c779 100755 --- a/src/lib/ava/engine.ts +++ b/src/lib/ava/engine.ts @@ -16,6 +16,15 @@ import { DEFAULT_BAND_CONFIG, DEFAULT_BEAT_CONFIG } from './types' const MAX_POINTS = 8192 const POINT_STRIDE = 8 // x, y, red, green, blue, skip, size, alpha +/** Read a script bg* control value. Non-finite (NaN / Infinity from a bad + * script computation) and missing values fall back to the neutral value -- + * a NaN must never reach a canvas transform (it poisons the matrix and every + * later draw becomes a silent no-op: a black screen with no error). */ +function bgNum(v: number | undefined, neutral: number): number { + const x = typeof v === 'number' ? v : neutral + return Number.isFinite(x) ? x : neutral +} + export interface EngineStats { fps: number levels: BandLevels @@ -54,6 +63,12 @@ export class AvaEngine { /** ctx.filter support (older Safari lacks it → plain crossfade fallback). */ private canFilter = false + /** v7.12 background-feedback buffer. Same pixel size as the live canvas; + * recreated automatically on resize. Null until a script first asks for a + * background transform (zero cost for every preset that doesn't). */ + private bgBuffer: HTMLCanvasElement | null = null + private bgBufCtx: CanvasRenderingContext2D | null = null + constructor() { // AVS-eel compatibility hooks — the expression engine reads audio/time // through these (getspec/getosc/gettime). Headless tests can override. @@ -141,6 +156,60 @@ export class AvaEngine { return this.script?.meta.name ?? '--' } + /** + * v7.12 — background feedback transform (the AVS movement family). + * + * The whole framebuffer is moved BEFORE this frame's points are drawn: + * 1. snapshot the live canvas into the offscreen buffer; + * 2. wipe the canvas black; + * 3. draw the snapshot back through the frame's transform. + * + * bgrot radians per frame — + rotates the picture CLOCKWISE on screen + * (canvas y is down, so ctx.rotate(+θ) spins cw); - = ccw. + * bgx/bgy drift per frame in the -1..1 screen convention (y is UP, + * matching script x/y) — slide up, down, left, right. + * bgzoom per-frame scale — <1 draw-in (shrinks toward center), + * >1 blow-out (expands outward); 1 = neutral. + * + * Uncovered regions (rotated corners, slid-off edges) read black, and the + * persistence fade (persist header / env.persist) blends the trails — + * which is exactly how the classic AVS plugins made "speed accelerates to + * the beat, a hard hit flips the spin, fade to black stays slow" work: + * the rate is just a script variable driven by beatage envelopes, and a + * [beat] section flips the sign on a hard hit (bass vs bass_att). + */ + private applyBackground(w: number, h: number, rot: number, tx: number, ty: number, zoom: number): void { + const canvas = this.canvas + const ctx = this.ctx + if (!canvas || !ctx) return + if (!this.bgBuffer || this.bgBuffer.width !== w || this.bgBuffer.height !== h) { + const buf = document.createElement('canvas') + buf.width = w + buf.height = h + this.bgBuffer = buf + this.bgBufCtx = buf.getContext('2d') + } + const bctx = this.bgBufCtx + if (!bctx || !this.bgBuffer) return + // 1. snapshot the live canvas ('copy' replaces the buffer wholesale) + bctx.globalCompositeOperation = 'copy' + bctx.drawImage(canvas, 0, 0) + // 2. wipe — the transformed snapshot must REPLACE the old content, not + // double-expose over it + ctx.globalCompositeOperation = 'source-over' + ctx.fillStyle = '#000' + ctx.fillRect(0, 0, w, h) + // 3. draw the snapshot back through this frame's transform. Screen y is + // down; script y is up — bgy > 0 moves the picture UP. + ctx.save() + ctx.imageSmoothingEnabled = true + ctx.translate(w / 2 + tx * (w / 2), h / 2 - ty * (h / 2)) + if (rot !== 0) ctx.rotate(rot) + if (zoom !== 1) ctx.scale(zoom, zoom) + ctx.drawImage(this.bgBuffer, -w / 2, -h / 2) + ctx.restore() + } + private resize(): void { if (!this.canvas) return const parent = this.canvas.parentElement @@ -227,6 +296,20 @@ export class AvaEngine { } catch (err) { this.scriptError = `runtime error: ${String(err)}` } + + // ---- background feedback transform (v7.12) -------------------------- + // AVS-style whole-framebuffer movement, read AFTER [frame]/[beat] ran + // so this frame's values apply this frame. Set from [init] (persists + // forever), [frame] or [beat] (every frame / on the kick). Values live + // in env like any variable: a script that sets them only on beats gets + // on-beat jumps. Neutral readings skip the pass entirely. + const bgRot = Math.max(-0.6, Math.min(0.6, bgNum(env.bgrot, 0))) + const bgX = Math.max(-0.25, Math.min(0.25, bgNum(env.bgx, 0))) + const bgY = Math.max(-0.25, Math.min(0.25, bgNum(env.bgy, 0))) + const bgZoom = Math.max(0.5, Math.min(2, bgNum(env.bgzoom, 1))) + if (bgRot !== 0 || bgX !== 0 || bgY !== 0 || bgZoom !== 1) { + this.applyBackground(w, h, bgRot, bgX, bgY, bgZoom) + } } // ---- point evaluation --------------------------------------------------- diff --git a/src/lib/release-notes.ts b/src/lib/release-notes.ts index 289fb5d..1b610cd 100755 --- a/src/lib/release-notes.ts +++ b/src/lib/release-notes.ts @@ -39,6 +39,20 @@ export interface ReleaseNote { } export const RELEASE_NOTES: ReleaseNote[] = [ + { + version: '7.12', + name: 'Background movement (AVS-style) + osc-rotations', + changes: [ + { + kind: 'added', + text: 'Scripts can move the whole picture now: bgrot spins the background clockwise or counter-clockwise, bgx / bgy slide it up, down, left or right, and bgzoom draws it in or blows it out -- the movement family the classic Winamp AVS plugins were built on. The speed can ride the music: accelerate on every beat, flip the spin direction on a hard hit, and let a slow fade to black blend the colors. All four variables are documented in the script editor\'s help panel.', + }, + { + kind: 'added', + text: 'I added an eleventh Zai-Magic preset: "osc-rotations" -- a stationary centered oscilloscope whose left and right points color-shift together while the center points hold their own hue, over a background that rotates clockwise and counter-clockwise to the music and temporarily accelerates with the beat. Hard hits flip the spin; the fade stays slow so the colors blend.', + }, + ], + }, { version: '7.11', name: 'Wake lock, a respectful Demo, one-click save', diff --git a/src/lib/version.ts b/src/lib/version.ts index dd60e90..cf15619 100755 --- a/src/lib/version.ts +++ b/src/lib/version.ts @@ -12,6 +12,40 @@ // warns in the console when the two drift apart. // // History: +// 7.12 — background movement + osc-rotations. Scripts can now move the +// whole framebuffer every frame, the way the classic Winamp AVS +// plugins did: bgrot (radians/frame, + clockwise on screen), +// bgx / bgy (per-frame drift in the -1..1 screen convention, y +// up), bgzoom (< 1 draw-in, > 1 blow-out) -- read after [frame]/ +// [beat] so this frame's values apply this frame. The engine +// snapshots the canvas into an offscreen buffer, wipes, and +// draws the snapshot back through the transform, so the +// persistence fade blends the moving trails: "speed accelerates +// to the beat, a hard hit flips the spin, fade to black stays +// slow" is pure script (a beatage envelope drives the rate; a +// [beat] section flips a dir variable on hard hits via bass vs +// bass_att). Neutral readings (0/0/0/1) skip the pass entirely +// (zero cost for every preset that doesn't move); non-finite +// values fall back to neutral (a NaN in a canvas transform +// matrix would black the screen with no error); per-frame +// clamps: rot ±0.6 rad, drift ±0.25, zoom 0.5..2. New 11th +// Zai-Magic preset "osc-rotations" (user-requested): a +// stationary centered oscilloscope (time-domain v) whose color +// is mirror-symmetric -- points equidistant left/right of +// center shift together, the center points hold their own hue +// -- over a background rotating cw/ccw to the music that +// temporarily accelerates on the beat; hard hits +// (bass > 1.25 × bass_att) flip the spin; a whisper of draw-in +// (bgzoom ~0.999) spirals the trails inward; persist 0.965 +// keeps the fade slow so colors blend. Help panel: bg* variable +// rows + three new example formulas. EMBEDDED_SEED_VERSION +// 7.10 -> 7.12 (library re-seed adds the preset; the share +// codec's dictionary stays frozen per its compatibility +// contract -- bg* identifiers ride the pair packing like any +// custom variable). Headless validation of the preset's +// compiled programs: quiet 0.004 rad/frame, hard beat 0.026 +// (6.5×) + direction flip, soft beat no flip, mirrored points +// share hue / center distinct // 7.11 — wake lock, a respectful Demo button, one-click save. While any // audio source is live the site holds a Screen Wake Lock so phone // and tablet screens stay on (released the moment the engine goes @@ -340,4 +374,4 @@ export const APP_NAME = 'Open Visualization Engine' export const APP_SHORT = 'OVE' -export const APP_VERSION = '7.11' +export const APP_VERSION = '7.12' diff --git a/tool-results/osc12-1-preset-live.png b/tool-results/osc12-1-preset-live.png new file mode 100644 index 0000000..8011fc1 Binary files /dev/null and b/tool-results/osc12-1-preset-live.png differ diff --git a/tool-results/osc12-2-rot-test.png b/tool-results/osc12-2-rot-test.png new file mode 100644 index 0000000..dfcfcc4 Binary files /dev/null and b/tool-results/osc12-2-rot-test.png differ diff --git a/tool-results/osc12-3-final-live.png b/tool-results/osc12-3-final-live.png new file mode 100644 index 0000000..5bc9342 Binary files /dev/null and b/tool-results/osc12-3-final-live.png differ diff --git a/tool-results/osc12-4-mobile.png b/tool-results/osc12-4-mobile.png new file mode 100644 index 0000000..3f48eeb Binary files /dev/null and b/tool-results/osc12-4-mobile.png differ diff --git a/tool-results/read_1793835734103_a615e8778496.txt b/tool-results/read_1793835734103_a615e8778496.txt new file mode 100644 index 0000000..cb6cf6b --- /dev/null +++ b/tool-results/read_1793835734103_a615e8778496.txt @@ -0,0 +1,1320 @@ + 1→// AVA — embedded preset library (AUTO-GENERATED by tools/convert-avs.ts — do not edit) + 2→// + 3→// 90 Winamp AVS presets from the user's Google Drive collection, + 4→// auto-ported to the AVA script dialect by the converter. Ported presets run + 5→// the original SuperScope / Texer II code (machine-translated); approx + 6→// presets are UNIQUE generated stand-ins (16 families × seeded parameters) + 7→// for originals that rely on effects the script engine cannot run. + 8→// + 9→// The "Zai-Magic" folder at the END of EMBEDDED_LIBRARY is the exception to + 10→// "do not edit": ten presets HAND-AUTHORED for this engine (v7.00) to show + 11→// off beat-synced color — they use hsvr/hsvg/hsvb, beatage, megabuf particle + 12→// physics, getspec() and loop(). If the converter ever regenerates this + 13→// file, keep that section verbatim. + 14→// + 15→// EMBEDDED_SEED_VERSION: bump whenever this library is regenerated — the + 16→// GET /api/presets route re-seeds the root/embedded subtree when it changes + 17→// (v7.10: em dashes in descriptions/script comments replaced with '--'). + 18→ + 19→export const EMBEDDED_SEED_VERSION = '7.10' + 20→ + 21→export interface EmbeddedPreset { + 22→ folder: string + 23→ name: string + 24→ author: string + 25→ description: string + 26→ originalFile?: string + 27→ content: string + 28→ /** true = generated stand-in (original relies on unportable effects). */ + 29→ approx?: boolean + 30→} + 31→ + 32→export const EMBEDDED_LIBRARY: EmbeddedPreset[] = [ + 33→ { + 34→ folder: "root/embedded/Amp Picks", + 35→ name: "Life Is Violated", + 36→ author: "D&L", + 37→ description: "Auto-ported from the Winamp AVS preset \"D&L - Life Is Violated.avs\" by D&L. Original superscope code, machine-translated to the AVA script dialect.", + 38→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/D&L - Life Is Violated.avs", + 39→ approx: false, + 40→ content: "# Auto-ported from \"D&L - Life Is Violated.avs\" (Winamp AVS / D&L)\n# SuperScope point program, 4 AVSTrans macros expanded.\nname: \"Life Is Violated\"\nauthor: \"D&L\"\nmode: lines\nblend: additive\npersist: 0.88\nlinewidth: 2\nysign: -1\n\n[init]\nn=800;xa=-0.5;ya=0.0;xb=-0.0;yb=0.75;c=200;f=0;\r\nnxa=(rnd(100)-50)*.02;nya=(rnd(100)-50)*.02;\r\nnxb=(rnd(100)-50)*.02;nyb=(rnd(100)-50)*.02;\n\n[frame]\nf=f+1;\r\nt=1-((cos((f*3.1415)/c)+1)*.5);\r\nxa=((nxa-lxa)*t)+lxa;\r\nya=((nya-lya)*t)+lya;\r\nxb=((nxb-lxb)*t)+lxb;\r\nyb=((nyb-lyb)*t)+lyb;\r\nex=(xb-xa);\r\ney=(yb-ya);\r\nd=sqrt(sqr(ex)+sqr(ey));\r\nr=atan(ey/ex)+(3.1415/2);\r\ndv=d*2\n\n[beat]\nc=f;\r\nf=0;\r\nlxa=nxa;\r\nlya=nya;\r\nlxb=nxb;\r\nlyb=nyb;\r\nnxa=(rnd(100)-50)*.02;\r\nnya=(rnd(100)-50)*.02;\r\nnxb=(rnd(100)-50)*.02;\r\nnyb=(rnd(100)-50)*.02\n\n[point]\n//primary render\r\nx=(ex*i)+xa;\r\ny=(ey*i)+ya;\r\n\r\n//volume offset\r\nx=x+ ( cos(r) * v * dv);\r\ny=y+ ( sin(r) * v * dv);\r\n\r\n//color values\r\nred=i;\r\ngreen=(1-i);\r\nblue=abs(v*6);\n", + 41→ }, + 42→ { + 43→ folder: "root/embedded/Amp Picks", + 44→ name: "Retrowall (Yathosho's Supermicrocosm)", + 45→ author: "Degnic", + 46→ description: "Auto-ported from the Winamp AVS preset \"Degnic - Retrowall (Yathosho's Supermicrocosm).avs\" by Degnic. The original is driven by DynamicMovement, Movement, Invert, which the script engine cannot run -- replaced with a generated \"orbits\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 47→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Degnic - Retrowall (Yathosho's Supermicrocosm).avs", + 48→ approx: true, + 49→ content: "name: \"Retrowall (Yathosho's Supermicrocosm)\"\nmode: dots\nblend: additive\npersist: 0.843\nlinewidth: 2.178\n\n[init]\nrings = 7\nn = rings * 103\n\n[frame]\nt = t + dt * (0.344 + bass_att * 0.6)\nhue = hue + dt * 0.112\nsquash = 0.315 + 0.25 * sin(t * 0.205)\n\n[point]\nring = floor(i * rings)\nri3 = frac(i * rings)\nr0 = 0.16 + ring * 0.142\na = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4\nx = sin(a) * r0 * (1 + bass * 0.18) / aspect\ny = cos(a) * r0 * squash\nsat = frac(ri3 * 5)\nsize = if(below(sat, 0.14), 3 + bass * 3, 1)\nred = 0.25 + bass * 0.5 + ring * 0.07 * (0.45 + 0.55 * sin(hue * 6.28318 + ring * 1.3))\ngreen = 0.25 + bass * 0.5 + ring * 0.07 * (0.45 + 0.55 * sin(hue * 6.28318 + ring * 1.3 + 2.09))\nblue = 0.25 + bass * 0.5 + ring * 0.07 * (0.45 + 0.55 * sin(hue * 6.28318 + ring * 1.3 + 4.19))\n", + 50→ }, + 51→ { + 52→ folder: "root/embedded/Amp Picks", + 53→ name: "Adrealine rush", + 54→ author: "Degnic", + 55→ description: "Auto-ported from the Winamp AVS preset \"Degnic-Adrealine rush.avs\" by Degnic. The original is driven by en03: Convolution Filter, Simple, Color Map, which the script engine cannot run -- replaced with a generated \"moire\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 56→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Degnic-Adrealine rush.avs", + 57→ approx: true, + 58→ content: "name: \"Adrealine rush\"\nmode: dots\nblend: additive\npersist: 0.826\nlinewidth: 1.803\n\n[init]\nn = 1287\n\n[frame]\nt = t + dt * 0.304\nhue = hue + dt * 0.11\n\n[point]\nu = rand(i * 1.7) * 2 - 1\nw = rand(i * 3.3 + 11) * 2 - 1\nm = sin((u * 2.681 + w * 5.047 + t) * 3.14159) * sin((u * 6.682 - w * 2.465 - t * 0.7) * 3.14159)\nx = u * 0.907 / aspect\ny = w * 0.875\nlum = max(0, m) * (0.3 + bass * 0.9) + 0.06\nred = lum * 0.3\ngreen = lum * 0.65\nblue = min(1, lum * 1.3)\nsize = 1 + abs(m) * 3.025\n", + 59→ }, + 60→ { + 61→ folder: "root/embedded/Amp Picks", + 62→ name: "Alien Heart", + 63→ author: "Duo", + 64→ description: "Auto-ported from the Winamp AVS preset \"Duo - Alien Heart.avs\" by Duo. The original is driven by Fadeout, ClearScreen, MovingParticle, which the script engine cannot run -- replaced with a generated \"tunnel\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 65→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Duo - Alien Heart.avs", + 66→ approx: true, + 67→ content: "name: \"Alien Heart\"\nmode: lines\nblend: additive\npersist: 0.897\nlinewidth: 1.95\n\n[init]\nn = 1015\n\n[frame]\nt = t + dt * (0.377 + bass_att * 1.5)\nhue = hue + dt * 0.038\n\n[point]\nring = floor(i * 29)\nri2 = frac(i * 29)\nz = frac(ring / 29 + t)\nrad = 0.05 + z * 0.917\na = ri2 * 6.28318 + ring * 0.423 + sin(t * 0.7) * 2\nx = sin(a) * rad * (0.55 + sv * 0.656) / aspect\ny = cos(a) * rad * (0.55 + sv * 0.656)\nred = (1 - z) * (0.3 + bass * 0.7) * abs(sin(z * 4.256))\ngreen = (1 - z) * (0.3 + bass * 0.7) * 0.22\nblue = (1 - z) * (0.3 + bass * 0.7) * abs(cos(z * 4.256))\n", + 68→ }, + 69→ { + 70→ folder: "root/embedded/Amp Picks", + 71→ name: "Brainstorm", + 72→ author: "Duo", + 73→ description: "Auto-ported from the Winamp AVS preset \"Duo - Brainstorm.avs\" by Duo. The original is driven by Invert, UniqueTone, Brightness, which the script engine cannot run -- replaced with a generated \"kaleido\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 74→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Duo - Brainstorm.avs", + 75→ approx: true, + 76→ content: "name: \"Brainstorm\"\nmode: lines\nblend: additive\npersist: 0.859\nlinewidth: 2.309\n\n[init]\nsegs = 6\nn = 584\n\n[frame]\nrot = rot + dt * (0.093 + mid_att * 0.5)\nhue = hue + dt * 0.084\nflash = flash * 0.85\n\n[beat]\nflash = 1\n\n[point]\nseg = floor(i * segs)\nsi = frac(i * segs)\na0 = si * 6.28318 / segs + rot\namp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06\nrad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 9 + time * 2))\na = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + amp * 1.3 * 0.85\ngreen = 0.3 + amp * 1.3 * 0.92\nblue = 0.3 + amp * 1.3\nskip = if(above(si, 0.96), 1, 0)\n", + 77→ }, + 78→ { + 79→ folder: "root/embedded/Amp Picks", + 80→ name: "Molecules (S_KuPeRS Remix)", + 81→ author: "EL-VIS", + 82→ description: "Auto-ported from the Winamp AVS preset \"EL-VIS - Molecules (S_KuPeRS Remix).avs\" by EL-VIS. The original is driven by DynamicMovement, Color Map, Invert, which the script engine cannot run -- replaced with a generated \"swirl\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 83→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/EL-VIS - Molecules (S_KuPeRS Remix).avs", + 84→ approx: true, + 85→ content: "name: \"Molecules (S_KuPeRS Remix)\"\nmode: lines\nblend: additive\npersist: 0.88\nlinewidth: 1.388\n\n[init]\nn = 1119\n\n[frame]\nt = t + dt * (0.211 + bass_att * 1.8)\nhue = hue + dt * 0.042 + beat * 0.012\n\n[point]\narm = floor(i * 3)\nfa = frac(i * 3)\nd = fa\nang = arm * 1.551 + d * 1.047 * 3.14159 + t\nrad = (0.04 + pow(d, 1.714) * 1.15) * (0.7 + bass * 0.5)\nx = sin(ang) * rad / aspect\ny = cos(ang) * rad\nred = (0.3 + 0.7 * d) * (0.3 + mid) * abs(sin(d * 2.325))\ngreen = (0.3 + 0.7 * d) * (0.3 + mid) * 0.22\nblue = (0.3 + 0.7 * d) * (0.3 + mid) * abs(cos(d * 2.325))\nskip = if(below(fa, 0.04), 1, 0)\n", + 86→ }, + 87→ { + 88→ folder: "root/embedded/Amp Picks", + 89→ name: "Take the Veil", + 90→ author: "L1quid", + 91→ description: "Auto-ported from the Winamp AVS preset \"L1quid - Take the Veil.avs\" by L1quid. The original is driven by unportable scope code (frame line 15: Unexpected character '$'), which the script engine cannot run -- replaced with a generated \"lissajous\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 92→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/L1quid - Take the Veil.avs", + 93→ approx: true, + 94→ content: "name: \"Take the Veil\"\nmode: lines\nblend: additive\npersist: 0.895\nlinewidth: 1.78\n\n[init]\nn = 674\n\n[frame]\nt = t + dt * 0.275\nhue = hue + dt * 0.052\n\n[point]\nph = i * 6.28318 * 1.521\nfa = 3 + mid * 0.35\nfb = 6 + bass * 0.45\nx = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect\ny = sin(ph * fb + t * 1.3 + 0.957) * (0.5 + treb * 0.35)\nred = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + bass * 0.95)\ngreen = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + mid * 0.95)\nblue = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + treb * 0.95)\n", + 95→ }, + 96→ { + 97→ folder: "root/embedded/Amp Picks", + 98→ name: "Rototronik", + 99→ author: "Nic01", + 100→ description: "Auto-ported from the Winamp AVS preset \"Nic01 - Rototronik.avs\" by Nic01. Original superscope code, machine-translated to the AVA script dialect.", + 101→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Nic01 - Rototronik.avs", + 102→ approx: false, + 103→ content: "# Auto-ported from \"Nic01 - Rototronik.avs\" (Winamp AVS / Nic01)\n# SuperScope point program, 4 AVSTrans macros expanded.\nname: \"Rototronik\"\nauthor: \"Nic01\"\nmode: lines\nblend: additive\npersist: 0.88\nlinewidth: 2\nysign: -1\n\n[init]\npi=acos(-1);n=1000;\n\n[frame]\nrx=rx+rdx;ry=ry+rdy;rz=rz+rdz;xs=sin(rx);ys=sin(ry);zs=sin(rz);xc=cos(rx);yc=cos(ry);zc=cos(rz);t=t+0.1;p=0;p1=0.;\n\n[beat]\nrdx=(getosc(0,0,0)*500-250)%250/2500;rdy=(getosc(0.05,0,0)*500-250)%250/2500;rdz=(getosc(0.1,0,0)*500-250)%250/2500;\n\n[point]\np=p+1;\r\np1=if(equal(p%20,1),p1+1,p1);\r\ns=(1-equal(p%20,1));\r\ns1=1-s1;\r\nx1=sin(i*pi*4)*s*s1;\r\ny1=cos(i*pi*4)*s*s1;\r\nx1=x1+getosc((p1%25)*0.04,0,0)*x1;\r\ny1=y1+getosc((p1%25)*0.04,0,0)*y1;\r\nz1=-below(p,500)*0.5+0.25;\r\nc=(2-x1*x1-y1*y1);\r\n;\r\ny2=y1*xc-z1*xs;z2=y1*xs+z1*xc;\r\nx2=z2*ys+x1*yc;z1=z2*yc-x1*ys;\r\nx1=x2*zc-y2*zs;y1=y2*zc+x2*zs;\r\nx=x1/(2+z1);y=y1/(2+z1);\r\nred=c;\r\ngreen=1-c;\r\nc=equal(p,500)*10;\r\nred=red-c;green=green-c;\n", + 104→ }, + 105→ { + 106→ folder: "root/embedded/Amp Picks", + 107→ name: "...hidden track...", + 108→ author: "S_KuPeRS", + 109→ description: "Auto-ported from the Winamp AVS preset \"S_KuPeRS - ...hidden track....avs\" by S_KuPeRS. The original is driven by DynamicMovement, Color Map, which the script engine cannot run -- replaced with a generated \"pulse rings\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 110→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/S_KuPeRS - ...hidden track....avs", + 111→ approx: true, + 112→ content: "name: \"...hidden track...\"\nmode: lines\nblend: additive\npersist: 0.805\nlinewidth: 2.555\n\n[init]\nn = 205\n\n[frame]\nhue = hue + dt * 0.045 + beat * 0.01\ntravel = travel + dt * (0.253 + bass_att * 1.4)\nflash = flash * 0.86\n\n[beat]\nflash = 1\n\n[point]\ng = floor(i * 5)\ngi = frac(i * 5)\nph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))\na = gi * 6.28318\nrad = ph * (0.232 + bass * 0.659 + flash * 0.08)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nfade = sin(ph * 3.14159)\nred = min(1, fade * (0.35 + flash * 0.4) * 1.3)\ngreen = fade * (0.35 + flash * 0.4) * 0.5\nblue = fade * (0.35 + flash * 0.4) * 0.12\nskip = if(above(ph, 0.96), 1, 0)\n", + 113→ }, + 114→ { + 115→ folder: "root/embedded/Amp Picks", + 116→ name: "Arctic Rainbow", + 117→ author: "S_KuPeRS", + 118→ description: "Auto-ported from the Winamp AVS preset \"S_KuPeRS - Arctic Rainbow.avs\" by S_KuPeRS. The original is driven by BlitterFeedback, DynamicMovement, Movement, which the script engine cannot run -- replaced with a generated \"rain\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 119→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/S_KuPeRS - Arctic Rainbow.avs", + 120→ approx: true, + 121→ content: "name: \"Arctic Rainbow\"\nmode: dots\nblend: additive\npersist: 0.789\nlinewidth: 1.877\n\n[init]\ncols = 48\nn = 918\n\n[frame]\nfall = fall + dt * (0.855 + vol_att * 1.119)\nhue = hue + dt * 0.034\n\n[point]\ncol = floor(i * cols)\nci = frac(i * cols)\nxx = (col / cols - 0.5) * 1.9\nyf = frac(rand(col * 3.7 + 1) + fall * (0.55 + rand(col + 5) * 0.5))\ntail = rand(col * 1.3 + 9) * 0.297 + 0.04\nyy = (yf * 2 - 1) * 1.05 + ci * tail\nx = xx / aspect\ny = yy\nred = (1 - ci) * (0.2 + treb * 0.85) + 0.04 * 0.85\ngreen = (1 - ci) * (0.2 + treb * 0.85) + 0.04 * 0.92\nblue = (1 - ci) * (0.2 + treb * 0.85) + 0.04\nskip = if(above(abs(yy), 1.02), 1, 0)\n", + 122→ }, + 123→ { + 124→ folder: "root/embedded/Amp Picks", + 125→ name: "Chinook", + 126→ author: "S_KuPeRS", + 127→ description: "Auto-ported from the Winamp AVS preset \"S_KuPeRS - Chinook.avs\" by S_KuPeRS. The original is driven by ColorClip, ClearScreen, DynamicMovement, which the script engine cannot run -- replaced with a generated \"spectrum bars\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 128→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/S_KuPeRS - Chinook.avs", + 129→ approx: true, + 130→ content: "name: \"Chinook\"\nmode: dots\nblend: additive\npersist: 0.831\nlinewidth: 2.299\n\n[init]\nbars = 30\nn = bars * 9\n\n[frame]\nrot = rot + dt * (0.07 + mid * 0.3)\nhue = hue + dt * 0.106\n\n[point]\nbar = floor(i * bars)\nbi = frac(i * bars)\nlvl = getspec(bar / bars, 0, 0)\nh = lvl * 0.893\na = bar * 6.28318 / bars + rot\nrad = 0.142 + bi * h\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.25 + bi * 0.75 * 0.3\ngreen = 0.25 + bi * 0.75 * 0.65\nblue = min(1, 0.25 + bi * 0.75 * 1.3)\nskip = if(above(bi, 0.97), 1, 0)\n", + 131→ }, + 132→ { + 133→ folder: "root/embedded/Amp Picks", + 134→ name: "Hexual Healing", + 135→ author: "S_KuPeRS", + 136→ description: "Auto-ported from the Winamp AVS preset \"S_KuPeRS - Hexual Healing.avs\" by S_KuPeRS. The original is driven by Color Map, which the script engine cannot run -- replaced with a generated \"lattice\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 137→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/S_KuPeRS - Hexual Healing.avs", + 138→ approx: true, + 139→ content: "name: \"Hexual Healing\"\nmode: dots\nblend: additive\npersist: 0.785\nlinewidth: 2.432\n\n[init]\ncols = 34\nn = cols * cols\n\n[frame]\nrot = rot + dt * (0.072 + mid * 0.4)\nhue = hue + dt * 0.062\n\n[point]\ncx = floor(i * cols) / (cols - 1)\ncy = frac(i * cols)\nh = sv * 0.506\nux = (cx - 0.5) * 1.674\nuy = (cy - 0.5) * 1.674\nrx = ux * cos(rot) - uy * sin(rot)\nry = ux * sin(rot) + uy * cos(rot)\nx = (rx / aspect) * (1 - h * 0.7)\ny = ry * (1 - h * 0.7)\nred = min(1, 0.22 + h * 2.2 * 1.3)\ngreen = 0.22 + h * 2.2 * 0.5\nblue = 0.22 + h * 2.2 * 0.12\nsize = 1.2 + h * 5\n", + 140→ }, + 141→ { + 142→ folder: "root/embedded/Amp Picks", + 143→ name: "Inverse Kinetics", + 144→ author: "S_KuPeRS", + 145→ description: "Auto-ported from the Winamp AVS preset \"S_KuPeRS - Inverse Kinetics.avs\" by S_KuPeRS. The original is driven by effect#2176, DynamicMovement, which the script engine cannot run -- replaced with a generated \"fountain\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 146→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/S_KuPeRS - Inverse Kinetics.avs", + 147→ approx: true, + 148→ content: "name: \"Inverse Kinetics\"\nmode: dots\nblend: additive\npersist: 0.805\nlinewidth: 2.613\n\n[init]\nn = 817\n\n[frame]\ntt = tt + dt * (0.5 + bass_att * 1.1)\nhue = hue + dt * 0.103\nburst = burst * 0.9\n\n[beat]\nburst = 1\n\n[point]\njet = floor(i * 2)\nlife = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))\na = jet * 6.28318 / 2 + rand(i * 5.1 + jet) * 0.736\nspd = 0.4 + rand(i * 9.2 + jet) * 0.8\npx = cos(a) * spd * life\npy = sin(a) * spd * life - 1.2 * life * life\nx = px * (0.85 + bass * 0.35) / aspect\ny = py\nred = max(0, 1 - life) * (0.35 + burst * 0.55) * abs(sin(life * 4))\ngreen = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.22\nblue = max(0, 1 - life) * (0.35 + burst * 0.55) * abs(cos(life * 4))\nskip = if(above(life, 0.94), 1, 0)\n", + 149→ }, + 150→ { + 151→ folder: "root/embedded/Amp Picks", + 152→ name: "Kingish", + 153→ author: "S_KuPeRS", + 154→ description: "Auto-ported from the Winamp AVS preset \"S_KuPeRS - Kingish.avs\" by S_KuPeRS. The original is driven by BlitterFeedback, which the script engine cannot run -- replaced with a generated \"web\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 155→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/S_KuPeRS - Kingish.avs", + 156→ approx: true, + 157→ content: "name: \"Kingish\"\nmode: dots\nblend: additive\npersist: 0.813\nlinewidth: 2.025\n\n[init]\nspokes = 27\nn = spokes * 22\n\n[frame]\nrot = rot + dt * (0.102 + mid * 0.4)\nt = t + dt * 2.987\nhue = hue + dt * 0.075\n\n[point]\nsp = floor(i * spokes)\nsi = frac(i * spokes)\na = sp * 6.28318 / spokes + rot\nwave = sin(si * 2 * 3.14159 - t) * (0.03 + bass * 0.28)\nrad = 0.12 + si * 0.92 + wave\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(sin(sp * 0.4))\ngreen = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.22\nblue = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(cos(sp * 0.4))\nskip = if(above(si, 0.985), 1, 0)\n", + 158→ }, + 159→ { + 160→ folder: "root/embedded/Amp Picks", + 161→ name: "Spirit Realm (Degnic's Plasmoid RMX)", + 162→ author: "S_KuPeRS", + 163→ description: "Auto-ported from the Winamp AVS preset \"S_KuPeRS - Spirit Realm (Degnic's Plasmoid RMX).avs\" by S_KuPeRS. The original is driven by BlitterFeedback, \u0005, DotPlane, which the script engine cannot run -- replaced with a generated \"ribbon\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 164→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/S_KuPeRS - Spirit Realm (Degnic's Plasmoid RMX).avs", + 165→ approx: true, + 166→ content: "name: \"Spirit Realm (Degnic's Plasmoid RMX)\"\nmode: lines\nblend: additive\npersist: 0.885\nlinewidth: 2.389\n\n[init]\nn = 1199\n\n[frame]\nt = t + dt * (0.344 + bass_att * 0.8)\nsway = sway + dt * (0.5 + treb)\nhue = hue + dt * 0.085\n\n[point]\na = i * 6.28318 * 2\nwob = sin(a * 3 + t * 2) * (0.08 + treb * 0.3)\nrad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.422 - wob\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5))\ngreen = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 2.09))\nblue = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 4.19))\n", + 167→ }, + 168→ { + 169→ folder: "root/embedded/Amp Picks", + 170→ name: "Texering 002", + 171→ author: "S_KuPeRS", + 172→ description: "Auto-ported from the Winamp AVS preset \"S_KuPeRS - Texering 002.avs\" by S_KuPeRS. Original superscope code, machine-translated to the AVA script dialect.", + 173→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/S_KuPeRS - Texering 002.avs", + 174→ approx: false, + 175→ content: "# Auto-ported from \"S_KuPeRS - Texering 002.avs\" (Winamp AVS / S_KuPeRS)\n# SuperScope point program, 4 AVSTrans macros expanded.\nname: \"Texering 002\"\nauthor: \"S_KuPeRS\"\nmode: dots\nblend: additive\npersist: 0.78\nlinewidth: 3\nysign: -1\n\n[init]\nn=100;pi=acos(-1);rx=1.57;ry=1.57;rx=0;ry=0;rz=0;rxo=0;ryo=0;rzo=0;rxt=0;ryt=0;rzt=0;\n\n[frame]\nredf=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);\n\n[beat]\nredr=rnd(10)/100-0.05;greenr=rnd(10)/100-0.05;bluer=rnd(10)/100-0.05;rxo=getosc(0.5,0.02,0)/12;ryo=getosc(0.3,0.02,0)/12;rzo=getosc(0.7,0.02,0)/8;\n\n[point]\nr=i*pi*2;r2=i*pi*99;\r\nx1=sin(r-bluef*1.53+.0776)*cos(r2+greenf);\r\ny1=cos(r+bluef);\r\nz1=sin(r2+redf);\r\n\r\nx1d=x1*cz-y1*sz;\r\ny1d=x1*sz+y1*cz;\r\ny2d=y1d*cx-z1*sx;\r\nz2d=y1d*sx+z1*cx;\r\nx3d=x1d*cy-z2d*sy;\r\nz3d=x1d*sy+z2d*cy;\r\nzi=1/(z3d+3);\r\nx=if(above(z3d+3,0.1),x3d*zi,x);\r\ny=if(above(z3d+3,0.1),y2d*zi,y);\r\n\r\nalpha=if(below(z3d+2.4,0),0,1);\r\nred=alpha*(1+sin(redf)/4-z3d/4)/7;\r\nblue=alpha*(1+sin(bluef)/4-z3d)/20;\r\ngreen=alpha*(1+sin(greenf)/3-z3d/2)/12;\n", + 176→ }, + 177→ { + 178→ folder: "root/embedded/Amp Picks", + 179→ name: "Upward Current", + 180→ author: "S_KuPeRS", + 181→ description: "Auto-ported from the Winamp AVS preset \"S_KuPeRS - Upward Current.avs\" by S_KuPeRS. The original is driven by CustomBPM, DynamicMovement, Water, which the script engine cannot run -- replaced with a generated \"rose\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 182→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/S_KuPeRS - Upward Current.avs", + 183→ approx: true, + 184→ content: "name: \"Upward Current\"\nmode: lines\nblend: additive\npersist: 0.914\nlinewidth: 1.629\n\n[init]\nn = 869\n\n[frame]\nt = t + dt * (0.134 + mid * 0.5)\nhue = hue + dt * 0.122\nflash = flash * 0.87\n\n[beat]\nflash = 1\n\n[point]\nth = i * 6.28318 * 2 + t\nr = abs(cos(2 * th + bass * 0.656))\nrad = r * (0.5 + bass * 0.3 + sv * 0.2 + flash * 0.08)\nx = sin(th) * rad / aspect\ny = cos(th) * rad\nred = 0.25 + 0.65 * r + v * 0.25 * abs(sin(th * 0.5))\ngreen = 0.25 + 0.65 * r + v * 0.25 * 0.22\nblue = 0.25 + 0.65 * r + v * 0.25 * abs(cos(th * 0.5))\n", + 185→ }, + 186→ { + 187→ folder: "root/embedded/Amp Picks", + 188→ name: "Aqua-fumes", + 189→ author: "Tuggummi", + 190→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Aqua-fumes.avs\" by Tuggummi. The original is driven by Holden03: Convolution Filter, Color Map, Bump, which the script engine cannot run -- replaced with a generated \"starfield\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 191→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Aqua-fumes.avs", + 192→ approx: true, + 193→ content: "name: \"Aqua-fumes\"\nmode: dots\nblend: additive\npersist: 0.787\nlinewidth: 2.043\n\n[init]\nn = 966\n\n[frame]\ntravel = travel + dt * (0.347 + vol_att * 1.816)\nhue = hue + dt * 0.076\n\n[point]\na = rand(i * 7.3) * 6.28318\nz = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7))\nrad = z * z * 1.075\nx = sin(a) * rad / aspect\ny = cos(a) * rad\ntw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb)\nred = tw * abs(sin(i * 3.959))\ngreen = tw * 0.22\nblue = tw * abs(cos(i * 3.959))\nsize = 1 + z * 3 * (0.5 + bass)\nskip = if(above(z, 0.97), 1, 0)\n", + 194→ }, + 195→ { + 196→ folder: "root/embedded/Amp Picks", + 197→ name: "Club Seizure (color enhanced mix)", + 198→ author: "Tuggummi", + 199→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Club Seizure (color enhanced mix).avs\" by Tuggummi. The original is driven by Movement, DynamicMovement, Multiplier, which the script engine cannot run -- replaced with a generated \"helix\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 200→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Club Seizure (color enhanced mix).avs", + 201→ approx: true, + 202→ content: "name: \"Club Seizure (color enhanced mix)\"\nmode: lines\nblend: additive\npersist: 0.864\nlinewidth: 2.379\n\n[init]\nn = 946\n\n[frame]\nt = t + dt * (0.322 + bass_att * 0.9)\nhue = hue + dt * 0.089\nflash = flash * 0.86\n\n[beat]\nflash = 1\n\n[point]\nst = floor(i * 2)\nsi = frac(i * 2)\ns = si * 6 * 6.28318 + t\nph = st * 3.14159\nrad = (0.28 + bass * 0.32 + flash * 0.06) * (0.55 + 0.45 * (cos(s + ph) * 0.5 + 0.5))\nx = sin(s + ph) * rad / aspect\ny = (si - 0.5) * 1.8\nred = 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))\ngreen = 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))\nblue = 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))\n", + 203→ }, + 204→ { + 205→ folder: "root/embedded/Amp Picks", + 206→ name: "Electro blobs", + 207→ author: "Tuggummi", + 208→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Electro blobs.avs\" by Tuggummi. The original is driven by MovingParticle, Color Map, BlitterFeedback, which the script engine cannot run -- replaced with a generated \"kaleido\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 209→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Electro blobs.avs", + 210→ approx: true, + 211→ content: "name: \"Electro blobs\"\nmode: lines\nblend: additive\npersist: 0.866\nlinewidth: 1.536\n\n[init]\nsegs = 12\nn = 616\n\n[frame]\nrot = rot + dt * (0.085 + mid_att * 0.5)\nhue = hue + dt * 0.131\nflash = flash * 0.85\n\n[beat]\nflash = 1\n\n[point]\nseg = floor(i * segs)\nsi = frac(i * segs)\na0 = si * 6.28318 / segs + rot\namp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06\nrad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 5 + time * 2))\na = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + amp * 1.3 * 0.85\ngreen = 0.3 + amp * 1.3 * 0.92\nblue = 0.3 + amp * 1.3\nskip = if(above(si, 0.96), 1, 0)\n", + 212→ }, + 213→ { + 214→ folder: "root/embedded/Amp Picks", + 215→ name: "Kaleidofied", + 216→ author: "Tuggummi", + 217→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Kaleidofied.avs\" by Tuggummi. The original is driven by Invert, Movement, Bump, which the script engine cannot run -- replaced with a generated \"ribbon\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 218→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Kaleidofied.avs", + 219→ approx: true, + 220→ content: "name: \"Kaleidofied\"\nmode: lines\nblend: additive\npersist: 0.885\nlinewidth: 1.542\n\n[init]\nn = 1126\n\n[frame]\nt = t + dt * (0.589 + bass_att * 0.8)\nsway = sway + dt * (0.5 + treb)\nhue = hue + dt * 0.1\n\n[point]\na = i * 6.28318 * 1\nwob = sin(a * 3 + t * 2) * (0.08 + treb * 0.3)\nrad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.232 - wob\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5))\ngreen = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 2.09))\nblue = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 4.19))\n", + 221→ }, + 222→ { + 223→ folder: "root/embedded/Amp Picks", + 224→ name: "Magma Flow II", + 225→ author: "Tuggummi", + 226→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Magma Flow II.avs\" by Tuggummi. The original is driven by Color Map, BufferSave, ClearScreen, which the script engine cannot run -- replaced with a generated \"orbits\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 227→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Magma Flow II.avs", + 228→ approx: true, + 229→ content: "name: \"Magma Flow II\"\nmode: dots\nblend: additive\npersist: 0.804\nlinewidth: 2.633\n\n[init]\nrings = 3\nn = rings * 104\n\n[frame]\nt = t + dt * (0.258 + bass_att * 0.6)\nhue = hue + dt * 0.036\nsquash = 0.387 + 0.25 * sin(t * 0.203)\n\n[point]\nring = floor(i * rings)\nri3 = frac(i * rings)\nr0 = 0.16 + ring * 0.148\na = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4\nx = sin(a) * r0 * (1 + bass * 0.18) / aspect\ny = cos(a) * r0 * squash\nsat = frac(ri3 * 5)\nsize = if(below(sat, 0.14), 3 + bass * 3, 1)\nred = 0.25 + bass * 0.5 + ring * 0.07 * abs(sin(ring * 1.3))\ngreen = 0.25 + bass * 0.5 + ring * 0.07 * 0.22\nblue = 0.25 + bass * 0.5 + ring * 0.07 * abs(cos(ring * 1.3))\n", + 230→ }, + 231→ { + 232→ folder: "root/embedded/Amp Picks", + 233→ name: "Multiple Orgasms", + 234→ author: "Tuggummi", + 235→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Multiple Orgasms.avs\" by Tuggummi. The original is driven by Movement, Color Map, BufferSave, which the script engine cannot run -- replaced with a generated \"web\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 236→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Multiple Orgasms.avs", + 237→ approx: true, + 238→ content: "name: \"Multiple Orgasms\"\nmode: lines\nblend: additive\npersist: 0.873\nlinewidth: 1.6\n\n[init]\nspokes = 30\nn = spokes * 33\n\n[frame]\nrot = rot + dt * (0.106 + mid * 0.4)\nt = t + dt * 2.164\nhue = hue + dt * 0.106\n\n[point]\nsp = floor(i * spokes)\nsi = frac(i * spokes)\na = sp * 6.28318 / spokes + rot\nwave = sin(si * 4 * 3.14159 - t) * (0.03 + bass * 0.28)\nrad = 0.12 + si * 0.919 + wave\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = (1 - si) * 0.45 + 0.15 + sv * 0.55 * (0.45 + 0.55 * sin(hue * 6.28318 + sp * 0.4))\ngreen = (1 - si) * 0.45 + 0.15 + sv * 0.55 * (0.45 + 0.55 * sin(hue * 6.28318 + sp * 0.4 + 2.09))\nblue = (1 - si) * 0.45 + 0.15 + sv * 0.55 * (0.45 + 0.55 * sin(hue * 6.28318 + sp * 0.4 + 4.19))\nskip = if(above(si, 0.985), 1, 0)\n", + 239→ }, + 240→ { + 241→ folder: "root/embedded/Amp Picks", + 242→ name: "Pina Colada", + 243→ author: "Tuggummi", + 244→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Pina Colada.avs\" by Tuggummi. The original is driven by Color Map, which the script engine cannot run -- replaced with a generated \"swirl\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 245→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Pina Colada.avs", + 246→ approx: true, + 247→ content: "name: \"Pina Colada\"\nmode: lines\nblend: additive\npersist: 0.887\nlinewidth: 1.779\n\n[init]\nn = 943\n\n[frame]\nt = t + dt * (0.219 + bass_att * 1.8)\nhue = hue + dt * 0.098 + beat * 0.012\n\n[point]\narm = floor(i * 8)\nfa = frac(i * 8)\nd = fa\nang = arm * 1.519 + d * 1.263 * 3.14159 + t\nrad = (0.04 + pow(d, 2.354) * 1.15) * (0.7 + bass * 0.5)\nx = sin(ang) * rad / aspect\ny = cos(ang) * rad\nred = (0.3 + 0.7 * d) * (0.3 + mid) * (0.25 + bass * 0.95)\ngreen = (0.3 + 0.7 * d) * (0.3 + mid) * (0.25 + mid * 0.95)\nblue = (0.3 + 0.7 * d) * (0.3 + mid) * (0.25 + treb * 0.95)\nskip = if(below(fa, 0.04), 1, 0)\n", + 248→ }, + 249→ { + 250→ folder: "root/embedded/Amp Picks", + 251→ name: "Scope in Spotlight II", + 252→ author: "Tuggummi", + 253→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Scope in Spotlight II.avs\" by Tuggummi. The original is driven by effect#117, Color Map, Invert, which the script engine cannot run -- replaced with a generated \"kaleido\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 254→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Scope in Spotlight II.avs", + 255→ approx: true, + 256→ content: "name: \"Scope in Spotlight II\"\nmode: lines\nblend: additive\npersist: 0.854\nlinewidth: 2.056\n\n[init]\nsegs = 7\nn = 462\n\n[frame]\nrot = rot + dt * (0.107 + mid_att * 0.5)\nhue = hue + dt * 0.035\nflash = flash * 0.85\n\n[beat]\nflash = 1\n\n[point]\nseg = floor(i * segs)\nsi = frac(i * segs)\na0 = si * 6.28318 / segs + rot\namp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06\nrad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 4 + time * 2))\na = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = min(1, 0.3 + amp * 1.3 * 1.3)\ngreen = 0.3 + amp * 1.3 * 0.5\nblue = 0.3 + amp * 1.3 * 0.12\nskip = if(above(si, 0.96), 1, 0)\n", + 257→ }, + 258→ { + 259→ folder: "root/embedded/Amp Picks", + 260→ name: "Solero Shots", + 261→ author: "Tuggummi", + 262→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Solero Shots.avs\" by Tuggummi. The original is driven by effect#28, FastBright, Movement, which the script engine cannot run -- replaced with a generated \"spectrum bars\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 263→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Solero Shots.avs", + 264→ approx: true, + 265→ content: "name: \"Solero Shots\"\nmode: lines\nblend: additive\npersist: 0.878\nlinewidth: 2.226\n\n[init]\nbars = 40\nn = bars * 12\n\n[frame]\nrot = rot + dt * (0.078 + mid * 0.3)\nhue = hue + dt * 0.032\n\n[point]\nbar = floor(i * bars)\nbi = frac(i * bars)\nlvl = getspec(bar / bars, 0, 0)\nh = lvl * 0.813\na = bar * 6.28318 / bars + rot\nrad = 0.218 + bi * h\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.25 + bi * 0.75 * 0.3\ngreen = 0.25 + bi * 0.75 * 0.65\nblue = min(1, 0.25 + bi * 0.75 * 1.3)\nskip = if(above(bi, 0.97), 1, 0)\n", + 266→ }, + 267→ { + 268→ folder: "root/embedded/Amp Picks", + 269→ name: "Square Minded", + 270→ author: "Tuggummi", + 271→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Square Minded.avs\" by Tuggummi. The original is driven by FastBright, which the script engine cannot run -- replaced with a generated \"moire\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 272→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Square Minded.avs", + 273→ approx: true, + 274→ content: "name: \"Square Minded\"\nmode: dots\nblend: additive\npersist: 0.783\nlinewidth: 2.696\n\n[init]\nn = 1492\n\n[frame]\nt = t + dt * 0.656\nhue = hue + dt * 0.13\n\n[point]\nu = rand(i * 1.7) * 2 - 1\nw = rand(i * 3.3 + 11) * 2 - 1\nm = sin((u * 3.356 + w * 3.959 + t) * 3.14159) * sin((u * 3.01 - w * 6.626 - t * 0.7) * 3.14159)\nx = u * 0.994 / aspect\ny = w * 0.856\nlum = max(0, m) * (0.3 + bass * 0.9) + 0.06\nred = lum * 0.85\ngreen = lum * 0.92\nblue = lum\nsize = 1 + abs(m) * 3.211\n", + 275→ }, + 276→ { + 277→ folder: "root/embedded/Amp Picks", + 278→ name: "Worm-O-Rama (Raz Remix)", + 279→ author: "Tuggummi", + 280→ description: "Auto-ported from the Winamp AVS preset \"Tuggummi - Worm-O-Rama (Raz Remix).avs\" by Tuggummi. The original is driven by MovingParticle, Filter, Simple, which the script engine cannot run -- replaced with a generated \"ribbon\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 281→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/Tuggummi - Worm-O-Rama (Raz Remix).avs", + 282→ approx: true, + 283→ content: "name: \"Worm-O-Rama (Raz Remix)\"\nmode: lines\nblend: additive\npersist: 0.894\nlinewidth: 1.933\n\n[init]\nn = 1189\n\n[frame]\nt = t + dt * (0.418 + bass_att * 0.8)\nsway = sway + dt * (0.5 + treb)\nhue = hue + dt * 0.102\n\n[point]\na = i * 6.28318 * 3\nwob = sin(a * 3 + t * 2) * (0.08 + treb * 0.3)\nrad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.282 - wob\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + abs(v) * 1.2 * (0.25 + bass * 0.95)\ngreen = 0.3 + abs(v) * 1.2 * (0.25 + mid * 0.95)\nblue = 0.3 + abs(v) * 1.2 * (0.25 + treb * 0.95)\n", + 284→ }, + 285→ { + 286→ folder: "root/embedded/Amp Picks", + 287→ name: "Zero-G Maze", + 288→ author: "UnConeD", + 289→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Zero-G Maze.avs\" by UnConeD. Original superscope code, machine-translated to the AVA script dialect.", + 290→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Zero-G Maze.avs", + 291→ approx: false, + 292→ content: "# Auto-ported from \"UnConeD - Zero-G Maze.avs\" (Winamp AVS / UnConeD)\n# SuperScope point program, 4 AVSTrans macros expanded.\nname: \"Zero-G Maze\"\nauthor: \"UnConeD\"\nmode: lines\nblend: additive\npersist: 0.88\nlinewidth: 2\nysign: -1\n\n[init]\nn=50;ro=0;go=2.0;bo=4.0\n\n[frame]\nt=t-0.05;aa=aa*0.7;\n\n[beat]\naa=0.0;ro=rnd(100)/100*6.28;go=rnd(100)/100*6.28;bo=rnd(100)/100*6.28\n\n[point]\ny=0;x=i*.5-.1;\r\nred=sin(t+ro+i*2)*.5+.5;\r\ngreen=sin(t+go+i*2)*.5+.5;\r\nblue=sin(t+bo+i*2)*.5+.5;\n", + 293→ }, + 294→ { + 295→ folder: "root/embedded/Amp Picks", + 296→ name: "Cartoon Trip", + 297→ author: "UnConeD", + 298→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Cartoon Trip.avs\" by UnConeD. The original is driven by DynamicMovement, FastBright, Color Reduction, which the script engine cannot run -- replaced with a generated \"spectrum bars\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 299→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Cartoon Trip.avs", + 300→ approx: true, + 301→ content: "name: \"Cartoon Trip\"\nmode: lines\nblend: additive\npersist: 0.831\nlinewidth: 2.55\n\n[init]\nbars = 39\nn = bars * 9\n\n[frame]\nrot = rot + dt * (0.116 + mid * 0.3)\nhue = hue + dt * 0.112\n\n[point]\nbar = floor(i * bars)\nbi = frac(i * bars)\nlvl = getspec(bar / bars, 0, 0)\nh = lvl * 0.83\na = bar * 6.28318 / bars + rot\nrad = 0.189 + bi * h\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.25 + bi * 0.75 * 0.85\ngreen = 0.25 + bi * 0.75 * 0.92\nblue = 0.25 + bi * 0.75\nskip = if(above(bi, 0.97), 1, 0)\n", + 302→ }, + 303→ { + 304→ folder: "root/embedded/Amp Picks", + 305→ name: "Containment", + 306→ author: "UnConeD", + 307→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Containment.avs\" by UnConeD. The original is driven by unportable scope code (init line 12: Unexpected character '£'), which the script engine cannot run -- replaced with a generated \"ribbon\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 308→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Containment.avs", + 309→ approx: true, + 310→ content: "name: \"Containment\"\nmode: lines\nblend: additive\npersist: 0.935\nlinewidth: 1.8\n\n[init]\nn = 847\n\n[frame]\nt = t + dt * (0.436 + bass_att * 0.8)\nsway = sway + dt * (0.5 + treb)\nhue = hue + dt * 0.071\n\n[point]\na = i * 6.28318 * 2\nwob = sin(a * 2 + t * 2) * (0.08 + treb * 0.3)\nrad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.25 - wob\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = min(1, 0.3 + abs(v) * 1.2 * 1.3)\ngreen = 0.3 + abs(v) * 1.2 * 0.5\nblue = 0.3 + abs(v) * 1.2 * 0.12\n", + 311→ }, + 312→ { + 313→ folder: "root/embedded/Amp Picks", + 314→ name: "Cubic Flower", + 315→ author: "UnConeD", + 316→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Cubic Flower.avs\" by UnConeD. Original superscope code, machine-translated to the AVA script dialect.", + 317→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Cubic Flower.avs", + 318→ approx: false, + 319→ content: "# Auto-ported from \"UnConeD - Cubic Flower.avs\" (Winamp AVS / UnConeD)\n# SuperScope point program, 4 AVSTrans macros expanded.\nname: \"Cubic Flower\"\nauthor: \"UnConeD\"\nmode: lines\nblend: additive\npersist: 0.88\nlinewidth: 2\nysign: -1\n\n[init]\nn=40;ro=0;go=2.0;bo=4.0\n\n[frame]\nt=t-0.05;aa=aa*0.7;\n\n[beat]\naa=1;ro=rnd(100)/100*6.28;go=rnd(100)/100*6.28;bo=rnd(100)/100*6.28\n\n[point]\nx=i*.8-.4;y=0;\r\nred=sin(t+ro+i*2)/2+.5+aa;\r\ngreen=sin(t+go+i*2)/2+.5+aa;\r\nblue=sin(t+bo+i*2)/2+.5+aa;\r\nblue=blue+1-min(red+green+blue,1)\n", + 320→ }, + 321→ { + 322→ folder: "root/embedded/Amp Picks", + 323→ name: "Jello Cube", + 324→ author: "UnConeD", + 325→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Jello Cube.avs\" by UnConeD. The original is driven by Color Map, which the script engine cannot run -- replaced with a generated \"pulse rings\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 326→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Jello Cube.avs", + 327→ approx: true, + 328→ content: "name: \"Jello Cube\"\nmode: lines\nblend: additive\npersist: 0.813\nlinewidth: 2.201\n\n[init]\nn = 620\n\n[frame]\nhue = hue + dt * 0.073 + beat * 0.01\ntravel = travel + dt * (0.196 + bass_att * 1.4)\nflash = flash * 0.86\n\n[beat]\nflash = 1\n\n[point]\ng = floor(i * 10)\ngi = frac(i * 10)\nph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))\na = gi * 6.28318\nrad = ph * (0.226 + bass * 0.743 + flash * 0.08)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nfade = sin(ph * 3.14159)\nred = fade * (0.35 + flash * 0.4) * abs(sin(g * 0.7))\ngreen = fade * (0.35 + flash * 0.4) * 0.22\nblue = fade * (0.35 + flash * 0.4) * abs(cos(g * 0.7))\nskip = if(above(ph, 0.96), 1, 0)\n", + 329→ }, + 330→ { + 331→ folder: "root/embedded/Amp Picks", + 332→ name: "Mercury", + 333→ author: "UnConeD", + 334→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Mercury.avs\" by UnConeD. The original is driven by Blur, DynamicMovement, FastBright, which the script engine cannot run -- replaced with a generated \"ribbon\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 335→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Mercury.avs", + 336→ approx: true, + 337→ content: "name: \"Mercury\"\nmode: lines\nblend: additive\npersist: 0.888\nlinewidth: 1.97\n\n[init]\nn = 1109\n\n[frame]\nt = t + dt * (0.329 + bass_att * 0.8)\nsway = sway + dt * (0.5 + treb)\nhue = hue + dt * 0.097\n\n[point]\na = i * 6.28318 * 3\nwob = sin(a * 6 + t * 2) * (0.08 + treb * 0.3)\nrad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.31 - wob\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + abs(v) * 1.2 * 0.3\ngreen = 0.3 + abs(v) * 1.2 * 0.65\nblue = min(1, 0.3 + abs(v) * 1.2 * 1.3)\n", + 338→ }, + 339→ { + 340→ folder: "root/embedded/Amp Picks", + 341→ name: "Neon Coaster", + 342→ author: "UnConeD", + 343→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Neon Coaster.avs\" by UnConeD. The original is driven by unportable scope code (beat line 18: Unexpected character '¤'), which the script engine cannot run -- replaced with a generated \"spectrum bars\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 344→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Neon Coaster.avs", + 345→ approx: true, + 346→ content: "name: \"Neon Coaster\"\nmode: dots\nblend: additive\npersist: 0.897\nlinewidth: 2.488\n\n[init]\nbars = 33\nn = bars * 12\n\n[frame]\nrot = rot + dt * (0.092 + mid * 0.3)\nhue = hue + dt * 0.066\n\n[point]\nbar = floor(i * bars)\nbi = frac(i * bars)\nlvl = getspec(bar / bars, 0, 0)\nh = lvl * 0.765\na = bar * 6.28318 / bars + rot\nrad = 0.193 + bi * h\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = min(1, 0.25 + bi * 0.75 * 1.3)\ngreen = 0.25 + bi * 0.75 * 0.5\nblue = 0.25 + bi * 0.75 * 0.12\nskip = if(above(bi, 0.97), 1, 0)\n", + 347→ }, + 348→ { + 349→ folder: "root/embedded/Amp Picks", + 350→ name: "Plankton", + 351→ author: "UnConeD", + 352→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Plankton.avs\" by UnConeD. The original is driven by DynamicMovement, FastBright, which the script engine cannot run -- replaced with a generated \"pulse rings\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 353→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Plankton.avs", + 354→ approx: true, + 355→ content: "name: \"Plankton\"\nmode: dots\nblend: additive\npersist: 0.83\nlinewidth: 2.37\n\n[init]\nn = 627\n\n[frame]\nhue = hue + dt * 0.033 + beat * 0.01\ntravel = travel + dt * (0.435 + bass_att * 1.4)\nflash = flash * 0.86\n\n[beat]\nflash = 1\n\n[point]\ng = floor(i * 11)\ngi = frac(i * 11)\nph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))\na = gi * 6.28318\nrad = ph * (0.194 + bass * 0.352 + flash * 0.08)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nfade = sin(ph * 3.14159)\nred = min(1, fade * (0.35 + flash * 0.4) * 1.3)\ngreen = fade * (0.35 + flash * 0.4) * 0.5\nblue = fade * (0.35 + flash * 0.4) * 0.12\nskip = if(above(ph, 0.96), 1, 0)\n", + 356→ }, + 357→ { + 358→ folder: "root/embedded/Amp Picks", + 359→ name: "Reflectocube", + 360→ author: "UnConeD", + 361→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Reflectocube.avs\" by UnConeD. The original is driven by Movement, DynamicMovement, which the script engine cannot run -- replaced with a generated \"swirl\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 362→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Reflectocube.avs", + 363→ approx: true, + 364→ content: "name: \"Reflectocube\"\nmode: lines\nblend: additive\npersist: 0.91\nlinewidth: 1.419\n\n[init]\nn = 1235\n\n[frame]\nt = t + dt * (0.31 + bass_att * 1.8)\nhue = hue + dt * 0.065 + beat * 0.012\n\n[point]\narm = floor(i * 4)\nfa = frac(i * 4)\nd = fa\nang = arm * 1.405 + d * 0.906 * 3.14159 + t\nrad = (0.04 + pow(d, 1.825) * 1.15) * (0.7 + bass * 0.5)\nx = sin(ang) * rad / aspect\ny = cos(ang) * rad\nred = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 4.537))\ngreen = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 4.537 + 2.09))\nblue = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 4.537 + 4.19))\nskip = if(below(fa, 0.04), 1, 0)\n", + 365→ }, + 366→ { + 367→ folder: "root/embedded/Amp Picks", + 368→ name: "Speeder 3K", + 369→ author: "UnConeD", + 370→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Speeder 3K.avs\" by UnConeD. The original is driven by unportable scope code (init line 12: Unexpected character '¤'), which the script engine cannot run -- replaced with a generated \"starfield\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 371→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Speeder 3K.avs", + 372→ approx: true, + 373→ content: "name: \"Speeder 3K\"\nmode: dots\nblend: additive\npersist: 0.831\nlinewidth: 2.272\n\n[init]\nn = 949\n\n[frame]\ntravel = travel + dt * (0.156 + vol_att * 1.231)\nhue = hue + dt * 0.04\n\n[point]\na = rand(i * 7.3) * 6.28318\nz = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7))\nrad = z * z * 1.206\nx = sin(a) * rad / aspect\ny = cos(a) * rad\ntw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb)\nred = min(1, tw * 1.3)\ngreen = tw * 0.5\nblue = tw * 0.12\nsize = 1 + z * 3 * (0.5 + bass)\nskip = if(above(z, 0.97), 1, 0)\n", + 374→ }, + 375→ { + 376→ folder: "root/embedded/Amp Picks", + 377→ name: "TC Plasma", + 378→ author: "UnConeD", + 379→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - TC Plasma.avs\" by UnConeD. The original is driven by CustomBPM, DynamicMovement, FastBright, which the script engine cannot run -- replaced with a generated \"ribbon\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 380→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - TC Plasma.avs", + 381→ approx: true, + 382→ content: "name: \"TC Plasma\"\nmode: lines\nblend: additive\npersist: 0.932\nlinewidth: 1.976\n\n[init]\nn = 1072\n\n[frame]\nt = t + dt * (0.432 + bass_att * 0.8)\nsway = sway + dt * (0.5 + treb)\nhue = hue + dt * 0.076\n\n[point]\na = i * 6.28318 * 3\nwob = sin(a * 4 + t * 2) * (0.08 + treb * 0.3)\nrad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.223 - wob\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5))\ngreen = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 2.09))\nblue = 0.3 + abs(v) * 1.2 * (0.45 + 0.55 * sin(hue * 6.28318 + a * 0.5 + 4.19))\n", + 383→ }, + 384→ { + 385→ folder: "root/embedded/Amp Picks", + 386→ name: "Tie Tunnel SSC", + 387→ author: "UnConeD", + 388→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Tie Tunnel SSC.avs\" by UnConeD. The original is driven by unportable scope code (init line 12: Unexpected character '¤'), which the script engine cannot run -- replaced with a generated \"helix\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 389→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Tie Tunnel SSC.avs", + 390→ approx: true, + 391→ content: "name: \"Tie Tunnel SSC\"\nmode: lines\nblend: additive\npersist: 0.851\nlinewidth: 2.021\n\n[init]\nn = 1179\n\n[frame]\nt = t + dt * (0.17 + bass_att * 0.9)\nhue = hue + dt * 0.129\nflash = flash * 0.86\n\n[beat]\nflash = 1\n\n[point]\nst = floor(i * 2)\nsi = frac(i * 2)\ns = si * 6 * 6.28318 + t\nph = st * 3.14159\nrad = (0.28 + bass * 0.32 + flash * 0.06) * (0.55 + 0.45 * (cos(s + ph) * 0.5 + 0.5))\nx = sin(s + ph) * rad / aspect\ny = (si - 0.5) * 1.8\nred = min(1, 0.25 + 0.55 * (cos(s + ph) * 0.5 + 0.5) + treb * 0.25 * 1.3)\ngreen = 0.25 + 0.55 * (cos(s + ph) * 0.5 + 0.5) + treb * 0.25 * 0.5\nblue = 0.25 + 0.55 * (cos(s + ph) * 0.5 + 0.5) + treb * 0.25 * 0.12\n", + 392→ }, + 393→ { + 394→ folder: "root/embedded/Amp Picks", + 395→ name: "Zero-G Maze II", + 396→ author: "UnConeD", + 397→ description: "Auto-ported from the Winamp AVS preset \"UnConeD - Zero-G Maze II.avs\" by UnConeD. The original is driven by DynamicMovement, which the script engine cannot run -- replaced with a generated \"swirl\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 398→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD - Zero-G Maze II.avs", + 399→ approx: true, + 400→ content: "name: \"Zero-G Maze II\"\nmode: lines\nblend: additive\npersist: 0.916\nlinewidth: 1.457\n\n[init]\nn = 1049\n\n[frame]\nt = t + dt * (0.267 + bass_att * 1.8)\nhue = hue + dt * 0.038 + beat * 0.012\n\n[point]\narm = floor(i * 7)\nfa = frac(i * 7)\nd = fa\nang = arm * 1.253 + d * 0.88 * 3.14159 + t\nrad = (0.04 + pow(d, 2.401) * 1.15) * (0.7 + bass * 0.5)\nx = sin(ang) * rad / aspect\ny = cos(ang) * rad\nred = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 2.064))\ngreen = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 2.064 + 2.09))\nblue = (0.3 + 0.7 * d) * (0.3 + mid) * (0.45 + 0.55 * sin(hue * 6.28318 + d * 2.064 + 4.19))\nskip = if(below(fa, 0.04), 1, 0)\n", + 401→ }, + 402→ { + 403→ folder: "root/embedded/Amp Picks", + 404→ name: "UnConeD -Zero-G Maze III", + 405→ author: "", + 406→ description: "Auto-ported from the Winamp AVS preset \"UnConeD -Zero-G Maze III.avs\". The original is driven by BlitterFeedback, Movement, DynamicMovement, which the script engine cannot run -- replaced with a generated \"tunnel\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 407→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/UnConeD -Zero-G Maze III.avs", + 408→ approx: true, + 409→ content: "name: \"UnConeD -Zero-G Maze III\"\nmode: lines\nblend: additive\npersist: 0.853\nlinewidth: 1.507\n\n[init]\nn = 722\n\n[frame]\nt = t + dt * (0.243 + bass_att * 1.5)\nhue = hue + dt * 0.093\n\n[point]\nring = floor(i * 19)\nri2 = frac(i * 19)\nz = frac(ring / 19 + t)\nrad = 0.05 + z * 0.881\na = ri2 * 6.28318 + ring * 0.16 + sin(t * 0.7) * 2\nx = sin(a) * rad * (0.55 + sv * 0.901) / aspect\ny = cos(a) * rad * (0.55 + sv * 0.901)\nred = (1 - z) * (0.3 + bass * 0.7) * 0.3\ngreen = (1 - z) * (0.3 + bass * 0.7) * 0.65\nblue = min(1, (1 - z) * (0.3 + bass * 0.7) * 1.3)\n", + 410→ }, + 411→ { + 412→ folder: "root/embedded/Amp Picks", + 413→ name: "nebulous (skupers remix)", + 414→ author: "amphirion", + 415→ description: "Auto-ported from the Winamp AVS preset \"amphirion - nebulous (skupers remix).avs\" by amphirion. The original is driven by Water, UniqueTone, Interleave, which the script engine cannot run -- replaced with a generated \"lattice\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 416→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/amphirion - nebulous (skupers remix).avs", + 417→ approx: true, + 418→ content: "name: \"nebulous (skupers remix)\"\nmode: dots\nblend: additive\npersist: 0.833\nlinewidth: 2.862\n\n[init]\ncols = 28\nn = cols * cols\n\n[frame]\nrot = rot + dt * (0.104 + mid * 0.4)\nhue = hue + dt * 0.08\n\n[point]\ncx = floor(i * cols) / (cols - 1)\ncy = frac(i * cols)\nh = sv * 0.235\nux = (cx - 0.5) * 1.448\nuy = (cy - 0.5) * 1.448\nrx = ux * cos(rot) - uy * sin(rot)\nry = ux * sin(rot) + uy * cos(rot)\nx = (rx / aspect) * (1 - h * 0.7)\ny = ry * (1 - h * 0.7)\nred = 0.22 + h * 2.2 * (0.45 + 0.55 * sin(hue * 6.28318 + cx * 3.774))\ngreen = 0.22 + h * 2.2 * (0.45 + 0.55 * sin(hue * 6.28318 + cx * 3.774 + 2.09))\nblue = 0.22 + h * 2.2 * (0.45 + 0.55 * sin(hue * 6.28318 + cx * 3.774 + 4.19))\nsize = 1.2 + h * 5\n", + 419→ }, + 420→ { + 421→ folder: "root/embedded/Amp Picks", + 422→ name: "soundscape III (skupers remix)", + 423→ author: "el-vis", + 424→ description: "Auto-ported from the Winamp AVS preset \"el-vis - soundscape III (skupers remix).avs\" by el-vis. The original is driven by a trivial scope (the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"kaleido\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 425→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/el-vis - soundscape III (skupers remix).avs", + 426→ approx: true, + 427→ content: "name: \"soundscape III (skupers remix)\"\nmode: lines\nblend: additive\npersist: 0.851\nlinewidth: 1.939\n\n[init]\nsegs = 14\nn = 582\n\n[frame]\nrot = rot + dt * (0.13 + mid_att * 0.5)\nhue = hue + dt * 0.073\nflash = flash * 0.85\n\n[beat]\nflash = 1\n\n[point]\nseg = floor(i * segs)\nsi = frac(i * segs)\na0 = si * 6.28318 / segs + rot\namp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06\nrad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 4 + time * 2))\na = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + amp * 1.3 * abs(sin(seg * 0.8))\ngreen = 0.3 + amp * 1.3 * 0.22\nblue = 0.3 + amp * 1.3 * abs(cos(seg * 0.8))\nskip = if(above(si, 0.96), 1, 0)\n", + 428→ }, + 429→ { + 430→ folder: "root/embedded/Amp Picks", + 431→ name: "checkers with metaballs (skupers remix)", + 432→ author: "fck", + 433→ description: "Auto-ported from the Winamp AVS preset \"fck - checkers with metaballs (skupers remix).avs\" by fck. Original superscope code, machine-translated to the AVA script dialect.", + 434→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/fck - checkers with metaballs (skupers remix).avs", + 435→ approx: false, + 436→ content: "# Auto-ported from \"fck - checkers with metaballs (skupers remix).avs\" (Winamp AVS / fck)\n# SuperScope point program, 4 AVSTrans macros expanded.\nname: \"checkers with metaballs (skupers remix)\"\nauthor: \"fck\"\nmode: lines\nblend: additive\npersist: 0.88\nlinewidth: 2\nysign: -1\n\n[init]\nn=500;p=3.14159\n\n[frame]\nk=h/w*1.05;mxs=mxs+g;mys=mys+g2;mx=sin(mxs)*.8;my=sin(mys)*.8;t=t+.1\n\n[beat]\ng=getosc(.2,0,0)/3;g2=getosc(.8,0,0)/3\n\n[point]\nd=i/6+getosc(0,0,0)/5*i; \r\nr=i*p*44; \r\nx=(cos(r)*d+mx)*k; \r\ny=sin(r)*d+my;\r\nlig=sin(r)*above(sin(r),0)/2;\r\nblue=(1-i)-lig;\r\ngreen=blue;\r\nred=sqrt(blue)*2-lig\n", + 437→ }, + 438→ { + 439→ folder: "root/embedded/Amp Picks", + 440→ name: "jinx (skupers remix)", + 441→ author: "horse-fly", + 442→ description: "Auto-ported from the Winamp AVS preset \"horse-fly - jinx (skupers remix).avs\" by horse-fly. The original is driven by ColorClip, Simple, Mosaic, which the script engine cannot run -- replaced with a generated \"spectrum bars\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 443→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/horse-fly - jinx (skupers remix).avs", + 444→ approx: true, + 445→ content: "name: \"jinx (skupers remix)\"\nmode: dots\nblend: additive\npersist: 0.814\nlinewidth: 1.769\n\n[init]\nbars = 46\nn = bars * 12\n\n[frame]\nrot = rot + dt * (0.046 + mid * 0.3)\nhue = hue + dt * 0.043\n\n[point]\nbar = floor(i * bars)\nbi = frac(i * bars)\nlvl = getspec(bar / bars, 0, 0)\nh = lvl * 0.65\na = bar * 6.28318 / bars + rot\nrad = 0.246 + bi * h\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.25 + bi * 0.75 * abs(sin(bar * 6.28318 / bars))\ngreen = 0.25 + bi * 0.75 * 0.22\nblue = 0.25 + bi * 0.75 * abs(cos(bar * 6.28318 / bars))\nskip = if(above(bi, 0.97), 1, 0)\n", + 446→ }, + 447→ { + 448→ folder: "root/embedded/Amp Picks", + 449→ name: "not quite a bendy tunnel (skupers remix)", + 450→ author: "jheriko", + 451→ description: "Auto-ported from the Winamp AVS preset \"jheriko - not quite a bendy tunnel (skupers remix).avs\" by jheriko. The original is driven by Interleave, DynamicMovement, effect#737, which the script engine cannot run -- replaced with a generated \"lissajous\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 452→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/jheriko - not quite a bendy tunnel (skupers remix).avs", + 453→ approx: true, + 454→ content: "name: \"not quite a bendy tunnel (skupers remix)\"\nmode: lines\nblend: additive\npersist: 0.862\nlinewidth: 1.443\n\n[init]\nn = 806\n\n[frame]\nt = t + dt * 0.276\nhue = hue + dt * 0.055\n\n[point]\nph = i * 6.28318 * 1.699\nfa = 2 + mid * 0.35\nfb = 3 + bass * 0.45\nx = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect\ny = sin(ph * fb + t * 1.3 + 2.216) * (0.5 + treb * 0.35)\nred = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.3\ngreen = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.65\nblue = min(1, 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 1.3)\n", + 455→ }, + 456→ { + 457→ folder: "root/embedded/Amp Picks", + 458→ name: "newpoop (for wa5)", + 459→ author: "justin", + 460→ description: "Auto-ported from the Winamp AVS preset \"justin - newpoop (for wa5).avs\" by justin. The original is driven by ColorModifier, which the script engine cannot run -- replaced with a generated \"orbits\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 461→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/justin - newpoop (for wa5).avs", + 462→ approx: true, + 463→ content: "name: \"newpoop (for wa5)\"\nmode: dots\nblend: additive\npersist: 0.796\nlinewidth: 2.44\n\n[init]\nrings = 4\nn = rings * 98\n\n[frame]\nt = t + dt * (0.176 + bass_att * 0.6)\nhue = hue + dt * 0.135\nsquash = 0.549 + 0.25 * sin(t * 0.439)\n\n[point]\nring = floor(i * rings)\nri3 = frac(i * rings)\nr0 = 0.16 + ring * 0.12\na = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4\nx = sin(a) * r0 * (1 + bass * 0.18) / aspect\ny = cos(a) * r0 * squash\nsat = frac(ri3 * 5)\nsize = if(below(sat, 0.14), 3 + bass * 3, 1)\nred = min(1, 0.25 + bass * 0.5 + ring * 0.07 * 1.3)\ngreen = 0.25 + bass * 0.5 + ring * 0.07 * 0.5\nblue = 0.25 + bass * 0.5 + ring * 0.07 * 0.12\n", + 464→ }, + 465→ { + 466→ folder: "root/embedded/Amp Picks", + 467→ name: "the landscape is killing me (wa5remix)", + 468→ author: "justin", + 469→ description: "Auto-ported from the Winamp AVS preset \"justin - the landscape is killing me (wa5remix).avs\" by justin. The original is driven by DynamicDistanceModifier, ColorModifier, which the script engine cannot run -- replaced with a generated \"rain\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 470→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/justin - the landscape is killing me (wa5remix).avs", + 471→ approx: true, + 472→ content: "name: \"the landscape is killing me (wa5remix)\"\nmode: dots\nblend: additive\npersist: 0.704\nlinewidth: 2.586\n\n[init]\ncols = 54\nn = 1193\n\n[frame]\nfall = fall + dt * (0.514 + vol_att * 0.841)\nhue = hue + dt * 0.071\n\n[point]\ncol = floor(i * cols)\nci = frac(i * cols)\nxx = (col / cols - 0.5) * 1.9\nyf = frac(rand(col * 3.7 + 1) + fall * (0.55 + rand(col + 5) * 0.5))\ntail = rand(col * 1.3 + 9) * 0.31 + 0.04\nyy = (yf * 2 - 1) * 1.05 + ci * tail\nx = xx / aspect\ny = yy\nred = (1 - ci) * (0.2 + treb * 0.85) + 0.04 * (0.45 + 0.55 * sin(hue * 6.28318 + col * 0.3))\ngreen = (1 - ci) * (0.2 + treb * 0.85) + 0.04 * (0.45 + 0.55 * sin(hue * 6.28318 + col * 0.3 + 2.09))\nblue = (1 - ci) * (0.2 + treb * 0.85) + 0.04 * (0.45 + 0.55 * sin(hue * 6.28318 + col * 0.3 + 4.19))\nskip = if(above(abs(yy), 1.02), 1, 0)\n", + 473→ }, + 474→ { + 475→ folder: "root/embedded/Amp Picks", + 476→ name: "Dragonscales", + 477→ author: "mig", + 478→ description: "Auto-ported from the Winamp AVS preset \"mig - Dragonscales.avs\" by mig. The original is driven by CustomBPM, BufferSave, MovingParticle, which the script engine cannot run -- replaced with a generated \"lissajous\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 479→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Dragonscales.avs", + 480→ approx: true, + 481→ content: "name: \"Dragonscales\"\nmode: lines\nblend: additive\npersist: 0.885\nlinewidth: 2.375\n\n[init]\nn = 938\n\n[frame]\nt = t + dt * 0.353\nhue = hue + dt * 0.094\n\n[point]\nph = i * 6.28318 * 2.096\nfa = 2 + mid * 0.35\nfb = 3 + bass * 0.45\nx = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect\ny = sin(ph * fb + t * 1.3 + 2.866) * (0.5 + treb * 0.35)\nred = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + bass * 0.95)\ngreen = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + mid * 0.95)\nblue = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * (0.25 + treb * 0.95)\n", + 482→ }, + 483→ { + 484→ folder: "root/embedded/Amp Picks", + 485→ name: "Encapsulade", + 486→ author: "mig", + 487→ description: "Auto-ported from the Winamp AVS preset \"mig - Encapsulade.avs\" by mig. The original is driven by BufferSave, SetRenderMode, CustomBPM, which the script engine cannot run -- replaced with a generated \"spectrum bars\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 488→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Encapsulade.avs", + 489→ approx: true, + 490→ content: "name: \"Encapsulade\"\nmode: lines\nblend: additive\npersist: 0.814\nlinewidth: 2.058\n\n[init]\nbars = 64\nn = bars * 9\n\n[frame]\nrot = rot + dt * (0.103 + mid * 0.3)\nhue = hue + dt * 0.072\n\n[point]\nbar = floor(i * bars)\nbi = frac(i * bars)\nlvl = getspec(bar / bars, 0, 0)\nh = lvl * 0.85\na = bar * 6.28318 / bars + rot\nrad = 0.262 + bi * h\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars))\ngreen = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 2.09))\nblue = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 4.19))\nskip = if(above(bi, 0.97), 1, 0)\n", + 491→ }, + 492→ { + 493→ folder: "root/embedded/Amp Picks", + 494→ name: "Freekwyrms", + 495→ author: "mig", + 496→ description: "Auto-ported from the Winamp AVS preset \"mig - Freekwyrms.avs\" by mig. The original is driven by BufferSave, SetRenderMode, MovingParticle, which the script engine cannot run -- replaced with a generated \"spectrum bars\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 497→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Freekwyrms.avs", + 498→ approx: true, + 499→ content: "name: \"Freekwyrms\"\nmode: dots\nblend: additive\npersist: 0.864\nlinewidth: 1.436\n\n[init]\nbars = 46\nn = bars * 12\n\n[frame]\nrot = rot + dt * (0.09 + mid * 0.3)\nhue = hue + dt * 0.063\n\n[point]\nbar = floor(i * bars)\nbi = frac(i * bars)\nlvl = getspec(bar / bars, 0, 0)\nh = lvl * 0.722\na = bar * 6.28318 / bars + rot\nrad = 0.216 + bi * h\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = min(1, 0.25 + bi * 0.75 * 1.3)\ngreen = 0.25 + bi * 0.75 * 0.5\nblue = 0.25 + bi * 0.75 * 0.12\nskip = if(above(bi, 0.97), 1, 0)\n", + 500→ }, + 501→ { + 502→ folder: "root/embedded/Amp Picks", + 503→ name: "Lilypod", + 504→ author: "mig", + 505→ description: "Auto-ported from the Winamp AVS preset \"mig - Lilypod.avs\" by mig. The original is driven by BufferSave, MovingParticle, 2.8+ Effect List Config, which the script engine cannot run -- replaced with a generated \"fountain\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 506→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Lilypod.avs", + 507→ approx: true, + 508→ content: "name: \"Lilypod\"\nmode: dots\nblend: additive\npersist: 0.787\nlinewidth: 1.928\n\n[init]\nn = 885\n\n[frame]\ntt = tt + dt * (0.5 + bass_att * 1.1)\nhue = hue + dt * 0.04\nburst = burst * 0.9\n\n[beat]\nburst = 1\n\n[point]\njet = floor(i * 4)\nlife = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))\na = jet * 6.28318 / 4 + rand(i * 5.1 + jet) * 0.722\nspd = 0.4 + rand(i * 9.2 + jet) * 0.8\npx = cos(a) * spd * life\npy = sin(a) * spd * life - 0.744 * life * life\nx = px * (0.85 + bass * 0.35) / aspect\ny = py\nred = max(0, 1 - life) * (0.35 + burst * 0.55) * abs(sin(life * 4))\ngreen = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.22\nblue = max(0, 1 - life) * (0.35 + burst * 0.55) * abs(cos(life * 4))\nskip = if(above(life, 0.94), 1, 0)\n", + 509→ }, + 510→ { + 511→ folder: "root/embedded/Amp Picks", + 512→ name: "Mist Wisps", + 513→ author: "mig", + 514→ description: "Auto-ported from the Winamp AVS preset \"mig - Mist Wisps.avs\" by mig. The original is driven by CustomBPM, BufferSave, MovingParticle, which the script engine cannot run -- replaced with a generated \"moire\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 515→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Mist Wisps.avs", + 516→ approx: true, + 517→ content: "name: \"Mist Wisps\"\nmode: dots\nblend: additive\npersist: 0.758\nlinewidth: 2.24\n\n[init]\nn = 1297\n\n[frame]\nt = t + dt * 0.323\nhue = hue + dt * 0.1\n\n[point]\nu = rand(i * 1.7) * 2 - 1\nw = rand(i * 3.3 + 11) * 2 - 1\nm = sin((u * 2.207 + w * 6.547 + t) * 3.14159) * sin((u * 5.739 - w * 2.319 - t * 0.7) * 3.14159)\nx = u * 0.85 / aspect\ny = w * 0.957\nlum = max(0, m) * (0.3 + bass * 0.9) + 0.06\nred = lum * (0.25 + bass * 0.95)\ngreen = lum * (0.25 + mid * 0.95)\nblue = lum * (0.25 + treb * 0.95)\nsize = 1 + abs(m) * 3.505\n", + 518→ }, + 519→ { + 520→ folder: "root/embedded/Amp Picks", + 521→ name: "Nebulating - Hypercolorspace", + 522→ author: "mig", + 523→ description: "Auto-ported from the Winamp AVS preset \"mig - Nebulating - Hypercolorspace.avs\" by mig. The original is driven by CustomBPM, BufferSave, Fadeout, which the script engine cannot run -- replaced with a generated \"moire\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 524→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Nebulating - Hypercolorspace.avs", + 525→ approx: true, + 526→ content: "name: \"Nebulating - Hypercolorspace\"\nmode: dots\nblend: additive\npersist: 0.792\nlinewidth: 2.678\n\n[init]\nn = 1374\n\n[frame]\nt = t + dt * 0.423\nhue = hue + dt * 0.123\n\n[point]\nu = rand(i * 1.7) * 2 - 1\nw = rand(i * 3.3 + 11) * 2 - 1\nm = sin((u * 3.51 + w * 2.666 + t) * 3.14159) * sin((u * 6.323 - w * 6.393 - t * 0.7) * 3.14159)\nx = u * 0.959 / aspect\ny = w * 0.871\nlum = max(0, m) * (0.3 + bass * 0.9) + 0.06\nred = min(1, lum * 1.3)\ngreen = lum * 0.5\nblue = lum * 0.12\nsize = 1 + abs(m) * 3.799\n", + 527→ }, + 528→ { + 529→ folder: "root/embedded/Amp Picks", + 530→ name: "Reverb - Deep Net", + 531→ author: "mig", + 532→ description: "Auto-ported from the Winamp AVS preset \"mig - Reverb - Deep Net.avs\" by mig. The original is driven by CustomBPM, BufferSave, Fadeout, which the script engine cannot run -- replaced with a generated \"lattice\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 533→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Reverb - Deep Net.avs", + 534→ approx: true, + 535→ content: "name: \"Reverb - Deep Net\"\nmode: dots\nblend: additive\npersist: 0.818\nlinewidth: 2.394\n\n[init]\ncols = 29\nn = cols * cols\n\n[frame]\nrot = rot + dt * (0.041 + mid * 0.4)\nhue = hue + dt * 0.089\n\n[point]\ncx = floor(i * cols) / (cols - 1)\ncy = frac(i * cols)\nh = sv * 0.525\nux = (cx - 0.5) * 1.845\nuy = (cy - 0.5) * 1.845\nrx = ux * cos(rot) - uy * sin(rot)\nry = ux * sin(rot) + uy * cos(rot)\nx = (rx / aspect) * (1 - h * 0.7)\ny = ry * (1 - h * 0.7)\nred = 0.22 + h * 2.2 * abs(sin(cx * 2.712))\ngreen = 0.22 + h * 2.2 * 0.22\nblue = 0.22 + h * 2.2 * abs(cos(cx * 2.712))\nsize = 1.2 + h * 5\n", + 536→ }, + 537→ { + 538→ folder: "root/embedded/Amp Picks", + 539→ name: "Slyde - Tri", + 540→ author: "mig", + 541→ description: "Auto-ported from the Winamp AVS preset \"mig - Slyde - Tri.avs\" by mig. The original is driven by BufferSave, SetRenderMode, MovingParticle, which the script engine cannot run -- replaced with a generated \"lissajous\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 542→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Slyde - Tri.avs", + 543→ approx: true, + 544→ content: "name: \"Slyde - Tri\"\nmode: lines\nblend: additive\npersist: 0.863\nlinewidth: 1.626\n\n[init]\nn = 938\n\n[frame]\nt = t + dt * 0.483\nhue = hue + dt * 0.076\n\n[point]\nph = i * 6.28318 * 2.841\nfa = 6 + mid * 0.35\nfb = 2 + bass * 0.45\nx = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect\ny = sin(ph * fb + t * 1.3 + 1.909) * (0.5 + treb * 0.35)\nred = min(1, 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 1.3)\ngreen = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.5\nblue = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.12\n", + 545→ }, + 546→ { + 547→ folder: "root/embedded/Amp Picks", + 548→ name: "Solar Flaire", + 549→ author: "mig", + 550→ description: "Auto-ported from the Winamp AVS preset \"mig - Solar Flaire.avs\" by mig. The original is driven by BufferSave, Fadeout, SetRenderMode, which the script engine cannot run -- replaced with a generated \"spectrum bars\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 551→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Solar Flaire.avs", + 552→ approx: true, + 553→ content: "name: \"Solar Flaire\"\nmode: lines\nblend: additive\npersist: 0.866\nlinewidth: 1.678\n\n[init]\nbars = 59\nn = bars * 11\n\n[frame]\nrot = rot + dt * (0.076 + mid * 0.3)\nhue = hue + dt * 0.107\n\n[point]\nbar = floor(i * bars)\nbi = frac(i * bars)\nlvl = getspec(bar / bars, 0, 0)\nh = lvl * 0.607\na = bar * 6.28318 / bars + rot\nrad = 0.241 + bi * h\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars))\ngreen = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 2.09))\nblue = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 4.19))\nskip = if(above(bi, 0.97), 1, 0)\n", + 554→ }, + 555→ { + 556→ folder: "root/embedded/Amp Picks", + 557→ name: "Spintronics - Backspin", + 558→ author: "mig", + 559→ description: "Auto-ported from the Winamp AVS preset \"mig - Spintronics - Backspin.avs\" by mig. The original is driven by 2.8+ Effect List Config, Simple, SetRenderMode, which the script engine cannot run -- replaced with a generated \"fountain\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 560→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Spintronics - Backspin.avs", + 561→ approx: true, + 562→ content: "name: \"Spintronics - Backspin\"\nmode: dots\nblend: additive\npersist: 0.804\nlinewidth: 2.037\n\n[init]\nn = 1157\n\n[frame]\ntt = tt + dt * (0.5 + bass_att * 1.1)\nhue = hue + dt * 0.12\nburst = burst * 0.9\n\n[beat]\nburst = 1\n\n[point]\njet = floor(i * 4)\nlife = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))\na = jet * 6.28318 / 4 + rand(i * 5.1 + jet) * 0.547\nspd = 0.4 + rand(i * 9.2 + jet) * 0.8\npx = cos(a) * spd * life\npy = sin(a) * spd * life - 0.712 * life * life\nx = px * (0.85 + bass * 0.35) / aspect\ny = py\nred = min(1, max(0, 1 - life) * (0.35 + burst * 0.55) * 1.3)\ngreen = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.5\nblue = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.12\nskip = if(above(life, 0.94), 1, 0)\n", + 563→ }, + 564→ { + 565→ folder: "root/embedded/Amp Picks", + 566→ name: "Starslappin", + 567→ author: "mig", + 568→ description: "Auto-ported from the Winamp AVS preset \"mig - Starslappin.avs\" by mig. The original is driven by unportable scope code (frame line 20: Expected ')' but found ';'), which the script engine cannot run -- replaced with a generated \"kaleido\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 569→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Starslappin.avs", + 570→ approx: true, + 571→ content: "name: \"Starslappin\"\nmode: lines\nblend: additive\npersist: 0.842\nlinewidth: 2.148\n\n[init]\nsegs = 7\nn = 545\n\n[frame]\nrot = rot + dt * (0.087 + mid_att * 0.5)\nhue = hue + dt * 0.125\nflash = flash * 0.85\n\n[beat]\nflash = 1\n\n[point]\nseg = floor(i * segs)\nsi = frac(i * segs)\na0 = si * 6.28318 / segs + rot\namp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06\nrad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2))\na = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + amp * 1.3 * (0.25 + bass * 0.95)\ngreen = 0.3 + amp * 1.3 * (0.25 + mid * 0.95)\nblue = 0.3 + amp * 1.3 * (0.25 + treb * 0.95)\nskip = if(above(si, 0.96), 1, 0)\n", + 572→ }, + 573→ { + 574→ folder: "root/embedded/Amp Picks", + 575→ name: "Street Art - Fire Inside", + 576→ author: "mig", + 577→ description: "Auto-ported from the Winamp AVS preset \"mig - Street Art - Fire Inside.avs\" by mig. The original is driven by BufferSave, Colorfade, Movement, which the script engine cannot run -- replaced with a generated \"fountain\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 578→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Street Art - Fire Inside.avs", + 579→ approx: true, + 580→ content: "name: \"Street Art - Fire Inside\"\nmode: dots\nblend: additive\npersist: 0.757\nlinewidth: 2.052\n\n[init]\nn = 1065\n\n[frame]\ntt = tt + dt * (0.5 + bass_att * 1.1)\nhue = hue + dt * 0.108\nburst = burst * 0.9\n\n[beat]\nburst = 1\n\n[point]\njet = floor(i * 4)\nlife = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))\na = jet * 6.28318 / 4 + rand(i * 5.1 + jet) * 1.184\nspd = 0.4 + rand(i * 9.2 + jet) * 0.8\npx = cos(a) * spd * life\npy = sin(a) * spd * life - 1.383 * life * life\nx = px * (0.85 + bass * 0.35) / aspect\ny = py\nred = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.3\ngreen = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.65\nblue = min(1, max(0, 1 - life) * (0.35 + burst * 0.55) * 1.3)\nskip = if(above(life, 0.94), 1, 0)\n", + 581→ }, + 582→ { + 583→ folder: "root/embedded/Amp Picks", + 584→ name: "Swoo - Slow", + 585→ author: "mig", + 586→ description: "Auto-ported from the Winamp AVS preset \"mig - Swoo - Slow.avs\" by mig. The original is driven by CustomBPM, BufferSave, Movement, which the script engine cannot run -- replaced with a generated \"ribbon\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 587→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/mig - Swoo - Slow.avs", + 588→ approx: true, + 589→ content: "name: \"Swoo - Slow\"\nmode: lines\nblend: additive\npersist: 0.919\nlinewidth: 1.852\n\n[init]\nn = 1159\n\n[frame]\nt = t + dt * (0.461 + bass_att * 0.8)\nsway = sway + dt * (0.5 + treb)\nhue = hue + dt * 0.046\n\n[point]\na = i * 6.28318 * 3\nwob = sin(a * 3 + t * 2) * (0.08 + treb * 0.3)\nrad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.199 - wob\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + abs(v) * 1.2 * 0.3\ngreen = 0.3 + abs(v) * 1.2 * 0.65\nblue = min(1, 0.3 + abs(v) * 1.2 * 1.3)\n", + 590→ }, + 591→ { + 592→ folder: "root/embedded/Amp Picks", + 593→ name: "smell of music (skupers remix)", + 594→ author: "nixa", + 595→ description: "Auto-ported from the Winamp AVS preset \"nixa - smell of music (skupers remix).avs\" by nixa. The original is driven by Mirror, DynamicMovement, Movement, which the script engine cannot run -- replaced with a generated \"web\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 596→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/nixa - smell of music (skupers remix).avs", + 597→ approx: true, + 598→ content: "name: \"smell of music (skupers remix)\"\nmode: lines\nblend: additive\npersist: 0.805\nlinewidth: 1.342\n\n[init]\nspokes = 31\nn = spokes * 34\n\n[frame]\nrot = rot + dt * (0.118 + mid * 0.4)\nt = t + dt * 2.453\nhue = hue + dt * 0.113\n\n[point]\nsp = floor(i * spokes)\nsi = frac(i * spokes)\na = sp * 6.28318 / spokes + rot\nwave = sin(si * 3 * 3.14159 - t) * (0.03 + bass * 0.28)\nrad = 0.12 + si * 0.868 + wave\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.3\ngreen = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.65\nblue = min(1, (1 - si) * 0.45 + 0.15 + sv * 0.55 * 1.3)\nskip = if(above(si, 0.985), 1, 0)\n", + 599→ }, + 600→ { + 601→ folder: "root/embedded/Amp Picks", + 602→ name: "bumpy", + 603→ author: "p-k", + 604→ description: "Auto-ported from the Winamp AVS preset \"p-k - bumpy.avs\" by p-k. The original is driven by CustomBPM, Color Map, which the script engine cannot run -- replaced with a generated \"pulse rings\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 605→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/p-k - bumpy.avs", + 606→ approx: true, + 607→ content: "name: \"bumpy\"\nmode: dots\nblend: additive\npersist: 0.798\nlinewidth: 1.642\n\n[init]\nn = 640\n\n[frame]\nhue = hue + dt * 0.119 + beat * 0.01\ntravel = travel + dt * (0.394 + bass_att * 1.4)\nflash = flash * 0.86\n\n[beat]\nflash = 1\n\n[point]\ng = floor(i * 10)\ngi = frac(i * 10)\nph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))\na = gi * 6.28318\nrad = ph * (0.28 + bass * 0.544 + flash * 0.08)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nfade = sin(ph * 3.14159)\nred = fade * (0.35 + flash * 0.4) * 0.3\ngreen = fade * (0.35 + flash * 0.4) * 0.65\nblue = min(1, fade * (0.35 + flash * 0.4) * 1.3)\nskip = if(above(ph, 0.96), 1, 0)\n", + 608→ }, + 609→ { + 610→ folder: "root/embedded/Amp Picks", + 611→ name: "splendora", + 612→ author: "", + 613→ description: "Auto-ported from the Winamp AVS preset \"splendora.avs\". The original is driven by Grain, Simple, Movement, which the script engine cannot run -- replaced with a generated \"swirl\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 614→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/splendora.avs", + 615→ approx: true, + 616→ content: "name: \"splendora\"\nmode: lines\nblend: additive\npersist: 0.867\nlinewidth: 1.513\n\n[init]\nn = 974\n\n[frame]\nt = t + dt * (0.211 + bass_att * 1.8)\nhue = hue + dt * 0.068 + beat * 0.012\n\n[point]\narm = floor(i * 9)\nfa = frac(i * 9)\nd = fa\nang = arm * 1.515 + d * 1.922 * 3.14159 + t\nrad = (0.04 + pow(d, 1.746) * 1.15) * (0.7 + bass * 0.5)\nx = sin(ang) * rad / aspect\ny = cos(ang) * rad\nred = (0.3 + 0.7 * d) * (0.3 + mid) * abs(sin(d * 2.585))\ngreen = (0.3 + 0.7 * d) * (0.3 + mid) * 0.22\nblue = (0.3 + 0.7 * d) * (0.3 + mid) * abs(cos(d * 2.585))\nskip = if(below(fa, 0.04), 1, 0)\n", + 617→ }, + 618→ { + 619→ folder: "root/embedded/Amp Picks", + 620→ name: "Urantia", + 621→ author: "zxe", + 622→ description: "Auto-ported from the Winamp AVS preset \"zxe-Urantia.avs\" by zxe. The original is driven by effect#326, \u0001, UniqueTone, which the script engine cannot run -- replaced with a generated \"orbits\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 623→ originalFile: "/avs-originals/embedded/root/embedded/Amp Picks/zxe-Urantia.avs", + 624→ approx: true, + 625→ content: "name: \"Urantia\"\nmode: dots\nblend: additive\npersist: 0.862\nlinewidth: 2.9\n\n[init]\nrings = 4\nn = rings * 101\n\n[frame]\nt = t + dt * (0.393 + bass_att * 0.6)\nhue = hue + dt * 0.094\nsquash = 0.387 + 0.25 * sin(t * 0.454)\n\n[point]\nring = floor(i * rings)\nri3 = frac(i * rings)\nr0 = 0.16 + ring * 0.141\na = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4\nx = sin(a) * r0 * (1 + bass * 0.18) / aspect\ny = cos(a) * r0 * squash\nsat = frac(ri3 * 2)\nsize = if(below(sat, 0.14), 3 + bass * 3, 1)\nred = 0.25 + bass * 0.5 + ring * 0.07 * (0.25 + bass * 0.95)\ngreen = 0.25 + bass * 0.5 + ring * 0.07 * (0.25 + mid * 0.95)\nblue = 0.25 + bass * 0.5 + ring * 0.07 * (0.25 + treb * 0.95)\n", + 626→ }, + 627→ { + 628→ folder: "root/embedded/Dynamics", + 629→ name: "tentaclism (fake hboy rmx)", + 630→ author: "dynamic duo", + 631→ description: "Auto-ported from the Winamp AVS preset \"01 dynamic duo - tentaclism (fake hboy rmx).avs\" by dynamic duo. The original is driven by unportable scope code (frame line 20: Expected ')' but found ';'), which the script engine cannot run -- replaced with a generated \"starfield\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 632→ originalFile: "/avs-originals/embedded/root/embedded/Dynamics/01 dynamic duo - tentaclism (fake hboy rmx).avs", + 633→ approx: true, + 634→ content: "name: \"tentaclism (fake hboy rmx)\"\nmode: dots\nblend: additive\npersist: 0.833\nlinewidth: 2.485\n\n[init]\nn = 952\n\n[frame]\ntravel = travel + dt * (0.231 + vol_att * 1.898)\nhue = hue + dt * 0.056\n\n[point]\na = rand(i * 7.3) * 6.28318\nz = frac(rand(i * 3.1 + 5) + travel * (0.5 + rand(i + 9) * 0.7))\nrad = z * z * 0.992\nx = sin(a) * rad / aspect\ny = cos(a) * rad\ntw = 0.4 + 0.6 * sin(z * 40 + time * 3) * (0.5 + treb)\nred = min(1, tw * 1.3)\ngreen = tw * 0.5\nblue = tw * 0.12\nsize = 1 + z * 3 * (0.5 + bass)\nskip = if(above(z, 0.97), 1, 0)\n", + 635→ }, + 636→ { + 637→ folder: "root/embedded/Dynamics", + 638→ name: "tentaclism (sky of contempt mix by drew)", + 639→ author: "dynamic duo", + 640→ description: "Auto-ported from the Winamp AVS preset \"02 dynamic duo - tentaclism (sky of contempt mix by drew).avs\" by dynamic duo. The original is driven by unportable scope code (frame line 20: Expected ')' but found ';'), which the script engine cannot run -- replaced with a generated \"orbits\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 641→ originalFile: "/avs-originals/embedded/root/embedded/Dynamics/02 dynamic duo - tentaclism (sky of contempt mix by drew).avs", + 642→ approx: true, + 643→ content: "name: \"tentaclism (sky of contempt mix by drew)\"\nmode: dots\nblend: additive\npersist: 0.83\nlinewidth: 2.652\n\n[init]\nrings = 3\nn = rings * 87\n\n[frame]\nt = t + dt * (0.201 + bass_att * 0.6)\nhue = hue + dt * 0.06\nsquash = 0.564 + 0.25 * sin(t * 0.401)\n\n[point]\nring = floor(i * rings)\nri3 = frac(i * rings)\nr0 = 0.16 + ring * 0.108\na = ri3 * 6.28318 + t * (1.2 - ring * 0.18) + ring * 2.4\nx = sin(a) * r0 * (1 + bass * 0.18) / aspect\ny = cos(a) * r0 * squash\nsat = frac(ri3 * 4)\nsize = if(below(sat, 0.14), 3 + bass * 3, 1)\nred = 0.25 + bass * 0.5 + ring * 0.07 * abs(sin(ring * 1.3))\ngreen = 0.25 + bass * 0.5 + ring * 0.07 * 0.22\nblue = 0.25 + bass * 0.5 + ring * 0.07 * abs(cos(ring * 1.3))\n", + 644→ }, + 645→ { + 646→ folder: "root/embedded/Dynamics", + 647→ name: "tentaclism (microdee's grandpa was a tentaclist)", + 648→ author: "dynamic duo", + 649→ description: "Auto-ported from the Winamp AVS preset \"03 dynamic duo - tentaclism (microdee's grandpa was a tentaclist).avs\" by dynamic duo. Original superscope code, machine-translated to the AVA script dialect.", + 650→ originalFile: "/avs-originals/embedded/root/embedded/Dynamics/03 dynamic duo - tentaclism (microdee's grandpa was a tentaclist).avs", + 651→ approx: false, + 652→ content: "# Auto-ported from \"03 dynamic duo - tentaclism (microdee's grandpa was a tentaclist).avs\" (Winamp AVS / dynamic duo)\n# SuperScope point program, 4 AVSTrans macros expanded.\nname: \"tentaclism (microdee's grandpa was a tentaclist)\"\nauthor: \"dynamic duo\"\nmode: dots\nblend: additive\npersist: 0.78\nlinewidth: 3\nysign: -1\n\n[init]\nn=40; ln1=1; ln=ln1+2;\r\ncns=.6; chs2=200; chs1=35; mrab=rnd(10)/20;\n\n[frame]\nt=t-0.05; pc=0; sw=-1; sm=sm+rnd(20)/200;\r\nsrm=.9*(srm+rnd(100)*.0004);\r\nssm=sin(sm)*srm+rnd(100)*.0003;\n\n[beat]\nflash = 1\n\n[point]\nsw=sw*-1;\r\nx=if(above(pc,ln),rnd(100)/50-1,rnd(100)/2000+.27+ssm);y=if(above(pc,ln),rnd(100)/50-1,sw);\r\nred=rnd(100)/100; green=red; blue=red; pc=pc+1;\r\ndrawmode=below(pc,ln); skip=band(below(pc,ln),equal(sw,1))\n", + 653→ }, + 654→ { + 655→ folder: "root/embedded/Dynamics", + 656→ name: "tentaclism (cathode ray mix by onionring of doom)", + 657→ author: "dynamic duo", + 658→ description: "Auto-ported from the Winamp AVS preset \"04 dynamic duo - tentaclism (cathode ray mix by onionring of doom).avs\" by dynamic duo. The original is driven by unportable scope code (frame line 19: Expected ')' but found ';'), which the script engine cannot run -- replaced with a generated \"web\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 659→ originalFile: "/avs-originals/embedded/root/embedded/Dynamics/04 dynamic duo - tentaclism (cathode ray mix by onionring of doom).avs", + 660→ approx: true, + 661→ content: "name: \"tentaclism (cathode ray mix by onionring of doom)\"\nmode: lines\nblend: additive\npersist: 0.873\nlinewidth: 1.987\n\n[init]\nspokes = 26\nn = spokes * 38\n\n[frame]\nrot = rot + dt * (0.076 + mid * 0.4)\nt = t + dt * 1.652\nhue = hue + dt * 0.062\n\n[point]\nsp = floor(i * spokes)\nsi = frac(i * spokes)\na = sp * 6.28318 / spokes + rot\nwave = sin(si * 5 * 3.14159 - t) * (0.03 + bass * 0.28)\nrad = 0.12 + si * 0.882 + wave\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.3\ngreen = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.65\nblue = min(1, (1 - si) * 0.45 + 0.15 + sv * 0.55 * 1.3)\nskip = if(above(si, 0.985), 1, 0)\n", + 662→ }, + 663→ { + 664→ folder: "root/embedded/Dynamics", + 665→ name: "chromatics (glowy mix by meaningless-existance)", + 666→ author: "dynamic duo", + 667→ description: "Auto-ported from the Winamp AVS preset \"05 dynamic duo - chromatics (glowy mix by meaningless-existance).avs\" by dynamic duo. The original is driven by a trivial scope (n=4; the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"tunnel\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 668→ originalFile: "/avs-originals/embedded/root/embedded/Dynamics/05 dynamic duo - chromatics (glowy mix by meaningless-existance).avs", + 669→ approx: true, + 670→ content: "name: \"chromatics (glowy mix by meaningless-existance)\"\nmode: lines\nblend: additive\npersist: 0.857\nlinewidth: 1.543\n\n[init]\nn = 731\n\n[frame]\nt = t + dt * (0.338 + bass_att * 1.5)\nhue = hue + dt * 0.042\n\n[point]\nring = floor(i * 17)\nri2 = frac(i * 17)\nz = frac(ring / 17 + t)\nrad = 0.05 + z * 0.805\na = ri2 * 6.28318 + ring * 0.411 + sin(t * 0.7) * 2\nx = sin(a) * rad * (0.55 + sv * 1.073) / aspect\ny = cos(a) * rad * (0.55 + sv * 1.073)\nred = (1 - z) * (0.3 + bass * 0.7) * abs(sin(z * 2.074))\ngreen = (1 - z) * (0.3 + bass * 0.7) * 0.22\nblue = (1 - z) * (0.3 + bass * 0.7) * abs(cos(z * 2.074))\n", + 671→ }, + 672→ { + 673→ folder: "root/embedded/Dynamics", + 674→ name: "tentaclism (midas remix)", + 675→ author: "dynamic duo", + 676→ description: "Auto-ported from the Winamp AVS preset \"06 dynamic duo - tentaclism (midas remix).avs\" by dynamic duo. The original is driven by unportable scope code (frame line 20: Expected ')' but found ';'), which the script engine cannot run -- replaced with a generated \"fountain\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 677→ originalFile: "/avs-originals/embedded/root/embedded/Dynamics/06 dynamic duo - tentaclism (midas remix).avs", + 678→ approx: true, + 679→ content: "name: \"tentaclism (midas remix)\"\nmode: dots\nblend: additive\npersist: 0.848\nlinewidth: 2.168\n\n[init]\nn = 757\n\n[frame]\ntt = tt + dt * (0.5 + bass_att * 1.1)\nhue = hue + dt * 0.053\nburst = burst * 0.9\n\n[beat]\nburst = 1\n\n[point]\njet = floor(i * 2)\nlife = frac(rand(i * 7.7 + jet) + tt * (0.35 + rand(i + 3) * 0.65))\na = jet * 6.28318 / 2 + rand(i * 5.1 + jet) * 1.14\nspd = 0.4 + rand(i * 9.2 + jet) * 0.8\npx = cos(a) * spd * life\npy = sin(a) * spd * life - 1.009 * life * life\nx = px * (0.85 + bass * 0.35) / aspect\ny = py\nred = min(1, max(0, 1 - life) * (0.35 + burst * 0.55) * 1.3)\ngreen = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.5\nblue = max(0, 1 - life) * (0.35 + burst * 0.55) * 0.12\nskip = if(above(life, 0.94), 1, 0)\n", + 680→ }, + 681→ { + 682→ folder: "root/embedded/Dynamics", + 683→ name: "tentaclism (raz remix - ugly edit)", + 684→ author: "dynamic duo", + 685→ description: "Auto-ported from the Winamp AVS preset \"07 dynamic duo - tentaclism (raz remix - ugly edit).avs\" by dynamic duo. The original is driven by unportable scope code (frame line 20: Expected ')' but found ';'), which the script engine cannot run -- replaced with a generated \"spectrum bars\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 686→ originalFile: "/avs-originals/embedded/root/embedded/Dynamics/07 dynamic duo - tentaclism (raz remix - ugly edit).avs", + 687→ approx: true, + 688→ content: "name: \"tentaclism (raz remix - ugly edit)\"\nmode: lines\nblend: additive\npersist: 0.873\nlinewidth: 1.756\n\n[init]\nbars = 44\nn = bars * 11\n\n[frame]\nrot = rot + dt * (0.118 + mid * 0.3)\nhue = hue + dt * 0.119\n\n[point]\nbar = floor(i * bars)\nbi = frac(i * bars)\nlvl = getspec(bar / bars, 0, 0)\nh = lvl * 0.767\na = bar * 6.28318 / bars + rot\nrad = 0.145 + bi * h\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars))\ngreen = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 2.09))\nblue = 0.25 + bi * 0.75 * (0.45 + 0.55 * sin(hue * 6.28318 + bar * 6.28318 / bars + 4.19))\nskip = if(above(bi, 0.97), 1, 0)\n", + 689→ }, + 690→ { + 691→ folder: "root/embedded/Dynamics", + 692→ name: "tentaclism (the y.m.o. rework #1)", + 693→ author: "dynamic duo", + 694→ description: "Auto-ported from the Winamp AVS preset \"08 dynamic duo - tentaclism (the y.m.o. rework #1).avs\" by dynamic duo. The original is driven by unportable scope code (frame line 20: Expected ')' but found ';'), which the script engine cannot run -- replaced with a generated \"web\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 695→ originalFile: "/avs-originals/embedded/root/embedded/Dynamics/08 dynamic duo - tentaclism (the y.m.o. rework #1).avs", + 696→ approx: true, + 697→ content: "name: \"tentaclism (the y.m.o. rework #1)\"\nmode: dots\nblend: additive\npersist: 0.831\nlinewidth: 1.694\n\n[init]\nspokes = 32\nn = spokes * 27\n\n[frame]\nrot = rot + dt * (0.073 + mid * 0.4)\nt = t + dt * 1.807\nhue = hue + dt * 0.131\n\n[point]\nsp = floor(i * spokes)\nsi = frac(i * spokes)\na = sp * 6.28318 / spokes + rot\nwave = sin(si * 2 * 3.14159 - t) * (0.03 + bass * 0.28)\nrad = 0.12 + si * 0.758 + wave\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(sin(sp * 0.4))\ngreen = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.22\nblue = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(cos(sp * 0.4))\nskip = if(above(si, 0.985), 1, 0)\n", + 698→ }, + 699→ { + 700→ folder: "root/embedded/Dynamics", + 701→ name: "tentaclism (kans of kansis mix by drew - edit)", + 702→ author: "dynamic duo", + 703→ description: "Auto-ported from the Winamp AVS preset \"09 dynamic duo - tentaclism (kans of kansis mix by drew - edit).avs\" by dynamic duo. The original is driven by unportable scope code (frame line 20: Expected ')' but found ';'), which the script engine cannot run -- replaced with a generated \"moire\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 704→ originalFile: "/avs-originals/embedded/root/embedded/Dynamics/09 dynamic duo - tentaclism (kans of kansis mix by drew - edit).avs", + 705→ approx: true, + 706→ content: "name: \"tentaclism (kans of kansis mix by drew - edit)\"\nmode: dots\nblend: additive\npersist: 0.827\nlinewidth: 2.039\n\n[init]\nn = 1449\n\n[frame]\nt = t + dt * 0.447\nhue = hue + dt * 0.034\n\n[point]\nu = rand(i * 1.7) * 2 - 1\nw = rand(i * 3.3 + 11) * 2 - 1\nm = sin((u * 6.164 + w * 5.725 + t) * 3.14159) * sin((u * 2.761 - w * 2.167 - t * 0.7) * 3.14159)\nx = u * 0.936 / aspect\ny = w * 0.903\nlum = max(0, m) * (0.3 + bass * 0.9) + 0.06\nred = min(1, lum * 1.3)\ngreen = lum * 0.5\nblue = lum * 0.12\nsize = 1 + abs(m) * 3.26\n", + 707→ }, + 708→ { + 709→ folder: "root/embedded/Envision", + 710→ name: "the pacifist (duo's underworld mix)", + 711→ author: "amphirion", + 712→ description: "Auto-ported from the Winamp AVS preset \"01 amphirion - the pacifist (duo's underworld mix).avs\" by amphirion. The original is driven by a trivial scope (n=4; the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"kaleido\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 713→ originalFile: "/avs-originals/embedded/root/embedded/Envision/01 amphirion - the pacifist (duo's underworld mix).avs", + 714→ approx: true, + 715→ content: "name: \"the pacifist (duo's underworld mix)\"\nmode: lines\nblend: additive\npersist: 0.856\nlinewidth: 1.75\n\n[init]\nsegs = 14\nn = 483\n\n[frame]\nrot = rot + dt * (0.149 + mid_att * 0.5)\nhue = hue + dt * 0.117\nflash = flash * 0.85\n\n[beat]\nflash = 1\n\n[point]\nseg = floor(i * segs)\nsi = frac(i * segs)\na0 = si * 6.28318 / segs + rot\namp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06\nrad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 4 + time * 2))\na = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + amp * 1.3 * (0.45 + 0.55 * sin(hue * 6.28318 + seg * 0.8))\ngreen = 0.3 + amp * 1.3 * (0.45 + 0.55 * sin(hue * 6.28318 + seg * 0.8 + 2.09))\nblue = 0.3 + amp * 1.3 * (0.45 + 0.55 * sin(hue * 6.28318 + seg * 0.8 + 4.19))\nskip = if(above(si, 0.96), 1, 0)\n", + 716→ }, + 717→ { + 718→ folder: "root/embedded/Envision", + 719→ name: "biofeedback (hboy's organic mix)", + 720→ author: "duo", + 721→ description: "Auto-ported from the Winamp AVS preset \"02 duo - biofeedback (hboy's organic mix).avs\" by duo. Original superscope code, machine-translated to the AVA script dialect.", + 722→ originalFile: "/avs-originals/embedded/root/embedded/Envision/02 duo - biofeedback (hboy's organic mix).avs", + 723→ approx: false, + 724→ content: "# Auto-ported from \"02 duo - biofeedback (hboy's organic mix).avs\" (Winamp AVS / duo)\n# SuperScope point program, 4 AVSTrans macros expanded.\nname: \"biofeedback (hboy's organic mix)\"\nauthor: \"duo\"\nmode: lines\nblend: additive\npersist: 0.88\nlinewidth: 2\nysign: -1\n\n[init]\nn=50\n\n[frame]\nbg=sin(bt);\r\nfr=fr+bt-(fr*.055);\r\npf=pf+.025;\n\n[beat]\nbt=getspec(0,0,0)*.55;\n\n[point]\nc=i*(3.14159265358979)*2;\r\nx=cos(c);\r\ny=c*sin(fr*.3)*cos(pf)*.1;\r\nsize=20+fr+v*20;\r\n\r\ncol=cos(i*19);\r\nred=col;\r\ngreen=col;\r\nblue=col;\n", + 725→ }, + 726→ { + 727→ folder: "root/embedded/Envision", + 728→ name: "roll-on mojo (duo remix)", + 729→ author: "zamuz", + 730→ description: "Auto-ported from the Winamp AVS preset \"04 zamuz - roll-on mojo (duo remix).avs\" by zamuz. The original is driven by a trivial scope (the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"swirl\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 731→ originalFile: "/avs-originals/embedded/root/embedded/Envision/04 zamuz - roll-on mojo (duo remix).avs", + 732→ approx: true, + 733→ content: "name: \"roll-on mojo (duo remix)\"\nmode: lines\nblend: additive\npersist: 0.889\nlinewidth: 1.751\n\n[init]\nn = 950\n\n[frame]\nt = t + dt * (0.251 + bass_att * 1.8)\nhue = hue + dt * 0.089 + beat * 0.012\n\n[point]\narm = floor(i * 3)\nfa = frac(i * 3)\nd = fa\nang = arm * 1.538 + d * 1.277 * 3.14159 + t\nrad = (0.04 + pow(d, 1.775) * 1.15) * (0.7 + bass * 0.5)\nx = sin(ang) * rad / aspect\ny = cos(ang) * rad\nred = (0.3 + 0.7 * d) * (0.3 + mid) * abs(sin(d * 3.995))\ngreen = (0.3 + 0.7 * d) * (0.3 + mid) * 0.22\nblue = (0.3 + 0.7 * d) * (0.3 + mid) * abs(cos(d * 3.995))\nskip = if(below(fa, 0.04), 1, 0)\n", + 734→ }, + 735→ { + 736→ folder: "root/embedded/Envision", + 737→ name: "cafe de duo (vanish's wicked jungle massive remix)", + 738→ author: "duo", + 739→ description: "Auto-ported from the Winamp AVS preset \"05 duo - cafe de duo (vanish's wicked jungle massive remix).avs\" by duo. The original is driven by unportable scope code (frame line 19: Expected ')' but found ';'), which the script engine cannot run -- replaced with a generated \"kaleido\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 740→ originalFile: "/avs-originals/embedded/root/embedded/Envision/05 duo - cafe de duo (vanish's wicked jungle massive remix).avs", + 741→ approx: true, + 742→ content: "name: \"cafe de duo (vanish's wicked jungle massive remix)\"\nmode: lines\nblend: additive\npersist: 0.873\nlinewidth: 1.915\n\n[init]\nsegs = 10\nn = 623\n\n[frame]\nrot = rot + dt * (0.112 + mid_att * 0.5)\nhue = hue + dt * 0.038\nflash = flash * 0.85\n\n[beat]\nflash = 1\n\n[point]\nseg = floor(i * segs)\nsi = frac(i * segs)\na0 = si * 6.28318 / segs + rot\namp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06\nrad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 9 + time * 2))\na = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + amp * 1.3 * (0.25 + bass * 0.95)\ngreen = 0.3 + amp * 1.3 * (0.25 + mid * 0.95)\nblue = 0.3 + amp * 1.3 * (0.25 + treb * 0.95)\nskip = if(above(si, 0.96), 1, 0)\n", + 743→ }, + 744→ { + 745→ folder: "root/embedded/Envision", + 746→ name: "incantation (duo remix - edit)", + 747→ author: "skupers", + 748→ description: "Auto-ported from the Winamp AVS preset \"06 skupers - incantation (duo remix - edit).avs\" by skupers. The original is driven by a trivial scope (n=4; the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"kaleido\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 749→ originalFile: "/avs-originals/embedded/root/embedded/Envision/06 skupers - incantation (duo remix - edit).avs", + 750→ approx: true, + 751→ content: "name: \"incantation (duo remix - edit)\"\nmode: lines\nblend: additive\npersist: 0.892\nlinewidth: 1.682\n\n[init]\nsegs = 14\nn = 476\n\n[frame]\nrot = rot + dt * (0.088 + mid_att * 0.5)\nhue = hue + dt * 0.074\nflash = flash * 0.85\n\n[beat]\nflash = 1\n\n[point]\nseg = floor(i * segs)\nsi = frac(i * segs)\na0 = si * 6.28318 / segs + rot\namp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06\nrad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2))\na = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + amp * 1.3 * abs(sin(seg * 0.8))\ngreen = 0.3 + amp * 1.3 * 0.22\nblue = 0.3 + amp * 1.3 * abs(cos(seg * 0.8))\nskip = if(above(si, 0.96), 1, 0)\n", + 752→ }, + 753→ { + 754→ folder: "root/embedded/Envision", + 755→ name: "miraculous flow (nemo remix)", + 756→ author: "duo", + 757→ description: "Auto-ported from the Winamp AVS preset \"07 duo - miraculous flow (nemo remix).avs\" by duo. The original is driven by UniqueTone, DynamicMovement, FastBright, which the script engine cannot run -- replaced with a generated \"ribbon\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 758→ originalFile: "/avs-originals/embedded/root/embedded/Envision/07 duo - miraculous flow (nemo remix).avs", + 759→ approx: true, + 760→ content: "name: \"miraculous flow (nemo remix)\"\nmode: lines\nblend: additive\npersist: 0.91\nlinewidth: 1.628\n\n[init]\nn = 981\n\n[frame]\nt = t + dt * (0.579 + bass_att * 0.8)\nsway = sway + dt * (0.5 + treb)\nhue = hue + dt * 0.122\n\n[point]\na = i * 6.28318 * 3\nwob = sin(a * 6 + t * 2) * (0.08 + treb * 0.3)\nrad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.202 - wob\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = min(1, 0.3 + abs(v) * 1.2 * 1.3)\ngreen = 0.3 + abs(v) * 1.2 * 0.5\nblue = 0.3 + abs(v) * 1.2 * 0.12\n", + 761→ }, + 762→ { + 763→ folder: "root/embedded/Envision", + 764→ name: "warm freeform (mykal remix)", + 765→ author: "duo", + 766→ description: "Auto-ported from the Winamp AVS preset \"08 duo - warm freeform (mykal remix).avs\" by duo. The original is driven by a trivial scope (the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"web\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 767→ originalFile: "/avs-originals/embedded/root/embedded/Envision/08 duo - warm freeform (mykal remix).avs", + 768→ approx: true, + 769→ content: "name: \"warm freeform (mykal remix)\"\nmode: dots\nblend: additive\npersist: 0.898\nlinewidth: 1.303\n\n[init]\nspokes = 32\nn = spokes * 37\n\n[frame]\nrot = rot + dt * (0.135 + mid * 0.4)\nt = t + dt * 2.906\nhue = hue + dt * 0.077\n\n[point]\nsp = floor(i * spokes)\nsi = frac(i * spokes)\na = sp * 6.28318 / spokes + rot\nwave = sin(si * 3 * 3.14159 - t) * (0.03 + bass * 0.28)\nrad = 0.12 + si * 0.868 + wave\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(sin(sp * 0.4))\ngreen = (1 - si) * 0.45 + 0.15 + sv * 0.55 * 0.22\nblue = (1 - si) * 0.45 + 0.15 + sv * 0.55 * abs(cos(sp * 0.4))\nskip = if(above(si, 0.985), 1, 0)\n", + 770→ }, + 771→ { + 772→ folder: "root/embedded/Envision", + 773→ name: "pleasure point (duo remix)", + 774→ author: "zxe", + 775→ description: "Auto-ported from the Winamp AVS preset \"09 zxe - pleasure point (duo remix).avs\" by zxe. The original is driven by a trivial scope (the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"lissajous\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 776→ originalFile: "/avs-originals/embedded/root/embedded/Envision/09 zxe - pleasure point (duo remix).avs", + 777→ approx: true, + 778→ content: "name: \"pleasure point (duo remix)\"\nmode: lines\nblend: additive\npersist: 0.87\nlinewidth: 1.808\n\n[init]\nn = 856\n\n[frame]\nt = t + dt * 0.572\nhue = hue + dt * 0.036\n\n[point]\nph = i * 6.28318 * 2.087\nfa = 2 + mid * 0.35\nfb = 7 + bass * 0.45\nx = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect\ny = sin(ph * fb + t * 1.3 + 1.499) * (0.5 + treb * 0.35)\nred = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.3\ngreen = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.65\nblue = min(1, 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 1.3)\n", + 779→ }, + 780→ { + 781→ folder: "root/embedded/Envision", + 782→ name: "heart dynamics (duo's high dose mix)", + 783→ author: "zamuz", + 784→ description: "Auto-ported from the Winamp AVS preset \"10 zamuz - heart dynamics (duo's high dose mix).avs\" by zamuz. The original is driven by a trivial scope (the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"ribbon\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 785→ originalFile: "/avs-originals/embedded/root/embedded/Envision/10 zamuz - heart dynamics (duo's high dose mix).avs", + 786→ approx: true, + 787→ content: "name: \"heart dynamics (duo's high dose mix)\"\nmode: lines\nblend: additive\npersist: 0.909\nlinewidth: 1.819\n\n[init]\nn = 1105\n\n[frame]\nt = t + dt * (0.35 + bass_att * 0.8)\nsway = sway + dt * (0.5 + treb)\nhue = hue + dt * 0.091\n\n[point]\na = i * 6.28318 * 3\nwob = sin(a * 5 + t * 2) * (0.08 + treb * 0.3)\nrad = (0.42 + mid * 0.25) * (0.85 + 0.15 * sin(a * 3 + sway)) + v * 0.184 - wob\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + abs(v) * 1.2 * abs(sin(a * 0.5))\ngreen = 0.3 + abs(v) * 1.2 * 0.22\nblue = 0.3 + abs(v) * 1.2 * abs(cos(a * 0.5))\n", + 788→ }, + 789→ { + 790→ folder: "root/embedded/Envision", + 791→ name: "we build here (duo's building blocks remix)", + 792→ author: "nemo", + 793→ description: "Auto-ported from the Winamp AVS preset \"11 nemo - we build here (duo's building blocks remix).avs\" by nemo. The original is driven by DynamicMovement, BufferSave, 2.8+ Effect List Config, which the script engine cannot run -- replaced with a generated \"moire\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 794→ originalFile: "/avs-originals/embedded/root/embedded/Envision/11 nemo - we build here (duo's building blocks remix).avs", + 795→ approx: true, + 796→ content: "name: \"we build here (duo's building blocks remix)\"\nmode: dots\nblend: additive\npersist: 0.739\nlinewidth: 2.311\n\n[init]\nn = 1183\n\n[frame]\nt = t + dt * 0.515\nhue = hue + dt * 0.134\n\n[point]\nu = rand(i * 1.7) * 2 - 1\nw = rand(i * 3.3 + 11) * 2 - 1\nm = sin((u * 6.135 + w * 2.876 + t) * 3.14159) * sin((u * 3.312 - w * 5.365 - t * 0.7) * 3.14159)\nx = u * 0.99 / aspect\ny = w * 0.98\nlum = max(0, m) * (0.3 + bass * 0.9) + 0.06\nred = min(1, lum * 1.3)\ngreen = lum * 0.5\nblue = lum * 0.12\nsize = 1 + abs(m) * 3.466\n", + 797→ }, + 798→ { + 799→ folder: "root/embedded/Envision", + 800→ name: "wickedjunglesmassive (yathosho's cartographic re-rub)", + 801→ author: "duo & vanish", + 802→ description: "Auto-ported from the Winamp AVS preset \"12 duo & vanish - wickedjunglesmassive (yathosho's cartographic re-rub).avs\" by duo & vanish. The original is driven by unportable scope code (frame line 19: Expected ')' but found ';'), which the script engine cannot run -- replaced with a generated \"moire\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 803→ originalFile: "/avs-originals/embedded/root/embedded/Envision/12 duo & vanish - wickedjunglesmassive (yathosho's cartographic re-rub).avs", + 804→ approx: true, + 805→ content: "name: \"wickedjunglesmassive (yathosho's cartographic re-rub)\"\nmode: dots\nblend: additive\npersist: 0.805\nlinewidth: 1.835\n\n[init]\nn = 1292\n\n[frame]\nt = t + dt * 0.675\nhue = hue + dt * 0.035\n\n[point]\nu = rand(i * 1.7) * 2 - 1\nw = rand(i * 3.3 + 11) * 2 - 1\nm = sin((u * 3.6 + w * 6.394 + t) * 3.14159) * sin((u * 5.053 - w * 4.781 - t * 0.7) * 3.14159)\nx = u * 0.897 / aspect\ny = w * 0.959\nlum = max(0, m) * (0.3 + bass * 0.9) + 0.06\nred = lum * (0.45 + 0.55 * sin(hue * 6.28318 + u * 4.308))\ngreen = lum * (0.45 + 0.55 * sin(hue * 6.28318 + u * 4.308 + 2.09))\nblue = lum * (0.45 + 0.55 * sin(hue * 6.28318 + u * 4.308 + 4.19))\nsize = 1 + abs(m) * 2.706\n", + 806→ }, + 807→ { + 808→ folder: "root/embedded/Envision", + 809→ name: "why i love you (duo's pulsedriver remix)", + 810→ author: "skupers", + 811→ description: "Auto-ported from the Winamp AVS preset \"13 skupers - why i love you (duo's pulsedriver remix).avs\" by skupers. The original is driven by a trivial scope (n=10; the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"kaleido\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 812→ originalFile: "/avs-originals/embedded/root/embedded/Envision/13 skupers - why i love you (duo's pulsedriver remix).avs", + 813→ approx: true, + 814→ content: "name: \"why i love you (duo's pulsedriver remix)\"\nmode: lines\nblend: additive\npersist: 0.843\nlinewidth: 1.547\n\n[init]\nsegs = 8\nn = 528\n\n[frame]\nrot = rot + dt * (0.074 + mid_att * 0.5)\nhue = hue + dt * 0.052\nflash = flash * 0.85\n\n[beat]\nflash = 1\n\n[point]\nseg = floor(i * segs)\nsi = frac(i * segs)\na0 = si * 6.28318 / segs + rot\namp = 0.1 + sv * 0.55 + bass * 0.25 + flash * 0.06\nrad = 0.15 + amp * (0.4 + 0.6 * sin(a0 * 6 + time * 2))\na = seg * 6.28318 / segs + a0 * if(below(seg % 2, 1), 1, -1)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nred = 0.3 + amp * 1.3 * 0.85\ngreen = 0.3 + amp * 1.3 * 0.92\nblue = 0.3 + amp * 1.3\nskip = if(above(si, 0.96), 1, 0)\n", + 815→ }, + 816→ { + 817→ folder: "root/embedded/Envision", + 818→ name: "conjuring sands (skupers remix - edit)", + 819→ author: "duo", + 820→ description: "Auto-ported from the Winamp AVS preset \"14 duo - conjuring sands (skupers remix - edit).avs\" by duo. The original is driven by a trivial scope (n=15; the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"lissajous\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 821→ originalFile: "/avs-originals/embedded/root/embedded/Envision/14 duo - conjuring sands (skupers remix - edit).avs", + 822→ approx: true, + 823→ content: "name: \"conjuring sands (skupers remix - edit)\"\nmode: lines\nblend: additive\npersist: 0.922\nlinewidth: 2.216\n\n[init]\nn = 874\n\n[frame]\nt = t + dt * 0.211\nhue = hue + dt * 0.039\n\n[point]\nph = i * 6.28318 * 2.729\nfa = 6 + mid * 0.35\nfb = 5 + bass * 0.45\nx = sin(ph * fa + t) * (0.5 + bass * 0.3) / aspect\ny = sin(ph * fb + t * 1.3 + 1.092) * (0.5 + treb * 0.35)\nred = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * abs(sin(ph * 0.5))\ngreen = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * 0.22\nblue = 0.3 + 0.45 * sin(ph * 2 + t) + abs(v) * 0.6 * abs(cos(ph * 0.5))\n", + 824→ }, + 825→ { + 826→ folder: "root/embedded/Envision", + 827→ name: "multiple overdose (duo remix)", + 828→ author: "tuggummi", + 829→ description: "Auto-ported from the Winamp AVS preset \"15 tuggummi - multiple overdose (duo remix).avs\" by tuggummi. Original superscope code, machine-translated to the AVA script dialect.", + 830→ originalFile: "/avs-originals/embedded/root/embedded/Envision/15 tuggummi - multiple overdose (duo remix).avs", + 831→ approx: false, + 832→ content: "# Auto-ported from \"15 tuggummi - multiple overdose (duo remix).avs\" (Winamp AVS / tuggummi)\n# SuperScope point program, 4 AVSTrans macros expanded.\nname: \"multiple overdose (duo remix)\"\nauthor: \"tuggummi\"\nmode: lines\nblend: additive\npersist: 0.88\nlinewidth: 2\nysign: -1\n\n[init]\npi=acos(-1) ; t=acos(-1)\n\n[frame]\nn=w*0.55+2 ; t=t+0.25\n\n[beat]\nflash = 1\n\n[point]\ns=bnot(s) ;\r\nx=i*2-1 ;\r\ny=s*0.25-0.225-v*.2 ;\r\nc=sin(i*pi*2+t)*0.5+0.5 ;\r\nred=c ;\r\nblue=c ;\r\ngreen=c;\r\nsize=3;\n", + 833→ }, + 834→ { + 835→ folder: "root/embedded/Envision", + 836→ name: "warm freeform (ya-tho-sho treatment)", + 837→ author: "duo", + 838→ description: "Auto-ported from the Winamp AVS preset \"16 duo - warm freeform (ya-tho-sho treatment).avs\" by duo. The original is driven by a trivial scope (the real work is movement/APE driven), which the script engine cannot run -- replaced with a generated \"pulse rings\"-style visual, uniquely parameterized for this preset (beat & band reactive).", + 839→ originalFile: "/avs-originals/embedded/root/embedded/Envision/16 duo - warm freeform (ya-tho-sho treatment).avs", + 840→ approx: true, + 841→ content: "name: \"warm freeform (ya-tho-sho treatment)\"\nmode: lines\nblend: additive\npersist: 0.855\nlinewidth: 1.459\n\n[init]\nn = 572\n\n[frame]\nhue = hue + dt * 0.129 + beat * 0.01\ntravel = travel + dt * (0.44 + bass_att * 1.4)\nflash = flash * 0.86\n\n[beat]\nflash = 1\n\n[point]\ng = floor(i * 13)\ngi = frac(i * 13)\nph = frac(rand(g * 5.1 + 1) + travel * (0.55 + rand(g + 17) * 0.85))\na = gi * 6.28318\nrad = ph * (0.305 + bass * 0.472 + flash * 0.08)\nx = sin(a) * rad / aspect\ny = cos(a) * rad\nfade = sin(ph * 3.14159)\nred = fade * (0.35 + flash * 0.4) * 0.85\ngreen = fade * (0.35 + flash * 0.4) * 0.92\nblue = fade * (0.35 + flash * 0.4)\nskip = if(above(ph, 0.96), 1, 0)\n", + 842→ }, + 843→ + 844→ // ========================================================================== + 845→ // Zai-Magic — ten presets hand-authored for this engine (v7.00). + 846→ // Every one is built around BEAT-SYNCED COLOR: the color wheel turns on + 847→ // the kick, palettes swap per beat or per 4-beat bar, and kick envelopes + 848→ // (beatage) drive brightness. Techniques span all three render modes, + 849→ // megabuf particle physics, direct getspec() calls and loop() setup. + 850→ // KEEP VERBATIM when regenerating this file with the converter. + 851→ // ========================================================================== + 852→ { + 853→ folder: "root/embedded/Zai-Magic", + 854→ name: "Prism Chandelier", + 855→ author: "Zai", + 856→ description: + 857→ "Six mirrored ribbons spin as one kaleidoscope; every beat turns the color wheel a notch and the kick flares the whole prism. Hand-authored for OVE -- hsv rainbow + beatage kick envelope.", + 858→ content: `name: "Prism Chandelier" + 859→author: "Zai" + 860→mode: lines + 861→blend: additive + 862→persist: 0.87 + 863→linewidth: 1.6 + 864→ + 865→[init] + 866→mirrors = 6 + 867→n = 1140 + 868→chroma = 0.13 + 869→rot = 0 + 870→ + 871→[frame] + 872→t = t + dt + 873→rot = rot + dt * (0.25 + mid_att * 0.6) + 874→chroma = frac(chroma + dt * 0.045 + beat * 0.085) + 875→pulse = exp(-beatage * 3.2) + 876→glow = 0.35 + bass_att * 0.45 + pulse * 0.35 + 877→ + 878→[point] + 879→seg = floor(i * mirrors) + 880→si = frac(i * mirrors) + 881→ph = si * pi + 882→bx = sin(ph * 2 + t * 1.35) * (0.34 + bass * 0.18) + 883→by = cos(ph * 3 + t * 0.9) * (0.26 + mid * 0.16) + 884→ca = cos(rot + seg * tau / mirrors) + 885→sa = sin(rot + seg * tau / mirrors) + 886→x = (bx * ca - by * sa) / aspect + 887→y = bx * sa + by * ca + 888→hue = chroma + seg / mirrors + si * 0.08 + 889→red = hsvr(hue, 1, glow) + 890→green = hsvg(hue, 1, glow) + 891→blue = hsvb(hue, 1, glow) + 892→skip = if(below(si, 0.015), 1, 0) + 893→`, + 894→ }, + 895→ { + 896→ folder: "root/embedded/Zai-Magic", + 897→ name: "Neon Heartbeat", + 898→ author: "Zai", + 899→ description: + 900→ "A solid-mode bloom that throbs with the bass -- the fill hue jumps on every beat and the petals breathe on the kick envelope. Hand-authored for OVE (solid mode + hsv color).", + 901→ content: `name: "Neon Heartbeat" + 902→author: "Zai" + 903→mode: solid + 904→blend: additive + 905→persist: 0.82 + 906→linewidth: 2 + 907→ + 908→[init] + 909→n = 240 + 910→hue = 0.55 + 911→spin = 0 + 912→ + 913→[frame] + 914→t = t + dt + 915→spin = spin + dt * 0.4 + 916→hue = frac(hue + beat * 0.22) + 917→pulse = exp(-beatage * 4.5) + 918→petals = 5 + pulse * 1.5 + 919→ + 920→[point] + 921→li = if(below(i, 0.5), i * 2, (i - 0.5) * 2) + 922→back = if(below(i, 0.5), 1, -1) + 923→ang = li * tau + spin * back + 924→petal = 1 + 0.42 * sin(petals * ang + t * 1.7) + 925→rad = if(below(i, 0.5), 0.62 + bass * 0.16 + pulse * 0.2, 0.3 + treb * 0.1 + pulse * 0.12) * petal + 926→x = sin(ang) * rad / aspect + 927→y = cos(ang) * rad + 928→red = hsvr(hue, 0.9, 0.42 + pulse * 0.5) + 929→green = hsvg(hue, 0.9, 0.42 + pulse * 0.5) + 930→blue = hsvb(hue, 0.9, 0.42 + pulse * 0.5) + 931→skip = if(below(li, 0.008), 1, 0) + 932→`, + 933→ }, + 934→ { + 935→ folder: "root/embedded/Zai-Magic", + 936→ name: "Spectrum Serpent", + 937→ author: "Zai", + 938→ description: + 939→ "An oscilloscope serpent coiled into a spiral -- the body swells where the spectrum is loud and the rainbow shifts a step on every beat. Hand-authored for OVE.", + 940→ content: `name: "Spectrum Serpent" + 941→author: "Zai" + 942→mode: lines + 943→blend: additive + 944→persist: 0.9 + 945→linewidth: 2.2 + 946→ + 947→[init] + 948→n = 900 + 949→chroma = 0 + 950→turns = 4.5 + 951→ + 952→[frame] + 953→t = t + dt * (0.7 + bass_att * 0.9) + 954→chroma = frac(chroma + dt * 0.06 + beat * 0.14) + 955→pulse = exp(-beatage * 3.5) + 956→ + 957→[point] + 958→a = i * tau * turns + t + 959→r = 0.07 + pow(i, 0.85) * 0.82 * (0.55 + bass_att * 0.55 + pulse * 0.12) + 960→wig = sin(a * 3 + t * 2.1) * 0.09 * (0.4 + mid) + 961→x = (sin(a) * r + wig * cos(a)) / aspect + 962→y = cos(a) * r + wig * sin(a) + 963→hue = chroma + i * 0.45 + 964→lum = 0.3 + sv * 1.1 * (0.6 + vol_att * 0.8) + pulse * 0.18 + 965→red = hsvr(hue, 0.95, min(1, lum)) + 966→green = hsvg(hue, 0.95, min(1, lum)) + 967→blue = hsvb(hue, 0.95, min(1, lum)) + 968→size = 1.2 + sv * 4 + 969→alpha = 0.45 + 0.55 * sin(i * pi) + 970→`, + 971→ }, + 972→ { + 973→ folder: "root/embedded/Zai-Magic", + 974→ name: "Bass Bloom", + 975→ author: "Zai", + 976→ description: + 977→ "A fountain of 480 megabuf particles launched by every beat -- each petal carries the exact hue of the beat that spawned it, so the falling arcs leave a rainbow memory of the music. Hand-authored for OVE.", + 978→ content: `name: "Bass Bloom" + 979→author: "Zai" + 980→mode: dots + 981→blend: additive + 982→persist: 0.9 + 983→linewidth: 2 + 984→ + 985→[init] + 986→n = 480 + 987→budget = 80 + 988→chroma = 0.62 + 989→k = 0 + 990→loop(n, megabuf(k * 6 + 4) = -1; k = k + 1) + 991→ + 992→[frame] + 993→t = t + dt + 994→budget = budget + 2 + beat * 340 + 995→chroma = frac(chroma + beat * 0.13) + 996→ + 997→[point] + 998→k = floor(i * n) + 999→b0 = k * 6 + 1000→age = megabuf(b0 + 4) + 1001→if(band(below(age, 0), above(budget, 0)), + 1002→ (megabuf(b0 + 4) = 0.0001; + 1003→ megabuf(b0 + 5) = chroma; + 1004→ angk = rand(k * 3.13 + 0.3) * tau; + 1005→ spdk = 0.5 + rand(k * 7.77 + 3) * 0.9 + bass * 0.35; + 1006→ megabuf(b0) = 0; + 1007→ megabuf(b0 + 1) = 0; + 1008→ megabuf(b0 + 2) = cos(angk) * spdk; + 1009→ megabuf(b0 + 3) = sin(angk) * spdk; + 1010→ budget = budget - 1), + 1011→ 0) + 1012→age = megabuf(b0 + 4) + 1013→if(above(age, 0), + 1014→ (vy = megabuf(b0 + 3) - dt * 0.5; + 1015→ megabuf(b0 + 3) = vy; + 1016→ megabuf(b0) = megabuf(b0) + megabuf(b0 + 2) * dt; + 1017→ megabuf(b0 + 1) = megabuf(b0 + 1) + vy * dt; + 1018→ megabuf(b0 + 4) = age + dt; + 1019→ px = megabuf(b0); + 1020→ py = megabuf(b0 + 1); + 1021→ fade = 1 - age * 0.8; + 1022→ if(below(fade, 0.03), megabuf(b0 + 4) = -1, 0); + 1023→ if(above(abs(px) + abs(py), 2.3), megabuf(b0 + 4) = -1, 0); + 1024→ hue = megabuf(b0 + 5); + 1025→ x = px / aspect; + 1026→ y = py; + 1027→ red = hsvr(hue, 0.9, max(0, fade)); + 1028→ green = hsvg(hue, 0.9, max(0, fade)); + 1029→ blue = hsvb(hue, 0.9, max(0, fade)); + 1030→ size = 1.1 + fade * 2.6; + 1031→ alpha = min(1, fade * 1.5)), + 1032→ (skip = 1)) + 1033→`, + 1034→ }, + 1035→ { + 1036→ folder: "root/embedded/Zai-Magic", + 1037→ name: "Strobe Lattice", + 1038→ author: "Zai", + 1039→ description: + 1040→ "Nested squares snap around and swap palette on every beat like a club strobe light; the flash decays on the beatage envelope while the lattice breathes with the bass. Hand-authored for OVE.", + 1041→ content: `name: "Strobe Lattice" + 1042→author: "Zai" + 1043→mode: lines + 1044→blend: additive + 1045→persist: 0.86 + 1046→linewidth: 1.8 + 1047→ + 1048→[init] + 1049→rings = 5 + 1050→sides = 4 + 1051→per = 6 + 1052→n = rings * per + 1053→rot = 0.2 + 1054→chroma = 0 + 1055→ + 1056→[frame] + 1057→t = t + dt + 1058→rot = rot + dt * 0.22 + 1059→flash = exp(-beatage * 6) + 1060→ + 1061→[beat] + 1062→rot = rot + 0.62 + 1063→chroma = frac(beats * 0.19) + 1064→ + 1065→[point] + 1066→ring = floor(i * rings) + 1067→ri = frac(i * rings) + 1068→vert = floor(ri * per) + 1069→av = vert * tau / sides + 1070→fx = cos(av) + 1071→fy = sin(av) + 1072→scale = 0.2 + ring * 0.17 + bass_att * 0.08 + flash * 0.05 + 1073→a = rot * (1 + ring * 0.13) + 1074→ca = cos(a) + 1075→sa = sin(a) + 1076→x = (fx * ca - fy * sa) * scale / aspect + 1077→y = (fx * sa + fy * ca) * scale + 1078→hue = chroma + ring * 0.055 + 1079→lum = 0.32 + flash * 0.5 + mid_att * 0.28 + 1080→red = hsvr(hue, 0.85, lum) + 1081→green = hsvg(hue, 0.85, lum) + 1082→blue = hsvb(hue, 0.85, lum) + 1083→skip = if(above(vert, sides + 0.5), 1, 0) + 1084→`, + 1085→ }, + 1086→ { + 1087→ folder: "root/embedded/Zai-Magic", + 1088→ name: "Aurora Veil", + 1089→ author: "Zai", + 1090→ description: + 1091→ "Nine waving curtains, each lit by its own frequency band (getspec) -- the whole color scheme drifts once per 4-beat bar for slow, breathing color changes. Hand-authored for OVE.", + 1092→ content: `name: "Aurora Veil" + 1093→author: "Zai" + 1094→mode: lines + 1095→blend: additive + 1096→persist: 0.93 + 1097→linewidth: 2.4 + 1098→ + 1099→[init] + 1100→curtains = 9 + 1101→n = 1080 + 1102→scheme = 0.33 + 1103→ + 1104→[frame] + 1105→t = t + dt + 1106→shimmer = sin(beatphase * tau) + 1107→ + 1108→[beat] + 1109→if(equal(beats % 4, 0), scheme = frac(scheme + 0.17), 0) + 1110→ + 1111→[point] + 1112→cu = floor(i * curtains) + 1113→ci = frac(i * curtains) + 1114→cx = (cu / (curtains - 1) - 0.5) * 1.9 + 1115→band = getspec(cu / curtains, 0, 0) + 1116→x = (cx + sin(ci * 3.1 + t * 0.8 + cu * 0.7) * 0.16 * (0.25 + mid_att) + shimmer * 0.03) / aspect + 1117→y = ci * 1.9 - 0.95 + cos(ci * 4.2 - t * 1.1 + cu) * 0.05 + 1118→hue = scheme + cu / curtains * 0.5 + ci * 0.06 + 1119→lum = (0.2 + band * 1.35 * (0.5 + vol_att)) * (0.55 + 0.45 * sin(ci * pi)) + 1120→red = hsvr(hue, 0.8, min(1, lum)) + 1121→green = hsvg(hue, 0.8, min(1, lum)) + 1122→blue = hsvb(hue, 0.72, min(1, lum * 1.18)) + 1123→alpha = 0.5 + 0.5 * sin(ci * pi) + 1124→skip = if(below(ci, 0.01), 1, 0) + 1125→`, + 1126→ }, + 1127→ { + 1128→ folder: "root/embedded/Zai-Magic", + 1129→ name: "Supernova", + 1130→ author: "Zai", + 1131→ description: + 1132→ "Every beat detonates the entire 620-particle field -- shells leave the core white-hot and saturate into the beat's hue as they expand and cool. Hand-authored for OVE (megabuf physics + drag).", + 1133→ content: `name: "Supernova" + 1134→author: "Zai" + 1135→mode: dots + 1136→blend: additive + 1137→persist: 0.88 + 1138→linewidth: 2 + 1139→ + 1140→[init] + 1141→n = 620 + 1142→budget = 620 + 1143→chroma = 0.08 + 1144→k = 0 + 1145→loop(n, megabuf(k * 6 + 4) = -1; k = k + 1) + 1146→ + 1147→[frame] + 1148→t = t + dt + 1149→budget = budget + 1 + 1150→chroma = frac(chroma + beat * 0.21) + 1151→ + 1152→[beat] + 1153→budget = n + 1154→k = 0 + 1155→loop(n, megabuf(k * 6 + 4) = -1; k = k + 1) + 1156→ + 1157→[point] + 1158→k = floor(i * n) + 1159→b0 = k * 6 + 1160→age = megabuf(b0 + 4) + 1161→if(band(below(age, 0), above(budget, 0)), + 1162→ (megabuf(b0 + 4) = 0.0001; + 1163→ megabuf(b0 + 5) = chroma; + 1164→ angk = rand(k * 5.19 + 0.7 + beats * 13.7) * tau; + 1165→ spdk = 0.4 + rand(k * 9.71 + 2 + beats * 7.31) * 1.2 + bass * 0.4; + 1166→ megabuf(b0) = cos(angk) * 0.03; + 1167→ megabuf(b0 + 1) = sin(angk) * 0.03; + 1168→ megabuf(b0 + 2) = cos(angk) * spdk; + 1169→ megabuf(b0 + 3) = sin(angk) * spdk; + 1170→ budget = budget - 1), + 1171→ 0) + 1172→age = megabuf(b0 + 4) + 1173→if(above(age, 0), + 1174→ (drag = exp(-age * 1.6); + 1175→ megabuf(b0) = megabuf(b0) + megabuf(b0 + 2) * drag * dt; + 1176→ megabuf(b0 + 1) = megabuf(b0 + 1) + megabuf(b0 + 3) * drag * dt; + 1177→ megabuf(b0 + 4) = age + dt; + 1178→ px = megabuf(b0); + 1179→ py = megabuf(b0 + 1); + 1180→ hue = megabuf(b0 + 5); + 1181→ sat = min(1, age * 3.5); + 1182→ lum = max(0, exp(-age * 1.15)); + 1183→ if(below(lum, 0.02), (megabuf(b0 + 4) = -1; skip = 1), 0); + 1184→ x = px / aspect; + 1185→ y = py; + 1186→ red = hsvr(hue, sat, lum); + 1187→ green = hsvg(hue, sat, lum); + 1188→ blue = hsvb(hue, sat, lum); + 1189→ size = 0.6 + lum * 3.2; + 1190→ alpha = min(1, lum * 2)), + 1191→ (skip = 1)) + 1192→`, + 1193→ }, + 1194→ { + 1195→ folder: "root/embedded/Zai-Magic", + 1196→ name: "Tunnel Vision", + 1197→ author: "Zai", + 1198→ description: + 1199→ "A tunnel of rings where every ring carries the hue of the beat it was born on -- each kick sends a new color wave riding out from the center. Hand-authored for OVE.", + 1200→ content: `name: "Tunnel Vision" + 1201→author: "Zai" + 1202→mode: lines + 1203→blend: additive + 1204→persist: 0.9 + 1205→linewidth: 2 + 1206→ + 1207→[init] + 1208→rings = 26 + 1209→per = 36 + 1210→n = rings * per + 1211→tt = 0 + 1212→chroma = 0.4 + 1213→ + 1214→[frame] + 1215→t = t + dt + 1216→tt = tt + dt * (0.14 + bass_att * 0.22) + 1217→chroma = frac(chroma + beat * 0.115) + 1218→pulse = exp(-beatage * 4) + 1219→ + 1220→[point] + 1221→ring = floor(i * rings) + 1222→ri = frac(i * rings) + 1223→dot = floor(ri * per) + 1224→z = frac(ring / rings + tt) + 1225→rad = 0.06 + pow(z, 1.7) * 1.05 + 1226→a = dot / per * tau + ring * 0.24 + sin(t * 0.5) * 0.15 + 1227→wob = 1 + sin(ri * tau * 5 + t * 2) * 0.05 * treb_att + pulse * 0.08 + 1228→x = sin(a) * rad * wob / aspect + 1229→y = cos(a) * rad * wob + 1230→hue = chroma - z * 0.38 + 1231→lum = pow(z, 0.6) * (0.35 + vol_att * 0.55) + pulse * 0.15 * z + 1232→red = hsvr(hue, 0.92, min(1, lum)) + 1233→green = hsvg(hue, 0.92, min(1, lum)) + 1234→blue = hsvb(hue, 0.92, min(1, lum)) + 1235→skip = if(above(dot, per - 1.5), 1, 0) + 1236→`, + 1237→ }, + 1238→ { + 1239→ folder: "root/embedded/Zai-Magic", + 1240→ name: "Lissajous Loom", + 1241→ author: "Zai", + 1242→ description: + 1243→ "A lissajous weave that re-threads its frequency ratio once per 4-beat bar while the rainbow rotates on every single beat -- the pattern morphs in color and shape together. Hand-authored for OVE.", + 1244→ content: `name: "Lissajous Loom" + 1245→author: "Zai" + 1246→mode: lines + 1247→blend: additive + 1248→persist: 0.91 + 1249→linewidth: 1.5 + 1250→ + 1251→[init] + 1252→n = 1400 + 1253→mode = 0 + 1254→chroma = 0.5 + 1255→ + 1256→[frame] + 1257→t = t + dt * 0.5 + 1258→fa = 2 + floor(mode / 2) + equal(mode, 4) * 2 + 1259→fb = 3 + mode % 2 + equal(mode, 3) + 1260→pulse = exp(-beatage * 3) + 1261→ + 1262→[beat] + 1263→if(equal(beats % 4, 0), mode = (mode + 1) % 5, 0) + 1264→chroma = frac(chroma + 0.09) + 1265→ + 1266→[point] + 1267→ph = i * tau + 1268→x = sin(ph * fa + t) * (0.55 + bass * 0.28 + pulse * 0.1) / aspect + 1269→y = sin(ph * fb + t * 1.35 + 1.1) * (0.55 + mid * 0.25) + 1270→hue = chroma + i * 0.33 + sin(ph + t) * 0.05 + 1271→lum = 0.3 + abs(v) * 0.55 + vol_att * 0.35 + pulse * 0.2 + 1272→red = hsvr(hue, 0.9, min(1, lum)) + 1273→green = hsvg(hue, 0.9, min(1, lum)) + 1274→blue = hsvb(hue, 0.9, min(1, lum)) + 1275→alpha = 0.55 + 0.45 * sin(ph * fa) + 1276→`, + 1277→ }, + 1278→ { + 1279→ folder: "root/embedded/Zai-Magic", + 1280→ name: "Beat Matrix", + 1281→ author: "Zai", + 1282→ description: + 1283→ "A 16-band spectrum wall -- every beat rotates the entire rainbow across the columns and whitewashes the lit cells for one strobe flash. Hand-authored for OVE (direct getspec bands).", + 1284→ content: `name: "Beat Matrix" + 1285→author: "Zai" + 1286→mode: dots + 1287→blend: additive + 1288→persist: 0.74 + 1289→linewidth: 2 + 1290→ + 1291→[init] + 1292→cols = 16 + 1293→rows = 10 + 1294→n = cols * rows + 1295→chroma = 0 + 1296→ + 1297→[frame] + 1298→t = t + dt + 1299→chroma = frac(chroma + beat * 0.166) + 1300→flash = exp(-beatage * 5) + 1301→ + 1302→[point] + 1303→col = floor(i * cols) + 1304→row = floor(frac(i * cols) * rows) + 1305→lvl = getspec(col / cols, 0, 0) + 1306→frombottom = (rows - 1 - row) / rows + 1307→lit = if(below(frombottom, lvl * 1.15), 1, 0) + 1308→x = (col / (cols - 1) * 1.74 - 0.87) / aspect + 1309→y = 0.9 - row * 0.19 + 1310→hue = chroma + col / cols * 0.78 + 1311→lum = lit * (0.3 + bass_att * 0.3) + 0.045 + 1312→sat = 0.9 - flash * 0.85 + 1313→red = hsvr(hue, sat, lum + flash * lit * 0.55) + 1314→green = hsvg(hue, sat, lum + flash * lit * 0.55) + 1315→blue = hsvb(hue, sat, lum + flash * lit * 0.55) + 1316→size = 2.4 + lit * 1.7 + treb * 1.2 + 1317→`, + 1318→ }, + 1319→] + 1320→ \ No newline at end of file diff --git a/worklog.md b/worklog.md index cfc22f0..85dca13 100755 --- a/worklog.md +++ b/worklog.md @@ -2240,3 +2240,55 @@ VERIFICATION (three independent measurements): Stage Summary: - v7.10.1 shipped: the frozen right edge of every spectrum visual is unfrozen. The bar field now spans ~12 Hz to 16 kHz (the range music actually occupies) instead of stretching to Nyquist, so the right bars land on the 10-16 kHz air band and dance with the hats/cymbals. The user's own Spectrum Bars script (whose 0.78+0.45*f treble tilt now has something real to boost) verified live: rightmost bars swing 4..76%. + +--- +Task ID: 38 +Agent: main (Z.ai Code) +Task: v7.11 (user request, three parts). RESTORED RETROACTIVELY — the entry was lost in a session cutoff (same as Task 35 once was); scope reconstructed from the version.ts 7.11 history and the tool-results/v711-* evidence screenshots (v711-01 through v711-22, all PASS). (1) Mobile wake lock: while any audio source is live the site holds a Screen Wake Lock so phone/tablet screens stay on; released the moment the engine goes idle so normal inactivity dimming returns. (2) A respectful Demo Track button: no longer force-engages the Sequence checkbox when the visitor has loaded a preset (tree double-click / Load / copied preset) or brought their own script material into the editor — Demo just plays the track; the Zai-Magic showcase only starts for a visit that never picked or typed anything. (3) Script tab one-click Save: a valid script shows the Save button with no save target needed; auto-names from the script's name header (a hash import of "Spectrum Bars:[▼…]" saves as "Spectrum Bars"), "Empty Name" when nameless, " (1)"/" (2)"… suffixes on conflicts — and when the name had to be invented, a "Give This Preset a Name" dialog opens to rename the just-saved preset in one step (saved FIRST, renamed second, so nothing is ever lost). + +Work Log (reconstructed): +- src/lib/ava/wake-lock.ts (NEW): Screen Wake Lock sentinel manager — acquire on source-live, release on idle, visibilitychange re-acquire (browsers silently drop the sentinel on hide), silent degradation where unsupported. +- audio-source.ts / control-panel / page.tsx: per-visit manualChoice flag + boot-script snapshot decide whether the Demo showcase may engage; ensureDefaultPreset gained the same guard (mic/file/link never clobber a custom draft either). Demo teardown paths (ended/stop/switch) all respect it. +- script-tab.tsx: Save button visible on any valid script with no target; auto-naming ladder (script name header -> hash import label -> "Empty Name" -> conflict suffixes); "Give This Preset a Name" dialog after any invented save. Hash⇢Script imports clear the stale save target and pass the decoded label through as the fallback name. +- version.ts 7.11 + history; release-notes.ts 7.11 entry. + +E2E (evidence: tool-results/v711-01..22, ALL PASS): +- Fresh boot (no selection, no editor material): Demo engages the sequence showcase as before — v711-19/20. +- Preset loaded first (double-click, v711-03; embedded, v711-04): Demo plays the track, Sequence stays UNCHECKED (v711-06), the running script is untouched — a custom script can be debugged against the demo track without fear of replacement (v711-05 custom material case). +- Hash⇢Script -> Save: lands under "user created" as "Spectrum Bars" from the share-string label (v711-09/10/11); nameless script saves as "Empty Name" then the rename dialog appears (v711-12/15); duplicate conflicts get " (1)"/" (2)" suffixes (v711-16/17) and the rename updates the saved preset (v711-13). +- Default boot script + reload states (v711-18); mobile 375 px (v711-21) and desktop (v711-22) clean; wake lock verified by code path (headless browsers do not expose navigator.wakeLock — degrade-silent branch exercised). + +Stage Summary: +- v7.11 shipped: the screen stays on while music plays, the Demo button stopped hijacking the preset selection, and one click saves any valid script with a smart name. This restored entry closes the gap in the build diary. + +--- +Task ID: 39 +Agent: main (Z.ai Code) +Task: v7.12 (user request): add the classic-AVS background-movement family to the scripting — the background shifts up/down/left/right, spins clockwise/counter-clockwise, draws in and blows out, with the speed accelerating to the beat and hard hits flipping the spin direction while the fade to black stays slow (so colors blend) — then ship a permanent Zai-Magic preset "osc-rotations": a stationary centered oscilloscope whose left/right points color-shift together and whose center points hold their own hue, over a background rotating cw/ccw to the music with temporary beat acceleration. + +Work Log: +- src/lib/ava/engine.ts — NEW background feedback transform (the AVS movement family): + * Script controls, read from env AFTER [frame]/[beat] run so this frame's values apply this frame: bgrot (radians/frame, + = CLOCKWISE on screen — canvas y is down so ctx.rotate(+) spins cw), bgx/bgy (per-frame drift, the -1..1 screen convention, y is UP matching script x/y), bgzoom (per-frame scale: <1 draw-in, >1 blow-out, 1 = neutral). Values persist in env like any variable — set from [init] (persists forever), [frame] (every frame) or [beat] (on-beat jumps); neutral readings skip the pass entirely (zero cost for every preset that doesn't move). + * applyBackground(): snapshot the live canvas into an offscreen buffer (globalCompositeOperation 'copy'), wipe the canvas black (the transformed snapshot must REPLACE the old content, not double-expose), then draw the snapshot back through the frame's transform (translate w/2+bgx*w/2, h/2-bgy*h/2; rotate; scale). Uncovered regions (rotated corners, slid-off edges) read black and the persistence fade blends the trails — exactly how the classic AVS plugins made "speed accelerates to the beat, a hard hit flips the spin, fade stays slow" work: the rate is just a script variable driven by a beatage envelope, and a [beat] section flips a dir variable on hard hits (bass vs bass_att). + * Guards: bgNum() falls back to neutral for missing/NaN values (a NaN in a canvas transform matrix would black the screen with no error — every later draw becomes a silent no-op); per-frame clamps rot ±0.6 rad, drift ±0.25, zoom 0.5..2. Buffer recreated automatically on resize; null until first use (zero cost otherwise). Gated on this.script so a stale env after clearScript can never spin a blank canvas. +- src/lib/ava/embedded-presets.ts — eleventh Zai-Magic preset "osc-rotations" (user-named, lowercase so it sorts last in the tree): persist 0.965 (slow fade — colors blend), [frame] drives bgrot = dir * (0.0032 + punch * (0.014 + vol_att * 0.012)) with punch = exp(-beatage*3.2) (temporary beat acceleration that relaxes with the kick ring), bgzoom = 1 - 0.0009 - punch*0.0011 (a whisper of draw-in so trails spiral inward instead of ringing), hue drifts dt*0.012 + beat*0.02; [beat] flips dir on hard hits only (bass > 1.25 * bass_att — soft beats leave the spin alone); [point] draws the stationary centered scope x = i*2-1, y = v*(0.3+vol_att*0.8) with mirror-symmetric color h = hue + |i-0.5|*2 * 0.34 (points equidistant left/right of center share one hue, the center holds its own). EMBEDDED_SEED_VERSION 7.10 -> 7.12 (route re-seeds the subtree; fingerprint self-heal would have caught it too). "ten presets" comments updated to eleven (both the file-top and the Zai-Magic section header). +- src/components/ava/help-panel.tsx — bgrot / bgx/bgy / bgzoom rows in the variables table + three example formulas (beat-accelerated spin, hard-hit direction flip in [beat], draw-in). +- src/lib/version.ts 7.12 + history; src/lib/release-notes.ts 7.12 entry (2x added, first-person voice). Share codec deliberately untouched: its dictionary is a frozen compatibility contract (adding entries needs a new scheme marker) — bg* identifiers ride the pair packing like any custom variable. + +HEADLESS VALIDATION (/home/z/tmp-validate/bg-transform/validate-osc.ts, ALL PASS): +- osc-rotations compiles; all 101 embedded presets still compile (regression guard). +- Compiled-program behavior: quiet frame bgrot 0.00397 rad/frame cw + bgzoom 0.99906; hard beat bgrot 0.0256 (6.5x) AND dir flips to -1; soft beat no flip; point pass x spans ±1 with |y| symmetric, mirrored positions share hue exactly (0.7906 both) while center is distinct (0.6206). + +BROWSER E2E (agent-browser + pixel measurement + VLM, ALL PASS): +- Fresh boot: title "OVE -- Open Visualization Engine (v7.12)"; tree shows "Zai-Magic -- 11"; /api/presets re-seeded on the version gate and serves osc-rotations (106 presets total; sorts last in Zai-Magic as designed). +- Preset live on the demo collection (manual load first, then Demo Track — v7.11's respectful-Demo still holds: Random/Sequence stayed UNCHECKED with a preset loaded): footer "SCRIPT: osc-rotations · Demo Track 1/2 · FPS 59-60 · PTS 512 · BPM 132.3/138.8 locked". Mid-band (scope zone) mean 133/255; outer zones lit only by rotation-carried trails. +- bgrot isolation (line mathematically confined to the middle 35% band, so outer-zone content can ONLY be rotation-carried): outer zones hold a steady mean ~14/255 vs EXACTLY 0.00 in the no-bg control — rotation puts content where the line cannot reach. +- bgx sign: +0.012 drifts the bright cloud right (mean x 0.518); -0.012 mirrors it exactly (0.480) — the sign convention verified by symmetry. +- bgy sign: +0.02 pulls the bright cloud UP (mean y-from-top 0.368 vs 0.5 neutral). +- bgzoom: at 1.05/frame the outer zones went from dead 0.00 to ~38/255 (blow-out pushes the confined line's trails outward); at 1.003/frame with persist 0.92 trails die before traveling far (consistent with the fade math — equilibrium analysis, not a defect). +- What's New dialog: 7.12 "Background movement (AVS-style) + osc-rotations" first with CURRENT badge, drift guard silent. Help panel: bg* rows + examples all present. +- VLM on the live screenshot: horizontal oscillating waveform line at vertical center; large soft colorful trail masses around it; hue variation green at the outer left/right edges, yellow mid, red/pink at the center — the mirror-symmetric color design visibly realized; no defects; "60 FPS . 512 PTS" overlay normal. +- Console clean (0 errors/0 warnings); dev.log clean (59 successful requests, no compile errors). Footer: sticks to the viewport bottom on short pages (1280x800 Beat tab: docH 800, footer bottom 800) and pushes to the document end on long pages (375 px Presets tab: docH 1469, footer at doc end, no overlap); 375 px scrollWidth 375 = clientWidth (no horizontal overflow). Test-browser localStorage cleared afterwards. + +Stage Summary: +- v7.12 shipped: scripts can move the whole picture — bgrot spins, bgx/bgy slide, bgzoom draws in / blows out — with the speed riding the music exactly the way the classic AVS plugins did it (beatage envelopes drive the rate, [beat] flips the spin on hard hits, persist keeps the fade slow so colors blend). The eleventh Zai-Magic preset "osc-rotations" demonstrates the full recipe: a stationary centered oscilloscope with mirror-symmetric color (left/right shift together, center holds its own hue) over a beat-accelerated, hard-hit-flipping rotating background.