From 4e8cbad9510f14fdfc7579344f011f26da227cca Mon Sep 17 00:00:00 2001 From: Denis Thiessen Date: Sat, 8 Jun 2024 15:48:44 +0200 Subject: [PATCH] feat: Added cooldown to sounds. --- src/components/DetailElement.jsx | 5 +- src/core/audio/AudioHandler.jsx | 94 ++++++++++++++++++++------------ 2 files changed, 62 insertions(+), 37 deletions(-) diff --git a/src/components/DetailElement.jsx b/src/components/DetailElement.jsx index 21a5e8c..846b702 100644 --- a/src/components/DetailElement.jsx +++ b/src/components/DetailElement.jsx @@ -113,12 +113,11 @@ const touchEvent = function (event) { const parentCollapseElement = getParentCollapseElement(eventElement); const contentNode = getContainerNode(parentCollapseElement); const densities = calculateDensities(contentNode); - console.log(densities); if (type === "model") { - playDetailModelSonification(); + playDetailModelSonification(densities.textDensity, densities.linkDensity); } else if (type === "earcon") { - playDetailEarconSonification(); + playDetailEarconSonification(densities.textDensity, densities.linkDensity); } }; diff --git a/src/core/audio/AudioHandler.jsx b/src/core/audio/AudioHandler.jsx index 0ea8edf..9ca3cb3 100644 --- a/src/core/audio/AudioHandler.jsx +++ b/src/core/audio/AudioHandler.jsx @@ -18,46 +18,72 @@ const setRotationRamp = (panner, angle, rampTime) => { panner.positionZ.rampTo(-Math.cos(angle), rampTime); }; +var offCooldown = true; + export function playTabEarconSonification() { - var loop = new Tone.Loop((time) => { - drumSynth.triggerAttackRelease("C3", "4n", time); - }, "4n"); - loop.iterations = 2; - loop.start(); - drumSynth.context.resume(); - Tone.Transport.start(); - pushToSonificationLog("tab_earcon"); + if (offCooldown) { + var loop = new Tone.Loop((time) => { + drumSynth.triggerAttackRelease("C3", "4n", time); + }, "4n"); + loop.iterations = 2; + loop.start(); + drumSynth.context.resume(); + Tone.Transport.start(); + pushToSonificationLog("tab_earcon"); + offCooldown = false; + setTimeout(() => { + offCooldown = true; + }, 500); + } } export function playTabModelSonification() { - var loop = new Tone.Loop((time) => { - drumSynth.triggerAttackRelease("C3", "4n", time); - }, "4n"); - loop.iterations = 2; - loop.start(); - drumSynth.context.resume(); - Tone.Transport.start(); - pushToSonificationLog("tab_model"); + if (offCooldown) { + var loop = new Tone.Loop((time) => { + drumSynth.triggerAttackRelease("C3", "4n", time); + }, "4n"); + loop.iterations = 2; + loop.start(); + drumSynth.context.resume(); + Tone.Transport.start(); + pushToSonificationLog("tab_model"); + offCooldown = false; + setTimeout(() => { + offCooldown = true; + }, 500); + } } -export function playDetailEarconSonification() { - var loop = new Tone.Loop((time) => { - drumSynth.triggerAttackRelease("C3", "4n", time); - }, "4n"); - loop.iterations = 2; - loop.start(); - drumSynth.context.resume(); - Tone.Transport.start(); - pushToSonificationLog("detail_earcon"); +export function playDetailEarconSonification(textDensity, linkDensity) { + if (offCooldown) { + var loop = new Tone.Loop((time) => { + drumSynth.triggerAttackRelease("C3", "4n", time); + }, "4n"); + loop.iterations = 2; + loop.start(); + drumSynth.context.resume(); + Tone.Transport.start(); + pushToSonificationLog("detail_earcon"); + offCooldown = false; + setTimeout(() => { + offCooldown = true; + }, 500); + } } -export function playDetailModelSonification() { - var loop = new Tone.Loop((time) => { - drumSynth.triggerAttackRelease("C3", "4n", time); - }, "4n"); - loop.iterations = 2; - loop.start(); - drumSynth.context.resume(); - Tone.Transport.start(); - pushToSonificationLog("detail_model"); +export function playDetailModelSonification(textDensity, linkDensity) { + if (offCooldown) { + var loop = new Tone.Loop((time) => { + drumSynth.triggerAttackRelease("C3", "4n", time); + }, "4n"); + loop.iterations = 2; + loop.start(); + drumSynth.context.resume(); + Tone.Transport.start(); + pushToSonificationLog("detail_model"); + offCooldown = false; + setTimeout(() => { + offCooldown = true; + }, 500); + } }