Skip to content

aleiei/rf_spectrum_art

Repository files navigation

Spectrum Art

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.

Overview

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)

Main Control Buttons

  • 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

Quick Message Slots

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)

Features

  • 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

Installation — Linux

Requirements: Python 3.9+ with python3-venv, python3-pip, python3-tk, and libportaudio2.

Automatic setup (Debian/Ubuntu)

git clone https://github.com/aleiei/rf_spectrum_art.git
cd rf_spectrum_art
bash setup.sh

setup.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.

Run

bash run.sh

Or manually:

source venv/bin/activate
python rf_spectrum_art_cat.py

Manual setup (other distros)

Install 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.py

Installation — Windows

Requirements: Python 3.9+ for Windows from python.org (check "Add Python to PATH" during install).

Setup venv

Open a Command Prompt or PowerShell in the project folder:

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt

Run

venv\Scripts\activate
python rf_spectrum_art_cat.py

Pre-built executable (Windows)

A 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.


Dependencies

Python packages (see requirements.txt):

  • numpy
  • pillow
  • pygame
  • pyserial
  • sounddevice

System packages on Debian/Ubuntu:

  • python3-venv
  • python3-pip
  • python3-tk
  • libportaudio2

Project files

  • rf_spectrum_art_cat.py — main application
  • run.sh — run script using local virtual environment (Linux)
  • setup.sh — setup script for venv and dependencies (Linux/Debian)
  • requirements.txt — Python dependencies
  • build_windows_exe.sh — builds Windows .exe from Linux via Wine
  • rf_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)

Run

  1. Setup environment:
    • bash setup.sh
  2. Start application:
    • ./run.sh

Radio configuration profiles

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

Notes

  • 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.

License

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.

About

Python desktop app to generate SDR waterfall audio from text or images, with CAT/PTT radio control.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors