A Qt-based desktop application for visualizing WAV audio files in time and frequency domains using FFTW
WavFFT-Qt is a desktop audio analyzer that allows you to open WAV files and visualize both the time-domain waveform and frequency-domain FFT spectrum. The application supports interactive zooming and panning, along with audio processing features like upsampling, downsampling, and segment saving.
- ✅ Open and load 16-bit PCM WAV files (mono or stereo)
- ✅ Automatic stereo-to-mono conversion
- ✅ Real-time waveform visualization (time domain)
- ✅ Real-time FFT magnitude spectrum (frequency domain)
- ✅ Interactive plot controls (zoom, pan, drag)
- ✅ Downsample and Upsample audio
- ✅ Save audio segments
- ✅ Playback speed control (Fast / Slow)
- Language: C++
- GUI Framework: Qt 5/6 (Widgets)
- Plotting: QCustomPlot
- FFT Library: FFTW 3.3.5 (64-bit)
Before building the project, ensure you have the following installed:
- Qt SDK (5.x or 6.x) with Qt Creator
- FFTW 3.3.5 DLL (64-bit) – Download here
- QCustomPlot library (usually included or as a separate
.h/.cpp) - MinGW-w64 or MSVC compiler (depending on your Qt setup)
git clone https://github.com/siinnnaaa/WavFFT-Qt.git
cd WavFFT-Qt
- Download FFTW 3.3.5 precompiled DLL (64-bit) from the official site
- Extract and place
fftw3.dllin your project directory or system PATH - Update the
.profile to link againstlibfftw3-3.dllorfftw3.lib
open FFTW_PRJ.proor simply double-click FFTW_PRJ.pro
- Click Build → Build Project
- Click Run to launch the application
WavFFT-Qt/ ├── src/ │ ├── main.cpp # Entry point │ ├── mainwindow.cpp # Main logic and signal processing │ ├── mainwindow.h # Header file │ └── mainwindow.ui # Qt Designer UI file ├── FFTW_PRJ.pro # Qt project file ├── docs/ │ └── screenshots/ # Application screenshots ├── README.md ├── LICENSE └── .gitignore
| Widget | Description |
|---|---|
| wavePlot | Time-domain waveform plot X: Time (s), Y: Amplitude |
| fftPlot | Frequency-domain FFT magnitude plot X: Frequency (Hz), Y: Magnitude |
| openBtn | Open WAV file dialog |
| btnDown | Downsample audio |
| btnUp | Upsample audio |
| btnSave | Save selected segment |
| pbFast | Increase playback speed |
| pbSlow | Decrease playback speed |
| infoLabel | Displays file name, sample rate, and sample count |
- Open WAV File: User selects a 16-bit PCM WAV file
- Load & Convert: File is loaded, stereo is converted to mono
- Plot Waveform: Time-domain signal is plotted on
wavePlot - Compute FFT: FFTW computes the FFT of the audio signal
- Plot Spectrum: Magnitude spectrum is plotted on
fftPlot - Interactive Controls: User can zoom, pan, resample, or save segments
This project is licensed under the MIT License – see the LICENSE file for details.
- FFTW – Fast Fourier Transform library
- QCustomPlot – Qt plotting library
- Qt Project
For questions or suggestions, feel free to open an issue or reach out!
Made with ❤️ using Qt + FFTW + C++
