1354 lines
67 KiB
HTML
1354 lines
67 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>Audio Analyzer – RTW Look (dBFS)</title>
|
||
<link rel="stylesheet" href="./styles.css">
|
||
</head>
|
||
<body>
|
||
<canvas id="spectroCanvas" class="spectrogram-layer"></canvas>
|
||
<canvas id="waveformCanvas" class="waveform-layer"></canvas>
|
||
<canvas id="cv"></canvas>
|
||
|
||
<div class="hud">
|
||
<label for="styleSel">Sicht</label>
|
||
<select id="styleSel" style="width:220px">
|
||
<option value="realtime">Real Time Analyzer</option>
|
||
<option value="peak-history">Peak History</option>
|
||
<option value="spectrogram">Spectrogram</option>
|
||
<option value="waveform">Waveform</option>
|
||
<option value="goniometer-rtw">XY-Display</option>
|
||
<option value="phase-wheel">Phase Wheel</option>
|
||
<option value="classic-needles">Classic Needles</option>
|
||
<option value="panel">Meters</option>
|
||
<option value="_divider1" disabled>------------------</option>
|
||
<option value="recorder">Recorder</option>
|
||
<option value="clock">Studio Clock</option>
|
||
<option value="split-view">Split-View</option>
|
||
<option value="quad-view">Quad-View</option>
|
||
<option value="_divider2" disabled>------------------</option>
|
||
<option value="options-panel">Optionen</option>
|
||
</select>
|
||
|
||
<!-- Slot-Dropdowns – Real Time:1, Goniometer:3, Panel:5 -->
|
||
<div id="slotWrap" style="display:flex;gap:8px;align-items:center;flex-wrap:wrap">
|
||
<label id="slotLabel" style="margin-left:16px">Slots</label>
|
||
<select class="opt-w-120" id="slotSel1"></select>
|
||
<select class="opt-w-120" id="slotSel2" style="display:none"></select>
|
||
<select class="opt-w-120" id="slotSel3" style="display:none"></select>
|
||
<select class="opt-w-120" id="slotSel4" style="display:none"></select>
|
||
<select class="opt-w-120" id="slotSel5" style="display:none"></select>
|
||
<div id="peakHistScrollWrap" style="display:none;align-items:center;gap:6px;margin-left:10px">
|
||
<label for="peakHistScrollSel">Geschwindigkeit</label>
|
||
<select class="opt-w-140" id="peakHistScrollSel">
|
||
<option value="0.5">Langsam (½x)</option>
|
||
<option value="1" selected>Normal (1x)</option>
|
||
<option value="2">Schnell (2x)</option>
|
||
<option value="4">Turbo (4x)</option>
|
||
<option value="6">Max (6x)</option>
|
||
</select>
|
||
</div>
|
||
<label id="goniAgcToggle" class="row" style="display:none;align-items:center;gap:6px;margin-left:12px">
|
||
<input type="checkbox" id="goniAgcChk">
|
||
AGC
|
||
</label>
|
||
<label id="phaseTrailToggle" class="row" style="display:none;align-items:center;gap:6px;margin-left:12px">
|
||
<input type="checkbox" id="phaseTrailChk">
|
||
Trail
|
||
</label>
|
||
<div id="spectroLegendWrap" style="display:none;align-items:center;gap:6px;padding-left:8px">
|
||
<label>Skala</label>
|
||
<canvas id="spectroLegend" width="300" height="34" style="width:300px;height:34px;background:transparent"></canvas>
|
||
</div>
|
||
<div id="waveWindowWrap" style="display:none;align-items:center;gap:6px">
|
||
<label for="waveWindowSel">Fenster</label>
|
||
<select class="opt-w-120" id="waveWindowSel"></select>
|
||
</div>
|
||
<div id="waveModeWrap" style="display:none;align-items:center;gap:6px">
|
||
<label for="waveModeSel">Ansicht</label>
|
||
<select class="opt-w-140" id="waveModeSel"></select>
|
||
</div>
|
||
<div id="rtaBpoWrap" style="display:none;align-items:center;gap:6px">
|
||
<label for="rtaBpoSel">Oktaven</label>
|
||
<select class="opt-w-140" id="rtaBpoSel"></select>
|
||
</div>
|
||
<div id="gainWrap" style="display:none;align-items:center;gap:6px">
|
||
<label for="gainSel">Gain</label>
|
||
<select class="opt-w-110" id="gainSel"></select>
|
||
<button id="resetPeakBtn" class="btn" style="display:none;padding:6px 10px;">Reset Peak</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="splitViewWrap" style="display:none;gap:8px;align-items:center;flex-wrap:wrap">
|
||
<label style="margin-left:16px">Split:</label>
|
||
<select class="opt-w-150" id="splitLeftSel"></select>
|
||
<span style="opacity:0.75">|</span>
|
||
<select class="opt-w-150" id="splitRightSel"></select>
|
||
<span id="splitMeterBtnWrap" style="display:none;align-items:center;gap:6px">
|
||
<label for="splitMeterBtn">Slot:</label>
|
||
<button id="splitMeterBtn" class="btn" type="button" style="padding:6px 10px;min-width:110px;white-space:nowrap;text-align:center">Zuordnen</button>
|
||
</span>
|
||
</div>
|
||
|
||
<div id="quadViewWrap" style="display:none;gap:8px;align-items:center;flex-wrap:wrap">
|
||
<label style="margin-left:16px">Quad:</label>
|
||
<button id="quadPlotBtn" class="btn" type="button" style="padding:6px 10px;min-width:100px;white-space:nowrap;text-align:center">Plots…</button>
|
||
<span id="quadMeterBtnWrap" style="display:none;align-items:center;gap:6px">
|
||
<label for="quadMeterBtn">Slot:</label>
|
||
<button id="quadMeterBtn" class="btn" type="button" style="padding:6px 10px;min-width:110px;white-space:nowrap;text-align:center">Zuordnen</button>
|
||
</span>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div id="splitMeterPopup" class="split-popup" style="display:none">
|
||
<div class="split-popup__box">
|
||
<div class="split-popup__head">
|
||
<strong id="splitMeterPopupTitle">Slots</strong>
|
||
<button id="splitMeterPopupClose" class="btn" type="button" style="padding:6px 10px">Schließen</button>
|
||
</div>
|
||
<div id="splitMeterRow1" class="split-popup__row">
|
||
<label for="splitMeterSel1" style="min-width:70px">Slot 1</label>
|
||
<select class="opt-w-220" id="splitMeterSel1"></select>
|
||
</div>
|
||
<div id="splitMeterRow2" class="split-popup__row">
|
||
<label for="splitMeterSel2" style="min-width:70px">Slot 2</label>
|
||
<select class="opt-w-220" id="splitMeterSel2"></select>
|
||
</div>
|
||
<div id="splitMeterRow3" class="split-popup__row">
|
||
<label for="splitMeterSel3" style="min-width:70px">Slot 3</label>
|
||
<select class="opt-w-220" id="splitMeterSel3"></select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="quadPlotPopup" class="split-popup" style="display:none">
|
||
<div class="split-popup__box">
|
||
<div class="split-popup__head">
|
||
<strong>Quad-View Plots</strong>
|
||
<button id="quadPlotPopupClose" class="btn" type="button" style="padding:6px 10px">Schließen</button>
|
||
</div>
|
||
<div class="split-popup__row">
|
||
<label for="quadPlotSelTL" style="min-width:70px">Oben Links</label>
|
||
<select class="opt-w-220" id="quadPlotSelTL"></select>
|
||
</div>
|
||
<div class="split-popup__row">
|
||
<label for="quadPlotSelTR" style="min-width:70px">Oben Rechts</label>
|
||
<select class="opt-w-220" id="quadPlotSelTR"></select>
|
||
</div>
|
||
<div class="split-popup__row">
|
||
<label for="quadPlotSelBL" style="min-width:70px">Unten Links</label>
|
||
<select class="opt-w-220" id="quadPlotSelBL"></select>
|
||
</div>
|
||
<div class="split-popup__row">
|
||
<label for="quadPlotSelBR" style="min-width:70px">Unten Rechts</label>
|
||
<select class="opt-w-220" id="quadPlotSelBR"></select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="optionsPanelNew" class="options" style="display:none">
|
||
<h2 style="text-decoration:underline;">Optionen</h2>
|
||
<details open>
|
||
<summary>Global</summary>
|
||
<div class="opt-group">
|
||
<div class="opt"><label>Input Offset (dB)</label>
|
||
<div class="offset-block">
|
||
<div class="offset-row">
|
||
<span class="ch">L</span>
|
||
<input id="opt_inputOffsetDbL" type="range" min="-10" max="10" step="0.1">
|
||
<span class="offset-val" id="val_inputOffsetDbL"></span>
|
||
</div>
|
||
<div class="offset-row">
|
||
<span class="ch">R</span>
|
||
<input id="opt_inputOffsetDbR" type="range" min="-10" max="10" step="0.1">
|
||
<span class="offset-val" id="val_inputOffsetDbR"></span>
|
||
</div>
|
||
</div>
|
||
<div class="offset-notes">
|
||
<small>Hardware-Korrektur pro Kanal (Stereo)</small>
|
||
<small>Hinweis: Beim Behringer UCA202 entspricht ein Input von −1 dB dem Referenzpegel 0 dB.</small>
|
||
</div>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slots</label>
|
||
<button id="opt_resetSlots" class="btn" type="button">Alle Slots auf Standard</button>
|
||
<small>Setzt alle Slot-Belegungen (alle Views) auf die Default-Werte zurück.</small>
|
||
</div>
|
||
<div class="opt"><label>FFT Size</label>
|
||
<select class="opt-w-140" id="opt_fft">
|
||
<option>2048</option><option>4096</option><option>8192</option><option>16384</option>
|
||
</select>
|
||
<small>Basis-FFT für alle Analyser</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>
|
||
<input id="opt_alMarkers" type="checkbox" checked>
|
||
Alignment-Marker anzeigen
|
||
</label>
|
||
<small>Globale 0-dB Linien</small>
|
||
</div>
|
||
<div class="opt"><label>Meter Bar Breite (Faktor)</label>
|
||
<input id="opt_barThin" type="range" min="0.35" max="0.9" step="0.01"><span id="val_barThin"></span>
|
||
<small>Balkenbreite für Meter</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label for="opt_headerTextColor">Header Textfarbe</label>
|
||
<input class="opt-w-120" id="opt_headerTextColor" type="color">
|
||
<small>Globale Farbe für Header-Text und Header-Zahlen der Meter.</small>
|
||
</div>
|
||
<div class="opt"><label>Felder-Trennlinien anzeigen</label>
|
||
<label class="row"><input id="opt_panelDividers" type="checkbox"></label>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_monoInput" type="checkbox">
|
||
Mono-Eingang
|
||
</label>
|
||
<small>Mischt L+R direkt am Audioeingang zu einem Monosignal</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_lrFracDelayEnabled" type="checkbox">
|
||
Fraktionale L/R-Laufzeitkorrektur (Allpass)
|
||
</label>
|
||
<small>Verzögert den linken Kanal per Allpass um den gewählten Bruchteil eines Samples</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label for="opt_lrFracDelaySamples">Fraktionaler Delay (Samples)</label>
|
||
<input class="opt-w-120" id="opt_lrFracDelaySamples" type="text" inputmode="decimal" spellcheck="false">
|
||
<span id="val_lrFracDelaySamples"></span>
|
||
<small>Gemessene Korrektur in Samples; negative Werte verzögern den rechten, positive den linken Kanal.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label for="opt_phoenixBaseUrl">Phoenix URL</label>
|
||
<input class="opt-w-220" id="opt_phoenixBaseUrl" type="text" spellcheck="false" placeholder="http://127.0.0.1:8789">
|
||
<small>Basis-URL des Phoenix-Dienstes. Nach Änderung wird Audio neu verbunden.</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Bildschirmschoner</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_screensaverEnabled" type="checkbox">
|
||
Bildschirmschoner aktiv
|
||
</label>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Screensaver Stil</label>
|
||
<select id="opt_screensaverMode" style="width:160px">
|
||
<option value="dvd">DVD Logo</option>
|
||
<option value="starfield">Sternenfeld</option>
|
||
<option value="clock">Clock</option>
|
||
<option value="black">Schwarz</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="gap:8px;align-items:center">
|
||
<input id="opt_screensaverGlow" type="checkbox" checked>
|
||
LED-Glow
|
||
</label>
|
||
<small>Gilt fuer Clock- und DVD-Screensaver.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label for="opt_screensaverColor">LED Farbe</label>
|
||
<input class="opt-w-120" id="opt_screensaverColor" type="color">
|
||
<small>Farbe fuer Clock- und DVD-Screensaver.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label for="opt_screensaverIdleMin">Wartezeit (min)</label>
|
||
<input class="opt-w-120" id="opt_screensaverIdleMin" type="number" min="0" max="120" step="0.5">
|
||
<span id="val_screensaverIdleMin"></span>
|
||
<small>Legt fest, wie lange der Pegel unter der Schwelle sein muss (0 = sofort bei Schalter-Aus)</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label for="opt_screensaverActivityDb">Aktivitätsschwelle (dBFS)</label>
|
||
<input class="opt-w-120" id="opt_screensaverActivityDb" type="number" min="-120" max="0" step="1">
|
||
<span id="val_screensaverActivityDb"></span>
|
||
<small>Pegel über dieser Schwelle halten den Schoner wach</small>
|
||
</div>
|
||
<div class="opt">
|
||
<button id="opt_screensaverTest" class="btn btn-compact" type="button">Vorschau</button>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Real Time Analyzer</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label>Darstellung</label>
|
||
<select class="opt-w-150" id="opt_rtRenderMode">
|
||
<option value="bars" selected>Balken</option>
|
||
<option value="line">Linie</option>
|
||
</select>
|
||
<small>Anzeigeform (Balken vs. Linie)</small>
|
||
</div>
|
||
<div class="opt"><label>Real Time Hold (ms)</label>
|
||
<input class="opt-w-110" id="opt_rtHold" type="number" min="100" max="5000" step="50">
|
||
<small>Peak hold Zeit</small>
|
||
</div>
|
||
<div class="opt"><label>Real Time Decay (dB/s)</label>
|
||
<input class="opt-w-110" id="opt_rtDecay" type="number" min="1" max="60" step="1">
|
||
<small>Decay pro Sekunde</small>
|
||
</div>
|
||
|
||
<div class="opt">
|
||
<label>Engine</label>
|
||
<select class="opt-w-150" id="opt_rtaEngine">
|
||
<option value="fft">FFT</option>
|
||
<option value="iir" selected>IIR (Filterbank)</option>
|
||
</select>
|
||
<small>FFT (fix) oder IIR-Filterbank</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>IIR-Filtercharakteristik</label>
|
||
<select id="opt_rtaFilterbank" style="width:230px">
|
||
<option value="legacy" selected>Legacy (Phoenix/RTW-Vergleich)</option>
|
||
<option value="butterworth">Butterworth 6. Ordnung</option>
|
||
</select>
|
||
<small>Beide Varianten sind IIR. Legacy bildet die bisherige Anzeige nach; Butterworth ist die neue mathematische Konstruktion.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Bänder pro Oktave</label>
|
||
<select class="opt-w-150" id="opt_rtaBpo">
|
||
<option value="1_3">1/3 Oktave</option>
|
||
<option value="1_6">1/6 Oktave</option>
|
||
<option value="1_12">1/12 Oktave</option>
|
||
</select>
|
||
<small>Im RTW-Profil stehen 1/3, 1/6 und 1/12 Oktave mit der IIR-Filterbank zur Verfügung.</small>
|
||
</div>
|
||
<div class="opt"><label>IIR Ordnung</label>
|
||
<input class="opt-w-110" id="opt_rtaOrder" type="number" min="2" max="8" step="2">
|
||
<small>Filtergüte – Ordnung des IIR-Filters</small>
|
||
</div>
|
||
<div class="opt"><label>IIR Fast τ (s)</label>
|
||
<input class="opt-w-110" id="opt_rtaTauFast" type="number" value="0.125" disabled>
|
||
<small>Feste Standardreaktion: 125 ms</small>
|
||
</div>
|
||
<div class="opt"><label>IIR Slow τ (s)</label>
|
||
<input class="opt-w-110" id="opt_rtaTauSlow" type="number" value="1.0" disabled>
|
||
<small>Feste Standardreaktion: 1 Sekunde</small>
|
||
</div>
|
||
<div class="opt"><label>Frequenzbereich</label>
|
||
<select class="opt-w-150" id="opt_rtaFreq">
|
||
<option value="norm" selected>20 Hz – 20 kHz</option>
|
||
<option value="lf">5 Hz – 5 kHz</option>
|
||
</select>
|
||
<small>Messband</small>
|
||
</div>
|
||
<div class="opt"><label>Layout</label>
|
||
<select class="opt-w-150" id="opt_rtaLayout">
|
||
<option value="iec" selected>IEC (Bandbreite)</option>
|
||
<option value="rtw">RTW-Style (fix)</option>
|
||
</select>
|
||
<small>Balkenanordnung</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label for="opt_rtaBarBaseColor">Balken Grundfarbe</label>
|
||
<input class="opt-w-120" id="opt_rtaBarBaseColor" type="color">
|
||
<small>Grundfarbe der Balken; Peak-Bereiche bleiben rot</small>
|
||
</div>
|
||
<div class="opt"><label>Bewertung</label>
|
||
<select class="opt-w-150" id="opt_rtaWeighting">
|
||
<option value="z" selected>Linear (Z)</option>
|
||
<option value="a">A-bewertet</option>
|
||
<option value="c">C-bewertet</option>
|
||
</select>
|
||
<small>Pegelgewichtung</small>
|
||
</div>
|
||
<div class="opt"><label>RTA-Detektor</label>
|
||
<select class="opt-w-180" id="opt_rtaDetector">
|
||
<option value="average" selected>Average (RMS)</option>
|
||
<option value="peak">Peak (10 ms)</option>
|
||
</select>
|
||
<small>RTW-Detektortyp: RMS mit gewählter Response oder feste 10-ms-Peakintegration</small>
|
||
</div>
|
||
<div class="opt"><label>Response</label>
|
||
<select class="opt-w-150" id="opt_rtaIntegration">
|
||
<option value="impulse">Impulse</option>
|
||
<option value="fast" selected>Fast</option>
|
||
<option value="medium">Medium</option>
|
||
<option value="slow">Slow</option>
|
||
</select>
|
||
<small>Average-Ballistik: Impulse 35 ms/1,5 s, Fast 125 ms, Medium 500 ms oder Slow 1 s</small>
|
||
</div>
|
||
<div class="opt"><label>RTA-Anzeige</label>
|
||
<select id="opt_rtaBallistics" style="width:200px">
|
||
<option value="average" selected>Detektorwert</option>
|
||
<option value="peak">Peak Hold</option>
|
||
<option value="both">Detektorwert + Peak Hold</option>
|
||
</select>
|
||
<small>Auswahl der angezeigten Mess- und Hold-Kurven</small>
|
||
</div>
|
||
<div class="opt"><label>Hold Mode</label>
|
||
<select class="opt-w-150" id="opt_rtaHoldMode">
|
||
<option value="off">Aus</option>
|
||
<option value="auto">Hold</option>
|
||
<option value="fall" selected>Hold + Fall</option>
|
||
<option value="manual">Manuell</option>
|
||
</select>
|
||
<small>Hold gibt nach Ablauf direkt frei; Hold + Fall läuft danach weich zurück; Manuell hält bis zum Reset.</small>
|
||
</div>
|
||
<div class="opt"><label>Hold Time (s)</label>
|
||
<input class="opt-w-110" id="opt_rtaHoldTime" type="number" min="0" max="30" step="0.5">
|
||
<small>Dauer der Hold-Anzeige</small>
|
||
</div>
|
||
<div class="opt"><label>Hold Fall (dB/s)</label>
|
||
<input class="opt-w-110" id="opt_rtaDecay" type="number" min="1" max="60" step="1">
|
||
<small>Rücklaufgeschwindigkeit im Modus Hold + Fall</small>
|
||
</div>
|
||
<div class="opt"><label>Display Hold (s)</label>
|
||
<input class="opt-w-110" id="opt_rtaDisplayHold" type="number" min="0" max="5" step="0.1">
|
||
<small>Zusatzhalt für Anzeige</small>
|
||
</div>
|
||
<div class="opt"><label>Display Gain FFT (dB) – -25…+25</label>
|
||
<input id="opt_rtaDisplayGainFft" type="range" min="-25" max="25" step="1"><span id="val_rtaDisplayGainFft"></span>
|
||
<small>0 dB entspricht +12 dB Offset</small>
|
||
</div>
|
||
<div class="opt"><label>Display Gain IIR (dB) – -25…+25</label>
|
||
<input id="opt_rtaDisplayGainIir" type="range" min="-25" max="25" step="1"><span id="val_rtaDisplayGainIir"></span>
|
||
<small>0 dB entspricht −6 dB Offset</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Spectrogram</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label>Spectrogram Gamma</label>
|
||
<input id="opt_spectroGamma" type="range" min="0.3" max="1.2" step="0.05">
|
||
<span id="val_spectroGamma"></span>
|
||
<small>Kontrast/Farbspreizung (höher = mehr Fokus auf hohe Pegel)</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Scroll-Geschwindigkeit</label>
|
||
<select class="opt-w-180" id="opt_spectroScroll">
|
||
<option value="0.5">Langsam (½x)</option>
|
||
<option value="1" selected>Normal (1x)</option>
|
||
<option value="2">Schnell (2x)</option>
|
||
<option value="4">Turbo (4x)</option>
|
||
<option value="6">Max (6x)</option>
|
||
</select>
|
||
<small>Bestimmt, wie schnell die Zeitachse nach links scrollt</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Peak History</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label>Scroll-Geschwindigkeit</label>
|
||
<select class="opt-w-180" id="opt_peakHistScroll">
|
||
<option value="0.5">Langsam (½x)</option>
|
||
<option value="1" selected>Normal (1x)</option>
|
||
<option value="2">Schnell (2x)</option>
|
||
<option value="4">Turbo (4x)</option>
|
||
<option value="6">Max (6x)</option>
|
||
</select>
|
||
<small>Bestimmt, wie schnell die Verlaufslinie nach links läuft</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_peakHistFill" type="checkbox">
|
||
Fläche unter Verlauf einfärben
|
||
</label>
|
||
<small>Füllt den Bereich unter der Verlaufslinie in deren Farbe</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_peakHistFillInvert" type="checkbox">
|
||
Fläche über der Linie füllen (invertieren)
|
||
</label>
|
||
<small>Tauscht die Füllrichtung: füllt oberhalb der Linie statt darunter</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Waveform</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label>Ansicht</label>
|
||
<select class="opt-w-150" id="opt_waveMode">
|
||
<option value="stacked" selected>Gestapelt</option>
|
||
<option value="overlay">Überlagert</option>
|
||
<option value="diff">Differenz (L−R)</option>
|
||
</select>
|
||
<small>Darstellung der Kanäle: getrennt, überlagert oder Differenz</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Fenster (s)</label>
|
||
<select class="opt-w-150" id="opt_waveWindow">
|
||
<option value="0.05">0.05</option>
|
||
<option value="0.1">0.1</option>
|
||
<option value="0.5">0.5</option>
|
||
<option value="1" selected>1.0</option>
|
||
<option value="2">2.0</option>
|
||
<option value="5">5.0</option>
|
||
<option value="10">10.0</option>
|
||
<option value="15">15.0</option>
|
||
</select>
|
||
<small>Längeres Fenster zeigt mehr Verlauf, kostet aber mehr CPU</small>
|
||
</div>
|
||
<div class="opt"><label>Farben</label>
|
||
<span>L</span><input id="opt_waveColorL" type="color">
|
||
<span>R</span><input id="opt_waveColorR" type="color">
|
||
<span>Δ</span><input id="opt_waveColorDiff" type="color">
|
||
<small>Farben für Links, Rechts und Differenz</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>XY-Display</summary>
|
||
<div class="opt-group">
|
||
<div class="opt"><label>XY Punkte</label>
|
||
<select id="opt_xyPoints">
|
||
<option>128</option><option>256</option><option>512</option><option selected>1024</option><option>2048</option>
|
||
</select>
|
||
<small>Mehr Punkte = feinere Darstellung (kann etwas mehr CPU brauchen)</small>
|
||
</div>
|
||
<div class="opt"><label>XY Stil</label>
|
||
<select id="opt_xyStyle">
|
||
<option value="points">Punkte</option>
|
||
<option value="lines">Linien</option>
|
||
</select>
|
||
<small>Punkte sind schneller, Linien wirken „analog“</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_xySilenceGate" type="checkbox" checked>
|
||
Silence-Gate aktivieren (RMS-basiert)
|
||
</label>
|
||
<small>Blendet nur die Goniometer-Spur bei Stille aus; die Korrelation wird unabhängig kontinuierlich gemessen.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Silence-Threshold [dBFS RMS]</label>
|
||
<input class="opt-w-120" id="opt_xySilenceThr" type="number" min="-90" max="-40" step="1">
|
||
<small>Default: -75 dBFS RMS (Mono)</small>
|
||
</div>
|
||
<div class="opt"><label>Korrelation Ansprechzeit</label>
|
||
<select id="opt_corrResponse">
|
||
<option value="1">1,0 s</option>
|
||
<option value="2.5">2,5 s</option>
|
||
</select>
|
||
<small>Kontinuierliche DSP-Integration; unabhängig von Bildrate und ALSA-Periode.</small>
|
||
</div>
|
||
<div class="opt"><label>Korrelations-Negativmarker</label>
|
||
<select id="opt_corrNegativeMarkerMode">
|
||
<option value="memory">Memory</option>
|
||
<option value="hold">Hold (4 Sekunden)</option>
|
||
<option value="off">Off</option>
|
||
</select>
|
||
<small>Memory bleibt bis zum Zurücksetzen stehen; Hold speichert die negativste Anzeige vier Sekunden.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<button id="opt_corrResetPeak" type="button">Negativspitze zurücksetzen</button>
|
||
<small>Setzt den gespeicherten Negativmarker zurück. Im Modus Off bleibt der Marker ausgeblendet.</small>
|
||
</div>
|
||
<div class="opt"><label>Goniometer Display Gain (dB)</label>
|
||
<input id="opt_goniGain" type="range" min="-35" max="35" step="5"><span id="val_goniGain"></span>
|
||
<small>Skalierung des XY-Bildes</small>
|
||
</div>
|
||
<div class="opt"><label class="row"><input id="opt_goniAgc" type="checkbox"> Automatic Gain Control (AGC)</label>
|
||
<small>Attack 1 ms, Release 10 dB/s</small>
|
||
</div>
|
||
<div class="opt"><label>Gap Meter (Goniometer)</label>
|
||
<input id="opt_goniGap" type="range" min="2" max="24" step="1"><span id="val_goniGap"></span>
|
||
<small>Abstand zwischen den XY-Meter-Slots</small>
|
||
</div>
|
||
<div class="opt"><label>Goniometer-Persistenz</label>
|
||
<select id="opt_goniPersistence">
|
||
<option value="fast">Fast (50 ms)</option>
|
||
<option value="medium">Medium (150 ms)</option>
|
||
<option value="slow">Slow (300 ms)</option>
|
||
<option value="custom">Phoenix – frei</option>
|
||
</select>
|
||
<small>Fast/Medium/Slow sind reproduzierbare Profile; die endgültige RTW-Abstimmung erfolgt am Referenzgerät.</small>
|
||
</div>
|
||
<div class="opt"><label>Freies Fade-Out</label>
|
||
<input id="opt_goniFade" type="range" min="0" max="600" step="10"><span id="val_goniFade"></span>
|
||
<small>Wird beim Verschieben automatisch als Phoenix-Profil aktiviert.</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Phase Wheel</summary>
|
||
<div class="opt-group">
|
||
<div class="opt"><label>Phase Display Gain (dB)</label>
|
||
<input id="opt_phaseGain" type="range" min="-35" max="35" step="5"><span id="val_phaseGain"></span>
|
||
<small>Skalierung des Phase-Wheel-Vektors</small>
|
||
</div>
|
||
<div class="opt"><label class="row"><input id="opt_phaseAgc" type="checkbox"> Automatic Gain Control (AGC)</label>
|
||
<small>Passt Zeiger-Länge automatisch an</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Amplitude</label>
|
||
<select class="opt-w-220" id="opt_phaseAmpMode">
|
||
<option value="bandpass">Bandpass (wie Phase)</option>
|
||
<option value="ppm-din">PPM DIN (Fullband)</option>
|
||
</select>
|
||
<small>Phase bleibt Bandpass; nur die Zeiger-Länge wird umgestellt.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_phaseTrail" type="checkbox">
|
||
Trail anzeigen
|
||
</label>
|
||
<small>Trail zeigt Bewegung/Verlauf des Vektors</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Split-View</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label>Plot Klick</label>
|
||
<select class="opt-w-220" id="opt_splitTapAction">
|
||
<option value="switch">Direkt in View wechseln</option>
|
||
<option value="popup">View als Popup (Tap schließt)</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Plot Links</label>
|
||
<select class="opt-w-220" id="opt_splitLeftPlot">
|
||
<option value="none">(leer)</option>
|
||
<option value="phase-wheel">Phase Wheel</option>
|
||
<option value="realtime">Real Time Analyzer</option>
|
||
<option value="goniometer-rtw">XY-Display</option>
|
||
<option value="peak-history">Peak History</option>
|
||
<option value="classic-needles">Classic Needles</option>
|
||
<option value="panel">Meters</option>
|
||
<option value="clock">Studio Clock</option>
|
||
<option value="waveform">Waveform</option>
|
||
<option value="spectrogram">Spectrogram</option>
|
||
</select>
|
||
<small>Linke Seite: nur Plot (ohne Slots des Views)</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Plot Rechts</label>
|
||
<select class="opt-w-220" id="opt_splitRightPlot">
|
||
<option value="none">(leer)</option>
|
||
<option value="phase-wheel">Phase Wheel</option>
|
||
<option value="realtime">Real Time Analyzer</option>
|
||
<option value="goniometer-rtw">XY-Display</option>
|
||
<option value="peak-history">Peak History</option>
|
||
<option value="classic-needles">Classic Needles</option>
|
||
<option value="panel">Meters</option>
|
||
<option value="clock">Studio Clock</option>
|
||
<option value="waveform">Waveform</option>
|
||
<option value="spectrogram">Spectrogram</option>
|
||
</select>
|
||
<small>Rechte Seite: nur Plot (ohne Slots des Views)</small>
|
||
</div>
|
||
|
||
<div class="opt">
|
||
<label>Meter Slots</label>
|
||
<select class="opt-w-120" id="opt_splitMeterCount">
|
||
<option value="0">Aus</option>
|
||
<option value="1">1 Slot</option>
|
||
<option value="2">2 Slots</option>
|
||
<option value="3">3 Slots</option>
|
||
</select>
|
||
<small>Bis zu drei unabhängige Slots, Position frei wählbar (links / mitte / rechts).</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 1</label>
|
||
<select class="opt-w-220" id="opt_splitMeter1">
|
||
<option value="vu">VU</option>
|
||
<option value="ppm-ebu">PPM (EBU Type IIb)</option>
|
||
<option value="ppm-din">PPM (DIN Type I)</option>
|
||
<option value="tp">True Peak</option>
|
||
<option value="rms">True RMS</option>
|
||
<option value="lufs">LUFS (EBU R128)</option>
|
||
<option value="stopwatch">Stoppuhr</option>
|
||
<option value="none">(leer)</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 1 Position</label>
|
||
<select class="opt-w-140" id="opt_splitMeter1Pos">
|
||
<option value="left">Links</option>
|
||
<option value="center">Mitte</option>
|
||
<option value="right" selected>Rechts</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="opt">
|
||
<label>Slot 2</label>
|
||
<select class="opt-w-220" id="opt_splitMeter2">
|
||
<option value="vu">VU</option>
|
||
<option value="ppm-ebu">PPM (EBU Type IIb)</option>
|
||
<option value="ppm-din">PPM (DIN Type I)</option>
|
||
<option value="tp">True Peak</option>
|
||
<option value="rms">True RMS</option>
|
||
<option value="lufs">LUFS (EBU R128)</option>
|
||
<option value="stopwatch">Stoppuhr</option>
|
||
<option value="none">(leer)</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 2 Position</label>
|
||
<select class="opt-w-140" id="opt_splitMeter2Pos">
|
||
<option value="left">Links</option>
|
||
<option value="center">Mitte</option>
|
||
<option value="right" selected>Rechts</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 3</label>
|
||
<select class="opt-w-220" id="opt_splitMeter3">
|
||
<option value="vu">VU</option>
|
||
<option value="ppm-ebu">PPM (EBU Type IIb)</option>
|
||
<option value="ppm-din">PPM (DIN Type I)</option>
|
||
<option value="tp">True Peak</option>
|
||
<option value="rms">True RMS</option>
|
||
<option value="lufs">LUFS (EBU R128)</option>
|
||
<option value="stopwatch">Stoppuhr</option>
|
||
<option value="none">(leer)</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 3 Position</label>
|
||
<select class="opt-w-140" id="opt_splitMeter3Pos">
|
||
<option value="left">Links</option>
|
||
<option value="center">Mitte</option>
|
||
<option value="right" selected>Rechts</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Quad-View</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label>Quadrant Klick</label>
|
||
<select class="opt-w-220" id="opt_quadTapAction">
|
||
<option value="switch">Direkt in View wechseln</option>
|
||
<option value="popup">View als Popup (Tap außerhalb schließt)</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Plot Oben Links</label>
|
||
<select class="opt-w-220" id="opt_quadPlotTL">
|
||
<option value="none">(leer)</option>
|
||
<option value="phase-wheel">Phase Wheel</option>
|
||
<option value="realtime">Real Time Analyzer</option>
|
||
<option value="goniometer-rtw">XY-Display</option>
|
||
<option value="peak-history">Peak History</option>
|
||
<option value="classic-needles">Classic Needles</option>
|
||
<option value="panel">Meters</option>
|
||
<option value="clock">Studio Clock</option>
|
||
<option value="waveform">Waveform</option>
|
||
<option value="spectrogram">Spectrogram</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Plot Oben Rechts</label>
|
||
<select class="opt-w-220" id="opt_quadPlotTR">
|
||
<option value="none">(leer)</option>
|
||
<option value="phase-wheel">Phase Wheel</option>
|
||
<option value="realtime">Real Time Analyzer</option>
|
||
<option value="goniometer-rtw">XY-Display</option>
|
||
<option value="peak-history">Peak History</option>
|
||
<option value="classic-needles">Classic Needles</option>
|
||
<option value="panel">Meters</option>
|
||
<option value="clock">Studio Clock</option>
|
||
<option value="waveform">Waveform</option>
|
||
<option value="spectrogram">Spectrogram</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Plot Unten Links</label>
|
||
<select class="opt-w-220" id="opt_quadPlotBL">
|
||
<option value="none">(leer)</option>
|
||
<option value="phase-wheel">Phase Wheel</option>
|
||
<option value="realtime">Real Time Analyzer</option>
|
||
<option value="goniometer-rtw">XY-Display</option>
|
||
<option value="peak-history">Peak History</option>
|
||
<option value="classic-needles">Classic Needles</option>
|
||
<option value="panel">Meters</option>
|
||
<option value="clock">Studio Clock</option>
|
||
<option value="waveform">Waveform</option>
|
||
<option value="spectrogram">Spectrogram</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Plot Unten Rechts</label>
|
||
<select class="opt-w-220" id="opt_quadPlotBR">
|
||
<option value="none">(leer)</option>
|
||
<option value="phase-wheel">Phase Wheel</option>
|
||
<option value="realtime">Real Time Analyzer</option>
|
||
<option value="goniometer-rtw">XY-Display</option>
|
||
<option value="peak-history">Peak History</option>
|
||
<option value="classic-needles">Classic Needles</option>
|
||
<option value="panel">Meters</option>
|
||
<option value="clock">Studio Clock</option>
|
||
<option value="waveform">Waveform</option>
|
||
<option value="spectrogram">Spectrogram</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Meter Slots</label>
|
||
<select class="opt-w-120" id="opt_quadMeterCount">
|
||
<option value="0">Aus</option>
|
||
<option value="1">1 Slot</option>
|
||
<option value="2">2 Slots</option>
|
||
<option value="3">3 Slots</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 1</label>
|
||
<select class="opt-w-220" id="opt_quadMeter1">
|
||
<option value="vu">VU</option>
|
||
<option value="ppm-ebu">PPM (EBU Type IIb)</option>
|
||
<option value="ppm-din">PPM (DIN Type I)</option>
|
||
<option value="tp">True Peak</option>
|
||
<option value="rms">True RMS</option>
|
||
<option value="lufs">LUFS (EBU R128)</option>
|
||
<option value="stopwatch">Stoppuhr</option>
|
||
<option value="none">(leer)</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 1 Position</label>
|
||
<select class="opt-w-140" id="opt_quadMeter1Pos">
|
||
<option value="left">Links</option>
|
||
<option value="center">Mitte</option>
|
||
<option value="right" selected>Rechts</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 2</label>
|
||
<select class="opt-w-220" id="opt_quadMeter2">
|
||
<option value="vu">VU</option>
|
||
<option value="ppm-ebu">PPM (EBU Type IIb)</option>
|
||
<option value="ppm-din">PPM (DIN Type I)</option>
|
||
<option value="tp">True Peak</option>
|
||
<option value="rms">True RMS</option>
|
||
<option value="lufs">LUFS (EBU R128)</option>
|
||
<option value="stopwatch">Stoppuhr</option>
|
||
<option value="none">(leer)</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 2 Position</label>
|
||
<select class="opt-w-140" id="opt_quadMeter2Pos">
|
||
<option value="left">Links</option>
|
||
<option value="center">Mitte</option>
|
||
<option value="right" selected>Rechts</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 3</label>
|
||
<select class="opt-w-220" id="opt_quadMeter3">
|
||
<option value="vu">VU</option>
|
||
<option value="ppm-ebu">PPM (EBU Type IIb)</option>
|
||
<option value="ppm-din">PPM (DIN Type I)</option>
|
||
<option value="tp">True Peak</option>
|
||
<option value="rms">True RMS</option>
|
||
<option value="lufs">LUFS (EBU R128)</option>
|
||
<option value="stopwatch">Stoppuhr</option>
|
||
<option value="none">(leer)</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Slot 3 Position</label>
|
||
<select class="opt-w-140" id="opt_quadMeter3Pos">
|
||
<option value="left">Links</option>
|
||
<option value="center">Mitte</option>
|
||
<option value="right" selected>Rechts</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Recorder</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label>Speicherort</label>
|
||
<select class="opt-w-220" id="recTargetSel"></select>
|
||
<small>Lädt lokal auf diesem Rechner herunter oder speichert direkt auf Phoenix/Pi.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Recorder-Format</label>
|
||
<select class="opt-w-220" id="opt_recFormat">
|
||
<option value="wav">WAV (verlustfrei, groß)</option>
|
||
<option value="mp3">MP3 (kompakt)</option>
|
||
<option value="webm">WebM/Opus (kleiner)</option>
|
||
</select>
|
||
<small>Phoenix unterstützt WAV, MP3 und WebM/Opus.</small>
|
||
</div>
|
||
<div class="opt" id="opt_recMp3BitrateWrap">
|
||
<label>MP3-Bitrate</label>
|
||
<select class="opt-w-220" id="opt_recMp3Bitrate">
|
||
<option value="64">64 kbit/s</option>
|
||
<option value="128">128 kbit/s</option>
|
||
<option value="192">192 kbit/s</option>
|
||
<option value="256">256 kbit/s</option>
|
||
<option value="320">320 kbit/s</option>
|
||
</select>
|
||
<small>Wird nur für MP3 verwendet.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_recAutoDownload" type="checkbox">
|
||
Auto-Speichern
|
||
</label>
|
||
<small>Lädt neue Takes automatisch herunter, sobald sie in der Liste erscheinen.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_recShowAb" type="checkbox">
|
||
Recorder A/B anzeigen
|
||
</label>
|
||
<small>Blendet links oben die aktiven Recorder-Kennungen A und B ein.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Auto-Split Gap</label>
|
||
<input id="opt_recAutoGap" type="range" min="0.5" max="3" step="0.5">
|
||
<span id="val_recAutoGap"></span>
|
||
<small>Nach dieser Ruhezeit wird im Auto-Modus ein neuer Titel begonnen.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Auto-Split Threshold (dBFS)</label>
|
||
<input class="opt-w-120" id="opt_recThreshDbfs" type="number" min="-120" max="20" step="0.1">
|
||
<small>Schwelle für Signal/Ruhe im Recorder-Auto-Modus in dBFS.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Auto-Split Threshold (PPM DIN)</label>
|
||
<input class="opt-w-120" id="opt_recThreshPpmDin" type="number" min="-120" max="20" step="0.1">
|
||
<small>Alternative Eingabe in PPM DIN; beide Felder bleiben gekoppelt.</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Studio Clock</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label for="opt_clockStyle">Stil</label>
|
||
<select id="opt_clockStyle" style="width:240px">
|
||
<option value="analog">Analog (Ring)</option>
|
||
<option value="analog-ppm">Analog + PPM</option>
|
||
<option value="digital">Digital</option>
|
||
<option value="digital-ppm">Digital + PPM</option>
|
||
</select>
|
||
<small>Darstellung der Studio Clock</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label for="opt_clockColor">LED Farbe</label>
|
||
<input class="opt-w-120" id="opt_clockColor" type="color">
|
||
<small>Farbe der Punkte und des Rings</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="gap:8px;align-items:center">
|
||
<input id="opt_clockGlow" type="checkbox" checked>
|
||
LED-Glow für Punkte
|
||
</label>
|
||
<small>Simuliert leuchtende LEDs für Ringe und Ziffern</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="gap:8px;align-items:center">
|
||
<input id="opt_clockPpmLed" type="checkbox">
|
||
PPM als LED-Band
|
||
</label>
|
||
<small>Zeigt das PPM unter der Uhr als Punkte statt durchgehender Balken</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Presets</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label for="opt_softwarePreset">Software-Preset</label>
|
||
<div class="row" style="gap:8px;align-items:center;flex-wrap:wrap">
|
||
<select class="opt-w-180" id="opt_softwarePreset">
|
||
<option value="default">Default</option>
|
||
<option value="claus">Claus</option>
|
||
<option value="michael">Michael</option>
|
||
</select>
|
||
<button id="btnSoftwarePresetLoad" class="btn btn-compact" type="button">Laden</button>
|
||
<button id="btnSoftwarePresetSave" class="btn btn-compact" type="button">Speichern</button>
|
||
<button id="btnSoftwarePresetExport" class="btn btn-compact" type="button">Export</button>
|
||
<label for="impSoftwarePreset" class="btn btn-compact" id="btnSoftwarePresetImport" style="cursor:pointer">Import</label>
|
||
<input id="impSoftwarePreset" type="file" accept="application/json" style="display:none">
|
||
</div>
|
||
<small>Default lädt den Werkstand. Claus und Michael können als komplette Benutzer-Presets extern gespeichert und später wieder geladen werden.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label for="opt_layoutPreset">Layout-Slot</label>
|
||
<div class="row" style="gap:8px;align-items:center;flex-wrap:wrap">
|
||
<select class="opt-w-120" id="opt_layoutPreset">
|
||
<option value="1">Layout 1</option>
|
||
<option value="2">Layout 2</option>
|
||
<option value="3">Layout 3</option>
|
||
<option value="4">Layout 4</option>
|
||
</select>
|
||
<button id="btnLayoutPresetSave" class="btn btn-compact" type="button">Speichern</button>
|
||
</div>
|
||
<div class="row" style="gap:8px;align-items:center;flex-wrap:wrap; margin-top:8px">
|
||
<button id="btnLayoutPresetLoad1" class="btn btn-compact" type="button">Layout 1 aktivieren</button>
|
||
<button id="btnLayoutPresetLoad2" class="btn btn-compact" type="button">Layout 2 aktivieren</button>
|
||
<button id="btnLayoutPresetLoad3" class="btn btn-compact" type="button">Layout 3 aktivieren</button>
|
||
<button id="btnLayoutPresetLoad4" class="btn btn-compact" type="button">Layout 4 aktivieren</button>
|
||
</div>
|
||
<small>Speichert nur Ansicht und Layout. Layouts können per URL, z. B. <code>?layout=1</code>, oder über die Aktivieren-Tasten geladen werden.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Gerätesicherung</label>
|
||
<div class="row" style="gap:8px;align-items:center;flex-wrap:wrap">
|
||
<button id="btnDeviceBackupExport" class="btn btn-compact" type="button">Gesamtbackup herunterladen</button>
|
||
<label for="impDeviceBackup" class="btn btn-compact" style="cursor:pointer">Gesamtbackup einlesen</label>
|
||
<input id="impDeviceBackup" type="file" accept="application/json" style="display:none">
|
||
</div>
|
||
<small id="deviceBackupStatus">Enthält globale Geräteeinstellungen, RTA-Laufzeitkonfiguration, Software-Presets und Layout-Slots. Browserlokale Ansichten sind nicht enthalten.</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
<details>
|
||
<summary>Meters</summary>
|
||
<div class="opt-group">
|
||
<details style="margin-left:12px">
|
||
<summary>VU-Meter</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label class="row">
|
||
<input id="opt_vu_plus4" type="checkbox" checked>
|
||
VU: 0 VU = +4 dBu (statt 0 dBu)
|
||
</label>
|
||
<small>Deaktiviert: 0 VU liegt direkt auf 0 dBu (Digital-Referenz).</small>
|
||
</div>
|
||
<div class="opt"><label>0 VU Referenz (dBFS)</label>
|
||
<input class="opt-w-120" id="opt_vuRef" type="number" min="-30" max="-6" step="0.1"><small>typ. -18</small>
|
||
</div>
|
||
<div class="opt"><label>VU Offset (dB) – Anzeige</label>
|
||
<input class="opt-w-120" id="opt_vuOff" type="number" min="-20" max="+20" step="0.1"><small>addiert auf VU</small>
|
||
</div>
|
||
<div class="opt"><label>VU Hold (ms)</label>
|
||
<input class="opt-w-110" id="opt_vuHold" type="number" min="100" max="5000" step="50">
|
||
<small>Peak-Hold Zeit</small>
|
||
</div>
|
||
<div class="opt"><label>VU Decay (dB/s)</label>
|
||
<input class="opt-w-110" id="opt_vuDecay" type="number" min="5" max="60" step="1">
|
||
<small>Abfall pro Sekunde</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_vuHeaderValue" type="checkbox">
|
||
Header: Pegel statt Name
|
||
</label>
|
||
<small>Blendet „Volume Units“ aus und zeigt oben den aktuellen Wert</small>
|
||
</div>
|
||
<div class="opt"><label>VU: Rot ab (VU)</label>
|
||
<input class="opt-w-110" id="opt_vuRedThr" type="number" min="-20" max="+12" step="0.5">
|
||
<label class="row"><input id="opt_vuRedBarOnly" type="checkbox"> nur roter Teil</label>
|
||
</div>
|
||
<div class="opt"><label>VU Farben</label>
|
||
<span>Normal</span><input id="opt_vuColNorm" type="color">
|
||
<span>Warn</span><input id="opt_vuColWarn" type="color">
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details style="margin-left:12px">
|
||
<summary>PPM DIN</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label class="row">
|
||
<input id="opt_din_al_minus6" type="checkbox">
|
||
DIN‑PPM: 0 dBu → −6 dB (statt −9 dB)
|
||
</label>
|
||
<small>Dokument‑Variante (PML=+6 dBu; AL=0 dBu → −6 dB). Deaktiviert: AL → −9 dB.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_ppmDinHeaderValue" type="checkbox">
|
||
Header: Pegel statt Name
|
||
</label>
|
||
<small>Blendet „PPM (DIN)“ aus und zeigt oben den aktuellen Wert</small>
|
||
</div>
|
||
<div class="opt"><label>PPM Farben</label>
|
||
<span>Normal</span><input id="opt_ppmDinColNorm" type="color">
|
||
<span>Warn</span><input id="opt_ppmDinColWarn" type="color">
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_ppmDinLoudnessBox" type="checkbox">
|
||
Historische „RTW-Loudness“
|
||
</label>
|
||
<small>RTW-artige Momentary-Loudness: 400 ms Integration, K-gewichtet, pro Kanal. Historische Zusatzanzeige, nicht als normierte EBU-R128-Anzeige zu verstehen.</small>
|
||
</div>
|
||
<div class="opt"><label>RTW-Loudness Offset (dB)</label>
|
||
<input id="opt_ppmDinLoudOff" type="range" min="-7" max="7" step="0.1"><span id="val_ppmDinLoudOff"></span>
|
||
<small>Addiert auf die RTW-Loudness-Box</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details style="margin-left:12px">
|
||
<summary>PPM EBU</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_ppmEbuHeaderValue" type="checkbox">
|
||
Header: Pegel statt Name
|
||
</label>
|
||
<small>Blendet „PPM (EBU)“ aus und zeigt oben den aktuellen Wert</small>
|
||
</div>
|
||
<div class="opt"><label>PPM Farben</label>
|
||
<span>Normal</span><input id="opt_ppmEbuColNorm" type="color">
|
||
<span>Warn</span><input id="opt_ppmEbuColWarn" type="color">
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details style="margin-left:12px">
|
||
<summary>True Peak</summary>
|
||
<div class="opt-group">
|
||
<div class="opt"><label>TruePeak Offset (dB)</label>
|
||
<input class="opt-w-120" id="opt_tpOff" type="number" min="-20" max="+20" step="0.1">
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_tpHeaderValue" type="checkbox">
|
||
Header: Pegel statt Name
|
||
</label>
|
||
<small>Blendet „True Peak“ aus und zeigt oben den aktuellen Wert</small>
|
||
</div>
|
||
<div class="opt"><label>TruePeak: Rot ab (dBFS)</label>
|
||
<input class="opt-w-110" id="opt_tpRedThr" type="number" min="-20" max="+6" step="0.5">
|
||
<label class="row"><input id="opt_tpRedBarOnly" type="checkbox"> nur roter Teil</label>
|
||
</div>
|
||
<div class="opt"><label>TruePeak Farben</label>
|
||
<span>Normal</span><input id="opt_tpColNorm" type="color">
|
||
<span>Warn</span><input id="opt_tpColWarn" type="color">
|
||
</div>
|
||
<div class="opt"><label>TruePeak Hold (ms)</label>
|
||
<input class="opt-w-110" id="opt_tpHold" type="number" min="0" max="5000" step="50">
|
||
</div>
|
||
<div class="opt"><label>TruePeak Decay (dB/s)</label>
|
||
<input class="opt-w-110" id="opt_tpDecay" type="number" min="1" max="60" step="0.1">
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details style="margin-left:12px">
|
||
<summary>HiFi Peak</summary>
|
||
<div class="opt-group">
|
||
<div class="opt">
|
||
<label>Alignment</label>
|
||
<select class="opt-w-220" id="opt_hifiAlign">
|
||
<option value="ppm_din_minus5" selected>PPM DIN -5 dB = HiFi 0 dB</option>
|
||
<option value="ppm_din_zero">PPM DIN 0 dB = HiFi 0 dB</option>
|
||
</select>
|
||
<small>Legt fest, worauf sich 0 dB auf dem HiFi-Peak-Meter bezieht.</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details style="margin-left:12px">
|
||
<summary>RMS</summary>
|
||
<div class="opt-group">
|
||
<div class="opt"><label>RMS Modus</label>
|
||
<select id="opt_rmsMode">
|
||
<option value="dbu">dBu (Studio)</option>
|
||
<option value="dbfs">dBFS</option>
|
||
</select>
|
||
</div>
|
||
<div class="opt"><label>RMS Referenz (dBFS @ 0 dBu)</label>
|
||
<input class="opt-w-120" id="opt_rmsRefDbfs" type="number" min="-60" max="0" step="0.1">
|
||
</div>
|
||
<div class="opt"><label>RMS Referenz (dBu)</label>
|
||
<input class="opt-w-120" id="opt_rmsRefDbu" type="number" min="-20" max="+24" step="0.1">
|
||
</div>
|
||
<div class="opt"><label>RMS Offset (dB)</label>
|
||
<input class="opt-w-120" id="opt_rmsOff" type="number" min="-20" max="+20" step="0.1">
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_rmsHeaderValue" type="checkbox">
|
||
Header: Pegel statt Name
|
||
</label>
|
||
<small>Blendet „RMS …“ aus und zeigt oben den aktuellen Wert</small>
|
||
</div>
|
||
<div class="opt"><label>RMS: Rot ab (Anzeigeeinheit)</label>
|
||
<input class="opt-w-110" id="opt_rmsRedThr" type="number" min="-60" max="24" step="0.5">
|
||
<label class="row"><input id="opt_rmsRedBarOnly" type="checkbox"> nur roter Teil</label>
|
||
</div>
|
||
<div class="opt"><label>RMS Farben</label>
|
||
<span>Normal</span><input id="opt_rmsColNorm" type="color">
|
||
<span>Warn</span><input id="opt_rmsColWarn" type="color">
|
||
</div>
|
||
<div class="opt"><label>RMS Zeitkonstante</label>
|
||
<select id="opt_rmsTc" style="width:170px">
|
||
<option value="fast">Fast (125 ms)</option>
|
||
<option value="slow">Slow (1000 ms)</option>
|
||
<option value="window">Fenster (300 ms)</option>
|
||
</select>
|
||
<small>Integration der linearen Signalleistung im Audiokern. Fast/Slow verwenden 125 ms beziehungsweise 1 s; Fenster misst gleitend über exakt 300 ms.</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details style="margin-left:12px">
|
||
<summary>LUFS</summary>
|
||
<div class="opt-group">
|
||
<div class="opt"><label>LUFS: Rot ab (LUFS)</label>
|
||
<input class="opt-w-110" id="opt_lufsRedThr" type="number" min="-10" max="+0" step="0.1">
|
||
<small>typ. -1.0</small>
|
||
</div>
|
||
<div class="opt"><label>LUFS: Gelb ab (LUFS)</label>
|
||
<input class="opt-w-110" id="opt_lufsYellowThr" type="number" min="-10" max="+0" step="0.1">
|
||
<small>typ. -2.0</small>
|
||
</div>
|
||
<div class="opt"><label>LUFS: Grün bis (LUFS)</label>
|
||
<input class="opt-w-110" id="opt_lufsGreenThr" type="number" min="-10" max="+0" step="0.1">
|
||
<small>typ. -5.0</small>
|
||
</div>
|
||
<div class="opt"><label>LUFS Farbe – I</label>
|
||
<input id="opt_lufsColI" type="color">
|
||
</div>
|
||
<div class="opt"><label>LUFS Farbe – M</label>
|
||
<input id="opt_lufsColM" type="color">
|
||
</div>
|
||
<div class="opt"><label>LUFS Farbe – S</label>
|
||
<input id="opt_lufsColS" type="color">
|
||
</div>
|
||
<div class="opt"><label>LUFS Skala-Zahlen</label>
|
||
<input id="opt_lufsScaleCol" type="color">
|
||
<small>Farbe der Skalenwerte (z.B. −23/−18/−10)</small>
|
||
</div>
|
||
<div class="opt"><label>LUFS I: Zeitfenster (min)</label>
|
||
<input id="opt_lufsIWindowMin" type="range" min="1" max="10" step="1"><span id="val_lufsIWindowMin"></span>
|
||
<small>Rollierendes Fenster für „I (Integrated)“ in 1‑Minuten‑Schritten.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label class="row" style="align-items:center;gap:8px">
|
||
<input id="opt_lufsINorm" type="checkbox">
|
||
LUFS I: Normgerecht (seit Reset)
|
||
</label>
|
||
<small>Misst Integrated über die gesamte Laufzeit (seit Aktivierung/Reset) und deaktiviert das rollierende Fenster.</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
<details style="margin-left:12px">
|
||
<summary>Stoppuhr</summary>
|
||
<div class="opt-group">
|
||
<div class="opt"><label>Anzeige</label>
|
||
<select class="opt-w-220" id="opt_stopwatchDisplay">
|
||
<option value="mono">Standard (Monospace)</option>
|
||
<option value="seven">7‑Segment</option>
|
||
</select>
|
||
<small>Gilt für das Slot‑Meter „Stoppuhr“.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Auto-Threshold (dBFS)</label>
|
||
<input class="opt-w-120" id="opt_stopwatchThreshDbfs" type="number" min="-120" max="20" step="0.1">
|
||
<small>Schwelle für automatisches Start/Stop der Stoppuhr in dBFS.</small>
|
||
</div>
|
||
<div class="opt">
|
||
<label>Auto-Threshold (PPM DIN)</label>
|
||
<input class="opt-w-120" id="opt_stopwatchThreshPpmDin" type="number" min="-120" max="20" step="0.1">
|
||
<small>Alternative Eingabe in PPM DIN; beide Felder bleiben gekoppelt.</small>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
</div>
|
||
</details>
|
||
<div style="margin:16px 0 0 0; display:flex; gap:12px; flex-wrap:wrap; padding:0 4px;">
|
||
<button id="btnOnlineUpdate" class="btn">Online Update</button>
|
||
<button id="btnReloadAudio" class="btn">Audio neu initialisieren</button>
|
||
<button id="btnReset" class="btn">Werkseinstellungen</button>
|
||
</div>
|
||
<p style="margin:6px 4px 0 4px; color:#b2c7d9; font-size:12px;">
|
||
Hinweis: Online Update ist nur für die reine Analyzer-Installation gedacht. In der Volumio-Variante bitte per Snapshot bzw. manuell aktualisieren.
|
||
</p>
|
||
<details id="changelogDetails" class="changelog-details">
|
||
<summary>Version / Änderungen</summary>
|
||
<div id="changelogContent" class="changelog-content"></div>
|
||
</details>
|
||
</div>
|
||
|
||
<div id="recorderHud" style="display:none">
|
||
<span id="recLabel" class="rec-label rec-floating">Aufnahme</span>
|
||
<div id="recList" class="rec-list rec-floating"></div>
|
||
<span id="recTimer" class="rec-timer rec-floating">00:00:00:00</span>
|
||
<button id="recStartBtn" class="btn btn-lg btn-danger-border rec-floating">Aufnehmen</button>
|
||
<button id="recStopBtn" class="btn btn-lg rec-floating" disabled>Stop</button>
|
||
<button id="recAutoBtn" class="btn btn-lg rec-floating">Auto</button>
|
||
</div>
|
||
<div id="recProcessing" class="rec-processing" style="display:none">
|
||
<div class="rec-processing-box">
|
||
<div class="rec-spinner"></div>
|
||
<div class="rec-processing-text">Verarbeite…</div>
|
||
<div class="rec-processing-sub">Die Aufnahme wird zusammengefügt.</div>
|
||
</div>
|
||
</div>
|
||
<div id="calibrationNotice" class="calibration-modal" style="display:none">
|
||
<div class="calibration-box">
|
||
<h3>Willkommen zum Phoenix Analyzer</h3>
|
||
<p>Willkommen. Phoenix Analyzer ist bereit und startet mit den Werkseinstellungen.</p>
|
||
<p>Alle Ansichten, Farben, Meter-Slots und Optionen lassen sich jederzeit im laufenden Betrieb anpassen.</p>
|
||
<p>Wenn du eigene Einstellungen dauerhaft behalten willst, nutze die Software-Presets zum Speichern, Laden, Exportieren und Importieren.</p>
|
||
<button id="calibrationNoticeBtn" class="btn btn-lg" type="button">Los geht's</button>
|
||
</div>
|
||
</div>
|
||
<div id="recWarning" class="rec-warning" style="display:none">
|
||
<div class="rec-warning-box">
|
||
<h3>Hinweis</h3>
|
||
<p>Bei WAV-Aufnahmen wird empfohlen, nicht länger als ca. 1 Stunde aufzuzeichnen. Bei Datenverlust durch zu lange WAV-Aufnahmen wird keine Haftung übernommen.</p>
|
||
<p>Für sehr lange Aufnahmen kann in den Optionen auf WebM/Opus umgestellt werden, um Speicher zu sparen.</p>
|
||
<p>Grundsätzlich sollte die Recorder-Funktion als BETA betrachtet werden; Nutzung auf eigene Verantwortung.</p>
|
||
<label class="rec-warning-ack row">
|
||
<input id="recWarningAck" type="checkbox">
|
||
<span>Ich habe verstanden</span>
|
||
</label>
|
||
<button id="recWarningBtn" class="btn btn-lg" disabled>Weiter</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="presetSaveRemoteNotice" class="rec-warning" style="display:none">
|
||
<div class="rec-warning-box">
|
||
<h3>Preset hier nicht speichern</h3>
|
||
<p>Presets sollen direkt am Analyzer über <strong>localhost</strong> gespeichert werden.</p>
|
||
<p>Wenn du von einer anderen Adresse zugreifst, würde sonst der Zustand dieses Browsers gespeichert werden.</p>
|
||
<div class="row" style="gap:10px">
|
||
<button id="presetSaveRemoteOkBtn" class="btn btn-lg" type="button">OK</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="onlineUpdateReadyNotice" class="rec-warning" style="display:none">
|
||
<div class="rec-warning-box">
|
||
<h3>Online Update</h3>
|
||
<p>download beendet, es wird neu gestartet</p>
|
||
<div class="row" style="gap:10px">
|
||
<button id="onlineUpdateRestartBtn" class="btn btn-lg" type="button">Neustart</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="factoryResetConfirm" class="rec-warning" style="display:none">
|
||
<div class="rec-warning-box">
|
||
<h3>Werkseinstellungen laden?</h3>
|
||
<p>Dadurch werden alle gespeicherten Einstellungen (inkl. Slots, letzter View, Presets, Offsets und Hinweise) gelöscht — Es erfolgt ein Neustart wie beim ersten Einschalten.</p>
|
||
<label class="rec-warning-ack row">
|
||
<input id="factoryResetAck" type="checkbox">
|
||
<span>Ich bin mir sicher</span>
|
||
</label>
|
||
<div class="row" style="gap:10px">
|
||
<button id="factoryResetCancelBtn" class="btn btn-lg" type="button">Abbrechen</button>
|
||
<button id="factoryResetConfirmBtn" class="btn btn-lg btn-danger-border" type="button" disabled>JA</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="err" class="err"></div>
|
||
|
||
<script type="module" src="./main.js"></script>
|
||
</body>
|
||
</html>
|