README
This commit is contained in:
69
README.md
Normal file
69
README.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Baudmine Spectrum Analyzer
|
||||
|
||||
Real-time audio spectrum analyzer and waterfall display built with C++17, ImGui, SDL2, and OpenGL. Runs natively on Linux and Windows, and in the browser via WebAssembly.
|
||||
|
||||
Beware, this thing is **entirely LLM-generated**! I've barely looked at the code! Anthropic had a promo for Claude, so I utilized it to make this clone of [**baudline**](https://www.baudline.com/what_is_baudline.html), which is a very powerful (and proprietary) tool, but sadly it's been seemingly abandoned for years, not that it would need anything. My hope was to put together something similar, using a more modern stack. It is not (yet) a fully-featured replacement, but it's good enough for me.
|
||||
|
||||
## Web preview
|
||||
|
||||
You can find the Web version here, delivered in 870 kB: https://ericek111.github.io/baudmine/
|
||||
|
||||
(If you allow access to "all microphones", you can switch between the input devices in the File menu.)
|
||||
|
||||
## Features
|
||||
|
||||
### Signal Processing
|
||||
- FFT sizes from 256 to 65,536 points with configurable overlap of bins for precise speed control of the waterfall.
|
||||
- Window functions: Hann, Hamming, Blackman, Blackman-Harris, Kaiser (configurable beta), Flat Top, Rectangular
|
||||
|
||||
### Input Sources
|
||||
- Live audio from system input devices
|
||||
- Multi-device mode: use up to 8 devices simultaneously, each mapped to a channel
|
||||
- File playback: WAV, Float32/Int16/Uint8 I/Q formats
|
||||
|
||||
### Visualization
|
||||
- Spectrum plot
|
||||
- Scrolling waterfall display that can be zoomed and panned
|
||||
- Linear and logarithmic frequency scales
|
||||
- Additive color blending for multi-channel display
|
||||
- Peak hold with adjustable decay rate
|
||||
|
||||
### Analysis
|
||||
- Dual cursors with frequency and magnitude readout
|
||||
- Automatic snap-to-peak
|
||||
- Peak detection with configurable threshold, separation, and frequency range (it shows the center frequency of the peak-detected FFT bin)
|
||||
- Peak trace on the waterfall
|
||||
- Delta measurements between cursors
|
||||
|
||||
### Math Channels
|
||||
- Unary: Negate, Absolute, Square, Cube, Square Root, Log
|
||||
- Binary: Add, Subtract, Multiply, Phase, Cross-correlation
|
||||
- Custom colors per math channel
|
||||
|
||||
### Interface
|
||||
- DPI-aware UI with auto-detection and manual scaling (100-300%)
|
||||
- Touch gesture support in the waterfall (pan and pinch-to-zoom)
|
||||
- The most important settings persist across sessions
|
||||
|
||||
## Building
|
||||
|
||||
### Linux
|
||||
|
||||
```bash
|
||||
# Install dependencies (Debian/Ubuntu)
|
||||
sudo apt install build-essential cmake pkg-config libsdl2-dev libfftw3-dev libsndfile1-dev libgl-dev
|
||||
|
||||
cmake -B build -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build -j$(nproc)
|
||||
```
|
||||
|
||||
### Windows (MSVC + vcpkg)
|
||||
|
||||
```powershell
|
||||
vcpkg install sdl2 fftw3 "libsndfile[core]" --triplet x64-windows
|
||||
|
||||
cmake -B build -DCMAKE_BUILD_TYPE=Release `
|
||||
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows
|
||||
cmake --build build --config Release
|
||||
```
|
||||
Reference in New Issue
Block a user