# Ohmforge Oscilloscope Capture Analyzer > Scope CSV or WAV in: Vpp, RMS, frequency, duty, rise time, FFT, THD and SNR out. Analyses a captured waveform from an oscilloscope CSV export (Rigol, Siglent, Keysight, Tektronix layouts or any time/channel table), a logic analyzer CSV or a WAV recording from a sound-card scope. For every channel it measures Vpp, maximum, minimum, mean, true RMS (AC and DC), frequency and period with hysteresis, duty cycle, pulse widths, 10–90 % rise and fall time and overshoot; for one channel it computes an FFT spectrum with a selectable window, the harmonics, THD, THD+N, SNR, SINAD and ENOB. Charts of the channels and the spectrum are included. Part of usefulweb.site (https://usefulweb.site/). Part of [Ohmforge](https://ohmforge.usefulweb.site/) (ownerApp: ohmforge). Results are deterministic calculations from the inputs and the listed assumptions; the API returns exactly what the web page shows. ## Use it - Human interface: https://ohmforgecaptureanalyzer.usefulweb.site/ (interactive tool at https://ohmforgecaptureanalyzer.usefulweb.site/tool) - JSON API: POST https://ohmforgecaptureanalyzer.usefulweb.site/api/v1/calculate with a JSON object of inputs (schema: https://ohmforgecaptureanalyzer.usefulweb.site/api/v1/tool) - OpenAPI: https://ohmforgecaptureanalyzer.usefulweb.site/openapi.json - MCP (Streamable HTTP): https://ohmforgecaptureanalyzer.usefulweb.site/mcp - tool `ohmforge_capture_analyzer` ## Inputs - file (file): Capture file - CSV from a scope (Rigol, Siglent, Keysight, Tektronix or any "time, channel…" table), a sigrok/PulseView or logic-analyzer CSV, or a WAV recording; up to 25 MB and 2 million rows. Files are processed in memory and not kept. - csv (textarea): Or paste the CSV text - Used when no file is uploaded. - sampleRate (number): Sample rate (only if the file has no time column) - voltsPerFullScale (number): WAV calibration: volts at full scale (optional) - Scales WAV samples to volts; empty = full-scale units (FS). - window (select): FFT window - fftSize (select): FFT size - harmonics (integer): Harmonics counted for THD - spectrumChannel (integer): Channel for the spectrum (1 = first) - hysteresis (number): Crossing hysteresis - Noise smaller than this band does not count as a crossing. - from (number): Analyse from (optional) - Start of the time gate, in the capture's time (can be negative for pre-trigger samples). - to (number): Analyse to (optional) ## Method - Import: the CSV layout is detected from its header (Rigol "X,CH1,Start,Increment" with sample index × increment, Keysight "x-axis" + units row, Siglent metadata block, Tektronix 6-column layout, sigrok ";" comments with the sample rate, or a generic header row). Separators , ; and tab, decimal commas and unit prefixes in headers (ms, µs, mV) are handled. Columns holding only 0 and 1 become logic channels. WAV files keep up to 2 channels. - State levels follow IEEE 181: top and base are the modes of a 256-bin histogram of the upper and lower half when they form a plateau, otherwise the maximum and minimum (sine, triangle). Amplitude = top − base; the 10 %, 50 % and 90 % reference levels are taken from it. - Frequency and period come from 50 % crossings with hysteresis (a crossing counts only after the signal has passed mid ± hysteresis/2), interpolated between samples and averaged over all whole periods; duty = positive width / (positive + negative width). Rise and fall times are the 10–90 % durations averaged over all complete edges. Overshoot = (max − top)/amplitude, preshoot = (base − min)/amplitude. - Mean and RMS are time-weighted (trapezoids) over the record and over the whole periods; RMS AC = √(RMS² − mean²). - Spectrum: Welch average of 50 %-overlapping frames, windowed and transformed with the shared radix-2 FFT of the Soundscape audio engine. A tone's power is the sum over its main lobe divided by the window energy, so it does not depend on the window or on non-coherent sampling. THD = √ΣP(harmonics 2…N)/√P(fundamental); SNR excludes DC, fundamental and harmonics; SINAD includes harmonics; ENOB = (SINAD − 1.76 dB)/6.02 dB (IEEE 1241). ## Limits - The result can only be as good as the capture: bandwidth, sample rate, vertical resolution and probe compensation of the instrument limit rise times, harmonics and noise. A sound card has an unknown gain, usually removes DC and filters above about 20 kHz. Binary formats (.bin, .wfm, .isf, .sr) are not read: export CSV first.