Created
April 13, 2026 02:05
-
-
Save iggyughgi-glitch/ff39b31315580ccba4b54499e9f722b0 to your computer and use it in GitHub Desktop.
Sss
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> | |
| <title>S.I.G.I.N.T. Multi-Scanner</title> | |
| <style> | |
| :root { --glow: #00ff41; --dim: #003b00; --alert: #ff3300; --anomaly: #00ccff; } | |
| body { margin: 0; background: #000; color: var(--glow); font-family: 'Courier New', monospace; overflow: hidden; } | |
| #display-container { position: relative; height: 65vh; width: 100vw; background: #050505; } | |
| canvas { display: block; width: 100%; height: 100%; image-rendering: pixelated; } | |
| #interface { height: 35vh; display: grid; grid-template-columns: 1fr 1fr; gap: 5px; padding: 5px; background: #000; border-top: 1px solid var(--glow); } | |
| .module { border: 1px solid var(--dim); padding: 8px; display: flex; flex-direction: column; justify-content: space-between; position: relative; } | |
| .label { font-size: 10px; text-transform: uppercase; letter-spacing: 1px; color: var(--glow); opacity: 0.7; } | |
| .data-val { font-size: 1.1rem; color: #fff; text-shadow: 0 0 5px var(--glow); } | |
| button { background: var(--dim); color: var(--glow); border: 1px solid var(--glow); padding: 10px; cursor: pointer; font-family: inherit; font-weight: bold; width: 100%; margin-top: 5px; } | |
| button:active { background: var(--glow); color: #000; } | |
| .alert-active { color: var(--alert) !important; animation: blink 0.5s infinite; } | |
| @keyframes blink { 0% { opacity: 1; } 50% { opacity: 0.3; } 100% { opacity: 1; } } | |
| #waterfall-overlay { position: absolute; top: 10px; right: 10px; font-size: 9px; text-align: right; pointer-events: none; } | |
| </style> | |
| </head> | |
| <body> | |
| <div id="display-container"> | |
| <canvas id="waterfall"></canvas> | |
| <div id="waterfall-overlay"> | |
| FREQ SPECTRUM: 20Hz - 22kHz<br> | |
| MODE: DIRECT CONTACT / AMBIENT | |
| </div> | |
| </div> | |
| <div id="interface"> | |
| <div class="module"> | |
| <div> | |
| <div class="label">Acoustic Peak / λ</div> | |
| <div id="freqData" class="data-val">--- Hz</div> | |
| <div id="waveData" class="data-val" style="font-size: 0.8rem;">--- m</div> | |
| </div> | |
| <button id="startBtn">START SENSORS</button> | |
| </div> | |
| <div class="module"> | |
| <div class="label">EMF Flux Density</div> | |
| <div id="magVal" class="data-val">0.00 μT</div> | |
| <div id="magStatus" class="label">Shielding Nominal</div> | |
| </div> | |
| <div class="module"> | |
| <div class="label">Anomaly Logic</div> | |
| <div id="anomalyStatus" class="data-val" style="font-size: 0.9rem;">Ready</div> | |
| <button id="calibrateBtn">CALIBRATE</button> | |
| </div> | |
| <div class="module"> | |
| <div class="label">Signal Integrity</div> | |
| <div id="vibeStatus" class="data-val" style="font-size: 0.9rem;">IDLE</div> | |
| <div id="pulseInd" style="width:10px; height:10px; background:var(--dim); border-radius:50%;"></div> | |
| </div> | |
| </div> | |
| <script> | |
| const canvas = document.getElementById('waterfall'); | |
| const ctx = canvas.getContext('2d'); | |
| const startBtn = document.getElementById('startBtn'); | |
| const calibrateBtn = document.getElementById('calibrateBtn'); | |
| let audioCtx, analyser, dataArray, magSensor; | |
| let noiseFloor = null; | |
| let isCalibrating = false; | |
| const scrollSpeed = 2; | |
| async function initSystem() { | |
| try { | |
| audioCtx = new (window.AudioContext || window.webkitAudioContext)(); | |
| const stream = await navigator.mediaDevices.getUserMedia({ | |
| audio: { echoCancellation: false, noiseSuppression: false, autoGainControl: false } | |
| }); | |
| const source = audioCtx.createMediaStreamSource(stream); | |
| analyser = audioCtx.createAnalyser(); | |
| analyser.fftSize = 1024; | |
| dataArray = new Uint8Array(analyser.frequencyBinCount); | |
| source.connect(analyser); | |
| canvas.width = analyser.frequencyBinCount; | |
| canvas.height = canvas.offsetHeight; | |
| startBtn.style.display = 'none'; | |
| document.getElementById('freqData').innerText = "CALIBRATING..."; | |
| setupMagnetometer(); | |
| render(); | |
| } catch (e) { | |
| alert("System Error: Check Mic Permissions"); | |
| } | |
| } | |
| function setupMagnetometer() { | |
| if ('Magnetometer' in window) { | |
| magSensor = new Magnetometer({frequency: 50}); | |
| magSensor.addEventListener('reading', () => { | |
| const b = Math.sqrt(magSensor.x**2 + magSensor.y**2 + magSensor.z**2).toFixed(2); | |
| const el = document.getElementById('magVal'); | |
| el.innerText = `${b} μT`; | |
| if (b > 100) { | |
| el.classList.add('alert-active'); | |
| document.getElementById('magStatus').innerText = "HIGH EMF DETECTED"; | |
| } else { | |
| el.classList.remove('alert-active'); | |
| document.getElementById('magStatus').innerText = "Shielding Nominal"; | |
| } | |
| }); | |
| magSensor.start(); | |
| } else { | |
| document.getElementById('magVal').innerText = "UNSUPPORTED"; | |
| } | |
| } | |
| calibrateBtn.addEventListener('click', () => { | |
| isCalibrating = true; | |
| document.getElementById('anomalyStatus').innerText = "LISTENING..."; | |
| setTimeout(() => { | |
| noiseFloor = new Uint8Array(dataArray); | |
| isCalibrating = false; | |
| document.getElementById('anomalyStatus').innerText = "LOCK ACQUIRED"; | |
| }, 3000); | |
| }); | |
| function render() { | |
| requestAnimationFrame(render); | |
| analyser.getByteFrequencyData(dataArray); | |
| // 1. Waterfall Shift | |
| const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height - scrollSpeed); | |
| ctx.putImageData(imgData, 0, scrollSpeed); | |
| // 2. Peak & Wavelength Logic | |
| let maxVal = 0; let peakBin = 0; | |
| for (let i = 2; i < dataArray.length; i++) { | |
| if (dataArray[i] > maxVal) { maxVal = dataArray[i]; peakBin = i; } | |
| // Waterfall Draw | |
| const val = dataArray[i]; | |
| ctx.fillStyle = `rgb(0, ${val}, ${val > 150 ? 100 : 0})`; | |
| ctx.fillRect(i, 0, 1, scrollSpeed); | |
| // Anomaly Comparison | |
| if (noiseFloor && !isCalibrating && val > noiseFloor[i] + 60) { | |
| document.getElementById('anomalyStatus').innerText = "PATTERN ALERT"; | |
| document.getElementById('anomalyStatus').style.color = "var(--anomaly)"; | |
| } | |
| } | |
| const freq = peakBin * (audioCtx.sampleRate / analyser.fftSize); | |
| document.getElementById('freqData').innerText = `${Math.round(freq)} Hz`; | |
| document.getElementById('waveData').innerText = `λ: ${(343/freq).toFixed(3)} m`; | |
| // Pulse Indicator (Visual Heartbeat) | |
| const pulse = document.getElementById('pulseInd'); | |
| pulse.style.opacity = maxVal / 255; | |
| pulse.style.background = maxVal > 200 ? 'var(--alert)' : 'var(--glow)'; | |
| } | |
| startBtn.addEventListener('click', initSystem); | |
| </script> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment