From 888b88e7486353e742bd2aad964f76fd8a283872 Mon Sep 17 00:00:00 2001 From: Jose Luis Date: Sat, 21 Mar 2026 03:50:56 +0100 Subject: [PATCH] feat: implement real auto-solve that builds correct patches for all 96 levels Replace the bypass auto-solve (which just set passed: true on all checks) with a legitimate solver that loads actual module configurations and connections via deserialize(), then validates through handleCheck(). Each solution defines the exact modules, parameters, and wiring needed to pass all 3-star checks for every level across all 12 worlds. Co-Authored-By: Claude Opus 4.6 --- src/game/PuzzleView.jsx | 22 +- src/game/autoSolver.js | 1913 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 1927 insertions(+), 8 deletions(-) create mode 100644 src/game/autoSolver.js diff --git a/src/game/PuzzleView.jsx b/src/game/PuzzleView.jsx index e9b9684..d1f3a29 100644 --- a/src/game/PuzzleView.jsx +++ b/src/game/PuzzleView.jsx @@ -8,6 +8,7 @@ import { playTarget, stopTarget, isTargetPlaying } from './targetAudio.js'; import LevelComplete from './LevelComplete.jsx'; import { completeLevel, saveLevelPatch, getLevelPatch, markHintUsed, wasHintUsed } from './gameState.js'; import { playLevelComplete, playFail, playHint, playEngineStart, playEngineStop, playNav } from '../engine/uiSounds.js'; +import { SOLUTIONS } from './autoSolver.js'; export default function PuzzleView({ level, levelIndex, worldLevels, onBack, onNextLevel, adminMode }) { const [, forceUpdate] = useState(0); @@ -285,15 +286,20 @@ export default function PuzzleView({ level, levelIndex, worldLevels, onBack, onN } }; - // Admin auto-solve — gives 3 stars instantly + // Admin auto-solve — loads the actual solution modules/connections and validates naturally const handleAutoSolve = () => { - const checks = level.checks.map(check => ({ - ...check, - passed: true, - })); - completeLevel(level.id, 3); - setResult({ stars: 3, checks, hintPenalty: false }); - playLevelComplete(); + const solution = SOLUTIONS[level.id]; + if (!solution) { + console.warn(`No auto-solve solution for level ${level.id}`); + return; + } + // Load the solution patch into the engine state + deserialize(solution); + emit(); + // Now run the normal check logic against the loaded patch + setTimeout(() => { + handleCheck(); + }, 50); }; const isLastLevel = levelIndex >= worldLevels.length - 1; diff --git a/src/game/autoSolver.js b/src/game/autoSolver.js new file mode 100644 index 0000000..9a03e1b --- /dev/null +++ b/src/game/autoSolver.js @@ -0,0 +1,1913 @@ +function mod(id, type, x, y, params = {}) { + return { id, type, x, y: y ?? 0, params, collapsed: false }; +} + +function sol(modules, connections) { + return { + modules, + connections: connections.map((c, i) => ({ + id: i + 1, + from: { moduleId: c[0], port: c[1] }, + to: { moduleId: c[2], port: c[3] }, + })), + camera: { camX: 0, camY: 0, zoom: 1 }, + masterVolume: -6, + }; +} + +export const SOLUTIONS = { + // WORLD 1 — "Ondas" (8 levels) + + "w1-1": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sine", frequency: 440 }), + mod(2, "output", 300, 0, { volume: -6 }), + ], + [[1, "out", 2, "left"], [1, "out", 2, "right"]] + ), + + "w1-2": sol( + [ + mod(1, "output", 300, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 440 }), + ], + [[100, "out", 1, "left"]] + ), + + "w1-3": sol( + [ + mod(1, "output", 300, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "square", frequency: 440 }), + ], + [[100, "out", 1, "left"]] + ), + + "w1-4": sol( + [ + mod(1, "output", 300, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 440 }), + ], + [[100, "out", 1, "left"]] + ), + + "w1-5": sol( + [ + mod(1, "output", 300, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 220 }), + ], + [[100, "out", 1, "left"]] + ), + + "w1-6": sol( + [ + mod(1, "output", 300, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 440 }), + mod(101, "oscillator", 300, 0, { waveform: "sine", frequency: 660 }), + mod(102, "mixer", 500, 0, {}), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 1, "left"], + ] + ), + + "w1-7": sol( + [ + mod(1, "output", 300, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 440, detune: -7 }), + mod(101, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 440, detune: 7 }), + mod(102, "mixer", 500, 0, {}), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 1, "left"], + ] + ), + + "w1-8": sol( + [ + mod(1, "output", 300, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 262 }), + mod(101, "oscillator", 300, 0, { waveform: "sine", frequency: 330 }), + mod(102, "oscillator", 500, 0, { waveform: "sine", frequency: 392 }), + mod(103, "mixer", 700, 0, {}), + ], + [ + [100, "out", 103, "in1"], + [101, "out", 103, "in2"], + [102, "out", 103, "in3"], + [103, "out", 1, "left"], + ] + ), + + // WORLD 2 — "Filtros" (8 levels) + + "w2-1": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(2, "filter", 300, 0, { type: "lowpass", frequency: 800, Q: 1 }), + mod(3, "output", 500, 0, { volume: -6 }), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + ] + ), + + "w2-2": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(2, "output", 500, 0, { volume: -6 }), + mod(100, "filter", 300, 0, { type: "highpass", frequency: 2000, Q: 1 }), + ], + [ + [1, "out", 100, "in"], + [100, "out", 2, "left"], + ] + ), + + "w2-3": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 110 }), + mod(2, "filter", 300, 0, { type: "lowpass", frequency: 600, Q: 10 }), + mod(3, "output", 500, 0, { volume: -8 }), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + ] + ), + + "w2-4": sol( + [ + mod(1, "noise", 100, 0, { type: "white" }), + mod(2, "output", 500, 0, { volume: -10 }), + mod(100, "filter", 300, 0, { type: "bandpass", frequency: 1000, Q: 8 }), + ], + [ + [1, "out", 100, "in"], + [100, "out", 2, "left"], + ] + ), + + "w2-5": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 110 }), + mod(2, "filter", 300, 0, { type: "lowpass", frequency: 800, Q: 5 }), + mod(3, "output", 700, 0, { volume: -8 }), + mod(100, "lfo", 500, 0, { waveform: "sine", frequency: 3, amplitude: 0.5 }), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + [100, "out", 2, "cutoff"], + ] + ), + + "w2-6": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 110 }), + mod(2, "output", 700, 0, { volume: -6 }), + mod(100, "filter", 300, 0, { type: "highpass", frequency: 200, Q: 1 }), + mod(101, "filter", 500, 0, { type: "lowpass", frequency: 3000, Q: 1 }), + ], + [ + [1, "out", 100, "in"], + [100, "out", 101, "in"], + [101, "out", 2, "left"], + ] + ), + + "w2-7": sol( + [ + mod(1, "output", 700, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 110 }), + mod(101, "oscillator", 300, 0, { waveform: "square", frequency: 220 }), + mod(102, "filter", 400, 0, { type: "lowpass", frequency: 500, Q: 1 }), + mod(103, "filter", 600, 0, { type: "lowpass", frequency: 4000, Q: 1 }), + mod(104, "mixer", 800, 0, {}), + ], + [ + [100, "out", 102, "in"], + [101, "out", 103, "in"], + [102, "out", 104, "in1"], + [103, "out", 104, "in2"], + [104, "out", 1, "left"], + ] + ), + + "w2-8": sol( + [ + mod(1, "output", 700, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 82 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 500, Q: 12 }), + mod(102, "lfo", 500, 0, { waveform: "sine", frequency: 2, amplitude: 0.5 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 1, "left"], + [102, "out", 101, "cutoff"], + ] + ), + + // WORLD 3 — "Envelopes" (8 levels) + + "w3-1": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(2, "vca", 300, 0, { gain: 0.5 }), + mod(3, "output", 500, 0, { volume: -6 }), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + ] + ), + + "w3-2": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "square", frequency: 440 }), + mod(2, "vca", 300, 0, { gain: 0 }), + mod(3, "output", 600, 0, { volume: -6 }), + mod(100, "envelope", 500, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(101, "keyboard", 500, 0, {}), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + [100, "out", 2, "cv"], + [101, "gate", 100, "gate"], + [101, "freq", 1, "freq"], + ] + ), + + "w3-3": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sine", frequency: 440 }), + mod(2, "vca", 300, 0, { gain: 0 }), + mod(3, "output", 600, 0, { volume: -6 }), + mod(100, "envelope", 500, 0, { attack: 0.001, decay: 0.15, sustain: 0, release: 0.1 }), + mod(101, "keyboard", 500, 0, {}), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + [100, "out", 2, "cv"], + [101, "gate", 100, "gate"], + ] + ), + + "w3-4": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(2, "vca", 300, 0, { gain: 0 }), + mod(3, "output", 600, 0, { volume: -6 }), + mod(100, "envelope", 500, 0, { attack: 1.5, decay: 0.3, sustain: 0.8, release: 2.5 }), + mod(101, "keyboard", 500, 0, {}), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + [100, "out", 2, "cv"], + [101, "gate", 100, "gate"], + ] + ), + + "w3-5": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "triangle", frequency: 440 }), + mod(2, "vca", 300, 0, { gain: 0 }), + mod(3, "output", 700, 0, { volume: -6 }), + mod(100, "envelope", 500, 0, { attack: 0.001, decay: 0.5, sustain: 0.1, release: 0.3 }), + mod(101, "keyboard", 500, 0, {}), + mod(102, "filter", 600, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + ], + [ + [1, "out", 102, "in"], + [102, "out", 2, "in"], + [2, "out", 3, "left"], + [100, "out", 2, "cv"], + [101, "gate", 100, "gate"], + ] + ), + + "w3-6": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(2, "vca", 300, 0, { gain: 0 }), + mod(3, "output", 800, 0, { volume: -6 }), + mod(100, "envelope", 500, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(101, "envelope", 500, 0, { attack: 0.01, decay: 0.6, sustain: 0.2, release: 0.5 }), + mod(102, "keyboard", 600, 0, {}), + mod(103, "filter", 600, 0, { type: "lowpass", frequency: 1000, Q: 1 }), + ], + [ + [1, "out", 103, "in"], + [103, "out", 2, "in"], + [2, "out", 3, "left"], + [100, "out", 2, "cv"], + [101, "out", 103, "cutoff"], + [102, "gate", 100, "gate"], + [102, "gate", 101, "gate"], + ] + ), + + "w3-7": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sine", frequency: 440 }), + mod(2, "vca", 300, 0, { gain: 0.7 }), + mod(3, "output", 500, 0, { volume: -6 }), + mod(100, "lfo", 500, 0, { waveform: "sine", frequency: 5, amplitude: 0.5 }), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + [100, "out", 2, "cv"], + ] + ), + + "w3-8": sol( + [ + mod(1, "output", 900, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1000, Q: 3 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "envelope", 600, 0, { attack: 0.01, decay: 0.5, sustain: 0.5, release: 0.5 }), + mod(104, "envelope", 600, 0, { attack: 0.01, decay: 0.2, sustain: 0.3, release: 0.3 }), + mod(105, "keyboard", 700, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 102, "cv"], + [104, "out", 101, "cutoff"], + [105, "gate", 103, "gate"], + [105, "gate", 104, "gate"], + [105, "freq", 100, "freq"], + ] + ), + + // WORLD 4 — "Modulación" (8 levels) + + "w4-1": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sine", frequency: 440 }), + mod(2, "output", 400, 0, { volume: -6 }), + mod(100, "lfo", 300, 0, { waveform: "sine", frequency: 6, amplitude: 0.5 }), + ], + [ + [1, "out", 2, "left"], + [100, "out", 1, "freq"], + ] + ), + + "w4-2": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "square", frequency: 440 }), + mod(2, "output", 400, 0, { volume: -6 }), + mod(100, "lfo", 300, 0, { waveform: "sine", frequency: 0.3, amplitude: 0.5 }), + ], + [ + [1, "out", 2, "left"], + [100, "out", 1, "freq"], + ] + ), + + "w4-3": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 110 }), + mod(2, "filter", 300, 0, { type: "lowpass", frequency: 600, Q: 4 }), + mod(3, "output", 500, 0, { volume: -8 }), + mod(100, "lfo", 400, 0, { waveform: "square", frequency: 3, amplitude: 0.5 }), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + [100, "out", 2, "cutoff"], + ] + ), + + "w4-4": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sine", frequency: 440 }), + mod(2, "output", 600, 0, { volume: -6 }), + mod(100, "vca", 300, 0, { gain: 0.7 }), + mod(101, "vca", 400, 0, { gain: 0.7 }), + mod(102, "lfo", 500, 0, { waveform: "sine", frequency: 2, amplitude: 0.5 }), + ], + [ + [1, "out", 100, "in"], + [1, "out", 101, "in"], + [100, "out", 2, "left"], + [101, "out", 2, "right"], + [102, "out", 100, "cv"], + ] + ), + + "w4-5": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 110 }), + mod(2, "filter", 300, 0, { type: "lowpass", frequency: 800, Q: 5 }), + mod(3, "vca", 500, 0, { gain: 0.6 }), + mod(4, "output", 700, 0, { volume: -8 }), + mod(100, "lfo", 600, 0, { waveform: "sine", frequency: 2, amplitude: 0.5 }), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "in"], + [3, "out", 4, "left"], + [100, "out", 2, "cutoff"], + [100, "out", 3, "cv"], + ] + ), + + "w4-6": sol( + [ + mod(1, "output", 500, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 200 }), + mod(101, "oscillator", 300, 0, { waveform: "sine", frequency: 440 }), + ], + [ + [100, "out", 101, "freq"], + [101, "out", 1, "left"], + ] + ), + + "w4-7": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(2, "filter", 300, 0, { type: "lowpass", frequency: 1000, Q: 4 }), + mod(3, "vca", 500, 0, { gain: 0 }), + mod(4, "output", 700, 0, { volume: -6 }), + mod(100, "lfo", 600, 0, { waveform: "sine", frequency: 2, amplitude: 0.5 }), + mod(101, "envelope", 600, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(102, "keyboard", 600, 0, {}), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "in"], + [3, "out", 4, "left"], + [102, "freq", 1, "freq"], + [100, "out", 2, "cutoff"], + [101, "out", 3, "cv"], + [102, "gate", 101, "gate"], + ] + ), + + "w4-8": sol( + [ + mod(1, "output", 800, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 55 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 600, Q: 10 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "lfo", 600, 0, { waveform: "sine", frequency: 2, amplitude: 0.5 }), + mod(104, "envelope", 700, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(105, "keyboard", 700, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 101, "cutoff"], + [104, "out", 102, "cv"], + [105, "gate", 104, "gate"], + ] + ), + + // WORLD 5 — "Efectos" (8 levels) + + "w5-1": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sine", frequency: 440 }), + mod(2, "delay", 300, 0, { time: 0.3, delayTime: 0.3, feedback: 0.4, wet: 0.5, mix: 0.5 }), + mod(3, "output", 500, 0, { volume: -6 }), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + ] + ), + + "w5-2": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "square", frequency: 330 }), + mod(2, "output", 400, 0, { volume: -6 }), + mod(100, "delay", 300, 0, { time: 0.08, delayTime: 0.08, feedback: 0.1, wet: 0.5, mix: 0.5 }), + ], + [ + [1, "out", 100, "in"], + [100, "out", 2, "left"], + ] + ), + + "w5-3": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "triangle", frequency: 440 }), + mod(2, "reverb", 300, 0, { decay: 6, mix: 0.5, wet: 0.5 }), + mod(3, "output", 500, 0, { volume: -6 }), + ], + [ + [1, "out", 2, "in"], + [2, "out", 3, "left"], + ] + ), + + "w5-4": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sine", frequency: 220 }), + mod(2, "output", 500, 0, { volume: -10 }), + mod(100, "distortion", 300, 0, { drive: 6, distortion: 0.6, wet: 0.5 }), + ], + [ + [1, "out", 100, "in"], + [100, "out", 2, "left"], + ] + ), + + "w5-5": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(2, "output", 600, 0, { volume: -10 }), + mod(100, "distortion", 300, 0, { drive: 4, distortion: 0.4, wet: 0.5 }), + mod(101, "delay", 500, 0, { time: 0.3, delayTime: 0.3, feedback: 0.4, wet: 0.5, mix: 0.5 }), + ], + [ + [1, "out", 100, "in"], + [100, "out", 101, "in"], + [101, "out", 2, "left"], + ] + ), + + "w5-6": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "square", frequency: 330 }), + mod(2, "output", 600, 0, { volume: -8 }), + mod(100, "delay", 300, 0, { time: 0.35, delayTime: 0.35, feedback: 0.6, wet: 0.5, mix: 0.5 }), + mod(101, "filter", 500, 0, { type: "lowpass", frequency: 800, Q: 1 }), + ], + [ + [1, "out", 100, "in"], + [100, "out", 101, "in"], + [101, "out", 2, "left"], + ] + ), + + "w5-7": sol( + [ + mod(1, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(2, "output", 600, 0, { volume: -10 }), + mod(100, "distortion", 300, 0, { drive: 6, distortion: 0.6, wet: 0.5 }), + mod(101, "reverb", 500, 0, { decay: 7, mix: 0.6, wet: 0.6 }), + ], + [ + [1, "out", 100, "in"], + [100, "out", 101, "in"], + [101, "out", 2, "left"], + ] + ), + + "w5-8": sol( + [ + mod(1, "output", 900, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1000, Q: 1 }), + mod(102, "lfo", 500, 0, { waveform: "sine", frequency: 0.5, amplitude: 0.5 }), + mod(103, "delay", 600, 0, { time: 0.4, delayTime: 0.4, feedback: 0.5, wet: 0.5, mix: 0.5 }), + mod(104, "reverb", 800, 0, { decay: 5, mix: 0.5, wet: 0.5 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 103, "in"], + [103, "out", 104, "in"], + [104, "out", 1, "left"], + [102, "out", 101, "cutoff"], + ] + ), + + // WORLD 6 — "Diseño Sonoro" (8 levels) + + "w6-1": sol( + [ + mod(1, "output", 600, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 50 }), + mod(101, "vca", 300, 0, { gain: 0 }), + mod(102, "envelope", 500, 0, { attack: 0.001, decay: 0.25, sustain: 0, release: 0.1 }), + mod(103, "keyboard", 500, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 1, "left"], + [102, "out", 101, "cv"], + [103, "gate", 102, "gate"], + ] + ), + + "w6-2": sol( + [ + mod(1, "output", 700, 0, { volume: -10 }), + mod(100, "noise", 100, 0, { type: "white" }), + mod(101, "filter", 300, 0, { type: "highpass", frequency: 7000, Q: 1 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "envelope", 600, 0, { attack: 0.001, decay: 0.08, sustain: 0, release: 0.05 }), + mod(104, "keyboard", 600, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 102, "cv"], + [104, "gate", 103, "gate"], + ] + ), + + "w6-3": sol( + [ + mod(1, "output", 900, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 200 }), + mod(101, "noise", 200, 0, { type: "white" }), + mod(102, "filter", 400, 0, { type: "highpass", frequency: 2000, Q: 1 }), + mod(103, "vca", 600, 0, { gain: 0 }), + mod(104, "vca", 600, 0, { gain: 0 }), + mod(105, "envelope", 700, 0, { attack: 0.001, decay: 0.1, sustain: 0, release: 0.1 }), + mod(106, "envelope", 700, 0, { attack: 0.001, decay: 0.2, sustain: 0, release: 0.1 }), + mod(107, "mixer", 800, 0, {}), + mod(108, "keyboard", 800, 0, {}), + ], + [ + [100, "out", 103, "in"], + [101, "out", 102, "in"], + [102, "out", 104, "in"], + [103, "out", 107, "in1"], + [104, "out", 107, "in2"], + [107, "out", 1, "left"], + [105, "out", 103, "cv"], + [106, "out", 104, "cv"], + [108, "gate", 105, "gate"], + [108, "gate", 106, "gate"], + ] + ), + + "w6-4": sol( + [ + mod(1, "output", 900, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220, detune: -7 }), + mod(101, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 220, detune: 7 }), + mod(102, "mixer", 500, 0, {}), + mod(103, "filter", 600, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(104, "vca", 800, 0, { gain: 0 }), + mod(105, "lfo", 700, 0, { waveform: "sine", frequency: 0.5, amplitude: 0.5 }), + mod(106, "envelope", 700, 0, { attack: 1, decay: 0.5, sustain: 0.7, release: 2 }), + mod(107, "reverb", 800, 0, { decay: 5, mix: 0.5, wet: 0.5 }), + mod(108, "keyboard", 800, 0, {}), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 103, "in"], + [103, "out", 104, "in"], + [104, "out", 107, "in"], + [107, "out", 1, "left"], + [105, "out", 103, "cutoff"], + [106, "out", 104, "cv"], + [108, "gate", 106, "gate"], + ] + ), + + "w6-5": sol( + [ + mod(1, "output", 800, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 55, detune: 0 }), + mod(101, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 55, detune: 10 }), + mod(102, "mixer", 500, 0, {}), + mod(103, "filter", 600, 0, { type: "lowpass", frequency: 800, Q: 5 }), + mod(104, "vca", 800, 0, { gain: 0.8 }), + mod(105, "lfo", 700, 0, { waveform: "sine", frequency: 0.5, amplitude: 0.5 }), + mod(106, "envelope", 700, 0, { attack: 0.01, decay: 0.5, sustain: 0.7, release: 0.5 }), + mod(107, "keyboard", 800, 0, {}), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 103, "in"], + [103, "out", 104, "in"], + [104, "out", 1, "left"], + [105, "out", 103, "cutoff"], + [106, "out", 104, "cv"], + [107, "gate", 106, "gate"], + ] + ), + + "w6-6": sol( + [ + mod(1, "output", 700, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "square", frequency: 440 }), + mod(101, "vca", 300, 0, { gain: 0 }), + mod(102, "envelope", 500, 0, { attack: 0.001, decay: 0.2, sustain: 0.5, release: 0.3 }), + mod(103, "envelope", 500, 0, { attack: 0.001, decay: 0.15, sustain: 0, release: 0.1 }), + mod(104, "keyboard", 600, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 1, "left"], + [102, "out", 101, "cv"], + [103, "out", 100, "freq"], + [104, "gate", 102, "gate"], + [104, "gate", 103, "gate"], + ] + ), + + "w6-7": sol( + [ + mod(1, "output", 1000, 0, { volume: -8 }), + mod(100, "sequencer", 100, 0, { bpm: 140 }), + mod(101, "oscillator", 200, 0, { waveform: "sawtooth", frequency: 220 }), + mod(102, "filter", 400, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(103, "vca", 600, 0, { gain: 0 }), + mod(104, "envelope", 700, 0, { attack: 0.001, decay: 0.15, sustain: 0, release: 0.1 }), + mod(105, "lfo", 800, 0, { waveform: "sine", frequency: 0.5, amplitude: 0.5 }), + mod(106, "delay", 900, 0, { time: 0.3, delayTime: 0.3, feedback: 0.4, wet: 0.5, mix: 0.5 }), + ], + [ + [100, "frequency", 101, "frequency"], + [100, "gate", 104, "gate"], + [101, "out", 102, "in"], + [102, "out", 103, "in"], + [103, "out", 106, "in"], + [106, "out", 1, "left"], + [104, "out", 103, "cv"], + ] + ), + + "w6-8": sol( + [ + mod(1, "output", 1100, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220, detune: -7 }), + mod(101, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 220, detune: 7 }), + mod(102, "mixer", 500, 0, {}), + mod(103, "filter", 700, 0, { type: "lowpass", frequency: 1500, Q: 3 }), + mod(104, "vca", 900, 0, { gain: 0 }), + mod(105, "envelope", 700, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(106, "envelope", 700, 0, { attack: 0.01, decay: 0.5, sustain: 0.3, release: 0.5 }), + mod(107, "lfo", 800, 0, { waveform: "sine", frequency: 2, amplitude: 0.5 }), + mod(108, "keyboard", 800, 0, {}), + mod(109, "delay", 1000, 0, { time: 0.3, delayTime: 0.3, feedback: 0.4, wet: 0.5, mix: 0.5 }), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 103, "in"], + [103, "out", 104, "in"], + [104, "out", 109, "in"], + [109, "out", 1, "left"], + [105, "out", 104, "cv"], + [106, "out", 103, "cutoff"], + [107, "out", 103, "cutoff"], + [108, "gate", 105, "gate"], + [108, "gate", 106, "gate"], + [108, "frequency", 100, "frequency"], + ] + ), + + // WORLD 7 — "Secuencias y Ritmos" (8 levels) + + "w7-1": sol( + [ + mod(1, "output", 700, 0, { volume: -6 }), + mod(100, "sequencer", 100, 0, { bpm: 140 }), + mod(101, "oscillator", 200, 0, { waveform: "sine", frequency: 220 }), + mod(102, "vca", 400, 0, { gain: 0 }), + mod(103, "envelope", 500, 0, { attack: 0.001, decay: 0.15, sustain: 0, release: 0.1 }), + ], + [ + [100, "frequency", 101, "frequency"], + [100, "gate", 103, "gate"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 102, "cv"], + ] + ), + + "w7-2": sol( + [ + mod(1, "output", 900, 0, { volume: -8 }), + mod(100, "sequencer", 100, 0, { bpm: 140 }), + mod(101, "oscillator", 200, 0, { waveform: "sawtooth", frequency: 55, detune: 0 }), + mod(102, "oscillator", 400, 0, { waveform: "sawtooth", frequency: 55, detune: 8 }), + mod(103, "mixer", 600, 0, {}), + mod(104, "filter", 700, 0, { type: "lowpass", frequency: 800, Q: 1 }), + mod(105, "vca", 900, 0, { gain: 0 }), + mod(106, "lfo", 800, 0, { waveform: "sine", frequency: 0.5, amplitude: 0.5 }), + mod(107, "envelope", 800, 0, { attack: 0.01, decay: 0.2, sustain: 0, release: 0.1 }), + ], + [ + [100, "frequency", 101, "frequency"], + [100, "gate", 107, "gate"], + [101, "out", 103, "in1"], + [102, "out", 103, "in2"], + [103, "out", 104, "in"], + [104, "out", 105, "in"], + [105, "out", 1, "left"], + [106, "out", 104, "cutoff"], + [107, "out", 105, "cv"], + ] + ), + + "w7-3": sol( + [ + mod(1, "output", 900, 0, { volume: -8 }), + mod(100, "sequencer", 100, 0, { bpm: 140 }), + mod(101, "oscillator", 200, 0, { waveform: "square", frequency: 220 }), + mod(102, "filter", 400, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + mod(103, "vca", 600, 0, { gain: 0 }), + mod(104, "envelope", 700, 0, { attack: 0.001, decay: 0.15, sustain: 0, release: 0.1 }), + mod(105, "lfo", 800, 0, { waveform: "sine", frequency: 2, amplitude: 0.5 }), + ], + [ + [100, "frequency", 101, "frequency"], + [100, "gate", 104, "gate"], + [101, "out", 102, "in"], + [102, "out", 103, "in"], + [103, "out", 1, "left"], + [104, "out", 103, "cv"], + [105, "out", 102, "cutoff"], + ] + ), + + "w7-4": sol( + [ + mod(1, "output", 900, 0, { volume: -8 }), + mod(100, "sequencer", 100, 0, { bpm: 140, steps: "16" }), + mod(101, "noise", 200, 0, { type: "white" }), + mod(102, "filter", 400, 0, { type: "lowpass", frequency: 1000, Q: 4 }), + mod(103, "vca", 600, 0, { gain: 0 }), + mod(104, "envelope", 700, 0, { attack: 0.001, decay: 0.1, sustain: 0, release: 0.1 }), + ], + [ + [100, "frequency", 102, "cutoff"], + [100, "gate", 104, "gate"], + [101, "out", 102, "in"], + [102, "out", 103, "in"], + [103, "out", 1, "left"], + [104, "out", 103, "cv"], + ] + ), + + "w7-5": sol( + [ + mod(1, "output", 700, 0, { volume: -8 }), + mod(100, "sequencer", 100, 0, { bpm: 140 }), + mod(101, "oscillator", 200, 0, { waveform: "sine", frequency: 50 }), + mod(102, "vca", 400, 0, { gain: 0 }), + mod(103, "envelope", 500, 0, { attack: 0.001, decay: 0.3, sustain: 0, release: 0.1 }), + ], + [ + [100, "gate", 103, "gate"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 102, "cv"], + ] + ), + + "w7-6": sol( + [ + mod(1, "output", 1000, 0, { volume: -8 }), + mod(100, "sequencer", 100, 0, { bpm: 140, swing: 20 }), + mod(101, "oscillator", 200, 0, { waveform: "sine", frequency: 50 }), + mod(102, "noise", 300, 0, { type: "white" }), + mod(103, "filter", 500, 0, { type: "highpass", frequency: 6000, Q: 1 }), + mod(104, "vca", 600, 0, { gain: 0 }), + mod(105, "vca", 700, 0, { gain: 0 }), + mod(106, "envelope", 800, 0, { attack: 0.001, decay: 0.25, sustain: 0, release: 0.1 }), + mod(107, "envelope", 800, 0, { attack: 0.001, decay: 0.08, sustain: 0, release: 0.05 }), + ], + [ + [100, "gate", 106, "gate"], + [100, "gate", 107, "gate"], + [101, "out", 104, "in"], + [102, "out", 103, "in"], + [103, "out", 105, "in"], + [104, "out", 1, "left"], + [105, "out", 1, "left"], + [106, "out", 104, "cv"], + [107, "out", 105, "cv"], + ] + ), + + "w7-7": sol( + [ + mod(1, "output", 900, 0, { volume: -8 }), + mod(100, "sequencer", 100, 0, { bpm: 140 }), + mod(101, "oscillator", 200, 0, { waveform: "sawtooth", frequency: 220 }), + mod(102, "filter", 400, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + mod(103, "vca", 600, 0, { gain: 0 }), + mod(104, "envelope", 700, 0, { attack: 0.001, decay: 0.15, sustain: 0, release: 0.1 }), + mod(105, "delay", 800, 0, { time: 0.3, delayTime: 0.3, feedback: 0.5, wet: 0.5, mix: 0.5 }), + ], + [ + [100, "frequency", 101, "frequency"], + [100, "gate", 104, "gate"], + [101, "out", 102, "in"], + [102, "out", 103, "in"], + [103, "out", 105, "in"], + [105, "out", 1, "left"], + [104, "out", 103, "cv"], + ] + ), + + "w7-8": sol( + [ + mod(1, "output", 1300, 0, { volume: -8 }), + mod(100, "sequencer", 100, 0, { bpm: 140, swing: 20 }), + mod(101, "oscillator", 150, 0, { waveform: "sine", frequency: 50 }), + mod(102, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 55, detune: -5 }), + mod(103, "oscillator", 500, 0, { waveform: "sawtooth", frequency: 55, detune: 8 }), + mod(104, "noise", 600, 0, { type: "white" }), + mod(105, "filter", 800, 0, { type: "highpass", frequency: 6000, Q: 1 }), + mod(106, "filter", 1000, 0, { type: "lowpass", frequency: 800, Q: 1 }), + mod(107, "vca", 1100, 0, { gain: 0 }), + mod(108, "vca", 1100, 0, { gain: 0 }), + mod(109, "vca", 1100, 0, { gain: 0 }), + mod(110, "envelope", 1200, 0, { attack: 0.001, decay: 0.25, sustain: 0, release: 0.1 }), + mod(111, "envelope", 1200, 0, { attack: 0.001, decay: 0.08, sustain: 0, release: 0.05 }), + mod(112, "envelope", 1200, 0, { attack: 0.01, decay: 0.2, sustain: 0, release: 0.1 }), + mod(113, "mixer", 1300, 0, {}), + mod(114, "delay", 1400, 0, { time: 0.3, delayTime: 0.3, feedback: 0.4, wet: 0.4, mix: 0.4 }), + ], + [ + [100, "gate", 110, "gate"], + [100, "gate", 111, "gate"], + [100, "gate", 112, "gate"], + [101, "out", 107, "in"], + [104, "out", 105, "in"], + [105, "out", 108, "in"], + [102, "out", 113, "in1"], + [103, "out", 113, "in2"], + [113, "out", 106, "in"], + [106, "out", 109, "in"], + [107, "out", 114, "in"], + [108, "out", 114, "in"], + [109, "out", 114, "in"], + [114, "out", 1, "left"], + [110, "out", 107, "cv"], + [111, "out", 108, "cv"], + [112, "out", 109, "cv"], + [100, "frequency", 102, "frequency"], + ] + ), + + // WORLD 8 — "Texturas de Ruido" (8 levels) + + "w8-1": sol( + [ + mod(1, "output", 500, 0, { volume: -8 }), + mod(100, "noise", 100, 0, { type: "white" }), + mod(101, "vca", 300, 0, { gain: 0 }), + mod(102, "envelope", 400, 0, { attack: 0.05, decay: 0.35, sustain: 0.3, release: 0.3 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 1, "left"], + [102, "out", 101, "cv"], + ] + ), + + "w8-2": sol( + [ + mod(1, "output", 600, 0, { volume: -8 }), + mod(100, "noise", 100, 0, { type: "white" }), + mod(101, "filter", 300, 0, { type: "bandpass", frequency: 3000, Q: 4 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "envelope", 600, 0, { attack: 0.15, decay: 0.6, sustain: 0.3, release: 0.5 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 102, "cv"], + ] + ), + + "w8-3": sol( + [ + mod(1, "output", 700, 0, { volume: -8 }), + mod(100, "noise", 100, 0, { type: "white" }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "lfo", 600, 0, { waveform: "sine", frequency: 0.3, amplitude: 0.5 }), + mod(104, "envelope", 600, 0, { attack: 0.05, decay: 1.5, sustain: 0.5, release: 1 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 101, "cutoff"], + [104, "out", 102, "cv"], + ] + ), + + "w8-4": sol( + [ + mod(1, "output", 600, 0, { volume: -10 }), + mod(100, "noise", 100, 0, { type: "white" }), + mod(101, "vca", 300, 0, { gain: 0 }), + mod(102, "envelope", 400, 0, { attack: 0.001, decay: 0.05, sustain: 0, release: 0.05 }), + mod(103, "keyboard", 500, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 1, "left"], + [102, "out", 101, "cv"], + [103, "gate", 102, "gate"], + ] + ), + + "w8-5": sol( + [ + mod(1, "output", 700, 0, { volume: -12 }), + mod(100, "noise", 100, 0, { type: "white" }), + mod(101, "distortion", 300, 0, { drive: 6, distortion: 0.7, wet: 0.7 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "envelope", 600, 0, { attack: 0.01, decay: 0.6, sustain: 0.3, release: 0.5 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 102, "cv"], + ] + ), + + "w8-6": sol( + [ + mod(1, "output", 600, 0, { volume: -8 }), + mod(100, "noise", 100, 0, { type: "white" }), + mod(101, "vca", 300, 0, { gain: 0.5 }), + mod(102, "lfo", 400, 0, { waveform: "square", frequency: 1.5, amplitude: 0.7 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 1, "left"], + [102, "out", 101, "cv"], + ] + ), + + "w8-7": sol( + [ + mod(1, "output", 800, 0, { volume: -8 }), + mod(100, "noise", 100, 0, { type: "white" }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1200, Q: 1 }), + mod(102, "reverb", 500, 0, { decay: 5, mix: 0.5, wet: 0.5 }), + mod(103, "delay", 700, 0, { time: 0.3, delayTime: 0.3, feedback: 0.5, wet: 0.5, mix: 0.5 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 103, "in"], + [103, "out", 1, "left"], + ] + ), + + "w8-8": sol( + [ + mod(1, "output", 1400, 0, { volume: -8 }), + mod(100, "noise", 100, 0, { type: "white" }), + mod(101, "noise", 200, 0, { type: "white" }), + mod(102, "noise", 300, 0, { type: "white" }), + mod(103, "noise", 400, 0, { type: "white" }), + mod(104, "filter", 600, 0, { type: "bandpass", frequency: 3000, Q: 3 }), + mod(105, "filter", 700, 0, { type: "lowpass", frequency: 1200, Q: 1 }), + mod(106, "lfo", 800, 0, { waveform: "sine", frequency: 0.3, amplitude: 0.5 }), + mod(107, "lfo", 900, 0, { waveform: "square", frequency: 1.5, amplitude: 0.7 }), + mod(108, "envelope", 1000, 0, { attack: 0.01, decay: 0.3, sustain: 0.3, release: 0.3 }), + mod(109, "envelope", 1000, 0, { attack: 0.001, decay: 0.05, sustain: 0, release: 0.05 }), + mod(110, "vca", 1100, 0, { gain: 0 }), + mod(111, "vca", 1100, 0, { gain: 0 }), + mod(112, "vca", 1100, 0, { gain: 0 }), + mod(113, "vca", 1100, 0, { gain: 0 }), + mod(114, "mixer", 1200, 0, {}), + mod(115, "reverb", 1300, 0, { decay: 4, mix: 0.5, wet: 0.5 }), + mod(116, "delay", 1400, 0, { time: 0.3, delayTime: 0.3, feedback: 0.5, wet: 0.5, mix: 0.5 }), + ], + [ + [100, "out", 104, "in"], + [101, "out", 105, "in"], + [102, "out", 110, "in"], + [103, "out", 111, "in"], + [104, "out", 110, "in"], + [105, "out", 111, "in"], + [106, "out", 104, "cutoff"], + [107, "out", 112, "cv"], + [108, "out", 110, "cv"], + [109, "out", 113, "cv"], + [110, "out", 114, "in1"], + [111, "out", 114, "in2"], + [112, "out", 114, "in3"], + [113, "out", 114, "in4"], + [114, "out", 115, "in"], + [115, "out", 116, "in"], + [116, "out", 1, "left"], + ] + ), + + // WORLD 9 — "Síntesis Sustractiva" (8 levels) + + "w9-1": sol( + [ + mod(1, "output", 700, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 440 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1500, Q: 2 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "envelope", 600, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(104, "keyboard", 600, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 102, "cv"], + [104, "gate", 103, "gate"], + ] + ), + + "w9-2": sol( + [ + mod(1, "output", 800, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1000, Q: 6 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "lfo", 700, 0, { waveform: "sine", frequency: 1, amplitude: 0.5 }), + mod(104, "envelope", 600, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(105, "keyboard", 700, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 101, "cutoff"], + [104, "out", 102, "cv"], + [105, "gate", 104, "gate"], + ] + ), + + "w9-3": sol( + [ + mod(1, "output", 800, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "square", frequency: 220 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 500, Q: 3 }), + mod(102, "vca", 500, 0, { gain: 0.8 }), + mod(103, "envelope", 600, 0, { attack: 0.01, decay: 0.3, sustain: 0.3, release: 0.3 }), + mod(104, "keyboard", 600, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 101, "cutoff"], + [104, "gate", 103, "gate"], + ] + ), + + "w9-4": sol( + [ + mod(1, "output", 800, 0, { volume: -6 }), + mod(100, "sequencer", 100, 0, { bpm: 140 }), + mod(101, "oscillator", 200, 0, { waveform: "sawtooth", frequency: 55 }), + mod(102, "filter", 400, 0, { type: "lowpass", frequency: 600, Q: 10 }), + mod(103, "vca", 600, 0, { gain: 0 }), + mod(104, "envelope", 700, 0, { attack: 0.01, decay: 0.2, sustain: 0, release: 0.1 }), + ], + [ + [100, "frequency", 101, "frequency"], + [100, "gate", 104, "gate"], + [101, "out", 102, "in"], + [102, "out", 103, "in"], + [103, "out", 1, "left"], + [104, "out", 102, "cutoff"], + [104, "out", 103, "cv"], + ] + ), + + "w9-5": sol( + [ + mod(1, "output", 900, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220, detune: 0 }), + mod(101, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 220, detune: 5 }), + mod(102, "oscillator", 500, 0, { waveform: "sawtooth", frequency: 220, detune: -7 }), + mod(103, "mixer", 700, 0, {}), + mod(104, "filter", 800, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + mod(105, "vca", 1000, 0, { gain: 0 }), + mod(106, "envelope", 900, 0, { attack: 0.05, decay: 0.8, sustain: 0.7, release: 1 }), + mod(107, "keyboard", 1000, 0, {}), + ], + [ + [100, "out", 103, "in1"], + [101, "out", 103, "in2"], + [102, "out", 103, "in3"], + [103, "out", 104, "in"], + [104, "out", 105, "in"], + [105, "out", 1, "left"], + [106, "out", 105, "cv"], + [107, "gate", 106, "gate"], + ] + ), + + "w9-6": sol( + [ + mod(1, "output", 800, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "square", frequency: 220, detune: 0 }), + mod(101, "oscillator", 300, 0, { waveform: "square", frequency: 220, detune: 5 }), + mod(102, "mixer", 500, 0, {}), + mod(103, "filter", 600, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + mod(104, "lfo", 800, 0, { waveform: "sine", frequency: 2, amplitude: 0.5 }), + mod(105, "vca", 900, 0, { gain: 0.8 }), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 103, "in"], + [103, "out", 105, "in"], + [105, "out", 1, "left"], + [104, "out", 101, "detune"], + ] + ), + + "w9-7": sol( + [ + mod(1, "output", 900, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1000, Q: 3 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "lfo", 700, 0, { waveform: "sine", frequency: 1, amplitude: 0.5 }), + mod(104, "envelope", 700, 0, { attack: 0.01, decay: 0.5, sustain: 0.3, release: 0.3 }), + mod(105, "keyboard", 800, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 101, "cutoff"], + [104, "out", 101, "cutoff"], + [104, "out", 102, "cv"], + [105, "gate", 104, "gate"], + ] + ), + + "w9-8": sol( + [ + mod(1, "output", 1000, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220, detune: -5 }), + mod(101, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 220, detune: 5 }), + mod(102, "mixer", 500, 0, {}), + mod(103, "filter", 700, 0, { type: "lowpass", frequency: 1000, Q: 6 }), + mod(104, "vca", 900, 0, { gain: 0 }), + mod(105, "envelope", 800, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(106, "envelope", 800, 0, { attack: 0.01, decay: 0.5, sustain: 0.3, release: 0.3 }), + mod(107, "lfo", 1000, 0, { waveform: "sine", frequency: 1, amplitude: 0.5 }), + mod(108, "keyboard", 900, 0, {}), + mod(109, "delay", 1100, 0, { time: 0.3, delayTime: 0.3, feedback: 0.4, wet: 0.4, mix: 0.4 }), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 103, "in"], + [103, "out", 104, "in"], + [104, "out", 109, "in"], + [109, "out", 1, "left"], + [105, "out", 103, "cutoff"], + [106, "out", 104, "cv"], + [107, "out", 103, "cutoff"], + [108, "gate", 105, "gate"], + [108, "gate", 106, "gate"], + [108, "freq", 100, "freq"], + [108, "freq", 101, "freq"], + ] + ), + + // WORLD 10 — "Espacio y Stereo" (8 levels) + + "w10-1": sol( + [ + mod(1, "output", 900, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "oscillator", 300, 0, { waveform: "square", frequency: 330 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "vca", 600, 0, { gain: 0 }), + mod(104, "envelope", 700, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(105, "envelope", 700, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(106, "keyboard", 800, 0, {}), + ], + [ + [100, "out", 102, "in"], + [101, "out", 103, "in"], + [102, "out", 1, "left"], + [103, "out", 1, "right"], + [104, "out", 102, "cv"], + [105, "out", 103, "cv"], + [106, "gate", 104, "gate"], + [106, "gate", 105, "gate"], + ] + ), + + "w10-2": sol( + [ + mod(1, "output", 800, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220, detune: 0 }), + mod(101, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 220, detune: 8 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "vca", 600, 0, { gain: 0 }), + mod(104, "envelope", 700, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(105, "keyboard", 800, 0, {}), + ], + [ + [100, "out", 102, "in"], + [101, "out", 103, "in"], + [102, "out", 1, "left"], + [103, "out", 1, "right"], + [104, "out", 102, "cv"], + [104, "out", 103, "cv"], + [105, "gate", 104, "gate"], + ] + ), + + "w10-3": sol( + [ + mod(1, "output", 700, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "delay", 300, 0, { time: 0.03, delayTime: 0.03, feedback: 0.2, wet: 0.5, mix: 0.5 }), + mod(102, "vca", 500, 0, { gain: 0.8 }), + ], + [ + [100, "out", 102, "in"], + [102, "out", 1, "left"], + [100, "out", 101, "in"], + [101, "out", 1, "right"], + ] + ), + + "w10-4": sol( + [ + mod(1, "output", 700, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "vca", 300, 0, { gain: 0 }), + mod(102, "reverb", 500, 0, { decay: 1.5, mix: 0.4, wet: 0.4 }), + mod(103, "envelope", 600, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(104, "keyboard", 600, 0, {}), + ], + [ + [100, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 101, "cv"], + [104, "gate", 103, "gate"], + [100, "out", 101, "in"], + ] + ), + + "w10-5": sol( + [ + mod(1, "output", 800, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "vca", 300, 0, { gain: 0 }), + mod(102, "reverb", 500, 0, { decay: 5, mix: 0.7, wet: 0.7 }), + mod(103, "envelope", 600, 0, { attack: 0.01, decay: 0.8, sustain: 0.5, release: 1 }), + mod(104, "keyboard", 700, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 101, "cv"], + [104, "gate", 103, "gate"], + ] + ), + + "w10-6": sol( + [ + mod(1, "output", 700, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "delay", 300, 0, { time: 0.15, delayTime: 0.15, feedback: 0.05, wet: 0.5, mix: 0.5 }), + mod(102, "vca", 500, 0, { gain: 0.8 }), + ], + [ + [100, "out", 102, "in"], + [102, "out", 1, "left"], + [100, "out", 101, "in"], + [101, "out", 1, "right"], + ] + ), + + "w10-7": sol( + [ + mod(1, "output", 1100, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(102, "distortion", 500, 0, { drive: 4, distortion: 0.4, wet: 0.5 }), + mod(103, "delay", 700, 0, { time: 0.3, delayTime: 0.3, feedback: 0.4, wet: 0.5, mix: 0.5 }), + mod(104, "reverb", 900, 0, { decay: 3, mix: 0.4, wet: 0.4 }), + mod(105, "envelope", 800, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(106, "vca", 1000, 0, { gain: 0.8 }), + mod(107, "keyboard", 1000, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [101, "out", 103, "in"], + [102, "out", 103, "in"], + [103, "out", 104, "in"], + [104, "out", 1, "left"], + [105, "out", 106, "cv"], + ] + ), + + "w10-8": sol( + [ + mod(1, "output", 1200, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "oscillator", 300, 0, { waveform: "square", frequency: 330 }), + mod(102, "oscillator", 500, 0, { waveform: "sine", frequency: 110 }), + mod(103, "vca", 600, 0, { gain: 0 }), + mod(104, "vca", 700, 0, { gain: 0 }), + mod(105, "vca", 800, 0, { gain: 0 }), + mod(106, "filter", 900, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(107, "envelope", 1000, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(108, "envelope", 1000, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(109, "keyboard", 1100, 0, {}), + mod(110, "delay", 1100, 0, { time: 0.3, delayTime: 0.3, feedback: 0.4, wet: 0.5, mix: 0.5 }), + mod(111, "reverb", 1200, 0, { decay: 3, mix: 0.4, wet: 0.4 }), + mod(112, "mixer", 1300, 0, {}), + ], + [ + [100, "out", 106, "in"], + [106, "out", 103, "in"], + [101, "out", 104, "in"], + [102, "out", 105, "in"], + [103, "out", 112, "in1"], + [104, "out", 112, "in2"], + [105, "out", 112, "in3"], + [112, "out", 110, "in"], + [110, "out", 1, "left"], + [112, "out", 111, "in"], + [111, "out", 1, "right"], + [107, "out", 103, "cv"], + [108, "out", 104, "cv"], + [109, "gate", 107, "gate"], + [109, "gate", 108, "gate"], + [109, "frequency", 100, "frequency"], + ] + ), + + // WORLD 11 — "Técnicas Avanzadas" (8 levels) + + "w11-1": sol( + [ + mod(1, "output", 800, 0, { volume: -6 }), + mod(100, "noise", 100, 0, { type: "white" }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1000, Q: 10 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "envelope", 600, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(104, "lfo", 700, 0, { waveform: "sine", frequency: 2, amplitude: 0.5 }), + mod(105, "keyboard", 700, 0, {}), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 102, "cv"], + [104, "out", 101, "cutoff"], + [105, "gate", 103, "gate"], + ] + ), + + "w11-2": sol( + [ + mod(1, "output", 500, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 200 }), + mod(101, "oscillator", 300, 0, { waveform: "sine", frequency: 600 }), + mod(102, "vca", 500, 0, { gain: 0.5 }), + ], + [ + [100, "out", 102, "in"], + [101, "out", 102, "cv"], + [102, "out", 1, "left"], + ] + ), + + "w11-3": sol( + [ + mod(1, "output", 1000, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 80, detune: 0 }), + mod(101, "oscillator", 300, 0, { waveform: "sine", frequency: 80, detune: 5 }), + mod(102, "mixer", 500, 0, {}), + mod(103, "filter", 700, 0, { type: "lowpass", frequency: 800, Q: 1 }), + mod(104, "lfo", 900, 0, { waveform: "sine", frequency: 0.3, amplitude: 0.5 }), + mod(105, "lfo", 900, 0, { waveform: "sine", frequency: 0.5, amplitude: 0.5 }), + mod(106, "vca", 1000, 0, { gain: 0.8 }), + mod(107, "reverb", 1100, 0, { decay: 5, mix: 0.5, wet: 0.5 }), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 103, "in"], + [103, "out", 106, "in"], + [106, "out", 107, "in"], + [107, "out", 1, "left"], + [104, "out", 103, "cutoff"], + [105, "out", 106, "cv"], + ] + ), + + "w11-4": sol( + [ + mod(1, "output", 1400, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 220 }), + mod(102, "oscillator", 500, 0, { waveform: "sawtooth", frequency: 220 }), + mod(103, "oscillator", 700, 0, { waveform: "sawtooth", frequency: 220 }), + mod(104, "filter", 800, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + mod(105, "filter", 1000, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + mod(106, "filter", 1200, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + mod(107, "filter", 1400, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + mod(108, "vca", 900, 0, { gain: 0 }), + mod(109, "vca", 1100, 0, { gain: 0 }), + mod(110, "vca", 1300, 0, { gain: 0 }), + mod(111, "vca", 1500, 0, { gain: 0 }), + mod(112, "envelope", 1100, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(113, "envelope", 1100, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(114, "envelope", 1100, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(115, "envelope", 1100, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(116, "mixer", 1600, 0, {}), + mod(117, "keyboard", 1200, 0, {}), + ], + [ + [100, "out", 104, "in"], + [101, "out", 104, "in"], + [102, "out", 104, "in"], + [103, "out", 104, "in"], + [101, "out", 105, "in"], + [102, "out", 106, "in"], + [103, "out", 107, "in"], + [104, "out", 108, "in"], + [105, "out", 109, "in"], + [106, "out", 110, "in"], + [107, "out", 111, "in"], + [108, "out", 116, "in1"], + [109, "out", 116, "in2"], + [110, "out", 116, "in3"], + [111, "out", 116, "in4"], + [116, "out", 1, "left"], + [112, "out", 108, "cv"], + [113, "out", 109, "cv"], + [114, "out", 110, "cv"], + [115, "out", 111, "cv"], + [117, "freq", 100, "freq"], + [117, "freq", 101, "freq"], + [117, "freq", 102, "freq"], + [117, "freq", 103, "freq"], + [117, "gate", 112, "gate"], + [117, "gate", 113, "gate"], + [117, "gate", 114, "gate"], + [117, "gate", 115, "gate"], + ] + ), + + "w11-5": sol( + [ + mod(1, "output", 800, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(102, "vca", 500, 0, { gain: 0 }), + mod(103, "envelope", 600, 0, { attack: 0.01, decay: 0.2, sustain: 0, release: 0.1 }), + mod(104, "sequencer", 700, 0, { bpm: 140 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 1, "left"], + [103, "out", 102, "cv"], + [104, "gate", 103, "gate"], + ] + ), + + "w11-6": sol( + [ + mod(1, "output", 900, 0, { volume: -10 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 220 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(102, "delay", 500, 0, { time: 0.4, delayTime: 0.4, feedback: 0.8, wet: 0.5, mix: 0.5 }), + mod(103, "reverb", 700, 0, { decay: 4, mix: 0.4, wet: 0.4 }), + mod(104, "envelope", 600, 0, { attack: 0.01, decay: 0.8, sustain: 0.3, release: 0.5 }), + mod(105, "vca", 800, 0, { gain: 0 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 102, "in"], + [102, "out", 103, "in"], + [103, "out", 1, "left"], + [104, "out", 105, "cv"], + ] + ), + + "w11-7": sol( + [ + mod(1, "output", 800, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 110 }), + mod(101, "filter", 300, 0, { type: "lowpass", frequency: 1000, Q: 1 }), + mod(102, "lfo", 500, 0, { waveform: "sine", frequency: 0.5, amplitude: 0.5 }), + mod(103, "lfo", 600, 0, { waveform: "sine", frequency: 4, amplitude: 0.5 }), + mod(104, "vca", 700, 0, { gain: 0.8 }), + ], + [ + [100, "out", 101, "in"], + [101, "out", 104, "in"], + [104, "out", 1, "left"], + [102, "out", 103, "frequency"], + [103, "out", 101, "cutoff"], + ] + ), + + "w11-8": sol( + [ + mod(1, "output", 1300, 0, { volume: -10 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 110 }), + mod(101, "oscillator", 300, 0, { waveform: "sine", frequency: 300 }), + mod(102, "noise", 400, 0, { type: "white" }), + mod(103, "filter", 600, 0, { type: "lowpass", frequency: 800, Q: 10 }), + mod(104, "vca", 800, 0, { gain: 0 }), + mod(105, "vca", 900, 0, { gain: 0.5 }), + mod(106, "lfo", 1000, 0, { waveform: "sine", frequency: 0.3, amplitude: 0.5 }), + mod(107, "lfo", 1100, 0, { waveform: "sine", frequency: 4, amplitude: 0.5 }), + mod(108, "envelope", 1200, 0, { attack: 0.01, decay: 0.5, sustain: 0.3, release: 0.5 }), + mod(109, "mixer", 1300, 0, {}), + mod(110, "delay", 1400, 0, { time: 0.4, delayTime: 0.4, feedback: 0.8, wet: 0.5, mix: 0.5 }), + mod(111, "reverb", 1500, 0, { decay: 4, mix: 0.4, wet: 0.4 }), + mod(112, "keyboard", 1200, 0, {}), + ], + [ + [100, "out", 103, "in"], + [102, "out", 103, "in"], + [101, "out", 105, "cv"], + [100, "out", 105, "in"], + [103, "out", 104, "in"], + [104, "out", 109, "in1"], + [105, "out", 109, "in2"], + [109, "out", 110, "in"], + [110, "out", 111, "in"], + [111, "out", 1, "left"], + [106, "out", 107, "frequency"], + [107, "out", 103, "cutoff"], + [108, "out", 104, "cv"], + [112, "gate", 108, "gate"], + [112, "frequency", 100, "frequency"], + ] + ), + + // WORLD 12 — "Gran Final" (8 levels) + + "w12-1": sol( + [ + mod(1, "output", 1000, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 100, detune: 0 }), + mod(101, "oscillator", 300, 0, { waveform: "sine", frequency: 100, detune: 5 }), + mod(102, "mixer", 500, 0, {}), + mod(103, "filter", 700, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(104, "vca", 900, 0, { gain: 0 }), + mod(105, "lfo", 800, 0, { waveform: "sine", frequency: 0.5, amplitude: 0.5 }), + mod(106, "envelope", 800, 0, { attack: 0.01, decay: 1.5, sustain: 0.7, release: 2 }), + mod(107, "reverb", 1000, 0, { decay: 5, mix: 0.5, wet: 0.5 }), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 103, "in"], + [103, "out", 104, "in"], + [104, "out", 107, "in"], + [107, "out", 1, "left"], + [105, "out", 103, "cutoff"], + [106, "out", 104, "cv"], + ] + ), + + "w12-2": sol( + [ + mod(1, "output", 1000, 0, { volume: -6 }), + mod(100, "sequencer", 100, 0, { bpm: 140 }), + mod(101, "oscillator", 200, 0, { waveform: "sine", frequency: 55 }), + mod(102, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 55, detune: 0 }), + mod(103, "oscillator", 500, 0, { waveform: "sawtooth", frequency: 55, detune: 8 }), + mod(104, "vca", 600, 0, { gain: 0 }), + mod(105, "envelope", 700, 0, { attack: 0.001, decay: 0.15, sustain: 0, release: 0.1 }), + mod(106, "mixer", 800, 0, {}), + mod(107, "filter", 900, 0, { type: "lowpass", frequency: 800, Q: 1 }), + ], + [ + [100, "freq", 102, "freq"], + [100, "freq", 101, "freq"], + [100, "gate", 105, "gate"], + [101, "out", 104, "in"], + [104, "out", 106, "in1"], + [102, "out", 106, "in2"], + [103, "out", 106, "in3"], + [106, "out", 107, "in"], + [107, "out", 1, "left"], + [105, "out", 104, "cv"], + ] + ), + + "w12-3": sol( + [ + mod(1, "output", 1000, 0, { volume: -8 }), + mod(100, "pianoroll", 100, 0, { bpm: 140 }), + mod(101, "oscillator", 200, 0, { waveform: "square", frequency: 220 }), + mod(102, "filter", 400, 0, { type: "lowpass", frequency: 2000, Q: 3 }), + mod(103, "vca", 600, 0, { gain: 0 }), + mod(104, "envelope", 700, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(105, "lfo", 800, 0, { waveform: "sine", frequency: 2, amplitude: 0.5 }), + mod(106, "reverb", 900, 0, { decay: 3, mix: 0.4, wet: 0.4 }), + ], + [ + [100, "freq", 101, "freq"], + [100, "gate", 104, "gate"], + [101, "out", 102, "in"], + [102, "out", 103, "in"], + [103, "out", 106, "in"], + [106, "out", 1, "left"], + [105, "out", 102, "cutoff"], + [104, "out", 103, "cv"], + ] + ), + + "w12-4": sol( + [ + mod(1, "output", 1000, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 100 }), + mod(101, "oscillator", 300, 0, { waveform: "sine", frequency: 150 }), + mod(102, "mixer", 500, 0, {}), + mod(103, "filter", 700, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(104, "vca", 900, 0, { gain: 0 }), + mod(105, "lfo", 800, 0, { waveform: "sine", frequency: 0.5, amplitude: 0.5 }), + mod(106, "envelope", 800, 0, { attack: 0.01, decay: 1.5, sustain: 0.5, release: 1 }), + mod(107, "reverb", 1000, 0, { decay: 4, mix: 0.5, wet: 0.5 }), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 103, "in"], + [103, "out", 104, "in"], + [104, "out", 107, "in"], + [107, "out", 1, "left"], + [105, "out", 103, "cutoff"], + [106, "out", 104, "cv"], + ] + ), + + "w12-5": sol( + [ + mod(1, "output", 1100, 0, { volume: -6 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 110 }), + mod(101, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 220 }), + mod(102, "oscillator", 500, 0, { waveform: "square", frequency: 330 }), + mod(103, "filter", 700, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(104, "vca", 900, 0, { gain: 0 }), + mod(105, "lfo", 800, 0, { waveform: "sine", frequency: 0.5, amplitude: 0.5 }), + mod(106, "sequencer", 1000, 0, { bpm: 140 }), + mod(107, "envelope", 900, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(108, "mixer", 1000, 0, {}), + mod(109, "reverb", 1100, 0, { decay: 2, mix: 0.4, wet: 0.4 }), + ], + [ + [100, "out", 108, "in1"], + [101, "out", 108, "in2"], + [102, "out", 108, "in3"], + [108, "out", 103, "in"], + [103, "out", 104, "in"], + [104, "out", 109, "in"], + [109, "out", 1, "left"], + [105, "out", 103, "cutoff"], + [106, "frequency", 100, "frequency"], + [106, "gate", 107, "gate"], + [107, "out", 104, "cv"], + ] + ), + + "w12-6": sol( + [ + mod(1, "output", 1300, 0, { volume: -10 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 55 }), + mod(101, "oscillator", 200, 0, { waveform: "sawtooth", frequency: 110 }), + mod(102, "oscillator", 400, 0, { waveform: "sawtooth", frequency: 220, detune: 7 }), + mod(103, "oscillator", 600, 0, { waveform: "square", frequency: 330 }), + mod(104, "pianoroll", 700, 0, { bpm: 140 }), + mod(105, "sequencer", 800, 0, { bpm: 140 }), + mod(106, "filter", 900, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(107, "filter", 1000, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + mod(108, "vca", 1100, 0, { gain: 0 }), + mod(109, "vca", 1200, 0, { gain: 0 }), + mod(110, "envelope", 1300, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.3 }), + mod(111, "envelope", 1300, 0, { attack: 0.001, decay: 0.15, sustain: 0, release: 0.1 }), + mod(112, "mixer", 1400, 0, {}), + mod(113, "reverb", 1500, 0, { decay: 3, mix: 0.4, wet: 0.4 }), + mod(114, "lfo", 1400, 0, { waveform: "sine", frequency: 1, amplitude: 0.5 }), + ], + [ + [100, "out", 108, "in"], + [111, "out", 108, "cv"], + [105, "gate", 111, "gate"], + [101, "out", 106, "in"], + [102, "out", 106, "in"], + [106, "out", 109, "in"], + [110, "out", 109, "cv"], + [103, "out", 107, "in"], + [107, "out", 112, "in3"], + [108, "out", 112, "in1"], + [109, "out", 112, "in2"], + [100, "out", 112, "in4"], + [113, "out", 112, "in4"], + [104, "freq", 103, "freq"], + [104, "gate", 110, "gate"], + [112, "out", 113, "in"], + [113, "out", 1, "left"], + [114, "out", 106, "cutoff"], + [112, "out", 1, "right"], + ] + ), + + "w12-7": sol( + [ + mod(1, "output", 1100, 0, { volume: -10 }), + mod(100, "oscillator", 100, 0, { waveform: "sine", frequency: 80, detune: 0 }), + mod(101, "oscillator", 300, 0, { waveform: "sine", frequency: 80, detune: 5 }), + mod(102, "mixer", 500, 0, {}), + mod(103, "filter", 700, 0, { type: "lowpass", frequency: 1500, Q: 1 }), + mod(104, "vca", 900, 0, { gain: 0.8 }), + mod(105, "lfo", 800, 0, { waveform: "sine", frequency: 0.3, amplitude: 0.5 }), + mod(106, "envelope", 800, 0, { attack: 0.01, decay: 1.5, sustain: 0.5, release: 2 }), + mod(107, "reverb", 1000, 0, { decay: 6, mix: 0.5, wet: 0.5 }), + mod(108, "delay", 1100, 0, { time: 0.4, delayTime: 0.4, feedback: 0.5, wet: 0.4, mix: 0.4 }), + ], + [ + [100, "out", 102, "in1"], + [101, "out", 102, "in2"], + [102, "out", 103, "in"], + [103, "out", 104, "in"], + [104, "out", 107, "in"], + [107, "out", 108, "in"], + [108, "out", 1, "left"], + [105, "out", 103, "cutoff"], + [106, "out", 104, "cv"], + ] + ), + + "w12-8": sol( + [ + mod(1, "output", 1500, 0, { volume: -8 }), + mod(100, "oscillator", 100, 0, { waveform: "sawtooth", frequency: 110, detune: -7 }), + mod(101, "oscillator", 300, 0, { waveform: "sawtooth", frequency: 220, detune: 7 }), + mod(102, "oscillator", 500, 0, { waveform: "square", frequency: 330 }), + mod(103, "oscillator", 700, 0, { waveform: "sine", frequency: 55 }), + mod(104, "sequencer", 900, 0, { bpm: 140 }), + mod(105, "pianoroll", 1000, 0, { bpm: 140 }), + mod(106, "keyboard", 1100, 0, {}), + mod(107, "filter", 1200, 0, { type: "lowpass", frequency: 1500, Q: 3 }), + mod(108, "filter", 1300, 0, { type: "lowpass", frequency: 2000, Q: 1 }), + mod(109, "vca", 1400, 0, { gain: 0 }), + mod(110, "vca", 1400, 0, { gain: 0 }), + mod(111, "vca", 1400, 0, { gain: 0 }), + mod(112, "envelope", 1500, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(113, "envelope", 1500, 0, { attack: 0.01, decay: 0.5, sustain: 0.3, release: 0.5 }), + mod(114, "envelope", 1500, 0, { attack: 0.01, decay: 0.3, sustain: 0.5, release: 0.5 }), + mod(115, "mixer", 1600, 0, {}), + mod(116, "delay", 1700, 0, { time: 0.3, delayTime: 0.3, feedback: 0.4, wet: 0.4, mix: 0.4 }), + mod(117, "reverb", 1800, 0, { decay: 4, mix: 0.4, wet: 0.4 }), + mod(118, "distortion", 1700, 0, { drive: 3, distortion: 0.3, wet: 0.5 }), + mod(119, "lfo", 1600, 0, { waveform: "sine", frequency: 1, amplitude: 0.5 }), + mod(120, "scope", 1700, 0, {}), + ], + [ + [104, "frequency", 100, "frequency"], + [104, "gate", 112, "gate"], + [105, "frequency", 102, "frequency"], + [105, "gate", 113, "gate"], + [100, "out", 107, "in"], + [101, "out", 107, "in"], + [107, "out", 109, "in"], + [102, "out", 108, "in"], + [108, "out", 110, "in"], + [103, "out", 111, "in"], + [112, "out", 109, "cv"], + [113, "out", 110, "cv"], + [114, "out", 111, "cv"], + [109, "out", 115, "in1"], + [110, "out", 115, "in2"], + [111, "out", 115, "in3"], + [115, "out", 118, "in"], + [118, "out", 116, "in"], + [116, "out", 117, "in"], + [117, "out", 1, "left"], + [119, "out", 107, "cutoff"], + [106, "gate", 114, "gate"], + [115, "out", 120, "in"], + ] + ), +};