Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions content/news/XXXX-XX-XX-mixxx-2_5_3-released.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
title: Mixxx 2.5.3 Released
authors: Evelynne Veys, Jan Claußen
tags: 2.5.3, release announcement
comments: yes
status: draft

#### Mixxx 2.5.3 Release Announcement: Back to School, back to DVS.

We're proud to announce a new stable release of Mixxx: version 2.5.3, this version not only contains updates and fixes for some issues reported by users, but it also contains improvements to the Digital Vinyl System (DVS) support. These improvements are the result of some bright new insights of developers spinning the wheel instead of sunbathing.
Since these improvements drastically improve the vinyl experience, we have chosen to backport [^1] it to the 2.5 series instead of integrating it in future alpha & beta versions.

Have a nice Mixxx.

[^1]: Back porting is integrating new work into previous releases in order to let those releases profit from the new development.

#### Digital Vinyl System - Timecode System.

An introduction to Digital Vinyl Systems and timecode can be found in [this article on the site of Digital DJ Tips](https://www.digitaldjtips.com/a-beginners-guide-to-digital-vinyl-systems/), and in our own news archive: [How Does Timecode Vinyl Actually Work? (Pt. 1)]({filename}/news/2021-11-21-dvs-internals-pt1.md), [How Does Timecode Vinyl Actually Work? (Pt. 2)]({filename}/news/2021-12-22-dvs-internals-pt2.md) and [How Does Timecode Vinyl Actually Work? (Pt. 3)]({filename}/news/2025-08-27-dvs-internals-pt3.md).

Mixxx plays the song by following the signal on the timecode media, which gets internally converted to actual timeframes. So the DJ controls the playback of the digital music by manipulating vinyl or CDs.

In order to create a vinyl-like feeling, the song needs to follow the signal as closely as possible (low latency, fast responsiveness) for e.g. scratching or backspins. There is no 'standard' signal - each manufacturer uses its own code. One thing all manufacturers have in common is that the code is modulated onto a sine wave. The code is used for absolute positions e.g. after needle drops, but it is not suitable to handle pitch (e.g. the playback speed) or playback direction. For this the sine wave needs to be processed by a filter that detects phase differences and converts it into pitch information.

Mixxx has integrated the [xwax](https://xwax.org/overview.html) library for timecode support, which uses an [Alpha-Beta Filter](https://en.wikipedia.org/wiki/Alpha_beta_filter) for pitch detection. This filter provides a good feeling during scratching, but isn't able to provide a stable pitch during normal playback.
In [PR #15194](https://github.com/mixxxdj/mixxx/pull/15194) developers have replaced the Alpha-Beta Filter with a more advanced [Kalman-Filter](https://en.wikipedia.org/wiki/Kalman_filter) equivalent.

Kalman-Filters have many application as GPS navigation and weather forecast models. In Mixxx the Kalman-Filter uses a [probabilistic](https://en.wikipedia.org/wiki/Probability) model of the vinyl movements to predict the velocity, very similar to the Alpha-Beta Filter. This predicted speed is compared with the noisy crackling input signal. The deviation [^2] is fed back into the filter and slightly alters its internal state for the next prediction.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

used combination with link to https://en.wikipedia.org/wiki/Probability

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice

If the vinyl is, say, spinning at 33 1/3 r/min, that value is used as the initial assumption on which the next prediction is based. If the next measurement returns 40 r/min, the value is not fully trusted, because such a high acceleration is unlikely. This measurement will be used with a low trust. However, if the following measurements detect 40 r/min as well, the filter gradually adjusts to approximate 40 r/min in further predictions.

By using this model, Mixxx is able to properly and more accurately represent e.g. the pitch control slider on the turntable or CD-player.

Another improvement has been made to the measurements which are fed to the Kalman filter [PR #15217](https://github.com/mixxxdj/mixxx/pull/15217). The current model only takes rough measurements of the position on the sine wave. Furthermore these measurements work on the assumption to always be correct. A new check was added to detect if measurements were skipped or larger than assumed. This improves backspins where the deviation of estimation and measurement suddenly become very high.

These changes are major improvements for all DVS users. Too good to wait for Mixxx 2.6.
Get all Mixxx-ed up and join our [testing-force]({filename}/pages/get-involved.md) for more upcoming features.

[^2]: The Deviation in Kalman filters is called [Innovation](https://en.wikipedia.org/wiki/Innovation_(signal_processing)).

#### Controller Mappings

Mappings were updated for

* Icon P1-Nano MIDI 1
* Traktor Kontrol S4 Mk3
* Traktor Kontrol S3
* Numark NS6II
Comment thread
Eve00000 marked this conversation as resolved.

#### 2.5.3 Changelog

More fixes have been included to keep everything stable, up and running.
The complete changelog can be found [here](https://github.com/mixxxdj/mixxx/blob/2.5.3/CHANGELOG.md)
12 changes: 6 additions & 6 deletions content/pages/download.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ title: Download
template: pages/download
versions:
stable:
name: 2.5.2
release_announcement: /news/2025-04-27-mixxx-2_5_1-released/
download_manifest: https://downloads.mixxx.org/releases/2.5.2/manifest.json
name: 2.5.3
release_announcement: /news/2025-09-03-mixxx-2_5_3-released/
download_manifest: https://downloads.mixxx.org/releases/2.5.3/manifest.json
downloads:
- slug: windows
os: Windows 10 build 1809 or later
Expand Down Expand Up @@ -73,16 +73,16 @@ versions:

git clone -b 2.5 https://github.com/mixxxdj/mixxx.git

The 2.5.2 release has been [tagged](https://github.com/mixxxdj/mixxx/releases/tag/2.5.2) with `2.5.2`.
The 2.5.3 release has been [tagged](https://github.com/mixxxdj/mixxx/releases/tag/2.5.3) with `2.5.3`.

Compilation instructions are available for [Windows](https://github.com/mixxxdj/mixxx/wiki/Compiling-On-Windows), [macOS](https://github.com/mixxxdj/mixxx/wiki/Compiling-on-macOS), and [Linux](https://github.com/mixxxdj/mixxx/wiki/Compiling-On-Linux).
packages:
- slug: source
name: 2.5 branch
file_url: https://github.com/mixxxdj/mixxx/archive/2.5.zip
- slug: source
name: 2.5.2 release
file_url: https://github.com/mixxxdj/mixxx/archive/2.5.2.tar.gz
name: 2.5.3 release
file_url: https://github.com/mixxxdj/mixxx/archive/2.5.3.tar.gz
beta:
name: 2.6-beta
release_announcement: /news/2025-05-11-mixxx-2_6_beta-released
Expand Down
Loading