Terapia Binaural para Mascotas – Exclusiva
https://cdn.tailwindcss.com
/* Estilos personalizados para suavizar la interfaz */
body {
font-family: ‘Segoe UI’, Tahoma, Geneva, Verdana, sans-serif;
background-color: #f0f9ff; /* Azul muy pálido, calmante */
overflow: hidden; /* Evita barras de scroll dobles en iframes */
}
.frequency-card {
transition: all 0.3s ease;
}
.frequency-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
/* Slider personalizado */
input[type=range] {
-webkit-appearance: none;
width: 100%;
background: transparent;
}
input[type=range]::-webkit-slider-thumb {
-webkit-appearance: none;
height: 24px;
width: 24px;
border-radius: 50%;
background: #0ea5e9;
cursor: pointer;
margin-top: -10px;
box-shadow: 0 0 2px rgba(0,0,0,0.2);
}
input[type=range]::-webkit-slider-runnable-track {
width: 100%;
height: 4px;
cursor: pointer;
background: #cbd5e1;
border-radius: 2px;
}
.active-preset {
border: 2px solid #0ea5e9;
background-color: #e0f2fe;
}
Bio-Binaural Vet
Terapia de Frecuencias para Mascotas
Requisito Estricto: Esta terapia es 100% Binaural. Debe usar dos altavoces (uno a la izquierda y otro a la derecha) o auriculares para que el efecto funcione.
Seleccione el Tratamiento:
Frecuencia Resultante
0 Hz
Seleccione un tratamiento arriba para ver la explicación detallada.
Volumen (Muy bajo recomendado) 50%
INICIAR TERAPIA
Desarrollado para asistencia veterinaria complementaria.
// — CONFIGURACIÃN DE FRECUENCIAS (PRESETS) —
const presets = [
{
id: ‘deep_sleep’,
name: ‘Sueño Profundo y Dolor’,
icon: ‘fa-bed’,
carrier: 150,
beat: 2.5,
desc: ‘Genera ondas Delta (2.5Hz). Ideal para mascotas enfermas, postradas o con dolor fÃsico severo. Induce un sueño regenerativo profundo.’
},
{
id: ‘healing’,
name: ‘Reparación Celular (528Hz)’,
icon: ‘fa-heart-pulse’,
carrier: 528,
beat: 4,
desc: ‘Utiliza la base de 528Hz (conocida como frecuencia milagrosa) combinada con ondas Theta. Ayuda en la recuperación post-operatoria y sanación interna.’
},
{
id: ‘anxiety’,
name: ‘Ansiedad y Miedo’,
icon: ‘fa-shield-dog’,
carrier: 200,
beat: 6,
desc: ‘Ondas Theta (6Hz). Recomendado para ansiedad por separación, miedo a tormentas/pirotecnia o nerviosismo general.’
},
{
id: ‘energy’,
name: ‘Vitalidad Leve’,
icon: ‘fa-sun’,
carrier: 300,
beat: 10,
desc: ‘Ondas Alfa (10Hz). Estado de calma alerta. Ãtil para mascotas deprimidas o letárgicas que necesitan un estÃmulo suave sin estrés.’
}
];
// — VARIABLES GLOBALES —
let audioCtx = null;
let leftOsc = null;
let rightOsc = null;
let gainNode = null;
let isPlaying = false;
let currentPreset = presets[0];
// — ELEMENTOS DOM —
const playBtn = document.getElementById(‘playBtn’);
const playIcon = document.getElementById(‘playIcon’);
const playText = document.getElementById(‘playText’);
const volSlider = document.getElementById(‘volumeSlider’);
const volValue = document.getElementById(‘volValue’);
const presetList = document.getElementById(‘presetList’);
const displayHz = document.getElementById(‘displayHz’);
const displayDesc = document.getElementById(‘displayDesc’);
const statusText = document.getElementById(‘statusText’);
// — INICIALIZAR UI —
function initUI() {
presetList.innerHTML = »;
presets.forEach((preset, index) => {
const div = document.createElement(‘div’);
div.className = `p-3 rounded-lg border border-slate-200 cursor-pointer flex items-center gap-3 hover:bg-sky-50 transition-colors frequency-card ${index === 0 ? ‘active-preset’ : »}`;
div.onclick = () => selectPreset(preset, div);
div.innerHTML = `
${preset.name}
Beat: ${preset.beat} Hz
`;
presetList.appendChild(div);
});
updateInfoPanel(currentPreset);
}
function selectPreset(preset, element) {
currentPreset = preset;
document.querySelectorAll(‘#presetList > div’).forEach(el => {
el.classList.remove(‘active-preset’);
el.classList.remove(‘bg-sky-50’);
});
element.classList.add(‘active-preset’);
updateInfoPanel(preset);
if (isPlaying && audioCtx) {
updateFrequencies(0.5);
}
}
function updateInfoPanel(preset) {
displayHz.textContent = `${preset.beat} Hz`;
displayDesc.textContent = preset.desc;
}
// — AUDIO ENGINE —
function initAudio() {
if (!audioCtx) {
const AudioContext = window.AudioContext || window.webkitAudioContext;
audioCtx = new AudioContext();
}
}
function updateFrequencies(rampTime = 0.1) {
if (!leftOsc || !rightOsc) return;
const now = audioCtx.currentTime;
leftOsc.frequency.linearRampToValueAtTime(currentPreset.carrier, now + rampTime);
rightOsc.frequency.linearRampToValueAtTime(currentPreset.carrier + currentPreset.beat, now + rampTime);
}
function togglePlay() {
initAudio();
if (audioCtx.state === ‘suspended’) {
audioCtx.resume();
}
if (isPlaying) {
stopTone();
} else {
startTone();
}
}
function startTone() {
leftOsc = audioCtx.createOscillator();
rightOsc = audioCtx.createOscillator();
const leftPan = audioCtx.createStereoPanner();
const rightPan = audioCtx.createStereoPanner();
gainNode = audioCtx.createGain();
// Configurar Panorámica (BINAURAL REAL)
leftPan.pan.value = -1; // Izquierda
rightPan.pan.value = 1; // Derecha
leftOsc.type = ‘sine’;
rightOsc.type = ‘sine’;
leftOsc.frequency.value = currentPreset.carrier;
rightOsc.frequency.value = currentPreset.carrier + currentPreset.beat;
leftOsc.connect(leftPan);
leftPan.connect(gainNode);
rightOsc.connect(rightPan);
rightPan.connect(gainNode);
gainNode.connect(audioCtx.destination);
const vol = volSlider.value / 100;
gainNode.gain.value = 0;
gainNode.gain.linearRampToValueAtTime(vol, audioCtx.currentTime + 1);
leftOsc.start();
rightOsc.start();
isPlaying = true;
updateUIState();
statusText.textContent = «Generando pulso binaural estéreo…»;
statusText.classList.add(‘text-green-500’);
}
function stopTone() {
if (gainNode) {
gainNode.gain.linearRampToValueAtTime(0, audioCtx.currentTime + 0.5);
}
setTimeout(() => {
if (leftOsc) { leftOsc.stop(); leftOsc = null; }
if (rightOsc) { rightOsc.stop(); rightOsc = null; }
isPlaying = false;
updateUIState();
statusText.textContent = «»;
statusText.classList.remove(‘text-green-500’);
}, 500);
}
function updateUIState() {
if (isPlaying) {
playBtn.classList.remove(‘bg-sky-600’, ‘hover:bg-sky-700’);
playBtn.classList.add(‘bg-red-500’, ‘hover:bg-red-600’);
playIcon.classList.remove(‘fa-play’);
playIcon.classList.add(‘fa-pause’);
playText.textContent = «DETENER»;
} else {
playBtn.classList.remove(‘bg-red-500’, ‘hover:bg-red-600’);
playBtn.classList.add(‘bg-sky-600’, ‘hover:bg-sky-700’);
playIcon.classList.remove(‘fa-pause’);
playIcon.classList.add(‘fa-play’);
playText.textContent = «INICIAR TERAPIA»;
}
}
volSlider.addEventListener(‘input’, (e) => {
const val = e.target.value;
volValue.textContent = `${val}%`;
if (gainNode && isPlaying) {
gainNode.gain.setTargetAtTime(val / 100, audioCtx.currentTime, 0.1);
}
});
playBtn.addEventListener(‘click’, togglePlay);
initUI();