Lub - Dub Valves !!exclusive!!
.status background: #00000066; border-radius: 40px; padding: 0.6rem 1rem; text-align: center; font-family: monospace; font-size: 1.2rem; font-weight: bold; color: #c0e0ff; letter-spacing: 2px;
.button-group display: flex; gap: 1.5rem; justify-content: center; margin-bottom: 2rem; lub dub valves
function startAutoCycle() if (autoInterval) clearInterval(autoInterval); isAuto = true; function nextBeat() if (!isAuto) return; playLubDub(); // initial immediate beat nextBeat(); autoInterval = setInterval(nextBeat, getCycleIntervalMs()); statusSpan.innerHTML = `🔄 AUTO CYCLE ($bpmSlider.value BPM)`; .status background: #00000066
document.getElementById('playDubBtn').addEventListener('click', () => if (autoInterval) stopAutoCycle(); playDub(); activateDub(); statusSpan.innerHTML = '🔊 Manual DUB (Semilunar valves)'; setTimeout(() => if (!autoInterval) statusSpan.innerHTML = '⚡ idle'; , 800); ); padding: 0.6rem 1rem
<script> // ----- Web Audio Setup ----- const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
.valves-container display: flex; justify-content: space-between; gap: 2rem; flex-wrap: wrap; margin-bottom: 2rem;