Releases: dataO1/Mesh
Release list
Mesh v0.9.13-rc.9
Installation
Linux (.deb)
Download the .deb package for your system:
- mesh-player — Performance mode (4-deck stem player)
- mesh-cue — Editing mode (waveform editor, analysis, stem separation)
- mesh-cue-cuda — Editing mode with NVIDIA GPU acceleration
sudo dpkg -i mesh-player_*.deb mesh-cue_*.deb
# Install dependencies if needed:
sudo apt-get install -fRequirements: PipeWire (Ubuntu 22.04+, Fedora 34+) or JACK2, glibc 2.35+
Windows (.zip)
Extract the zip and run the .exe directly. No installation required.
GPU acceleration via DirectML (any DirectX 12 GPU).
NixOS / Nix
Run directly (x86_64-linux):
nix run github:dataO1/Mesh#mesh-player
nix run github:dataO1/Mesh#mesh-cueaarch64-linux (Orange Pi 5 / embedded): A pre-built binary cache is published to GitHub Pages with every release. Configure the cache and update:
# /etc/nix/nix.conf (or flake nixConfig)
extra-substituters = https://datao1.github.io/Mesh/
extra-trusted-public-keys = mesh-embedded:vLo1l3Abp0Uzcn21wR3oXvmZxZb1Z1rbk+ggTOIGmeQ=
# Update an embedded device
nixos-rebuild switch --flake github:dataO1/Mesh#mesh-embedded --no-write-lock-fileML models are downloaded automatically on first use.
No changelog entry for this version.
Mesh v0.9.13-rc.8
Installation
Linux (.deb)
Download the .deb package for your system:
- mesh-player — Performance mode (4-deck stem player)
- mesh-cue — Editing mode (waveform editor, analysis, stem separation)
- mesh-cue-cuda — Editing mode with NVIDIA GPU acceleration
sudo dpkg -i mesh-player_*.deb mesh-cue_*.deb
# Install dependencies if needed:
sudo apt-get install -fRequirements: PipeWire (Ubuntu 22.04+, Fedora 34+) or JACK2, glibc 2.35+
Windows (.zip)
Extract the zip and run the .exe directly. No installation required.
GPU acceleration via DirectML (any DirectX 12 GPU).
NixOS / Nix
Run directly (x86_64-linux):
nix run github:dataO1/Mesh#mesh-player
nix run github:dataO1/Mesh#mesh-cueaarch64-linux (Orange Pi 5 / embedded): A pre-built binary cache is published to GitHub Pages with every release. Configure the cache and update:
# /etc/nix/nix.conf (or flake nixConfig)
extra-substituters = https://datao1.github.io/Mesh/
extra-trusted-public-keys = mesh-embedded:vLo1l3Abp0Uzcn21wR3oXvmZxZb1Z1rbk+ggTOIGmeQ=
# Update an embedded device
nixos-rebuild switch --flake github:dataO1/Mesh#mesh-embedded --no-write-lock-fileML models are downloaded automatically on first use.
No changelog entry for this version.
Mesh v0.9.13-rc.7
Installation
Linux (.deb)
Download the .deb package for your system:
- mesh-player — Performance mode (4-deck stem player)
- mesh-cue — Editing mode (waveform editor, analysis, stem separation)
- mesh-cue-cuda — Editing mode with NVIDIA GPU acceleration
sudo dpkg -i mesh-player_*.deb mesh-cue_*.deb
# Install dependencies if needed:
sudo apt-get install -fRequirements: PipeWire (Ubuntu 22.04+, Fedora 34+) or JACK2, glibc 2.35+
Windows (.zip)
Extract the zip and run the .exe directly. No installation required.
GPU acceleration via DirectML (any DirectX 12 GPU).
NixOS / Nix
Run directly (x86_64-linux):
nix run github:dataO1/Mesh#mesh-player
nix run github:dataO1/Mesh#mesh-cueaarch64-linux (Orange Pi 5 / embedded): A pre-built binary cache is published to GitHub Pages with every release. Configure the cache and update:
# /etc/nix/nix.conf (or flake nixConfig)
extra-substituters = https://datao1.github.io/Mesh/
extra-trusted-public-keys = mesh-embedded:vLo1l3Abp0Uzcn21wR3oXvmZxZb1Z1rbk+ggTOIGmeQ=
# Update an embedded device
nixos-rebuild switch --flake github:dataO1/Mesh#mesh-embedded --no-write-lock-fileML models are downloaded automatically on first use.
No changelog entry for this version.
Mesh v0.9.13-rc.6
Installation
Linux (.deb)
Download the .deb package for your system:
- mesh-player — Performance mode (4-deck stem player)
- mesh-cue — Editing mode (waveform editor, analysis, stem separation)
- mesh-cue-cuda — Editing mode with NVIDIA GPU acceleration
sudo dpkg -i mesh-player_*.deb mesh-cue_*.deb
# Install dependencies if needed:
sudo apt-get install -fRequirements: PipeWire (Ubuntu 22.04+, Fedora 34+) or JACK2, glibc 2.35+
Windows (.zip)
Extract the zip and run the .exe directly. No installation required.
GPU acceleration via DirectML (any DirectX 12 GPU).
NixOS / Nix
Run directly (x86_64-linux):
nix run github:dataO1/Mesh#mesh-player
nix run github:dataO1/Mesh#mesh-cueaarch64-linux (Orange Pi 5 / embedded): A pre-built binary cache is published to GitHub Pages with every release. Configure the cache and update:
# /etc/nix/nix.conf (or flake nixConfig)
extra-substituters = https://datao1.github.io/Mesh/
extra-trusted-public-keys = mesh-embedded:vLo1l3Abp0Uzcn21wR3oXvmZxZb1Z1rbk+ggTOIGmeQ=
# Update an embedded device
nixos-rebuild switch --flake github:dataO1/Mesh#mesh-embedded --no-write-lock-fileML models are downloaded automatically on first use.
No changelog entry for this version.
Mesh v0.9.13-rc.5
Installation
Linux (.deb)
Download the .deb package for your system:
- mesh-player — Performance mode (4-deck stem player)
- mesh-cue — Editing mode (waveform editor, analysis, stem separation)
- mesh-cue-cuda — Editing mode with NVIDIA GPU acceleration
sudo dpkg -i mesh-player_*.deb mesh-cue_*.deb
# Install dependencies if needed:
sudo apt-get install -fRequirements: PipeWire (Ubuntu 22.04+, Fedora 34+) or JACK2, glibc 2.35+
Windows (.zip)
Extract the zip and run the .exe directly. No installation required.
GPU acceleration via DirectML (any DirectX 12 GPU).
NixOS / Nix
Run directly (x86_64-linux):
nix run github:dataO1/Mesh#mesh-player
nix run github:dataO1/Mesh#mesh-cueaarch64-linux (Orange Pi 5 / embedded): A pre-built binary cache is published to GitHub Pages with every release. Configure the cache and update:
# /etc/nix/nix.conf (or flake nixConfig)
extra-substituters = https://datao1.github.io/Mesh/
extra-trusted-public-keys = mesh-embedded:vLo1l3Abp0Uzcn21wR3oXvmZxZb1Z1rbk+ggTOIGmeQ=
# Update an embedded device
nixos-rebuild switch --flake github:dataO1/Mesh#mesh-embedded --no-write-lock-fileML models are downloaded automatically on first use.
No changelog entry for this version.
Mesh v0.9.13-rc.4
Installation
Linux (.deb)
Download the .deb package for your system:
- mesh-player — Performance mode (4-deck stem player)
- mesh-cue — Editing mode (waveform editor, analysis, stem separation)
- mesh-cue-cuda — Editing mode with NVIDIA GPU acceleration
sudo dpkg -i mesh-player_*.deb mesh-cue_*.deb
# Install dependencies if needed:
sudo apt-get install -fRequirements: PipeWire (Ubuntu 22.04+, Fedora 34+) or JACK2, glibc 2.35+
Windows (.zip)
Extract the zip and run the .exe directly. No installation required.
GPU acceleration via DirectML (any DirectX 12 GPU).
NixOS / Nix
Run directly (x86_64-linux):
nix run github:dataO1/Mesh#mesh-player
nix run github:dataO1/Mesh#mesh-cueaarch64-linux (Orange Pi 5 / embedded): A pre-built binary cache is published to GitHub Pages with every release. Configure the cache and update:
# /etc/nix/nix.conf (or flake nixConfig)
extra-substituters = https://datao1.github.io/Mesh/
extra-trusted-public-keys = mesh-embedded:vLo1l3Abp0Uzcn21wR3oXvmZxZb1Z1rbk+ggTOIGmeQ=
# Update an embedded device
nixos-rebuild switch --flake github:dataO1/Mesh#mesh-embedded --no-write-lock-fileML models are downloaded automatically on first use.
No changelog entry for this version.
Mesh v0.9.13-rc.3
Installation
Linux (.deb)
Download the .deb package for your system:
- mesh-player — Performance mode (4-deck stem player)
- mesh-cue — Editing mode (waveform editor, analysis, stem separation)
- mesh-cue-cuda — Editing mode with NVIDIA GPU acceleration
sudo dpkg -i mesh-player_*.deb mesh-cue_*.deb
# Install dependencies if needed:
sudo apt-get install -fRequirements: PipeWire (Ubuntu 22.04+, Fedora 34+) or JACK2, glibc 2.35+
Windows (.zip)
Extract the zip and run the .exe directly. No installation required.
GPU acceleration via DirectML (any DirectX 12 GPU).
NixOS / Nix
Run directly (x86_64-linux):
nix run github:dataO1/Mesh#mesh-player
nix run github:dataO1/Mesh#mesh-cueaarch64-linux (Orange Pi 5 / embedded): A pre-built binary cache is published to GitHub Pages with every release. Configure the cache and update:
# /etc/nix/nix.conf (or flake nixConfig)
extra-substituters = https://datao1.github.io/Mesh/
extra-trusted-public-keys = mesh-embedded:vLo1l3Abp0Uzcn21wR3oXvmZxZb1Z1rbk+ggTOIGmeQ=
# Update an embedded device
nixos-rebuild switch --flake github:dataO1/Mesh#mesh-embedded --no-write-lock-fileML models are downloaded automatically on first use.
No changelog entry for this version.
Mesh v0.9.13-rc.2
Installation
Linux (.deb)
Download the .deb package for your system:
- mesh-player — Performance mode (4-deck stem player)
- mesh-cue — Editing mode (waveform editor, analysis, stem separation)
- mesh-cue-cuda — Editing mode with NVIDIA GPU acceleration
sudo dpkg -i mesh-player_*.deb mesh-cue_*.deb
# Install dependencies if needed:
sudo apt-get install -fRequirements: PipeWire (Ubuntu 22.04+, Fedora 34+) or JACK2, glibc 2.35+
Windows (.zip)
Extract the zip and run the .exe directly. No installation required.
GPU acceleration via DirectML (any DirectX 12 GPU).
NixOS / Nix
Run directly (x86_64-linux):
nix run github:dataO1/Mesh#mesh-player
nix run github:dataO1/Mesh#mesh-cueaarch64-linux (Orange Pi 5 / embedded): A pre-built binary cache is published to GitHub Pages with every release. Configure the cache and update:
# /etc/nix/nix.conf (or flake nixConfig)
extra-substituters = https://datao1.github.io/Mesh/
extra-trusted-public-keys = mesh-embedded:vLo1l3Abp0Uzcn21wR3oXvmZxZb1Z1rbk+ggTOIGmeQ=
# Update an embedded device
nixos-rebuild switch --flake github:dataO1/Mesh#mesh-embedded --no-write-lock-fileML models are downloaded automatically on first use.
No changelog entry for this version.
Mesh v0.9.13-rc.1
Installation
Linux (.deb)
Download the .deb package for your system:
- mesh-player — Performance mode (4-deck stem player)
- mesh-cue — Editing mode (waveform editor, analysis, stem separation)
- mesh-cue-cuda — Editing mode with NVIDIA GPU acceleration
sudo dpkg -i mesh-player_*.deb mesh-cue_*.deb
# Install dependencies if needed:
sudo apt-get install -fRequirements: PipeWire (Ubuntu 22.04+, Fedora 34+) or JACK2, glibc 2.35+
Windows (.zip)
Extract the zip and run the .exe directly. No installation required.
GPU acceleration via DirectML (any DirectX 12 GPU).
NixOS / Nix
Run directly (x86_64-linux):
nix run github:dataO1/Mesh#mesh-player
nix run github:dataO1/Mesh#mesh-cueaarch64-linux (Orange Pi 5 / embedded): A pre-built binary cache is published to GitHub Pages with every release. Configure the cache and update:
# /etc/nix/nix.conf (or flake nixConfig)
extra-substituters = https://datao1.github.io/Mesh/
extra-trusted-public-keys = mesh-embedded:vLo1l3Abp0Uzcn21wR3oXvmZxZb1Z1rbk+ggTOIGmeQ=
# Update an embedded device
nixos-rebuild switch --flake github:dataO1/Mesh#mesh-embedded --no-write-lock-fileML models are downloaded automatically on first use.
No changelog entry for this version.
Mesh v0.9.12
Installation
Linux (.deb)
Download the .deb package for your system:
- mesh-player — Performance mode (4-deck stem player)
- mesh-cue — Editing mode (waveform editor, analysis, stem separation)
- mesh-cue-cuda — Editing mode with NVIDIA GPU acceleration
sudo dpkg -i mesh-player_*.deb mesh-cue_*.deb
# Install dependencies if needed:
sudo apt-get install -fRequirements: PipeWire (Ubuntu 22.04+, Fedora 34+) or JACK2, glibc 2.35+
Windows (.zip)
Extract the zip and run the .exe directly. No installation required.
GPU acceleration via DirectML (any DirectX 12 GPU).
NixOS / Nix
Run directly (x86_64-linux):
nix run github:dataO1/Mesh#mesh-player
nix run github:dataO1/Mesh#mesh-cueaarch64-linux (Orange Pi 5 / embedded): A pre-built binary cache is published to GitHub Pages with every release. Configure the cache and update:
# /etc/nix/nix.conf (or flake nixConfig)
extra-substituters = https://datao1.github.io/Mesh/
extra-trusted-public-keys = mesh-embedded:vLo1l3Abp0Uzcn21wR3oXvmZxZb1Z1rbk+ggTOIGmeQ=
# Update an embedded device
nixos-rebuild switch --flake github:dataO1/Mesh#mesh-embedded --no-write-lock-fileML models are downloaded automatically on first use.
[0.9.12]
Changed
-
Smart suggestions — dual harmonic filter — The single fixed-threshold
filter has been replaced by a two-layer gate. A permanent harmonic floor
(base_score ≥ 0.45) blocks Semitone, FarStep, FarCross, and Tritone
transitions at every intent fader position regardless of energy bias or
personal curation — these are musically dissonant and never appropriate. A
separate blended threshold (key_transition_score ≥ 0.65) operates on
the energy-direction-blended score: at the centre position this equals the
raw base score, so EnergyBoost/Cool (0.50) are excluded and only the
flow-safe set (SameKey, Adjacent, Diagonal, MoodLift) appears — suitable for
mashups and multi-track layering. At extreme positions the blended score shifts
toward the energy-direction component: EnergyBoost rises to 0.75 and unlocks;
SameKey falls to 0.50 and is filtered out. The crossover happens naturally
near ±0.60–0.70 bias without any hard-coded knee. Personal curation (currently
browsed playlist) still receives 50% leniency on the blended layer only —
the harmonic floor is never relaxed. -
Smart suggestions — static key harmony weight — The harmonic
compatibility weight (w_key) is now constant at 30% across all intent fader
positions (previously it dropped from 25% to 10% at extremes). Key harmony is
treated as a hard quality constraint: an energetic transition that clashes
harmonically sounds wrong regardless of intent. BPM and key-direction weights
instead shoulder the budget reduction as energy-related terms (aggression,
danceability) grow at extremes. At extreme bias, BPM weight falls to zero and
key-direction drops to 5%; at centre, BPM carries 13% and key-direction 12%. -
Smart suggestions — spectral diversity at extreme intent — The HNSW
similarity component now flips direction as the intent fader moves toward
extremes. At the centre position it rewards spectral similarity (find tracks
that sound like the seed); at extreme positions it rewards spectral diversity
(find tracks that complement rather than copy the mix). At the halfway point
the component is flat for all candidates so energy signals drive the ranking
uncontested. Distances are normalised within the candidate pool before
blending so the effect is consistent regardless of collection size. The
reason-tag label updates to reflect the active mode: "Similar" at centre,
"Spectral" in the transition zone, "Variety" at extremes. -
Smart suggestions — fixed harmonic filter — The adaptive harmonic filter
threshold (which relaxed from 0.50 to 0.10 at extreme intent) has been
replaced with a fixed 0.50 threshold. The relaxation was redundant: the
energy-direction blend insidekey_transition_scorealready makes the filter
energy-aware at extremes — energy-appropriate transitions (SemitoneUp when
raising) naturally score above 0.50 while opposing ones (EnergyCool when
raising) fall below. The old relaxation was flooding the pool with
harmonically bad candidates and contributing to the uniformity problem. -
Stem mute/unmute fades — Toggling a stem mute no longer cuts or restores
audio instantly. A 50 ms linear fade is applied entirely inside the engine so
the external API is unchanged. Muting fades the stem out over 2 400 samples
(at 48 kHz); unmuting fades it back in at the same rate. The fade is applied
after multiband processing so effects trail off cleanly, and the per-sample
ramp runs on both the normal playback path and the scratch path. Solo
transitions also benefit — soloing a stem fades the others out rather than
cutting them. The duration is a single constant (STEM_FADE_SAMPLES) and
trivial to tune by ear. -
LUFS gain compensation — perceptual density bias — Both quiet and loud
tracks now receive a small extra correction beyond straight linear gain. The
issue is perceptual density: a track at −4 LUFS, cut to match a −9 LUFS
target on the meter, still carries the spectral saturation and consistent RMS
of a heavily limited track and will punch through a mix even at the same
measured level. Equally, a −14 LUFS track boosted to −9 LUFS still feels
sparse because it lacks that density. The correction uses the formula
gain = delta × (1 + 1/|target|)— the bias auto-scales with the target
level so it is stronger at a loud mixing standard (−6 LUFS, ≈ +16.7%)
and gentler at a dynamic one (−9 LUFS, ≈ +11.1%), reflecting how perceptual
density differences matter more when everything is loud.
Added
-
Playlist-aware smart suggestions — The suggestion panel now splits into
two independent halves. The top 15 slots show the best-matching tracks from
the playlist you are currently browsing; the bottom 15 show the best global
matches from all other sources (other playlists, USB sticks, and the full
local collection). Global rows are visually tinted so the split is immediately
obvious at a glance. -
Per-track playlist pills — Every suggestion row now shows which playlists
that track belongs to as blue pill tags, regardless of what you are currently
browsing. If a suggestion appears in your "Breakbeat" and "Live Set" playlists,
both names show on the row. -
Deeper playlist matching — Tracks in the browsed playlist use a more lenient
harmonic filter (50% of the normal threshold) so that slightly less obvious key
relationships within your own curated set are still surfaced. The full scored
candidate pool is passed to the split rather than a pre-truncated shortlist,
giving each half the best possible selection to draw from. -
Auto Headphones Cue — Decks with their volume fader at or below 30% are
automatically routed to the headphone/cue output for pre-listening. Between
30% and 50% the send fades out linearly so there is a smooth handoff rather
than a hard cut. The manual CUE button per deck still forces a full cue send
and remains completely independent. The feature is configurable under
Settings → Playback ("Auto Headphones Cue") and is on by default. It is
automatically disabled when the master and cue outputs are the same device
(to prevent double-monitoring).
Fixed
-
Peak meters — Fixed deck meters only showing for deck 4 and the master
meter not appearing on the embedded device. Also fixes a frame-rate regression
introduced with the meters in the previous release. -
BPM tap tempo (mesh-cue editor) — A new TAP button in the BPM row of
the track editor continuously updates BPM from the average interval of the
last eight taps. Tapping stops if there is more than a 3-second gap, so
restarting at a different tempo just picks up immediately on the next tap.
BPM is clamped to the valid range (20–250 BPM). -
BPM range clamping (mesh-cue editor) — Manual BPM edits via the text
field and +/− buttons are now limited to a maximum of 250 BPM. -
OTA update status display — The in-app update status log now continues
to populate even when the Settings panel is closed, so the progress feed is
never silently dropped mid-install. -
Audio device not applied at startup — The selected master and cue output
devices are now applied when mesh-player launches. Previously, both outputs
used the system default until the user manually toggled the device selection
in Settings. -
NixOS cage restart racing to login TTY — The cage-tty1 systemd unit
now setsrestartIfChanged = false, preventing nixos-rebuild's activation
phase from issuing an untimely restart. After nixos-rebuild fully settles,
mesh-update.service restarts cage cleanly viaExecStartPost. An explicit
Conflicts=autovt@tty1.serviceis added as belt-and-suspenders against
logind's on-demand VT activation.