Files
Matteo Benedetto e17dba5857 docs: aggiungi avatar del tema e referenzialo nel README
- preview/avatar.png: emblema 512x512 nello stile del tema (immagine
  generata con IA, non coperta dalle licenze di audio e codice)
- README: mostra l'avatar in testa e chiarisce la licenza dell'immagine
- dist/: tarball aggiornato
2026-09-20 16:28:08 +02:00

9.6 KiB
Raw Permalink Blame History

Voyager — sound theme for KDE Plasma

Voyager

A signal that has been travelling for a very long time

A complete, freedesktop Sound Theme specification compliant sound theme for KDE Plasma 6 (and any other desktop that honours the spec). 61 cues, all of them synthesised from scratch — no sample library, no third-party audio, no attribution burden. The whole theme is reproducible from the script in tools/.

kde-sound-theme-voyager/
├── Voyager/
│   ├── index.theme          # [Sound Theme] + [stereo] OutputProfile
│   └── stereo/              # 61 × Ogg Vorbis 48 kHz stereo
├── tools/
│   ├── gen_sounds.py        # the synthesis engine (reproducible)
│   ├── verify_theme.py      # spec + audio + KDE coverage checks
│   ├── make_preview.py      # rebuilds preview/index.html
│   └── preview_template.html
├── preview/
│   ├── index.html           # player nel browser per ogni cue
│   └── avatar.png           # icona del tema (512×512)
├── LICENSES/
├── Makefile
└── install.sh

Character

Voyager is a probe on the edge of the heliosphere. Voices are pushed through narrowband bandpass filtering, amplitude-modulated by a square tremolo at 9 Hz and quantised to 7 bits with sample-and-hold, so every cue carries the artefacts of a link that is barely holding. Telemetry beep patterns carry the state information; there is a noise floor underneath almost everything.

Motif Used for
Narrowband AM radio burst message, calling, attention
Telemetry beep pattern state, busy, authentication
Square-tremolo degradation every transmission artefact
Low telemetry root, spare bass probe-console character
Sonar sweep with noise floor scan, probe return

Requirements

  • KDE Plasma 6, or any desktop implementing the freedesktop sound theme spec
  • nothing at runtime — the cues are plain Ogg Vorbis files
  • ffmpeg (libvorbis), python3, numpy, scipy only if you want to regenerate the audio

Install

User-local (recommended, no root needed):

git clone https://git.enne2.net/enne2/kde-sound-theme-voyager.git
cd kde-sound-theme-voyager
./install.sh              # copies Voyager/ into ~/.local/share/sounds/

System-wide:

sudo make install-system  # copies Voyager/ into /usr/share/sounds/

Select the theme

System Settings → Colors & Themes → System Sounds → Voyager

Or from the command line:

kwriteconfig6 --file kdeglobals --group Sounds --key Theme Voyager

To go back to the Plasma default:

kwriteconfig6 --file kdeglobals --group Sounds --key Theme ocean

The theme declares Inherits=freedesktop, so any event it does not provide (e.g. multi-channel test signals) falls back to the stock desktop theme instead of going silent.

What is inside

Voyager/index.theme declares the theme, Directories=stereo, OutputProfile=stereo and Example=theme-demo. The Example key is what the Plasma System Sounds KCM uses for its preview button, so theme-demo.oga is a montage of the theme's signatures rather than an arbitrary cue.

Name[it] and Comment[it] are also provided, so Plasma in an Italian locale lists the theme as Voyager. That is a display name only: the theme id — the folder name in ~/.local/share/sounds/ and the value written to kdeglobals — is always Voyager, exactly like KDE's own Ocean theme shows up as Oceano in Italian.

sound name duration size
alarm-clock-elapsed 2.66 s 43.6 KiB
audio-test-signal 1.10 s 21.1 KiB
audio-volume-change 0.13 s 6.7 KiB
battery-caution 1.18 s 22.2 KiB
battery-full 1.05 s 20.4 KiB
battery-low 1.18 s 21.0 KiB
bell-terminal 0.15 s 7.1 KiB
bell-window-system-attention 0.94 s 18.0 KiB
bell-window-system 0.88 s 17.1 KiB
bell 1.26 s 21.3 KiB
button-pressed-modifier 0.12 s 7.1 KiB
button-pressed 0.11 s 6.9 KiB
camera-shutter 0.26 s 9.7 KiB
complete-media-burn 2.26 s 40.0 KiB
complete-media-error 1.72 s 35.1 KiB
complete 0.83 s 16.9 KiB
completion-fail 1.38 s 23.0 KiB
completion-partial 1.12 s 20.2 KiB
completion-rotation 1.68 s 28.2 KiB
completion-success 2.14 s 38.2 KiB
desktop-login 2.90 s 45.4 KiB
desktop-logout 2.20 s 32.7 KiB
device-added 0.64 s 15.5 KiB
device-removed 0.64 s 15.2 KiB
dialog-error-critical 2.32 s 44.2 KiB
dialog-error-serious 1.80 s 36.2 KiB
dialog-error-veryserious 2.70 s 40.2 KiB
dialog-error 1.48 s 32.1 KiB
dialog-information 1.13 s 20.6 KiB
dialog-question 1.14 s 21.9 KiB
dialog-special 1.86 s 35.9 KiB
dialog-warning-auth 1.00 s 19.5 KiB
dialog-warning 1.27 s 22.2 KiB
game-over-loser 2.60 s 47.9 KiB
game-over-winner 3.02 s 54.3 KiB
media-insert-request 0.87 s 17.7 KiB
message-attention 1.16 s 23.7 KiB
message-contact-in 1.05 s 19.4 KiB
message-contact-out 1.05 s 19.3 KiB
message-highlight 0.86 s 18.3 KiB
message-new-email 1.48 s 26.8 KiB
message-new-instant 0.92 s 17.3 KiB
message-sent-instant 0.45 s 10.6 KiB
message 0.80 s 16.6 KiB
network-connectivity-established 1.66 s 30.7 KiB
network-connectivity-lost 1.26 s 22.4 KiB
outcome-failure 1.32 s 29.1 KiB
outcome-success 1.62 s 30.3 KiB
phone-incoming-call 2.44 s 44.3 KiB
phone-outgoing-busy 1.30 s 24.2 KiB
phone-outgoing-calling 1.16 s 23.7 KiB
power-plug 0.78 s 16.0 KiB
power-unplug 0.88 s 18.6 KiB
screen-capture 0.30 s 10.2 KiB
service-login 1.34 s 23.5 KiB
service-logout 1.24 s 22.2 KiB
suspend-error 1.92 s 38.0 KiB
theme-demo 11.39 s 185.1 KiB
trash-empty 0.95 s 19.8 KiB
window-attention 1.43 s 24.4 KiB
window-question 1.04 s 20.6 KiB

Rebuilding from source

The audio is generated, not sampled, so it is fully reproducible:

make generate     # rewrites Voyager/stereo/*.oga from tools/gen_sounds.py
make verify       # spec + audio + KDE coverage checks
make preview      # rebuild preview/index.html
make dist         # build dist/kde-sound-theme-voyager-1.0.0.tar.gz

make verify fails loudly on a clipped sample, a DC offset, a click at a file edge, a wrong sample rate or channel count, a missing stereo directory in Directories=, a broken Example/Inherits reference, and it reports how many of the sound names actually requested by the installed KDE *.notifyrc files the theme resolves.

Design notes

One instrument set, not sixty unrelated beeps

Every cue is assembled from the same small library of motifs — FM bells, sub impacts, band-limited noise sweeps, additive pads, plucked strings, telemetry blips — so the theme reads as a single instrument rather than a folder of noises. The palette below is what turns that library into this theme:

Parameter Voyager
Root E3 — 164.81 Hz
Scale pentatonic (0 2 5 7 9)
FM voice ratio 3.5, index 3.0, index decay 90 ms
Detune ±4 cents, degraded by 7-bit quantisation
Space 1.7 s sparse, grainy hall at low density (a room made mostly of vacuum)

A differentiated reverb bus

A single reverb setting is wrong for a desktop theme: frequent cues (chat, volume, button clicks) would smear into each other during a burst, while rare dramatic cues would sound dry and small. Cues here are assigned one of five reverb classes — from near-dry clicks through a small room up to a vast hall with an extra half-second of tail — by motif, with per-sound overrides. The result is that a chat notification stays crisp and a login blooms.

Loudness-aware normalisation

Peak-normalising every file is not enough: a sparse bell and a dense error cluster end up at wildly different perceived levels. After peak normalisation each cue gets a bounded gain (±6 dB) that pulls the RMS of its active portion towards 16 dBFS, with the peak ceiling always winning. That keeps the theme consistent without introducing clipping.

No clicks

Every cue is high-passed (30130 Hz depending on the class), given a 1.5 ms raised-cosine fade in and a 35 ms fade out before the reverb is applied, so the convolution never sees a discontinuity. make verify enforces this: it rejects any file whose first samples are not at zero.

Licence

  • Audio (Voyager/stereo/*.oga, Voyager/index.theme) — CC BY-SA 4.0, the same licence the KDE sound themes use.
  • Code and documentation (tools/, Makefile, install.sh, preview/, README.md) — BSD-2-Clause.

The sounds are original synthesis; nothing is derived from the KDE Ocean sound theme or any other recording. You may therefore use this theme commercially and adapt it freely, subject to CC BY-SA 4.0's attribution and share-alike terms.

Credits

Created by enne2 (2026). Designed for Plasma 6.3 on Debian 13.

The avatar illustration in preview/avatar.png is an AI-generated image (Google Gemini via Antigravity). It is included only to identify the theme, and is not covered by either grant below: neither the CC BY-SA 4.0 that applies to the audio nor the BSD-2-Clause that applies to the code.