+ {m.mic_title()}
+
+
+
+ {m.mic_startMicrophone()}
+ {m.mic_stop()}
+
+ {monitoring ? m.mic_monitoringOn() : m.mic_monitoringOff()}
+
+
+
+
+
+ {m.mic_device()}
+
+ {#if devices.length === 0}
+ {m.mic_noMicFound()}
+ {:else}
+ {#each devices as d}
+ {d.label || m.mic_device()}
+ {/each}
+ {/if}
+
+
+ {m.mic_refresh()}
+
+
+
+
+ {m.mic_gain()}
+
+ {gain.toFixed(2)}x
+
+
+ {m.mic_monitorDelay()}
+
+ {delayMs} ms
+
+
+
+
+ {m.mic_advanced()}
+
+
+
+
+ {m.mic_requested()}: EC={reqEchoCancellation === null
+ ? '–'
+ : reqEchoCancellation
+ ? 'on'
+ : 'off'}, NS={reqNoiseSuppression === null
+ ? '–'
+ : reqNoiseSuppression
+ ? 'on'
+ : 'off'}, AGC={reqAGC === null ? '–' : reqAGC ? 'on' : 'off'}
+
+
+ {m.mic_obtained()}: EC={(obtainedEchoCancellation ??
+ '–') as unknown as string}, NS={(obtainedNoiseSuppression ?? '–') as unknown as string},
+ AGC={(obtainedAGC ?? '–') as unknown as string}
+
+
+
+
+
+
+ {m.mic_sampleRate()}: {sampleRate ?? '–'} Hz
+ {#if deviceLabel}
+ {m.mic_inputDevice()}: {deviceLabel}
+ {/if}
+
+ {m.mic_channels()}:
+ {#if channels === null}
+ –
+ {:else if channels === 1}
+ 1 ({m.mic_mono()})
+ {:else if channels === 2}
+ 2 ({m.mic_stereo()})
+ {:else}
+ {channels}
+ {/if}
+
+
+
+
+ {m.mic_volume()}
+
+
+ {#if peakHold > 0}
+
+ {/if}
+
+
+ {m.mic_peakNow()}: {(20 * Math.log10(Math.max(1e-5, peak))).toFixed(1)} dBFS ·
+ {m.mic_peakHold()}: {(20 * Math.log10(Math.max(1e-5, peakHold))).toFixed(1)} dBFS · RMS: {(
+ 20 * Math.log10(Math.max(1e-5, volume))
+ ).toFixed(1)} dBFS
+ (peakHold = 0)}>{m.mic_resetPeaks()}
+
+ {#if clipping}
+ {m.mic_clipping()}
+ {/if}
+
+
+
+ {#if analyserTime && analyserFreq}
+
+
+ {/if}
+
+
+
+ {m.mic_recording()}
+
+ {m.mic_startRecording()}
+ {m.mic_stopRecording()}
+
+ {#if recordingUrl}
+
+ {m.mic_downloadRecording()}
+ {/if}
+
+
+
+