RD5 GOLD WEB EDITOR
📄
📄 2-RB4-3CC.HTML
📄 222.JPG
📄 3CC-BASIC1.HTML
📄 Microsoft Paint.exe
📄 R2C-3.HTML
📄 R2C-4.HTML
📄 RB4-3C.HTML
📄 RB4-3CC.HTML
📄 RB4-RETRO.HTML
📄 RB4-RETRO.html
📄 RD5-3CC.html
📄 RL-4.html
📄 TARS.html
📄 TES10.mp3
📄 TES11.mp3
📄 TRISHA-OK.html
📄 TRISHA-WIN.HTML
📄 Tiny-demo.html
📄 Tinybj7-blindado.html
📄 Tinybj7-publica.html
📄 aplicaciones-rd5.html
📄 app1.html
📄 app2.html
📄 app3.html
📄 appb1.html
📄 appb2.html
📄 appb3.html
📄 appb4.html
📄 appb5.html
📄 appb6.html
📄 c-julio.JPG
📄 caratula.gif
📄 caratula02.gif
📄 caratula2.gif
📄 chokurei2.jpg
📄 columna-julio.html
📄 columna-stella.html
📄 columna-stellab.html
📄 demos.html
📄 df3.html
📄 dni.gif
📄 donaciones.gif
📄 ecualizador.html
📄 ed-podcast.JPG
📄 ed-radio.JPG
📄 editorv.html
📄 editorv1.html
📄 editorv2.html
📄 fondo5d.jpg
📄 fresi-clip.html
📄 gold.php
📄 gold62.php
📄 gold93.php
📄 googlefd161ffccea5f6ab.html
📄 gw.php
📄 index-anterior.html
📄 index.html
📄 index2.html
📄 logo.png
📄 logo.webp
📄 magazine.html
📄 manager3.php
📄 mic2.jpg
📄 mini1.html
📄 minib2a.html
📄 mn.php
📄 muestra.JPG
📄 p.html
📄 pm.html
📄 pm2.html
📄 pod-rd5.html
📄 podcast-stops.gif
📄 podcast2.mp3
📄 pp.html
📄 promo-tinybj7.html
📄 radio.html
📄 radio_gold.html
📄 rd5-fresia-4 canvashtml
📄 rd5-fresia-ok.html
📄 rd5-fresia.html
📄 rd5-plus-anterior.html
📄 rd5-plus.html
📄 rd5-plus2.html
📄 rd5-radioplayer.html
📄 rd5-tv.html
📄 rd5.html
📄 sst.html
📄 st.html
📄 starclip.html
📄 stella-2.JPG
📄 stella.JPG
📄 stt.html
📄 t-rd5.html.html
📄 t-rd6.html
📄 t-rd7.html
📄 t-tiny.html
📄 tes0.jpg
📄 tes1.jpg
📄 tes2.jpg
📄 tes4.jpg
📄 tes4.mp3
📄 tes5.jpg
📄 tes7.jpg
📄 tes8.jpg
📄 tienda.html
📄 tiendaaps.html
📄 tiendapps.html
📄 tiny-bj6.html
📄 tiny-bj7-full.html
📄 tiny-bj7.html
📄 tiny3-bj2.html
📄 tinybj7-blindado.html
📄 tinydemo.html
📄 titulo.jpg
📄 tnw2.html
📄 trisha-basic.html
📄 trisha-cafe.html
📄 trisha-mini.html
📄 tv-pantalla.php
📄 tv.html
📄 xdni.html
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>Trisha - Reproductor Graves y Agudos</title> <style> body { background:BLACK; color:WHITE; font-family:Arial,sans-serif; padding:10px; } h2 { margin-bottom:5px; } #currentTrack { color:red; font-size:1.1em; display:block; margin-bottom:10px; } #controls { margin:10px 0; display:flex; flex-wrap:wrap; gap:10px; align-items:center; } button { padding:5px 10px; background:RED; border:1px solid #555; color:BLACK; cursor:pointer; } button:hover { background:LIME; } input[type=file] { cursor:pointer; margin-bottom:5px; } .slider-container { display:flex; flex-direction:column; align-items:center; gap:3px; } .slider { -webkit-appearance:none; width:100px; height:10px; background:#222; cursor:pointer; } .slider::-webkit-slider-thumb { -webkit-appearance:none; width:20px; height:20px; background:lime; border-radius:50%; border:none; } #progress { width:100%; margin-top:10px; -webkit-appearance:none; background:#222; height:20px; cursor:pointer; } #progress::-webkit-slider-thumb { -webkit-appearance:none; width:15px; height:15px; background:lime; border-radius:50%; border:none; } #playlist { list-style:none; padding:5px; margin-top:15px; max-height:300px; overflow-y:auto; background:BLACK; width:100%; } #playlist li { padding:2px 5px; cursor:pointer; } #playlist li.active { color:LIME; } #time { text-align:right; font-size:14px; margin-top:5px; color:#0f0; font-family:monospace; } canvas { background:black; border:1px solid #333; width:300px; height:40px; margin-top:10px; } .visuals { display:flex; gap:10px; flex-wrap:wrap; justify-content:center; } </style> </head> <body> <h2 style="display: flex; align-items: baseline; flex-wrap: wrap;"> <span><body><font size="3">🔊🎵🎶 Trisha - Reproductor de Audio - RD5 Network</span> <span id="currentTrack" style="color: LIME; margin-left: 10px;"></span> </h2> <div id="controls"> <input type="file" id="audioFile" accept="audio/*" multiple> <button id="play">Play</button> <button id="pause">Pause</button> <button id="stop">Stop</button> <div class="slider-container"> <label>Volumen</label> <input type="range" min="0" max="1" step="0.01" value="0.5" class="slider" id="volumeSlider"> </div> <div class="slider-container"> <label>Graves (60Hz)</label> <input type="range" min="-20" max="20" value="0" class="slider" id="eq60"> </div> <div class="slider-container"> <label>Agudos (16kHz)</label> <input type="range" min="-20" max="20" value="0" class="slider" id="eq16000"> </div> </div> <div class="visuals"> <canvas id="eqCanvas"></canvas> <canvas id="oscCanvas"></canvas> <canvas id="vumCanvas"></canvas> </div> <input type="range" id="progress" value="0" max="100"> <div id="time">00:00 / 00:00</div> <ul id="playlist"></ul> <script> let audioCtx, gainNode, analyser; let eqFilters = []; let audio = new Audio(); let playlist = []; let currentIndex = 0; // Elementos const fileInput = document.getElementById('audioFile'); const playlistEl = document.getElementById('playlist'); const progressEl = document.getElementById('progress'); const volumeSlider = document.getElementById('volumeSlider'); const timeDisplay = document.getElementById('time'); const currentTrackEl = document.getElementById('currentTrack'); const eq60 = document.getElementById('eq60'); const eq16k = document.getElementById('eq16000'); // Canvas const canvasEQ = document.getElementById('eqCanvas'); const ctxEQ = canvasEQ.getContext('2d'); const canvasOsc = document.getElementById('oscCanvas'); const ctxOsc = canvasOsc.getContext('2d'); const canvasVU = document.getElementById('vumCanvas'); const ctxVU = canvasVU.getContext('2d'); // ===== LISTA ===== fileInput.addEventListener('change', e=>{ playlist = Array.from(e.target.files); currentIndex = 0; updatePlaylist(); loadTrack(currentIndex); }); function updatePlaylist(){ playlistEl.innerHTML=''; playlist.forEach((file,i)=>{ const li=document.createElement('li'); li.textContent=file.name; li.onclick=()=>{currentIndex=i; loadTrack(i); audio.play();} if(i===currentIndex) li.classList.add('active'); playlistEl.appendChild(li); }); } function loadTrack(index){ const file = playlist[index]; if(!file) return; audio.src = URL.createObjectURL(file); audio.load(); setupAudioContext(); highlightCurrent(); currentTrackEl.textContent=file.name; } // ===== AUDIO CONTEXT ===== function setupAudioContext(){ if(audioCtx) return; audioCtx = new (window.AudioContext||window.webkitAudioContext)(); analyser = audioCtx.createAnalyser(); analyser.fftSize=256; gainNode = audioCtx.createGain(); eqFilters = []; let freqs = [60,16000]; eqFilters = freqs.map(f=>{ let filter = audioCtx.createBiquadFilter(); filter.type='peaking'; filter.frequency.value = f; filter.Q.value = 1; filter.gain.value = 0; return filter; }); let src = audioCtx.createMediaElementSource(audio); src.connect(eqFilters[0]); eqFilters[0].connect(eqFilters[1]); eqFilters[1].connect(gainNode); gainNode.connect(analyser); analyser.connect(audioCtx.destination); eq60.addEventListener('input', ()=>{eqFilters[0].gain.value=parseFloat(eq60.value);}); eq16k.addEventListener('input', ()=>{eqFilters[1].gain.value=parseFloat(eq16k.value);}); drawEQ(); drawOscilloscope(); drawVUMeter(); } // ===== CONTROL TECLA ESPACIO ===== document.addEventListener('keydown', e => { if(e.code === 'Space') { e.preventDefault(); audio.paused ? audio.play() : audio.pause(); } }); // ===== CONTROLES ===== document.getElementById('play').onclick=()=>audio.play(); document.getElementById('pause').onclick=()=>audio.pause(); document.getElementById('stop').onclick=()=>{audio.pause(); audio.currentTime=0;} volumeSlider.addEventListener('input', ()=>{ if(gainNode) gainNode.gain.value=parseFloat(volumeSlider.value); }); // ===== DIBUJO EQ ===== function drawEQ(){ ctxEQ.clearRect(0,0,canvasEQ.width,canvasEQ.height); let data = new Uint8Array(analyser.frequencyBinCount); analyser.getByteFrequencyData(data); let barWidth = canvasEQ.width/data.length; for(let i=0;i<data.length;i++){ let barHeight = (data[i]/255)*canvasEQ.height; let hue = i/data.length*360; ctxEQ.fillStyle=`hsl(${hue},100%,50%)`; ctxEQ.fillRect(i*barWidth,canvasEQ.height-barHeight,barWidth,barHeight); } requestAnimationFrame(drawEQ); } // ===== OSCILOSCOPIO ===== function drawOscilloscope(){ ctxOsc.clearRect(0,0,canvasOsc.width,canvasOsc.height); let data = new Uint8Array(analyser.fftSize); analyser.getByteTimeDomainData(data); ctxOsc.beginPath(); ctxOsc.lineWidth=2; ctxOsc.strokeStyle="lime"; for(let i=0;i<data.length;i++){ let x = (i/data.length)*canvasOsc.width; let y = (data[i]/255)*canvasOsc.height; if(i===0) ctxOsc.moveTo(x,y); else ctxOsc.lineTo(x,y); } ctxOsc.stroke(); requestAnimationFrame(drawOscilloscope); } // ===== VUMETRO ===== function drawVUMeter(){ ctxVU.clearRect(0,0,canvasVU.width,canvasVU.height); let data = new Uint8Array(analyser.frequencyBinCount); analyser.getByteFrequencyData(data); let avg = data.reduce((a,b)=>a+b,0)/data.length; let width = (avg/255)*canvasVU.width; ctxVU.fillStyle="rgba(80,80,80,0.3)"; ctxVU.fillRect(0,canvasVU.height/3,canvasVU.width,canvasVU.height/3); ctxVU.fillStyle="orange"; ctxVU.fillRect(0,canvasVU.height/3,width,canvasVU.height/3); requestAnimationFrame(drawVUMeter); } // ===== PROGRESO ===== audio.addEventListener('timeupdate', ()=>{ if(audio.duration){ progressEl.value = (audio.currentTime/audio.duration)*100; timeDisplay.textContent = formatTime(audio.currentTime)+' / '+formatTime(audio.duration); } }); progressEl.addEventListener('input', ()=>{ if(audio.duration) audio.currentTime=(progressEl.value/100)*audio.duration; }); function formatTime(sec){ const m=Math.floor(sec/60), s=Math.floor(sec%60); return `${m.toString().padStart(2,'0')}:${s.toString().padStart(2,'0')}`; } function highlightCurrent(){ Array.from(playlistEl.children).forEach((li,i)=>li.classList.toggle('active',i===currentIndex)); } audio.addEventListener('ended', ()=>{ if(currentIndex<playlist.length-1) currentIndex++; else currentIndex=0; loadTrack(currentIndex); audio.play(); }); </script> </body> </html>