A multilingual radio automation studio for playlists, AutoDJ, live audio, and broadcasting.
RadioStudio Python Sirius is a standalone radio automation application. It brings local playback, music scheduling, studio inputs, and streaming into one workstation.
The same Python source runs on Windows and on Ubuntu/Debian desktop sessions (X11 or Wayland). Linux requires a graphical environment and a working desktop audio service (PulseAudio or PipeWire); headless/server operation is outside the supported scope. Windows executable packages remain Windows-specific.
| Area | Features |
|---|---|
| Playlist and playback | Add audio files and folders, arrange the queue, save M3U playlists, and control local playback. |
| Mixing | Configure fades and track overlaps, monitor the on-air signal, and view track artwork. |
| AutoDJ | Index music libraries, schedule blocks and filters, avoid repetition, and review playback history. |
| Studio inputs | Use a microphone, up to five auxiliary inputs, a 25-button Cart wall, and scheduled tracks. |
| Broadcasting | Stream through the built-in server, Icecast, or SHOUTcast; monitor outputs and listeners when available. |
| Station | Configure station metadata, on-air titles, and Discord Rich Presence. |
The interface is available in:
- Brazilian Portuguese
- United States English
- Mexican Spanish
- Korean
- Japanese
- Traditional Chinese
- Simplified Chinese
The application can follow the operating system language. The installer lets users choose the initial application language; the portable edition asks on first launch. The preference can also be changed later in Settings. Changing the language prompts for confirmation and restarts the application to apply the new language.
- Install Python 3.10 or newer for Windows and make sure the
pycommand is available. - Download or clone this repository.
- Run
Iniciar RadioStudio Python.bat.
On first launch, the script creates the .venv environment, installs dependencies, and starts the application.
In PowerShell, from the project directory:
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -m radiostudioRun the automated tests with:
$env:APPDATA = Join-Path $env:TEMP ("RadioStudio-tests-" + [guid]::NewGuid().ToString("N"))
$env:RADIOSTUDIO_DATA_DIR = $env:APPDATA
$env:QT_QPA_PLATFORM = "offscreen"
.\.venv\Scripts\python.exe -m unittest discover -s tests -vUse Ubuntu 22.04/24.04 or Debian 12/13 with Python 3.10 or newer. From a terminal in your graphical desktop session, install the system dependencies:
sudo apt update
sudo apt install python3 python3-venv python3-pip \
libegl1 libgl1 libopengl0 libdbus-1-3 libfontconfig1 libglib2.0-bin libgssapi-krb5-2 \
libxkbcommon-x11-0 libxcb-cursor0 libxcb-icccm4 libxcb-image0 \
libxcb-keysyms1 libxcb-render-util0 libxcb-shape0 libxcb-xinerama0 \
libxcb-xkb1 libx11-xcb1 libpulse0 libpipewire-0.3-common gnome-keyringKeep the desktop's PulseAudio or PipeWire service running. A Secret Service provider such as GNOME Keyring must be running and unlocked on the user's session D-Bus to save broadcasting and REST API passwords. KDE users can use a compatible Secret Service provider. The application continues to open when the credential store is unavailable, but authenticated services require access to the stored credentials. Passwords are never saved to the settings file as a fallback. Run as your desktop user, without sudo.
Clone or download this repository, then run:
bash "Iniciar RadioStudio Python.sh"The launcher creates .venv, installs missing Python dependencies, and starts the desktop application. Alternatively, run from source:
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python -m radiostudioFor automated checks, use an isolated profile:
test_profile=$(mktemp -d)
APPDATA="$test_profile" RADIOSTUDIO_DATA_DIR="$test_profile" \
QT_QPA_PLATFORM=offscreen .venv/bin/python -m unittest discover -s tests -v
.venv/bin/python tests/desktop_smoke.pyThe smoke check opens and closes the main window and Settings using its own temporary profile. CI runs the suite on Windows, Ubuntu, and Debian, and opens Linux windows under Xvfb. These virtual displays are test infrastructure; normal use requires a graphical desktop. Physical audio devices and external services still need validation on the target workstation.
- Built-in server: audio is available at
/live.mp3;/status.jsonreports stream status. - Icecast: configure a profile with the server, port, mount, and source user.
- SHOUTcast: use source mode v1, which is compatible with DNAS v2 servers.
Broadcast audio is encoded as stereo MP3 at 44.1 kHz. New profiles default to 192 kbps. Passwords are stored through keyring, using Windows Credential Manager on Windows or the desktop's Secret Service on Linux, separately from the settings file. FFmpeg is supplied by imageio-ffmpeg for the host platform.
- Windows:
%APPDATA%\RadioStudioPython. - Linux:
$XDG_DATA_HOME/RadioStudioPython, normally~/.local/share/RadioStudioPython. An existing~/RadioStudioPythonprofile from earlier source versions is retained when no XDG profile or explicit XDG location is present. - Portable edition:
RadioStudioPythonDatabeside the executable. If that location is not writable, data is stored in the system user profile above. - Explicit profile:
RADIOSTUDIO_DATA_DIRoverrides these locations on both platforms, including portable mode. It is useful for tests and separate station profiles.
The application profile stores settings, music-library indexes, and history.
Linux filenames are case-sensitive. When moving a library, playlist, or backup between computers, select the corresponding local music folders again; Windows drive letters and Linux mount points are different. Backups do not copy music files or credentials.
- SHOUTcast native v2 source protocol is not implemented; use the supported source mode v1.
- Playback of each audio format depends on the Qt multimedia backend, host codecs, and bundled FFmpeg.
- Elevated and realtime CPU priorities can be refused by the operating system. Linux uses nice levels for regular priorities and round-robin scheduling for realtime; changing these may require additional user permissions. Do not run the whole desktop application as root to change priority.
- Tray support depends on the desktop environment. If a system tray is unavailable, closing the window exits the application; hiding to the tray is disabled.
- Connections to external servers depend on the destination service and its configuration.
Open an issue to report a problem or discuss an idea. Pull requests should explain the change and how it was validated.
Raemi Labs and Raphael Cherfem Carlini maintain the project and control the roadmap and what is accepted into the official repository. A suggestion or pull request does not guarantee acceptance.
The source code is available under the PolyForm Noncommercial License 1.0.0. Copyright belongs to Raemi Labs and Raphael Cherfem Carlini. The license allows noncommercial use, including personal use, research, study, private entertainment, and use by nonprofit organizations, provided its terms and copyright notice are preserved.
The license does not grant commercial use or distribution rights. To request a separate commercial license, contact raphael@raemi.xyz. Forks and derivative works must also comply with the PolyForm license; maintainers retain control of the official repository.
For support, open a GitHub issue or email raphael@raemi.xyz.
