From fbdb192a0df00f836e6129d403df8168bee4b74c Mon Sep 17 00:00:00 2001 From: Alberto Moretti Date: Thu, 2 Jul 2026 15:45:05 +0200 Subject: [PATCH] fix shalom --- app.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index 5185bf8..180c686 100644 --- a/app.js +++ b/app.js @@ -191,7 +191,7 @@ }, // ritorna una funzione stop(fadeSec) per interromperlo (utile per il loop) play(key, opts = {}) { - const { vol = 0.8, loop = false, fallback } = opts; + const { vol = 0.8, loop = false, fallback, gain } = opts; if (!Audio.on) return () => {}; const base = this.el[key]; if (!base || this.ready[key] === false) { @@ -201,6 +201,16 @@ const a = loop ? base : base.cloneNode(); // clone -> più play sovrapposti a.loop = loop; a.volume = vol; + // Boost oltre il max (1.0) solo per QUESTO suono: instrada l'elemento in + // Web Audio con un GainNode dedicato (non tocca il volume globale). + if (gain && gain > 1 && Audio.ctx) { + try { + const src = Audio.ctx.createMediaElementSource(a); + const g = Audio.ctx.createGain(); + g.gain.value = gain; + src.connect(g).connect(Audio.ctx.destination); + } catch (e) {} + } try { a.currentTime = 0; } catch (e) {} @@ -442,7 +452,8 @@ showShalom(o, "mode-fire"); screenShake(); const stop = Samples.play("leone", { - vol: 0.9, + vol: 1.0, + gain: 2.5, // ruggito più forte del resto (boost dedicato) fallback: () => Audio.jackpot(), }); await shalomWait(null, 3500, o); @@ -455,15 +466,18 @@ const o = ensureShalomOverlay(); const v = o.querySelector(".shalom-video"); showShalom(o, "mode-video"); + v.style.visibility = "hidden"; // primi 3s: solo musica, video nascosto const stop = Samples.play("shalom", { vol: 0.9, fallback: () => Audio.jackpot(), }); + await sleep(3000); // dopo 3s il video appare E parte insieme + v.style.visibility = ""; try { v.currentTime = 0; await v.play(); } catch (e) {} - await shalomWait(v, 14000, o); + await shalomWait(v, 17000, o); // 3s musica + 17s video = 20s (o tap per skippare) if (stop) stop(0.4); hideShalom(o); }