Library / SDK
UltraStar-Deluxe/USDX avatar
UltraStar-Deluxe/USDX

UltraStar Deluxe: a six-player karaoke game in Pascal, built with Autotools

The free and open source karaoke singing game UltraStar Deluxe, inspired by Sony SingStar™

1,287 stars215 forksPascalGPL-2.0

At a glance

What is it?
USDX is the maintained fork of UltraStar, a GPL-2.0 karaoke game that scores singers on pitch and rhythm, shipping as an installer, a Flatpak and an AUR package. The code is Pascal with an Autotools build, and the configuration lives in a plain config.ini that you edit by hand.
Who is it for?
Adopt UltraStar Deluxe if you are organising a karaoke session and want a free, cross platform game with pitch based scoring, an official Flatpak and an active release line, since the last push was on 2026-10-15 and v2026.9.0 shipped on 2026-09-13. Do not adopt it if you need an automated scoring backend, a song format the project does not support, or a headless server, because the README documents only the desktop game, its command line parameters and a config.ini.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly Pascal, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 21, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What UltraStar Deluxe is, and what it forked from

UltraStar Deluxe, abbreviated USDX, is a free and open source karaoke game. The README describes the core loop plainly: up to six players sing along with music using microphones in order to score points, depending on the pitch of the voice and the rhythm of singing. Two independent signals, pitch and timing, combine into a score, which is what separates it from a music video with a microphone attached.

The lineage matters for context. USDX is a fork of the original UltraStar, which was developed by corvus5. Many features have been added since the fork, among them party mode, theme support, and support for more audio and video formats. The README attributes the ports to Linux and macOS to improved stability and code quality, and that is the useful observation here, because the fork's improved stability and code quality are what enabled the Linux and macOS ports.

The project is GPL-2.0, has an official website at usdx.eu, and is written in Pascal. The repository is not archived and the last push was on 2026-10-15, so this is a live codebase with a steady release rhythm rather than a preserved artefact.

Three installation channels and what each one gives you

The README lists the current installation channels, and choosing between them is mostly a question of which package system you already trust.

The first is an installer, with a portable version offered alongside it, for the latest release linked from the GitHub releases page. The second is a Flatpak from Flathub, listed as eu.usdx.UltraStarDeluxe. The third is an Arch Linux AUR package named ultrastardx-git, which is the git-based variant, so it tracks the repository rather than a tagged release.

That AUR detail is worth a note. A package named with the -git suffix installs from the current master branch, so it moves as development happens, which suits someone who wants the newest fixes and does not suit someone who wants a reproducible build.

The Flatpak route has consequences beyond the download. When the game is installed through Flatpak, the primary song folder is inside the sandbox at ~/.var/app/eu.usdx.UltraStarDeluxe/.ultrastardx/songs/, and the config.ini lives next to it in ~/.var/app/eu.usdx.UltraStarDeluxe/.ultrastardx/ by default. Any additional song directory outside that sandbox has to be granted access before the game can read it, and the README gives the exact command for that.

bash
flatpak override eu.usdx.UltraStarDeluxe --filesystem=/your/new/songfolder

Run that first, then add the directory to the config.ini as usual. Skip it and the game will not see the songs, and the reason is sandbox filesystem access rather than anything about song formats.

Editing config.ini for song folders, joypads and multiple screens

Configuration is a plain INI file edited by hand, with the location depending on the platform. On macOS the config.ini is created in $HOME/Library/Application Support/UltraStarDeluxe when the game is first run, and the primary song folder there is $HOME/Music/UltraStar Deluxe, also created on first run.

Additional song directories are set under a Directories section.

ini
[Directories]
SongDir1=C:\Users\My\Music\MyUSDXSongs
SongDir2=F:\EvenMoreUSDXSongs

The key names are numbered, SongDir1, SongDir2 and so on, so adding a third directory means adding SongDir3 in the same section.

Joypad support is a single key toggled from Off to On. The multi-screen arrangement takes more setup: the README says to disable full screen mode, extend your desktop horizontally, set the resolution to fill one screen, and then set Screens=2 in the config.ini and restart the game. The same procedure with three players on two screens follows the same shape.

Borderless fullscreen has its own control. Setting Graphics.PositionX/Y to a pixel offset chooses which monitor the game uses when it runs in that mode, which is the difference between the game appearing on the projector and appearing on the laptop screen.

None of these are exposed through a settings dialog, which is the trade-off of the approach. The trade-off runs the other way too: because everything is a text file, you can copy a known-good configuration between machines, which is convenient when setting up a venue.

Compiling from source with autogen.sh and configure

The build system is Autotools, and the README gives the whole sequence in one line. The executable is produced at game/ultrastardx, with an .exe suffix on Windows.

bash
./autogen.sh && ./configure [--enable-debug] && make

The optional --enable-debug flag is the only configure switch the README mentions, and it is the one you want if you intend to attach a debugger or read the source while the game runs. For anything else, the README points to COMPILING.md, which holds extended information about dependencies, OS specific notes and configure flags.

The repository layout backs up the claim that this is a substantial C and Pascal codebase rather than a script collection. There is a src directory, a game directory, res, graphics, icons, doc, tools, test and installer directories, plus a debian directory and a dists directory for distribution packaging, and a Makefile.in and configure.ac at the top level.

There is also a fair amount of maintenance scaffolding: a VERSION file, a ChangeLog.txt, a DEVELOPMENT.md, a RELEASING.md, a PIPELINE.md, a COPYRIGHT.txt, a UPDATING-DLLS.md, a get-svn-history.sh script and a .tx directory for translation work. The presence of get-svn-history.sh and the .tx directory reflects a project with a long history that has moved between version control and translation platforms, and it hints at the age of the code base, which is normal for a fork that has been carried forward for years.

Release cadence and the project documents you can rely on

The recent releases show a monthly rhythm. v2026.9.0 was published on 2026-09-13, v2026.8.1 on 2026-08-19, and v2026.8.0 on 2026-08-12, with the last push to the repository on 2026-10-15. The version scheme is a year and month rather than a semantic sequence, which reads as a date-based scheme and makes it easy to tell from the version string how old a build is.

The README points at three separate documents depending on what you are trying to do. The documentation site at usdx.eu/docs/ covers command line parameters, controls and customization. COMPILING.md covers building, and RELEASING.md covers cutting a release, with PIPELINE.md described as useful for maintainers.

The separate command line parameters page is worth noting for anyone who wants to script the game, for instance to launch it directly into a particular song or mode. The README does not reproduce those parameters, so anyone planning to automate launches has to follow the link rather than guess at flags.

Under GPL-2.0, if you distribute a modified build you owe the same licence terms to those you distribute it to, and the repository carries a LICENSE file along with COPYRIGHT.txt for attribution. This is a description of the licence mechanics, not legal advice, and the practical point for a game like this is that local song and theme customisation is not distribution.

Editorial conclusion

Adopt UltraStar Deluxe if you are organising a karaoke session and want a free, cross platform game with pitch based scoring, an official Flatpak and an active release line, since the last push was on 2026-10-15 and v2026.9.0 shipped on 2026-09-13. Do not adopt it if you need an automated scoring backend, a song format the project does not support, or a headless server, because the README documents only the desktop game, its command line parameters and a config.ini. Verify first which of the three installation channels suits you, and if you pick the Flatpak, run flatpak override eu.usdx.UltraStarDeluxe --filesystem=/your/new/songfolder before adding any song directory to config.ini.

Frequently asked questions

How do I install UltraStar Deluxe on Linux?

The README lists an installer or portable version from the latest release, a Flatpak from Flathub as eu.usdx.UltraStarDeluxe, and an Arch Linux AUR package named ultrastardx-git. The Flatpak route also needs flatpak override eu.usdx.UltraStarDeluxe --filesystem=/your/new/songfolder before song folders outside the sandbox are readable.

How do I add extra song folders in UltraStar Deluxe?

Add numbered entries in the [Directories] section of config.ini, for example SongDir1 and SongDir2. On macOS the config.ini is created in $HOME/Library/Application Support/UltraStarDeluxe on first run, and the primary song folder is $HOME/Music/UltraStar Deluxe.

How do I build UltraStar Deluxe from source?

The project uses an Autotools build, so run ./autogen.sh && ./configure && make, adding --enable-debug to configure for a debug build. The resulting executable is game/ultrastardx, and COMPILING.md covers dependencies and further configure flags.

Can UltraStar Deluxe run on two screens for a duet?

Yes. The README says to disable full screen mode, extend the desktop horizontally, set the resolution to fill one screen, then set Screens=2 in the config.ini and restart the game. The same procedure covers three players on two screens.

Official sources

  1. License: GPL-2.0
  2. Project website
  3. README
  4. Releases
  5. UltraStar-Deluxe/USDX on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ultrastar-deluxe-usdx.svg)](https://hysenlabs.com/projects/ultrastar-deluxe-usdx)

Was this useful?