Desktop application to generate WAV audio for SDR waterfall text/image transmission, with optional CAT/PTT control.
The project is implemented in Python with a Tkinter GUI.
Spectrum Art converts text or images into audio signals suitable for waterfall visualization and transmission workflows.
Main capabilities:
- Generate WAV from text or image source
- Preview generated output in the waterfall display
- Play audio on a selected output device
- Transmit audio with optional CAT/PTT control
- Save and load user presets
- Save, load, and delete named radio CAT configurations
- Quick message slots for rapid transmission
- Language selection (Italian/English)
- Generate WAV — Generates WAV file from text or image source
- Save WAV — Saves generated WAV to disk (enabled after generation)
- Play — Plays audio through selected audio device (enabled after generation)
- Stop — Stops current playback
- Transmit — Transmits audio via radio CAT/PTT (enabled when radio configured and WAV ready)
- Stop TX — Stops transmission
Six numbered buttons (1-6) for storing and quickly transmitting pre-recorded messages:
- Click a slot number to select and load a saved message
- Use "Store text" button to save current text to selected slot
- Use "Delete slot" button to remove saved message from slot
- Hover over slots to preview stored message content (tooltip)
- Source types:
- Text (with font rendering options)
- Image (PNG/JPG/JPEG/BMP)
- Modulation modes:
- SSB-USB, SSB-LSB
- AM, FM
- DATA-U, DATA-L
- CW
- Adjustable signal parameters:
- Frequency range (fmin/fmax)
- ms/column (transmission speed)
- Sample rate
- Gain
- Height
- Text rendering options (font size, stroke, threshold, spacing, pause)
- Image options (invert, vertical flip, horizontal flip, rotate 90° left)
- Audio:
- Device selection dropdown with refresh button
- Real-time device status indicator
- Playback and TX use the selected output device
- Radio CAT Control:
- FTDX-10: CAT read/write + PTT
- XIEGU (CI-V): CAT read/write + PTT
- FT-736R: CAT write-only for PTT ON/OFF
- Connection status indicator
- Read from radio / Sync parameters buttons
- Port refresh button
- Presets:
- Save all signal parameters with custom name
- Load saved presets
- Delete presets
- Radio Profiles:
- Save radio/audio device configuration with custom profile name
- Load previous radio configuration
- Delete saved profiles
Requirements: Python 3.9+ with python3-venv, python3-pip, python3-tk, and libportaudio2.
git clone https://github.com/aleiei/rf_spectrum_art.git
cd rf_spectrum_art
bash setup.shsetup.sh installs the required system packages via apt (with sudo if needed), creates a local venv/ virtual environment, and installs all Python dependencies from requirements.txt.
bash run.shOr manually:
source venv/bin/activate
python rf_spectrum_art_cat.pyInstall system dependencies for your distro (e.g. python3-venv, python3-tk, portaudio), then:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python rf_spectrum_art_cat.pyRequirements: Python 3.9+ for Windows from python.org (check "Add Python to PATH" during install).
Open a Command Prompt or PowerShell in the project folder:
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txtvenv\Scripts\activate
python rf_spectrum_art_cat.pyA pre-built standalone executable is available in the rf_spectrum_art_cat_windows/ folder:
rf_spectrum_art_cat_windows\rf_spectrum_art_cat.exe
No Python installation required — just run the .exe directly.
Note: Windows Defender or SmartScreen may flag unsigned executables. If prompted, choose "Run anyway" or add an exclusion.
Python packages (see requirements.txt):
- numpy
- pillow
- pygame
- pyserial
- sounddevice
System packages on Debian/Ubuntu:
- python3-venv
- python3-pip
- python3-tk
- libportaudio2
rf_spectrum_art_cat.py— main applicationrun.sh— run script using local virtual environment (Linux)setup.sh— setup script for venv and dependencies (Linux/Debian)requirements.txt— Python dependenciesbuild_windows_exe.sh— builds Windows.exefrom Linux via Winerf_spectrum_art_cat_windows/— pre-built Windows executable.rf_spectrum_art_presets.json— user presets (auto-generated).rf_spectrum_art_radio.json— named radio CAT configurations (auto-generated)
- Setup environment:
- bash setup.sh
- Start application:
- ./run.sh
In Radio Menu you can:
- Save settings with a custom profile name
- Load one saved profile from a selection dialog
- Delete a saved profile from a selection dialog
- CAT TX button is enabled only when radio is configured and WAV is available.
- For FT-736R, CAT read/sync is intentionally disabled because only write/PTT is used.
- Transmission speed is mainly controlled by ms/column; lower value means faster transmission.
Copyright (C) 2026 Alessandro Orlando
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
You are free to use, modify, and distribute this software under the terms of the AGPL-3.0. If you run a modified version as a network service, you must make the complete source code available to users.
See the LICENSE file for the full license text, or visit https://www.gnu.org/licenses/agpl-3.0.html.