Skip to content

Releases: MrEmoji27/spektr

spektr 0.6.0

Choose a tag to compare

@MrEmoji27 MrEmoji27 released this 25 Sep 23:46

spektr now listens to the music, not just how loud it is. It can tell the
drums apart, feel where each bar begins, and follow the chords, and the
visuals react to the big moments of a song instead of every small sound.

69 visuals (9 new) · 55 colour themes

It follows the song

  • Reacts to the hits that matter. The main beats and hits move the
    picture. Quiet background sounds no longer set it off.
  • Hears the drums. It can tell a kick drum from a snare from a hi-hat.
  • Feels the bar. It knows where each bar of music begins, and says so
    when it can't tell.
  • Follows the chords. It hears the notes being played and works out the
    key of the song.
  • Fast songs, right speed. Songs above 150 beats a minute were read at
    half speed. Not any more.
  • Smooth, but not late. The smooth motion setting still lets the big hits
    punch through straight away.

Nine new visuals

Visual What you see
JP Sequencer a grid of glowing pads, each drum playing its own light show
JP Chords the chord you're hearing, in big letters on a synth display
JP Panel a drum machine's pads lighting up where each drum lands
JP Tracker the song scrolling past: notes on top, drums below
Riptide two sets of waves crossing each other, sparking where they meet
Twin Storms two whirlpools spinning against each other
Arc Storm lightning across the screen, forking on every hit
Shatter a pane of glass that breaks where each hit lands
Locket Beat a heart sending out a steady stream of rings

The older JP meters got a refresh too: colour zones like a car stereo, peak
lights that hold and drop, and a flash on every beat.

Better on the beat

  • Fireworks now launch just before each beat and burst right on it.
  • Pulse and Shooting Star hit harder on the beat.
  • Switching visuals looks cleaner: each kind arrives its own way (bars
    rise, sparks burst, rings ripple) and the old picture fades out. It is also
    faster. The old style is still in settings as "classic".

Lighter on your computer

  • Uses about 90% less memory at start (45 MB, down from 527 MB).
  • Uses less processor time, and drops to a slow idle when nothing is playing.
  • The first switch into a visual no longer stutters.

Easier to install and use

  • One line to install, on Windows, Linux and macOS. On Windows it adds
    spektr to the Start Menu, needs no admin rights, and comes with an
    uninstaller.
  • Also on PyPI, for people who use Python: pip install spektr-audio.
  • A clearer settings panel. One line per setting, and a plain explanation
    of the one you're on.
  • A clearer help screen (press h): what every key does, and your
    current settings.
  • Friendlier typing mistakes. Mistype a visual's name and spektr suggests
    the right one.

For people who build their own visuals: the new sounds spektr can hear (drums,
bar, chords, key) are available to plugins too.

Not yet

  • Spotting build-ups and drops is built but switched off until it has been
    tested on more music.
  • Saving a picture of the screen, themes from album art, and recovering on
    its own when no audio device is found are still to come.

Next

0.6.5 brings spektr to macOS properly, with no extra audio setup needed.

Which file

You have Do this
Windows paste into PowerShell: irm https://raw.githubusercontent.com/MrEmoji27/spektr/main/install.ps1 | iex
Windows, no install download spektr.exe and double-click it
Windows, classic installer spektr-0.6.0.0-setup.exe
Linux or macOS paste into a terminal: curl -fsSL https://raw.githubusercontent.com/MrEmoji27/spektr/main/install.sh | sh
Linux, no install download spektr, then chmod +x spektr and run it. Needs Ubuntu 18.10, Debian 10, Fedora 29 or newer
Python pip install spektr-audio
Android spektr-android-0.4.0-arm64-v8a.apk, Android 10 or newer

Windows may warn the first time because the app isn't signed: choose More
info
, then Run anyway.

spektr 0.5.5

Choose a tag to compare

@MrEmoji27 MrEmoji27 released this 20 Sep 18:00

No new modes this time, and no new themes. 0.5.5 is the release that makes
spektr lighter, smoother and harder to break — the groundwork for what comes
next.

74 modes, 55 themes, both unchanged.

Eco mode, for machines that can't keep up

A new eco setting in the settings panel: 30 frames a second, fewer bars,
and shuffle staying away from the visuals your machine has been measured
struggling with. It is off until you turn it on — spektr does not decide this
for you.

Which visuals it avoids is measured here, on your machine, at your window
size, rather than read from a list: the same visual can be cheap in a small
window and far too slow fullscreen.

Honest about the rest: most of spektr's processor time goes on pushing frames
through the interface framework, not on drawing the visuals, and that has not
changed in this release. Measured here, the heaviest visual at a fullscreen
size still costs more than a frame's worth of time. The groundwork is done and
measured — see the note at the end — and the work itself is 0.6.x.

Shuffle fades instead of cutting

Shuffle used to jump straight to the next visual. Now the old picture
dissolves into the new one over about half a second, dot by dot. Pressing m
or picking from the list still switches instantly — a key press should feel
immediate.

You can also have shuffle wait for the song to change instead of watching a
clock. The settings panel says when the computer cannot provide now-playing
information, so that option never fails silently.

Linux: it starts on older systems again

The Linux binary was built on too new a system and refused to start on older
ones with a GLIBC error. It's now built for glibc 2.28 — Ubuntu 18.10,
Debian 10, Fedora 29 and anything newer — and every release is started on
Ubuntu 20.04 before it ships, so this can't quietly come back.

It hears the first beat now

A track's first hit used to be invisible. The detector compares each moment
with the one before it, and at the start of a track there is nothing before —
so the first kick after silence was never found, on every track, every time.
It is found now, and the same fix covers starting again after a pause.

spektr also used to assume every sound card runs at 48 kHz. On a 96 kHz device
every timing inside the beat detector meant half as long as it should, and
detection suffered for it: on the test corpus, accuracy rises from 0.888 to
0.905 and the hardest case — hi-hats close behind a drum — from 0.48 to 0.63.
At 44.1 and 48 kHz nothing changes.

Your settings stay put

If you went back to an older spektr, it used to quietly erase any setting it
didn't recognise. It keeps them now.

And if you run the tests from a checkout, they no longer overwrite your own
settings — they used to, because the tests open the app, and the app saves
when it closes.

Under the hood

Nothing here changes what you see, and that's checked rather than hoped for:
all 74 modes are recorded drawing a fixed piece of audio, and anything that
alters a picture fails the build. A 0.5.0 config folder — settings, loadouts,
a theme, a plugin — has to survive an upgrade untouched, and every flag and
key is pinned too.

Behind that, the project is now organised into clear parts. Audio capture,
analysis, modes, the interface and the command line live in focused packages
behind the same compatibility surface. Mode code loads only as it is needed,
and the running visualiser keeps a moving five-mode window — the current mode
and the next four in the same familiar order — rather than retaining state for
every mode visited in a long session.

For plugin authors

Nothing you use changes: spektr.api keeps every name, and the mode contract
and plugin version stay as they are. If you import from somewhere inside
spektr instead of spektr.api, that still works here, but move across — those
paths go away in 0.6.5.

One for the curious

The reason eco exists rather than a blanket speed-up: measured at a large
terminal size, building a frame costs about 1.4 ms and turning it into the
text a terminal understands costs 0.07 ms — while the whole app spends around
80% of a processor core. Nearly all of that goes on the interface framework
between those two steps. Replacing that path is the single biggest thing
spektr can do for old hardware, and it is too large a change to rush into a
release whose first rule is that nothing breaks.

Next

0.6.0 is about hearing the music rather than its volume: kick, snare and hat
apart from each other, where the bar begins, build-ups and drops, colour that
follows the key — with new JP meters built on top, and spektr on PyPI so pip
can install it.

Which file

you have download
Windows, no Python spektr.exe, portable, double-click
Windows, one line in PowerShell irm https://github.com/MrEmoji27/spektr/releases/latest/download/spektr.exe -OutFile spektr.exe; ./spektr.exe
Windows, want a Start Menu entry spektr-0.5.5.0-setup.exe
Linux, no Python spektr, chmod +x and run. Needs glibc 2.28 or newer
Android spektr-android-0.4.0-arm64-v8a.apk, Android 10+, 64-bit ARM
Python already clone and pip install -e ., not on PyPI yet

The Windows and Linux builds are unsigned. SmartScreen will warn on first run:
More info, then Run anyway.

spektr 0.5.0

Choose a tag to compare

@MrEmoji27 MrEmoji27 released this 15 Sep 03:46

spektr 0.5.0 adds a spinning tunnel and a family of car-audio meters, draws every
theme in its real colours, and — if you want it — lets your terminal's
transparency show through again.

57 modes → 61. Themes stay at 55.

Crosscurrent — a tunnel going both ways

Round rings rush out toward you while eight-sided rings are drawn in toward
the centre, in the same tunnel at the same time. Where the two meet, the ring
flares — a spark that slides around it.

The whole tunnel spins, and the music drives the spin: it turns faster with
the tempo and speeds up when the track gets busy, then coasts back down when
it calms. When a part of the spectrum jumps, the spokes in that part flicker
on the beat — the lines really break into dashes and back, not just change
colour — and a hard hit sends that flicker sweeping around the tunnel.

Bass pushes the outward rings, treble pulls the inward ones. In silence it
slows to a gentle drift.

Three JP meters

A new family inspired by Japanese car audio hardware: the segmented LED level
meters on in-dash head units and equalisers, with every LED drawn — lit or
not.

  • JP Bars — a segmented meter whose tops break off and float up as
    the bars rise.
  • JP Drift — the meter as a sandpile. Bulbs pile up, and on the beat
    the tall columns collapse and pour into their neighbours.
  • JP Pulse — the meter bent into a dial, with a light that chases
    around it on the beat.

All three go dark when the music stops.

Note: the JP modes are new and not final. They may be changed, improved,
reworked or removed, and more modes will join this family in the next major
release.

Every theme in its real colours

In 0.4.5 the empty space in the visualizer showed your terminal's own
background instead of the theme's — so gruvbox sat on whatever colour your
terminal uses, and a light theme like flexoki-light could end up on a dark
screen. Now the theme's background fills the whole picture, in any terminal.

Want your see-through terminal back? Settings → background

That fix makes a transparent terminal look solid. If you liked seeing your
desktop through spektr, open settings (c) and set background to
terminal (see-through), or start spektr with --background terminal. It
switches instantly and is remembered.

It is off by default for a reason: a light theme over a dark terminal will
look pale, because the theme no longer decides what is behind the lines. Modes
that fill the screen with colour, like Plasma or Chladni, keep their colours
and only their empty areas turn see-through. The header and footer stay solid
either way.

Tunnel and Tunnel In, cleaned up

The tunnels are now drawn as clean, even lines. The spokes run straight into
the centre and fade out as they meet, instead of bending, breaking into dots,
or leaving a messy blob in the middle. The rings stay thin lines even when
they are loud. They also run faster.

A darker, calmer night sky

The four cosmos modes were reworked so the sky stays dark and the music shows
up as events.

  • Shooting Star throws meteors on hard hits, not on every hi-hat, and
    nothing flies across a quiet part or after the music stops.
  • Constellations draws neat figures of a few lines instead of tangled
    knots, and old figures fade sooner.
  • Star Trails no longer fills the screen with arcs.
  • Supernova saves its explosion for a real hit instead of going off on a
    timer at the start of a song.

Faint stars and fading trails now actually look faint on every theme.

No more torn frames on Windows

On Windows Terminal, spektr could sometimes show the top half of one frame
with the bottom half of the next, which looked like lines breaking. spektr now
asks the terminal to show each frame only once it is complete, so that is
gone.

Android

The APK is now v0.4.0. It carries the new engine, so Crosscurrent and
the three JP meters are in the picker, and the tunnels and night-sky
modes have their new look. (The see-through background and the torn-frame fix
are terminal features, so they do not apply to the app.)

The APK keeps its own version number because the Android port has had fewer
releases than the desktop app.

For plugin authors

If your mode returns a background colour array, background index 0 now
means "nothing here": with the see-through background on, those cells are left
to the terminal. Every other index keeps its colour. See
docs/plugins.md.

Full changelog


Which file

you have download
Windows, no Python spektr.exe — portable, double-click
Windows, one line in PowerShell irm https://github.com/MrEmoji27/spektr/releases/latest/download/spektr.exe -OutFile spektr.exe; ./spektr.exe
Windows, want a Start Menu entry spektr-0.5.0.0-setup.exe
Linux, no Python spektr — chmod +x and run
Android spektr-android-0.4.0-arm64-v8a.apk — Android 10+, 64-bit ARM
Python already clone and pip install -e . — not on PyPI yet

The Windows and Linux builds are unsigned. SmartScreen will warn on first run:
More info → Run anyway.


Windows — no Python needed.

  • spektr.exe — portable. Download, double-click. A black console
    window opening is normal: spektr is a terminal program.
  • spektr-*-setup.exe — installer with Start Menu shortcuts and an
    uninstaller. Starts faster than the portable build.

Both are unsigned, so Windows SmartScreen may warn on first run:
More info → Run anyway.

Linux (Ubuntu/Arch/Fedora/etc.) — no Python needed.

  • spektr — portable native binary. Download, chmod +x spektr, run it from a
    terminal. It is a terminal program, so launch it from a terminal window.
  • Built on Ubuntu 22.04 (glibc), the oldest target the runner offers, so it runs
    on most modern distros.
  • Needs your system audio libs: libpulse.so and PortAudio.
    Debian/Ubuntu: sudo apt install libportaudio2. Arch: sudo pacman -S portaudio
    (PipeWire exposes pulse via pipewire-pulse). Fedora: sudo dnf install portaudio.

Android — Android 10 or newer, 64-bit ARM.

The APK reports v0.4.0, which is the
Android build's own version — it ships inside this release rather
than sharing its number, because the port has had fewer versions
than the desktop app.

  • spektr-android-*-arm64-v8a.apk — sideload it. You will need to
    allow installs from your browser or file manager the first time.

It captures what your device is playing, which needs the screen
recording permission as well as the microphone one: Android has no
separate "record the audio only" consent. Nothing leaves the device.

spektr 0.4.5

Choose a tag to compare

@MrEmoji27 MrEmoji27 released this 29 Aug 04:00

spektr now lets you choose which visualisers you actually want, has five new
ones, four 3D scenes on Android, and a logo.

52 modes → 57. Themes stay at 55.

One line to install it on Windows

irm https://github.com/MrEmoji27/spektr/releases/latest/download/spektr.exe -OutFile spektr.exe; ./spektr.exe

Paste that into PowerShell and spektr downloads and starts. No Python, no
installer, nothing added to your system — it just puts spektr.exe in the
folder you ran it from, so deleting that file is the uninstall.

There is still an installer below if you would rather have a Start Menu entry.

Pick the ones you like — press l

Fifty-seven modes is a lot to press m through when you only love four of
them. l opens a list of every mode with a tickbox next to each. Tick the
ones you want; from then on those are the only ones the app offers you — the
picker, the m key and shuffle all follow it.

Press s in that list to give your selection a name and keep it. Named sets
show up as ★ rows at the top; space loads one back, d deletes it. They
remember modes only, so loading one never changes your theme or your settings.

If you tick everything, nothing is restricted — which is how it starts, so
your setup works exactly as it did until you narrow it yourself.

This replaces the old preset keys. A preset used to save your mode, theme,
frame rate, bands, sensitivity and gate all together, which meant loading one
quietly changed four things you hadn't asked it to. Your old presets.json
is left alone on disk, just no longer used.

Press h for help — it was rewritten to say what things are, not just list
keys.

A logo, by Roshan (RRDOJ)

spektr has a proper mark now, drawn by Roshan (RRDOJ): a terminal prompt —
> above _ — built out of spectrum bars, coloured cyan through violet to
red the way the frequency range runs.

It replaces the old icon everywhere, including a full set of Android launcher
icons that theme themselves with your wallpaper.

Five new modes

  • Swell and Terra draw a landscape instead of a bar chart, and the
    music moves the terrain.
  • Star Trails is a long exposure of a night sky turning overhead.
  • Constellations joins stars into a figure that grows as the track goes on.
  • Supernova waits, mostly dark, and spends everything on one hit.

Shooting Star was reworked too. Meteors now come in from the edge of the
screen and cross it, instead of appearing halfway through their own flight.

Android: four 3D worlds

The Android build has four new scenes — Metaball, Wormhole,
Monolith and Lattice — real 3D, drawn by the GPU, filling the whole
screen. They replace the old terrain view, which only ever managed a strip of
landscape floating in a black frame.

They also run far lighter than what came before, and every one of spektr's
themes colours them.

The APK has its own version number, v0.3.0, because the port has had three
versions and the desktop app has had more. It ships inside this release.

Fixes

  • Star Trails used to fill the screen with solid white after a few
    seconds. Three separate bugs, all pulling the same way. Fixed.
  • Maelstrom looked much thicker on a slow display than a fast one. Now it
    looks the same on both.
  • The bars no longer smear into each other on a very wide terminal.

A slower feel, if you want one

Settings (c) has a new motion row. snappy is what spektr has always
done and stays the default. glide is lazier — bars rise slowly, fall for
about a second, and lean into their neighbours. It only changes how the
picture moves, never what spektr hears.

It works the same way on Android.

Linux (Ubuntu/Arch/Fedora/etc.) — no Python needed.

  • spektr — portable native binary. Download, chmod +x spektr, run it from a
    terminal. It is a terminal program, so launch it from a terminal window.
  • Built on Ubuntu 22.04 (glibc), the oldest target the runner offers, so it runs
    on most modern distros.
  • Needs your system audio libs: libpulse.so and PortAudio.
    Debian/Ubuntu: sudo apt install libportaudio2. Arch: sudo pacman -S portaudio
    (PipeWire exposes pulse via pipewire-pulse). Fedora: sudo dnf install portaudio.

Windows — no Python needed.

  • spektr.exe — portable. Download, double-click. A black console
    window opening is normal: spektr is a terminal program.
  • spektr-*-setup.exe — installer with Start Menu shortcuts and an
    uninstaller. Starts faster than the portable build.

Both are unsigned, so Windows SmartScreen may warn on first run:
More info → Run anyway.

Linux (Ubuntu/Arch/Fedora/etc.) — no Python needed.

  • spektr — portable native binary. Download, chmod +x spektr, run it from a
    terminal. It is a terminal program, so launch it from a terminal window.
  • Built on Ubuntu 22.04 (glibc), the oldest target the runner offers, so it runs
    on most modern distros.
  • Needs your system audio libs: libpulse.so and PortAudio.
    Debian/Ubuntu: sudo apt install libportaudio2. Arch: sudo pacman -S portaudio
    (PipeWire exposes pulse via pipewire-pulse). Fedora: sudo dnf install portaudio.

spektr 0.4.0

Choose a tag to compare

@MrEmoji27 MrEmoji27 released this 18 Aug 08:22

Windows, Linux and Android, all prebuilt and attached below — no Python
needed on any of them. That is the first release where every platform ships a
binary; macOS still runs from source.

44 modes → 65. 49 themes → 55.

Onset detection

Before this release, anything that reacted to a beat was reacting to bass
energy, because that was the only thing available. A kick and a sustained low
note look the same to a level meter.

spektr/analysis.py now has a real detector: spectral flux, log compression,
adaptive median/MAD thresholding, per-sub-band peak picking, refractory,
adaptive whitening, two region gates, and a rescue arm for hits masked by the
drum in front of them.

Scored against an 11-scenario corpus at ±50 ms with one-to-one matching:
P 1.000, R 0.940, F 0.969. The build fails if that drops. Precision
matters more than recall here — flashing on a beat that did not happen is
worse than missing a quiet one.

Modes read it through ctx.onsets (beats since the mode's last frame),
ctx.onset_strength (how hard), ctx.pulse (a beat-locked decay, for modes
that would otherwise freeze between hits) and ctx.drive (how percussive the
signal is, per hop, safe at any frame rate).

Subcell rendering

A terminal cell is one character in one colour. The Unicode octant block gives
eight lit regions per cell in two colours, so a curve can land inside a cell
instead of on its boundary.

Twelve modes have an (o) variant that uses it: Scope, ECG, Sonar, Radial,
Plasma, Maelstrom, Valentine, Kaleidoscope, Kaleidoscope Ultra, and the three
Chladni modes.

Fonts are patchy about the block, which is why this is opt-in. Turn it on in
Settings (c). spektr --glyph-test prints every glyph the app can emit so
you can check yours first, the eight patterns fonts most often lack are never
emitted, and there is a (q) quadrant fallback for fonts with no octants at
all.

Android

Same engine, same modes, same themes, on a tablet. It lives in this repository
under android/ and the APK is attached below. It carries its own version
number — 0.2.0, because the port has had two versions — and ships inside this
release.

It visualises the device it runs on. Android has no way for one device to read
another's audio, so a tablet running spektr shows the tablet, not your PC.

Modes and themes

New: Shooting Star, Snow, Valentine, Locket, Kaleidoscope, Tunnel In, Dither,
Dither Storm, Dither Storm Extreme. Removed: Flipbook.

New themes: emerald, sapphire, amethyst, citrine, tangerine, indigo.

Performance

make_strips encodes the whole grid in one pass instead of row by row. Ten
modes were rebuilt around what was actually costing: Radial, Dune, Ember,
Vinyl, Arcs, Pulse, Auroras, Tunnel, Scatter, Kaleidoscope. Four moved to
float32. The colour block coarsens sooner so a large terminal stays playable.

tests/bench.py can fail now. It had printed every number needed to catch a
mode sitting at 10.8 ms against a 16.7 ms budget for the project's whole life,
and nothing read them.

Known: Chladni Extreme (o) measures 16.5–17.2 ms at 400x100, so at a
maximised window on a large screen it will not hold 60 fps. It is an opt-in
variant and the widget reuses frames past 11 ms, so it drops frame rate rather
than stalling.

Fixed

  • The analysis hop rate was tied to the capture block size, so changing audio
    device changed the rhythm reading.
  • Non-finite samples reached the FFT. Zeroed at the ring buffer now.
  • d leaked a thread on every press.
  • The status line's audio gate disagreed with the analyser's, so the app could
    report silence while drawing.
  • The goniometer's geometry was wrong.
  • A 1-D stereo buffer crashed the scope and stereo modes.
  • make_strips divided by a zero-width grid; Flame divided by a zero flame
    width.

Also

h opens a help panel generated from the key bindings. The mode picker lists
names instead of prose. The theme editor can pick a colour, not just nudge
one. Tests run on every push, and tagging a release builds the Windows exe,
the installer, the Linux binary and the APK from one tag.

Full changelog


Which file

you have download
Windows, no Python spektr.exe — portable, double-click
Windows, want a Start Menu entry spektr-0.4.0.0-setup.exe
Linux, no Python spektr — chmod +x and run
Android spektr-android-0.2.0-arm64-v8a.apk — Android 10+, 64-bit ARM
Python already clone and pip install -e . — not on PyPI yet

The Windows and Linux builds are unsigned. SmartScreen will warn on first run:
More info → Run anyway.

v0.3.0

Choose a tag to compare

@MrEmoji27 MrEmoji27 released this 08 Aug 20:46

v0.3.0

Why 0.3.0 and not 0.2.2

Two things in here are too big to call a patch.

The mode list went from 29 to 44. Sixteen new render modes, one removed. That
is half again as much as 0.2.1 shipped with.

The analyser runs twice as often. The stride dropped from 512 samples to 256,
so spektr now takes ~188 readings a second instead of ~94. Every mode in the
program reacts to a different signal than it did before — faster to a transient,
tighter on a kick. Nothing looks broken, but nothing looks quite the same either,
and that is not something to slip out in a patch release.

New modes

Fields

  • Chladni — a vibrating-plate figure, on integer plate modes
  • Chladni Flow — the same figure, morphing between modes instead of snapping
  • Chladni Extreme — driven far past what a real plate would survive, with a
    beat-driven punch tuned for EDM and funk
  • Maelstrom — a real 2D incompressible fluid sim stirred by the music: Jos
    Stam's stable-fluids solver, carrying a velocity and dye field across frames

Particles

  • Orbit — Keplerian ellipses, not a wheel of dots; loudness drives eccentricity
  • Murmuration — real boid flocking, with separation, alignment and cohesion
  • Fireworks — discrete triggered events instead of a continuous field
  • Dune — height that accumulates rather than a level that is redrawn

Lo-fi

  • Vinyl — a turntable whose grooves are the spectrum, read from the label out
  • Rain — weather that tracks the track, in density and fall speed
  • Ember — a coal bed whose heat is the spectrum, band by band across the width

Scenes

  • Keys — a piano roll, not another bar chart
  • Boot — a monochrome terminal replaying the moment a machine powers on
  • Flipbook — plays back a real ASCII animation from a folder of numbered
    .txt frames you drop into <config>/ascii/, advanced at a rate the music
    sets, with three effects: lit, warp and dissolve

Stereo / spectrum

  • Helix — a corkscrew, not a flat trace
  • Readout — every level as text, not as a shape

Rebuilt

  • Auroras — a ribbon with a bright lower rim, instead of vertical striation
  • Arcs — peak-hold rings
  • Pulse — more reactive and cheaper per frame
  • Bubbles — the surface line is now continuous at every terminal size, not
    only in fullscreen

New features

  • Live theme editor. Build and edit a theme inside the app from the c
    settings panel and save it to disk. No config file, no restart.
  • Unlimited frame rate. Detects your display's refresh rate per platform and
    runs at it. Stored as an intent rather than a number, so moving the terminal to
    another monitor picks up that monitor's rate. Experimental.
  • Shuffle scope. s still turns shuffle on and off; the settings panel now
    chooses what it cycles — modes, themes, or both.
  • Two new themes, hot-pink and ruby. 47 → 49. None were removed.

Removed

  • Skyline. If it was your saved mode, spektr starts on Bars instead.

Under the hood

  • Analysis stride halved (HOP 512 → 256), doubling the analysis rate to
    187.5/sec at 48 kHz
  • Per-theme run-length-encoding tolerance in the renderer — themes with closely
    spaced ramp colours now collapse runs that used to be emitted one cell at a time
  • Vectorisation and frame-cost passes across the particle and field modes

Upgrading

Your config.json carries over. New keys take their defaults, and nothing needs
editing by hand.

  • shuffle: true from 0.2.1 keeps doing what it did. The new scope defaults to
    cycling both modes and themes, which is what s always did.
  • A saved mode that no longer exists falls back to Bars rather than failing.
  • No themes were removed, so a saved theme is unaffected.

Linux (Ubuntu/Arch/Fedora/etc.) — no Python needed.

  • spektr — portable native binary. Download, chmod +x spektr, run it from a
    terminal. It is a terminal program, so launch it from a terminal window.
  • Built on Ubuntu 22.04 (glibc), the oldest target the runner offers, so it runs
    on most modern distros.
  • Needs your system audio libs: libpulse.so and PortAudio.
    Debian/Ubuntu: sudo apt install libportaudio2. Arch: sudo pacman -S portaudio
    (PipeWire exposes pulse via pipewire-pulse). Fedora: sudo dnf install portaudio.

Windows — no Python needed.

  • spektr.exe — portable. Download, double-click. A black console
    window opening is normal: spektr is a terminal program.
  • spektr-*-setup.exe — installer with Start Menu shortcuts and an
    uninstaller. Starts faster than the portable build.

Both are unsigned, so Windows SmartScreen may warn on first run:
More info → Run anyway.

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 06 Aug 19:07

Windows — no Python needed.

  • spektr.exe — portable. Download, double-click. A black console
    window opening is normal: spektr is a terminal program.
  • spektr-*-setup.exe — installer with Start Menu shortcuts and an
    uninstaller. Starts faster than the portable build.

Both are unsigned, so Windows SmartScreen may warn on first run:
More info → Run anyway.

Linux (Ubuntu/Arch/Fedora/etc.) — no Python needed.

  • spektr — portable native binary. Download, chmod +x spektr, run it from a
    terminal. It is a terminal program, so launch it from a terminal window.
  • Built on Ubuntu 22.04 (glibc), the oldest target the runner offers, so it runs
    on most modern distros.
  • Needs your system audio libs: libpulse.so and PortAudio.
    Debian/Ubuntu: sudo apt install libportaudio2. Arch: sudo pacman -S portaudio
    (PipeWire exposes pulse via pipewire-pulse). Fedora: sudo dnf install portaudio.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 02 Aug 19:11

Windows — no Python needed.

  • spektr.exe — portable. Download, double-click. A black console
    window opening is normal: spektr is a terminal program.
  • spektr-*-setup.exe — installer with Start Menu shortcuts and an
    uninstaller. Starts faster than the portable build.

Both are unsigned, so Windows SmartScreen may warn on first run:
More info → Run anyway.