CSV Waveform Viewer

A Python desktop waveform viewer for CSV and Excel oscilloscope data, built with PySide6 and pyqtgraph. It supports configurable time bases, dual Y axes, cursors, measurement cards, calculated traces, and FFT spectrum analysis.

Waveform viewer with native menus and dark oscilloscope-style plots

Setup And Run

Install the Python dependencies, then launch the viewer with a CSV or Excel waveform file.

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py example_csv/1t1r_set_read_0P1V.csv

The app can also open files from File > Open Waveform or by dragging a supported waveform file onto the app window.

Demo

Waveform viewer main plot
Waveform viewer with native menus and oscilloscope-style plots.
FFT spectrum view
FFT spectrum view with Math controls.
Localized UI with a detached panel
Localized UI with detachable right-side panels.
CSV Waveform Viewer on Ubuntu
CSV Waveform Viewer running with a system-style look.

Download And Run

Packaged releases are intended for users who do not want to install Python.

PlatformHow to run
WindowsDownload cswave-<version>-windows-x64.zip, unzip it, and run cswave.exe.
macOSDownload cswave-<version>-macos.zip, unzip it, and open CSV Waveform Viewer.app. If macOS blocks the first launch, use Finder > Open from the context menu.
LinuxDownload cswave-<version>-linux-x64.tar.gz, extract it, and run cswave/cswave.

Major Features

Shortcuts And Controls

ActionControl
Open waveformCtrl+O / Cmd+O, File > Open Waveform, or drag a waveform file onto the app.
Toggle active Y control groupT
Reset active viewCtrl+R / Cmd+R or View > Reset View
Toggle X/Y cursorsX and Y
Reset cursorsShift+R or the Cursors tab button.
Zoom and panMouse wheel and drag on the main plot; hold Ctrl / Cmd for active Y-axis interaction.

Waveform Setup

Waveform Setup opens after loading a waveform file and is also available from the View menu. It controls the X-axis time base and each waveform's Y-axis assignment.

ModeBehavior
Time columnUses a selected numeric column as the X axis. The selected time column is not plotted as a signal.
Sample rate (Sa/s)Generates time as sample_index / sample_rate. All valid numeric columns are normal signals.
Sample interval (s/pt)Generates time as sample_index * sample_interval. All valid numeric columns are normal signals.
Sample indexUses 0, 1, 2, ... as the X axis. All valid numeric columns are normal signals.

If a detected time column is overridden with a generated time base, that detected column becomes a normal signal that can be assigned to an axis or disabled.

Math

The Math tab creates session-only calculated outputs from loaded waveforms. Time-domain results are added as normal waveform traces, so they appear in the channel list, legend, preview, axis setup, trace highlighting, cursor readouts, and Measure workflows.

Calculated traces can be used as operands for later Math operations, so more complicated expressions can be built by composing several simpler outputs.

TypeFunctions
UnaryA^2, sqrt(A), abs(A), log10(A), ln(A), -A, ∫A dt, dA/dt
Scalara*A+b
BinaryA+B, A-B, A*B, A/B

FFT Spectrum

FFT(A) creates a frequency-domain spectrum from waveform A. Windowing, DC removal, zero padding, and display frequency limits are available from the Math tab. Moving X cursors does not automatically recompute a spectrum; press Update FFT.

Measure

The Measure tab shows reusable cards for one or more waveform signals. Select a signal and press Add, or press Pick and click a trace in the plot. Each card keeps its own range and SI scale settings.

Localization

The GUI uses Qt-native translation support. English is the source language and fallback. Chinese and Japanese translations are included, and the startup language can be selected with --language or from the Display menu.

python main.py --language zh_CN example_csv/1t1r_set_read_0P1V.csv

Building Releases

Release builds use PyInstaller and include translations, examples, README, and license files. GitHub Actions builds Windows, macOS, and Linux artifacts for release tags. See the release checklist for the full flow.

.\scripts\build_windows.ps1
./scripts/build_macos.sh
./scripts/build_linux.sh

License

CSV Waveform Viewer is released under the MIT License. See LICENSE.