RD5 GOLD WEB EDITOR
📄 SAS.JPG
📄 SAS.html
📄 SAS.jpg
📄 SAS2.gif
📄 SAS2.jpg
📄 SAS3.gif
📄 SAS3.jpg
📄 SAS33.JPG
📄 SAS34.JPG
📄 audios.html
📄 audios2.html
📄 audios3.html
📄 audios4.html
📄 audios5.html
📄 audios6.html
📄 audios7.html
📄 audios8.html
📄 audios9.html
📄 carlos.html
📄 gold10-2.php
📄 gold10.php
📄 gold62.php
📄 gold93.php
📄 gp2.php
📄 gw.php
📄 index.html
📄 oxoradio-play1.gif
📄 oxoradio-stop.gif
📄 oyente2.html
📄 podcast-play.gif
📄 podcast-stops.gif
📄 podcast.JPG
📄 pruebo.html
📄 radio-sas.html
📄 radio.html
📄 radio.jpg
📄 rep-play1.gif
📄 rep-stop.GIF
📄 sas-repro.html
📄 sas2.html
📄 sya.jpg
📄 t-sas.html
📄 volumen-mas.jpg
📄 volumen-menos.jpg
CÓDIGO (OSCURO GOLD)
VISTA PREVIA
💾 GUARDAR
Tema: Monokai
Tema: Dracula
Tema: Material
Tema: Blackboard
Tema: Abyss
Monospace
Courier
12px
14px
16px
18px
20px
22px
24px
26px
28px
30px
32px
↷ Rehacer
↶ Deshacer
🔍 BUSCAR
+ REPRO RADIO
SIG.
X
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>Radio Zenolive - Vumetro Horizontal</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> body { background: #000; color: #fff; font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; } .player-wrap { display: flex; flex-direction: column; align-items: center; gap: 16px; background: #111; padding: 20px 24px; border-radius: 16px; width: 90%; max-width: 400px; } .controls { display: flex; gap: 12px; align-items: center; width: 100%; } button { background: blue; color: #fff; border: none; padding: 12px 16px; border-radius: 8px; font-size: 1.2em; cursor: pointer; flex-shrink: 0; } #volume { flex-grow: 1; } #vumetro { width: 100%; height: 25px; background: #000; border-radius: 8px; } </style> </head> <body> <div class="player-wrap"> <div class="controls"> <button id="playBtn">▶️</button> <input id="volume" type="range" min="0" max="1" step="0.01" value="0.5"> </div> <canvas id="vumetro" width="400" height="25"></canvas> </div> <script> const audio = new Audio("https://stream.zeno.fm/3y1dazf3znhvv"); audio.crossOrigin = "anonymous"; audio.volume = 0.5; const playBtn = document.getElementById("playBtn"); const volume = document.getElementById("volume"); const canvas = document.getElementById("vumetro"); const ctx = canvas.getContext("2d"); let audioCtx, analyser, dataArray, bufferLength; let modoSimulado = false; // Play/pause playBtn.addEventListener("click", () => { if (audio.paused) audio.play(); else audio.pause(); playBtn.textContent = audio.paused ? "▶️" : "⏸️"; }); // Volume volume.addEventListener("input", ()=>{ audio.volume = volume.value; }); function initAudioContext() { try { audioCtx = new (window.AudioContext || window.webkitAudioContext)(); const source = audioCtx.createMediaElementSource(audio); analyser = audioCtx.createAnalyser(); analyser.fftSize = 64; bufferLength = analyser.frequencyBinCount; dataArray = new Uint8Array(bufferLength); source.connect(analyser); source.connect(audioCtx.destination); } catch (e) { console.warn("No se pudo iniciar AudioContext:", e); modoSimulado = true; } } function drawReal() { requestAnimationFrame(drawReal); if (!analyser) return; analyser.getByteFrequencyData(dataArray); const avg = dataArray.reduce((a,b)=>a+b,0)/dataArray.length; const w = canvas.width; ctx.fillStyle = "#000"; ctx.fillRect(0,0,canvas.width,canvas.height); const grad = ctx.createLinearGradient(0,0,w,0); grad.addColorStop(0,"#0f0"); grad.addColorStop(1,"#f00"); const barWidth = (avg/255)*w; ctx.fillStyle = grad; ctx.fillRect(0,0,barWidth,canvas.height); } // Vumetro simulado let level = 0; function fakeDraw() { if (!modoSimulado) return; requestAnimationFrame(fakeDraw); level = 0.8*level + 0.2*Math.random()*255; const w = canvas.width; ctx.fillStyle = "#000"; ctx.fillRect(0,0,canvas.width,canvas.height); const grad = ctx.createLinearGradient(0,0,w,0); grad.addColorStop(0,"#0f0"); grad.addColorStop(1,"#f00"); ctx.fillStyle = grad; ctx.fillRect(0,0,(level/255)*w,canvas.height); } audio.addEventListener("play", ()=>{ if(!audioCtx) initAudioContext(); if(audioCtx && audioCtx.state==="suspended") audioCtx.resume(); if(!modoSimulado) drawReal(); else fakeDraw(); }); </script> </body> </html>