Changelog

QUP Karaoke Engine — Changelog

What's new in QUP Karaoke Engine

QUP Karaoke Engine — Changelog (v2.0.42 onwards)


QUP Karaoke Engine — v2.18.2

Released October 1, 2026 · Previous version: 2.18.1

Fixes

  • The About box is back to the classic Star Wars text crawl. The 3D scene (planet, starfield, Star Destroyer) caused problems on some computers, so the About page uses the original scrolling crawl again on every platform.

QUP Karaoke Engine — v2.18.1

Released September 30, 2026 · Previous version: 2.18.0

Fixes

  • Updating a plugin in the Plugin Browser installs the new version. The Update button used to stage a removal instead, and nothing new was downloaded. Installing a plugin also switches it back on.
  • The Windows installer clears out plugins it no longer ships. Plugins that became download-only stayed behind at their old versions after an update, looked built in, and could be neither updated nor removed.
  • Music video backgrounds stay smooth with the Backgrounds page open. Its preview made the video skip to a frame every second or two on the singer display.

KaraFun (plugin 0.1.3)

  • The spectrum analyser and MilkDrop see KaraFun pre-fader, like any other karaoke song.
  • KaraFun's player starts with QUP (when the plugin is on), so a signed-out account shows up before the show rather than on the first song.
  • Lighter on the CPU while KaraFun's lyrics are on the singer display.

QUP Karaoke Engine — v2.18.0

Released September 30, 2026 · Previous version: 2.17.0

New skin: 1997 Mp3 Player

  • A second built-in skin beside Brushed Steel: navy faceplates, lavender bevels, grey buttons and green-on-black LCD readouts, in the style of a late-90s desktop MP3 player. The analyser runs green to red in flat bands and the knob rings follow the same colours. All-new artwork, drawn by QUP's own generator.

Skins in the Plugin Browser

  • Skins have their own chip in the Plugin Browser. Built-in skins read Built in; skins published later can be installed and removed there.
  • Click a skin's picture for a preview: QUP wearing it at full size, with a Karaoke / DJ switch. The preview closes when you close it, press Escape, or click anywhere else.
  • The Plugin Browser keeps one look, the qupkaraoke.com colours, whatever skin is in use, so it always stays readable.
  • A skin is ready as soon as it is installed — no restart to install it. Choose it in Preferences → Skin & Layout; it applies the next time QUP starts. The skin in use can't be removed until another is chosen.

QUP Karaoke Engine — v2.17.0

Released September 30, 2026 · Previous version: 2.16.1

New: bitmap skins

QUP's windows can now wear a skin pack: images for the buttons, knobs, faders, meters, title bars and panels, not just colours. QUP ships with one, Brushed Steel.

  • Preferences → Skin & Layout → Bitmap Skin. Pick a pack; it applies the next time QUP starts. One choice covers karaoke and DJ mode.
  • Quality: Basic, Standard, Full (adds gentle pulses and fades) or Auto, which steps down to Basic by itself if the show needs the computer's time.
  • Meters and knob rings take the skin's colours: gradients, or LED segments where the skin has them.
  • Preferences and the About box never change, and nothing the audience sees (the singer display) is ever skinned.
  • For skin authors: put a pack in your own skins folder (Open My Skins Folder in the same place) and it appears in the list. A developer overlay (a hotkey action, no key by default) outlines every control and lists any problems the pack has.

The Player comes apart

  • Undocked, the Player is separate windows: status, the two transports, the EQs, Mix and the CDG preview in karaoke mode; the decks, their strips, the mixer, the waveforms and the visuals in DJ mode. They snap to each other and to the screen edges, and remember where you put them.
  • Windows → Reset layout puts them back, and each one has a show/hide hotkey action.
  • Docked mode uses your undocked arrangement, so setting things up once covers both.
  • A new install starts undocked. Floating windows remember being hidden or shaded.

Smoother video on the singer display

  • On Windows the singer display now draws with the graphics card, in step with the monitor it is on: music-video backgrounds, the scroller, the countdown and the floating QR code.
  • MP4 videos no longer jump back and forth. Video now decodes on the CPU by default; hardware decoding was delivering some frames out of order.

DJ mode

  • The waveforms scroll smoothly, one step per screen refresh (144 steps a second on a 144 Hz monitor), and no longer shimmer.
  • Zoom with the mouse wheel over the waveforms (2 to 32 seconds across), or with hotkey actions. The lanes grow when you make the Waveforms window taller, and quiet tracks are drawn taller so their shape shows (drawing only; the audio is untouched).
  • EQ knobs light from the centre, towards cut or boost, and so do the FX knobs while their effect is Filter, Flanger or Phaser.
  • Cue level and QUANTIZE belong to each deck. The deck strips sit at the transports' height with the cue level on them, and DJ Decks and Perform are one window per deck. STOP FX is back beside the FX rows.
  • DJ Visuals keeps time with the monitor it is on.

Also new

  • KaraFun integration.
  • The transport's countdown and spectrum share their panel evenly, and the spectrum has 40 bands, all the same width, with the bass no longer moving in blocks.
  • Faster on older computers: the level meters cost far less to draw (a 2012 MacBook Pro's display work mid-song fell from 58% to 37%).
  • Evaluation copies stay minimized until you choose Still Evaluating.

QUP Karaoke Engine — v2.16.1

Released September 27, 2026 · Previous version: 2.15.0

2.16.0 was announced but never published: its installers had CDG Repair built in, when it is meant to be a download you add from the Plugin Browser when you need it. 2.16.1 is the same release with that corrected. Everything below is what is new in it.

New: rip your CD+G karaoke discs into the library

A new plugin, CD+G Disc Ripper, in the Plugin Browser. Put a karaoke disc in the drive and it comes out as one MP3+G zip per song, graphics included, named the way your library already is — SC8513-01 - Artist - Title.zip — and added to the karaoke library as it goes.

  • Media Library → Plugins → General → Disc Ripper. Pick the drive, press Read disc, check the names, press Rip ticked tracks.
  • It names the disc for you where it can: from text on the disc, from the CUETools and MusicBrainz databases, or from the disc id you type off the label. Every name can be edited before ripping, and "Last, First" is a tick-box per song, never a guess. Check the names against the label: the online databases are typed in by people, and some entries are wrong.
  • Several drives at once. The Drive list switches between drives; each one keeps its own disc and its own rip, so you can start a second disc while the first is still going.
  • Speed and Benchmark. Drives are often slower at their top speed — they outrun the computer, stall and spin up again. Benchmark tries each speed on the disc in the drive (about a minute and a half) and keeps the fastest steady one. On the drive it was built with, a whole disc went from about 17 minutes to 12.
  • File layout at the bottom offers the same naming patterns as Preferences → Database, so ripped songs read back the way the rest of your library does.
  • Graphics are checked, not assumed. Every graphics packet carries a checksum; damaged ones are repaired where that is certain, and parts the drive skipped are read again. Discs with an audio section and a computer section (Windows shows these as data discs, not Audio CDs) rip correctly.
  • Not every drive can do this. CD+G graphics live in a part of the disc many drives will not read. Read disc checks the drive first and says so if it cannot. It was built and tested on a Dell DW316 USB drive; it has not yet been tried with a drive on a Mac or on Linux.

The plugin downloads the disc-reading tool it needs (redumper) the first time, checked against a known fingerprint, as it does for the video tools.

New: find out why a song won't play, and repair its graphics

A new plugin, CDG Repair, in the Plugin Browser. When a song won't play or its lyrics come up garbled, right-click it in the Media Library or the Playlist and choose Diagnose / Repair.... It tells you what is actually wrong, and fixes the graphics where it can prove the fix is right — never a guess.

  • Rip errors — damage baked in when the disc was ripped — are corrected from the checksum every CD+G graphics packet carries. Only corrections the checksum confirms twice are made. A stronger mode that can fix more is there as an option, off by default, because it is occasionally wrong.
  • A zip that decayed on disk is detected from the zip's own checksum and repaired from another copy of the same song that is still intact — anywhere in your library, or in a folder of spares you point it at. When no intact copy exists, the song goes on a re-source list, grouped by disc.
  • Every repair can be undone. The original is kept, byte for byte, in a folder next to your library (named so QUP never imports it), and Plugins → General → CDG Repair → History undoes or redoes any repair. Nothing is written while a song is playing or paused.
  • Scan the whole library from the same panel, repair everything that can be repaired in one go, and save the results as a spreadsheet.
  • A manual editor for the rest: it lists the damaged graphics packets, shows each one at the moment it draws, and lets you fix a tile's colours, position or pixels, copy a good tile over a bad one, or delete a packet. Edits are saved through the same undoable repair.

Also in 2.16.0

  • Playlist right-click: Note Bad File / Unmark Bad File, as the Media Library already had.
  • Fixed: Note Bad File in the Media Library could mark the wrong song after the columns had been rearranged, and it blanked Times Played, Date Added and BPM on the row it marked.
  • Fixed: a song that was briefly locked — by antivirus, or while a tool was repairing it — was permanently marked bad by the background length check. It is now tried again.
  • For plugin authors: plugins can add to the Playlist's right-click menu, read and set the bad-file flag, and hold a song file while rewriting it. See qupkaraoke.com/plugin-api.

QUP Karaoke Engine — v2.15.0

Released September 25, 2026 · Previous version: 2.14.0

New: QUP shows you how to get started

A new KJ opening QUP for the first time had no idea where songs come in. One tester went to Add to Playlist, lost the dialog that followed behind another window, and reported QUP as frozen. Now QUP shows the way.

  • "Would you like to see how to import media into QUP?" When the karaoke library is empty, QUP asks once, after the evaluation notice closes. Yes / Not now / Don't ask again. A KJ with songs in the library is never asked.
  • Import tour. Preferences → Database: pick the filename pattern that matches your files. Then Preferences → Media: Add Folder and Rescan All. Each step dims the window, points an arrow at exactly what to click, and moves on when you do it. The last step shows your real song count and a few songs as QUP read them, so a pattern that swapped artist and title is obvious straight away.
  • Queue-a-song tour, offered when the import tour finishes: search the library, double-click a song, type the singer's name and press Enter, and QUP points at the new entry in the playlist.
  • Both are always in the app menu under Help, and every step has Skip tour. The tours draw inside QUP's own windows, so they can't be lost behind anything.

Fixed

  • Column widths are remembered again. Widening a column in the karaoke or filler library, playlist, filler queue or rotation lasted only until the next launch: the column show/hide settings put back their own even split on every start, and that was then saved over your widths.
  • A first run opens the Media Library on Local Library → Karaoke, where the songs are, instead of an empty Rotation. After that QUP opens on whatever you last selected, as before.
  • The evaluation notice's button is easier to find. The countdown only runs while the pointer is over the button, and people were missing that. Its border now pulses until you hover it, and it matches the rest of QUP's buttons.

QUP Karaoke Engine — v2.14.0

Released September 23, 2026 · Previous version: 2.13.1

Linux: QUP works on tiling desktops (Hyprland, Omarchy, Archcraft, sway)

Hyprland never draws a title bar for any application and tiles new windows by default. QUP was relying on both, so Preferences came up with no way to move or close it, the title bars dragged nothing, and on one machine Preferences did not appear at all.

  • Preferences draws its own title bar on compositors that provide none — the same bar the Player and Playlist windows already use. Windows, macOS, GNOME and KDE are unchanged and keep their native one.
  • Title bars drag windows again. QUP asks the compositor to move the window, the way GTK and Qt applications do; sway does this for you, and on Hyprland — which accepts the request and ignores it — QUP notices and moves the window itself. Either way a floating window drags normally. A tiled window will not move by any route, because the layout owns its position; float it first with a window rule (see the docs page), or use Super+drag, which always works.
  • Message boxes and file pickers belong to the main window, so they open beside it instead of in the corner of the screen. A prompt QUP is waiting on that opens in a corner you are not looking at is indistinguishable from one that never opened. This also fixes a long-standing Windows annoyance where a scan report could hide behind the settings window.
  • Every QUP window reports a stable name to the compositor and the taskbar: QUPKaraokeEngine, with the singer display as QUPKaraokeEngine-CDG so it can be sent to the projector on its own. It used to report QUPKaraokeEngine-Main, which matched neither the desktop entry QUP installs nor anything you could reasonably guess.
  • The AppImage and the portable ZIP now set the Java window-manager flag these desktops need. The .deb cannot set it for itself — see docs/linux-tiling-wm.md, which also covers writing compositor rules against the names above (Hyprland changed its config format, so the old windowrulev2 lines you may find elsewhere no longer apply).

On a tiling desktop, the first run starts undocked

Docked mode puts every pane inside one window. A tiling compositor then squeezes that whole window into one tile, which is worse than useless on a small screen. So the first time QUP runs on one of those desktops it starts undocked, and the compositor gets separate Player, Media Library and Playlist windows it can actually place.

It is only the starting point. Dock it once and it stays docked, there as anywhere else — QUP remembers what you chose and never overrules it. Windows, macOS, GNOME and KDE are unchanged and still start docked.

Fixed: dividers that fought you on a narrow window

Dragging the divider between the tree and the pane beside it — in the Media Library, in Preferences, and in Singer Management — could bounce back instead of moving, and the narrower the window the worse it got. It was never really draggable past a point you could not see or predict, because that point was set by whichever hidden pane happened to be the widest.

Now it goes where you drag it. Most visible on a tiling desktop, where windows are small by default, but the same bounce was reachable on Windows by making the Media Library narrow enough.

Also fixed: being on a narrow window once could overwrite your saved divider position, so it followed you back to a big screen.

YouTube: sign-in settings, so age-restricted videos download

The YouTube plugin had no way to sign in to YouTube, and nowhere to set one up. Downloads that needed an account simply failed — age-restricted videos, members-only videos, and the "confirm you're not a bot" check YouTube now shows on unfamiliar connections.

Config → Plugins → YouTube now has the same two cookie settings the Music Video Backgrounds and Karaoke Maker plugins already had, and they work the same way: pick a browser to take cookies from, or point it at a cookies.txt file, which wins if you set both. Chrome and Edge have to be closed for the browser option; the file option does not care.

Downloads that fail for those reasons now say so and tell you where to fix it, instead of failing with nothing to go on.

QUP Karaoke Engine — v2.13.1

Released September 18, 2026 · Previous version: 2.13.0

A Plugin Browser follow-up: clearer sizes, and uninstall now cleans up after itself properly.

The Apply button tells you how much room it really takes

A plugin's row used to show only what was left to download on your computer, so Karaoke Maker could read "189 KB" on a machine that already had its tools. Rows now show the plugin's own size, and the Apply button adds it up:

Apply — 1 plugin: 189 KB + 2.1 GB tools = 2.1 GB

Tools you already have are not counted, and when nothing new is needed the "+ tools" part goes away. Removing works the same way: "1 to remove: 189 KB + 2.1 GB tools = 2.1 GB freed". Hover over a plugin to see its download size, which tools you already have, and the voice and separation models some tools download the first time they are used.

A Tools view

A new Tools button at the end of the filter row lists the shared tools — FFmpeg, yt-dlp, Deno and the Python audio tools — with how much room each takes, where it lives, and which of your plugins use it.

Uninstalling a plugin now removes the tools only it used

A tool stays as long as any installed plugin needs it, and goes with the last one. Before, tools were only removed if you ticked a box, and even then:

  • Karaoke Maker's Python tools were never actually removed — about 1.8 GB stayed on disk. They are now.
  • "Uninstalling" a built-in plugin (which only switches it off) could take a tool it needed with it, so it broke when you switched it back on. Built-in plugins now keep their tools.
  • Tools are removed when QUP restarts, not while the plugin that uses them may still be running.

The voice and separation models are left where they are, because other programs on your computer may use them; the dialog tells you where to find them.


QUP Karaoke Engine — v2.13.0

Released September 18, 2026 · Previous version: 2.12.2

A Plugin Browser, a smaller installer, and patrons buying songs for the bar.

A Plugin Browser, and a smaller download

QUP now has a Plugin Browser (Media Library → Plugins → General → Plugin Browser). Every plugin is listed with what it does, how big it is on your system, and whether it is installed. Tick what you want, press Apply, and restart QUP.

  • Installing a plugin installs everything it needs. Karaoke Maker, YouTube and Music Video Backgrounds used to need a separate trip to their settings to press "Setup Tools" before they worked. Now the download tools, the video engine and the vocal-separation software come down with the plugin itself. That button is still there, renamed Repair Tools, for putting back a tool that has gone missing.
  • Tools you already have are used, not downloaded again. If a working copy is already on your machine, QUP checks it can actually do the job, then uses it.
  • Eight plugins are no longer part of the installer: AutoFiller, File Management, Genre Tagger, Karaoke Maker, MIDI Karaoke, Music Video Backgrounds, SongShop and YouTube. They are free downloads from the browser instead, so the installer only carries what everyone uses.
  • QA Harness, a tool for testers and plugin developers, is a browser download now too; nobody needs it to run a show.

If you were using any of those eight, nothing is lost. The first time you start this version, QUP tells you which ones you had, and they are already waiting in the browser's cart: open it, press Apply, restart. Your settings, queues and files for them are exactly where you left them.

Patrons can buy a song for the bar at the kiosk

With SongShop installed and your card saved in it, turn on Config → Misc → Song Purchases. A patron who can't find a song at the kiosk sees the store's songs with a price, and can buy one for the venue: your card pays the store, the song lands in your library, and it goes into the patron's queue.

  • The price comes off the patron's credits, plus anything you choose to add on top — or turn that off and just let them queue it for the usual cost to sing.
  • The patron pays only once the song is in your library. A purchase that fails anywhere along the way costs them nothing.
  • Nobody pays twice for one song. A song you already own is simply queued, and a second patron asking for a song that is still downloading waits for it without being charged.

This uses the song-purchase screens already in the QUP kiosk app; the web kiosk and mobile app will follow.

Fixed: the right-hand EQ slider's buttons were cut off

On the graphic EQ, the last band's value and frequency labels were clipped — the column was allowed to be narrower than the text in it. Reported on a Mac; it was the same everywhere, just least visible on a wide window.

Fixed: your graphics card stops going unused without telling you

QUP now checks whether Karaoke Maker can actually use your hardware, and says so in plain words when it cannot — which card it found, what is missing, and what to install. Before this, a machine with a perfectly good NVIDIA card would quietly do everything on the processor and simply take several times longer, with nothing on screen to suggest anything was wrong.

Fixed: the video tools no longer change under you overnight

Karaoke Maker fetched its video engine from a nightly build that is replaced every day. One of those nightlies needed a newer graphics driver than the machine had, and GPU encoding stopped working — on a machine where nothing had changed and no update had been installed. Every download is now pinned to a specific version that only moves when we move it.

Fixed: the Linux portable ZIP said it needed the wrong Java

The portable ZIP asked for a JRE. It has never worked with one and never could: it needs a part of Java that only the full JDK ships. The instructions now say JDK, and the launcher checks for the two pieces it actually needs before starting, instead of dying with a stack trace.

QUP kiosk app

An updated kiosk app is on the download page. Its purchase confirmation now shows the full amount a patron will be debited — the song, anything you add on top, and the cost to sing. It used to show only the cost to sing.


QUP Karaoke Engine — v2.12.2

Released September 17, 2026 · Previous version: 2.12.1

For Mac owners who use Karaoke Maker: it now sets itself up, and the videos it makes have lyrics on them. Everyone else can skip this one.

On an Apple Silicon Mac, Karaoke Maker's "Setup Tools" button never worked

This applies to Macs with Apple Silicon — M1 and later. Intel Macs are covered further down, and the news there is smaller.

Karaoke Maker needs a few outside tools before it can build a karaoke track for you, and the Setup Tools button is supposed to fetch them in one click. On a Mac that button has never succeeded. It ended with Setup failed: pip install failed (exit 1) and nothing to go on. This was not something that broke recently — it has not worked on any Mac release, so if you tried it once and gave up, this is the version to try again.

Setup Tools now brings its own copy of everything it needs. It no longer depends on what happens to be installed on your Mac, which is what it was doing wrong: it was trying to borrow the Mac's own Python, and modern macOS does not allow that.

What to expect when you click it. It downloads about 30 MB to start, then the audio tools themselves and a video engine of about 60 MB, settling at roughly 850 MB inside QUP's own plugin folder. The first song you build after that downloads another 1.5 GB or so of listening models — that happens once, not per song. Nothing is installed into macOS itself.

One optional piece may not install, and that is fine. The fancy subtitle effects need a graphics library that Macs do not ship. If it is missing you will see "Subtitle effects unavailable (optional) — everything else is ready" and Karaoke Maker still works, with plain subtitles. If you want the effects, install that piece yourself with brew install cairo pkg-config.

On a Mac, the finished video had no words on it

Even once the tools were in place, the video Karaoke Maker produced on a Mac had no lyrics on the picture. The words were attached as a subtitle track that most players leave switched off — so on a projector, where it matters, the screen showed a song with nothing to sing from.

The cause was the same one as above, one step further along: QUP was borrowing whatever video engine the Mac happened to have, and none of the available ones could draw lyrics onto a picture. QUP now brings its own on the Mac, the way it already did on Windows and Linux. Lyrics are burned into the video again, in colour, sweeping word by word as the song plays.

And if lyrics ever cannot be drawn, the job no longer reports a cheerful "Done". It says "Done — NO LYRICS ON VIDEO" and tells you why in the log.

The first song on a Mac always failed with a graphics-card error

Every first attempt on a Mac stopped with "GPU (NVENC) video encoding unavailable — turn on Allow CPU encoding". That setting exists for Windows machines with an NVIDIA card. No Mac has ever been able to use it. The question was never a real one on your machine.

Macs now just get on with it, and use your Mac's own video hardware — so songs finish noticeably quicker and the files come out about 30% smaller, with no visible difference to the lyrics on screen.

Songs occasionally came out named after an error message

If YouTube hiccuped while QUP was looking up a song's name, the video still built correctly but came out called something like "Unknown — ERROR: [youtube] … The page needs to be reloaded". The song itself was always fine; only the name was wrong. QUP now tells the difference between a title and an error.

Intel Macs: better, but still not finished

On an Intel Mac, Setup Tools gets considerably further than it used to but still does not complete. Two of the audio components have no ready-made Intel-Mac version left and have to be compiled on your machine, which needs developer tools QUP cannot install for you. What has changed is that it now tells you that, by name, instead of "exit 1".

Linux

Linux gets the same self-contained setup. Two things to know: it needs several GB of free space in your temporary folder as well as in QUP's own folder, and it installs the graphics-card build of the audio engine whether or not you have that card — so it settles at around 5.7 GB. If setup stops with a message about a disk quota, that is your /tmp filling up, not your main disk.

Windows

Windows is unchanged. Setup Tools worked there before and works the same way now — the only difference is that a failure message says more than it used to.


QUP Karaoke Engine — v2.12.1

Released September 16, 2026 · Previous version: 2.12.0

A same-day hotfix for 2.12.0. If you are on macOS, take this one.

On a Mac, Help → About closed the whole program

Opening the About page quit QUP instantly — no message, no crash box, the window simply disappeared and you were back at the desktop. Anything unsaved in that session went with it.

The About page has an animated opening-crawl behind it. On macOS it was drawing that animation in a way the operating system does not permit, and macOS responds by shutting the program down rather than by showing an error. On macOS the About page now uses the original, non-animated crawl, which is why there is nothing to see here beyond the page opening normally. Windows is unchanged and keeps the animated version.

Only the About page was ever affected. Playback, the library and your data were never at risk, and nothing needs repairing after it happened.

The portable Linux download really does start now

2.12.0's notes below say the portable ZIP was fixed. That was not true of the file we actually shipped: the fix went into one launcher and the ZIP is built with a different one, which still had the fault. 2.12.1 is the first release whose portable ZIP starts. The .deb and AppImage were always fine. Apologies — if you downloaded the 2.12.0 ZIP and it did nothing, that was this.

Under the hood: how QUP works out which system it is running on

Fixing the About crash turned up the same mistake in the shared code that asks "which operating system is this?" — and that code also helps choose which audio device list you are shown and which sound components load. It was corrected everywhere it appeared.

You should see no difference. On Windows, macOS and Linux the answer is the same before and after, and that is what we tested. But because it touches audio device selection, it is worth one look: open your output device picker once after updating and check your usual device is still listed. If anything is missing, tell us — that would be a bug in this release, not a setting you need to change.


QUP Karaoke Engine — v2.12.0

Released September 16, 2026 · Previous version: 2.11.0

Your database is now actually backed up. Every backup QUP has written since the beginning was an empty 22-byte file — a typical install holds well over a thousand of them, and not one contains a song, a singer, or a play count. If you had ever needed one, there was nothing in it.

From this version QUP writes one real backup per session, at shutdown, and checks it before calling it done: the copy is reopened and every table's rows are counted against your live database. If anything is wrong the file is deleted and QUP says so, instead of reporting success.

  • A session that ends badly is backed up too. If QUP crashes, or the power goes, the next launch notices and backs up that night's work before anything else happens.
  • The five most recent backups are kept, in data/db/backups. Older ones are removed only after a new backup has passed its checks, so a bad backup can never delete a good one.
  • Your old empty backups are left alone. They are worthless, but they are your files, so QUP counts them in the log and does not touch them.

A backup of a large library takes well under a second, and never runs while you are singing.

Config ▸ Database loses two checkboxes, "Backup on startup" and "Backup on new session". They switched on steps that produced nothing. Backup on shutdown stays, and turning it off still turns backups off.

Keyboard shortcuts for the things you do mid-song

Config ▸ Hotkeys is a new page. Bind a key to what you reach for while a song is playing — pause, next singer, volume, key change — and see every binding in one list instead of learning them.

  • Conflicts are shown, not discovered. If a key is already taken, the page tells you before you save it.
  • Plugins can add their own actions, so a plugin's feature can sit on a key beside the built-in ones, named in the same list.
  • System-wide keys — the ones that work while QUP is not the focused window — ship switched off, and are Windows-only for now. Turn them on in the same page if you want them.

The library stops working while you sing

Background library jobs — length backfill, BPM scanning — no longer run during playback. They wait for a gap and give way the moment one ends. A paused song counts as playing, because a pause mid-show is not an invitation to start decompressing archives.

This one was a real regression. After the archive-format fix in 2.11, those jobs stopped failing quickly on certain song archives and began succeeding slowly instead — seconds of work, repeatedly, during a show.

Your settings and photos land where they belong

Twenty-one places in QUP wrote files next to the program instead of in your data folder — on an installed build, a folder you never look in, and sometimes one the app cannot write to at all.

  • Singer photos uploaded over a secure connection are now served. They were written to one place and looked for in another, so they simply never appeared.
  • Settings, logs and temporary files now live under your data folder. Anything already saved in the old location is copied across on first launch — never moved, never overwritten.

Linux: the portable ZIP starts

The portable Linux download had never started — it stopped on a plugin loading error before the window appeared. Fixed, and the release build now refuses to ship a ZIP that does not start.

Correction, added with 2.12.1: this did not reach the 2.12.0 download. The fault existed in two launchers and only one of them was fixed in time — the ZIP is built with the other. The 2.12.0 portable ZIP still does not start. It is fixed in 2.12.1 above.

Also in this release

  • Long sessions no longer grow a file that never shrinks. QUP's database journal grew all night and was never tidied up; by the end of a three-hour session it had reached 15 MB and was still climbing. It is now kept in check however long you run.

QUP Karaoke Engine — v2.11.0

Released September 13, 2026 · Previous version: 2.10.0

The Up Next scroller can outline its text and fill it with a gradient. Busy music videos behind the lyrics no longer swallow the singer list.

Config ▸ Display ▸ Scroller ▸ Outline. Tick Outline Text, pick a colour and drag Thickness from Thin to Thick. The outline is a share of the font size, so it looks the same in a small window and fullscreen on the projector. It sits behind the letters and never covers them.

Config ▸ Display ▸ Scroller ▸ Colors ▸ Fill now has three choices:

  • Solid Color is how the scroller has always looked.
  • Gradient runs a colour ramp down every letter, top to bottom. Twelve presets are built in (Sunset Shore, Chrome, Gold Bar, Fire, Ice, Neon Miami, and more), and a live preview strip shows each one. Import .ggr... loads a GIMP gradient file of your own.
  • Animated is the rainbow, fire, party and other colour modes. The old gradient mode is now called Two-Color Sweep, so it isn't confused with the new gradient.

Outline and gradient work in all ten scroll styles, including Matrix, Wave and Flip. If you had an animated colour mode set, it comes up as Animated after the update and looks the same as before. Everyone else's scroller is unchanged until they turn something on.

The scroller is the right size fullscreen. Going fullscreen and back no longer leaves the scroller text sized for the wrong window, and proportional scaling no longer overwrites the font size you set by hand.

CD+G lyrics over a music video or visualizer let the background show. On many discs (every Chartbuster disc among them) the lyric screen's solid background covered the video completely. QUP now works out each disc's real background colour when the song loads, so the video shows through.

Doubled or scrambled graphics on some discs are cleaned up. Some discs store their graphics twice or carry stray data, and QUP drew all of it on top of itself. Corrupt tiles that used to spill garbage onto the next row are now skipped.

A song with no graphics file no longer replays the last song's lyrics. The lyric window stays blank instead.

Smoother picture. The lyric and video display now refreshes 30 times a second instead of 15.

Leaving fullscreen no longer leaves the picture stuck in a corner. Lyrics and video resize to fit the window again.

Music video backgrounds play at normal speed. Background videos played about ten seconds of footage too fast, jumped back and repeated for the whole song. They now follow the song in real time, and a video shorter than the song loops cleanly. DJ mode's video window gets the same fix.

MIDI karaoke lyrics are sharper on large screens. They are drawn at the screen's real size instead of being stretched up.

Experimental: CDG Enhancement. A new plugin that redraws CD+G lyrics at the projector's full resolution is included, but it is switched off and not production quality yet. It is labelled that way in Config ▸ Plugins. Leave it off for shows.

For plugin developers: a new, experimental CdgLyricPlugin interface. See the Plugin API.

Linux portable zip: it now contains only qup.sh. On Windows, use the installer.


QUP Karaoke Engine — v2.10.0

Released August 21, 2026 · Previous version: 2.9.1

The new YouTube plugin turns a link into a karaoke track. Find a video in your own browser, copy the address, paste it into QUP with the artist and title, and it downloads and lands in your karaoke library ready to queue.

You search in your browser, not in QUP. There is no embedded search box, no Google account, no API key and no quota to run out of. You already know how to find a video; QUP's job starts once you have the link.

Media Library ▸ Plugins ▸ General ▸ YouTube, with two tabs.

Import is the list you build. Paste a URL, type the artist and title, press Add — youtube.com/watch, youtu.be, /shorts/, m. and music. links all work, and a link that happens to be part of a playlist just adds that one video. Add ten songs without touching the mouse: paste, tab, tab, Enter. Then press Download All and watch them drain, one at a time so a venue's wifi stays usable.

History is what you have already pulled — searchable, and exportable as a small text file. That file is also an Import list, which is the whole point: export your history, send it to a friend, and they can import it and download the same set. It travels fine through email, Discord or a pastebin.

Files are named to the AKDJ standard your library already understands — \YouTube\<video id> - Artist - Title.mp4 — so the save folder's own name becomes the disk, and a plain library scan finds them correctly even if you turn the automatic import off. Sharding by night or event needs no setting: just point it at a different folder.

It knows what you already have. Adding a video that is already in your library is caught before you download it a second time — and it stays caught if you have moved the file, renamed its folder, or got it from somewhere other than this plugin.

Fix a typo whenever you notice it. Edit the artist or title on a row that has already downloaded and the file is renamed and your library updated to match, so a misspelling never gets stuck on disk. Took it at 720p and wanted 1080? Change the quality and re-download that row.

Quality is a ceiling, not a demand. Pick 1080p, 720p or 480p; a video that only exists at 480p still downloads rather than failing. Everything is video with its audio — the plugin will not silently hand you an audio-only file that plays as a black screen.

Downloads never leave a mess. Half-finished files are written to a scratch folder and only moved into your library folder once complete, so a library scan can never index a partial download. Cancel a download and nothing is left behind. Neither Clear button ever deletes a downloaded file, and both say so.

You supply the links; the plugin is a download client, exactly as the Music Video and Karaoke Maker plugins already are.

Also in this release

Song stores can finally tell whether you already own something. The plugin API has been able to ask "is this song already in my library?" since the SongShop work, but nothing an import wrote ever answered it — the store id was being dropped on the way into the database. It is now stored, which switches duplicate detection on for SongShop and Party Tyme as well as for YouTube. Nothing you have to do; it simply starts working.

If a download fails, QUP now tells you why. Age-restricted, members-only, geo-blocked, private, removed, or the downloader being too old for YouTube's latest change — each one gets a plain sentence instead of an error code. The Import tab also shows the downloader's version and warns when it has aged past the point where YouTube usually breaks it.


QUP Karaoke Engine — v2.9.1

Released August 21, 2026 · Previous version: 2.9.0

QUP is now $10. You pay it once, and it covers every version for life.

That is the entire release. No engine, audio, DJ, rotation or cloud behaviour changed — only what a licence costs and how long it lasts.

If you already own a licence, it is now a lifetime licence. Keys sold under the old $60 terms were tied to the major version they were bought for, plus two — a v2 key would have stopped working at v5.x. That ceiling is gone, retroactively, for everybody. There is no new key to collect and nothing to re-import: install 2.9.1 and the key you already have simply never expires again. The "your licence key needs an upgrade" screen no longer exists, because nothing can reach that state any more.

What has not changed. The 60-day evaluation period stays exactly as it was, and so does the reminder screen. QUP is still shareware and still completely uncrippled while you evaluate it — no disabled features, no timers, and it still doesn't phone home. Licence keys are still signed on our server and verified offline by your copy of QUP.

Buying now actually sends you a key. The link between our payment processor and the licence server had never been connected, so every key issued to date was cut by hand. That is wired up, secured and tested end to end as of this release — your key arrives by email within a minute of paying. If it ever doesn't, mail licenses@qupkaraoke.com and we will send it straight over.


QUP Karaoke Engine — v2.9.0

Released August 20, 2026 · Previous version: 2.8.4

The DJ side of QUP grows up. This release adds the whole hands-on performance surface, and teaches Auto DJ to mix six different ways instead of one.

New — the PERFORM pane. Eight pads across four modes on each deck: hot cues, beat loops, loop rolls, and buffer rolls. Loops engage, resize and release the instant you press, and a SLIP switch lets a loop play over a track that never stopped moving — so letting go drops you exactly where the track would have been, and a trick can last as long as it is interesting rather than as long as the phrasing allows. Each deck also gains two effect slots, a send, and a transport row (brake, spinback, stop, start).

New — Auto DJ picks a transition to suit the tracks. Instead of one timed crossfade for everything, it now chooses between a bass swap (highs, then mids, then bass — the crossfader never moves, so it sounds mixed rather than faded), an 8-bar filter-and-loop build, an echo out, a beat cut, a filter fade, and the plain crossfade. It never plays the same move twice in a row, and when two tracks are too far apart in tempo to beatmatch, the result now sounds deliberate instead of like a compromise.

New — Auto DJ stops playing dead air. It starts the next transition before a silent outro rather than after it, and it starts the incoming track where its level actually matches the one going out — so a track that opens with thirty seconds of quiet no longer drops the floor out of the mix.

New — eight DJ effects: filter, echo, reverb, roll, gater, flanger, phaser, and a three-band kill isolator. A single STOP FX button clears every effect on a deck at once. An effect that is switched off is bit-for-bit silent, not merely quiet.

Fixed — beatmatched transitions could jump in tempo at the very end, on the surviving track, at the moment it became the only thing playing. The same underlying cause could also make Auto DJ quietly fall back to a simpler transition than the one it should have used. Both traced to a beatmatch confirmation set tighter than the tempo chase can physically reach.

Fixed — a failed track load could delete the track that was playing. Dropping a damaged MP3+G onto a deck cleared that deck's working folder before checking the file was readable, and a load that failed part-way left the deck still reporting the track it had just unloaded.

Fixed — .flac files showed no waveform. The waveform reader was asking a decoder that cannot read FLAC at all, while playback used one that can. This also fixes m4a, aac, opus and wma.

Fixed — scanning a filler folder froze the app while it worked, and wrote to its database once per track rather than once per scan. Scan result dialogs also opened behind the main window.

Fixed — three separate ways to lose a playlist: a failed read could destroy the playlist it failed to read, the "New list" menu item silently emptied the open one, and edits made from another pane were reverted by the next edit.

Also improved — the DJ crate supports Ctrl-A and shift/ctrl click, and Remove clears the whole selection. The tempo fader's double-click reset now glides over two bars of the track's own tempo, and Auto DJ uses the same glide to return a track to its natural speed after a beatmatched mix — previously the incoming track kept the outgoing track's tempo for its entire length, so across an unattended set every song drifted further from where it started.


QUP Karaoke Engine — v2.8.4

Released August 17, 2026 · Previous version: 2.8.3

  • Fixed — venues with very large song libraries (100,000+ songs) could silently fail their first cloud sync, leaving kiosk and mobile song search empty for that venue with no error shown. Large-catalog syncs are now batched on the server and given more time to complete.
  • Improved — library rescans now let you review and export the list of files that couldn't be imported (missing lyrics file vs. unsupported format), instead of just a bare count.

QUP Karaoke Engine — v2.8.3

Released August 16, 2026 · Previous version: 2.8.2

  • Fixed — a song a KJ added or replaced for a registered singer never notified their phone. Push notifications only ever fired for songs the singer submitted themselves through the app; if the KJ entered or swapped a song for them from the QUP side, their "you're up next" alert silently never arrived. Both iOS and Android are affected the same way and both are fixed by this release.

QUP Karaoke Engine — v2.8.2

Released August 14, 2026 · Previous version: 2.8.1

  • Fixed — DJ mode's crossfader was dead on a fresh install, on every platform. New installs (and anyone who had never touched the old karaoke crossfade settings) opened DJ mode to a crossfader that did nothing, with no way to turn it on from the DJ screen itself.
  • Fixed — on macOS, DJ mode's lyrics could flicker or drop to black for an instant, due to a rare timing issue in the video compositor.

QUP Karaoke Engine — v2.8.1

Released August 12, 2026 · Previous version: 2.8.0

  • Fixed — the MilkDrop visualizer could fail to load on Windows. On some installs it would silently fall back to plain lyrics instead of the projectM visuals, with nothing on screen indicating anything had gone wrong.

QUP Karaoke Engine — v2.8.0

Released August 12, 2026 · Previous version: 2.7.0

  • New — DJ mode. QUP is now two apps in one: karaoke, and a real two-deck DJ mode, switchable from the same install. Two decks with waveform seek, tempo control, per-deck EQ, and a proper pre-fader cue bus. Beatgrids and SYNC keep tracks locked together; scratch behaves like a real platter, including catching a track mid-throw. A constant-power crossfader blends between them, and MP4 video decks bring the same experience to video mixing, sharing the same GL visual layer.
  • New — Auto DJ. Set-and-forget, beatmatched automatic mixing: build named crates from folder drops, m3u imports, or a genre fill, then arm it and it keeps going, yielding control back to you with one touch whenever you want it.
  • New — FLAC and OGG playback, on both the karaoke and DJ sides.
  • New — MilkDrop starter preset pack, so the visualizer has real presets to show on first boot instead of the 37 plain engine test presets. A "Download the Cream of the Crop pack" button pulls in a larger curated pack in one click. Presets can now be grouped into playlists and ticked to shuffle only from a subset.
  • New — first macOS Apple Silicon (M-series) build. Previous releases ran under Rosetta; this one runs natively.
  • Improved — cold start is faster. QUP now runs on Java 25 — DJ mode starts about 28% faster and karaoke about 20% faster than the previous release.
  • For plugin developers — VisualizationPlugin gained direct GL rendering (supportsDirectGl(), glAdopt(), glRenderFrame(), glRelease(), publishHostFrame()) for visualizations that already draw in OpenGL, skipping the per-frame image readback. PluginContext.isDjMode() lets a plugin tell whether the room is in karaoke or DJ mode and gate its own menu entries accordingly. Full reference on the Plugin API page.

QUP Karaoke Engine — v2.7.0

Released August 7, 2026 · Previous version: 2.6.1

  • New — MilkDrop visuals behind the lyrics. QUP now runs real MilkDrop .milk presets as a background, through projectM. It reacts to the song the room is hearing, and to the filler music between songs. Windows, macOS and Linux. Turn it on under Media Library → Plugins → Backgrounds → MilkDrop, where there is a live preview of exactly what the projector will composite behind the words.
  • New — preset controls. Pick a preset from the list, jump to the next or a random one, or let it cycle on a timer with optional shuffle. Turning cycling off pins the preset you chose. A search box narrows the list, which matters: a full MilkDrop pack runs to about ten thousand presets.
  • New — preset playlists. Group the presets you like into named playlists, then tick one or more to shuffle only from those. Nothing ticked plays everything. Playlists are plain text files you can hand-edit if you prefer.
  • QUP ships only projectM's own test presets, which are deliberately plain. Point the plugin at a downloaded MilkDrop preset pack under its settings to get the real thing.
  • New — a master dim for whatever is drawn behind the lyrics, applied on top of a background's own brightness. The preview shows the dimmed result, so "will the words still be readable" is answerable before the song starts rather than after.
  • Improved — backgrounds now composite at 30fps instead of 15. A pre-recorded video mostly survived the lower rate; anything reacting to the music did not, and looked like a slideshow no matter how fast it was actually drawing.
  • Fixed — column widths and column order are now remembered on every list in QUP. Two of them saved their layout properly; four more saved part of it — the Rotation and Singer Database, for instance, kept column widths but forgot any reordering — and the rest saved nothing at all. Every list now remembers both, and layouts are saved as you adjust them rather than only on a clean exit.
  • Fixed — an existing saved column layout is carried over, so widths and ordering you have already set are not reset by this change.

QUP Karaoke Engine — v2.6.1

Released August 7, 2026 · Previous version: 2.6.0

Hotfix. If you are on 2.6.0, update.

  • Fixed — QUP could freeze on startup. The lyrics window appeared but the main window never did, and the app sat using a full CPU core. This was introduced in 2.6.0 by the fix that made collapsed Media Library folders stay collapsed: restoring the saved folder state could get stuck in a loop while plugins were still loading, leaving the interface unable to finish drawing. Whether it happened depended on which folders you had collapsed and on plugin load timing, so it did not affect every 2.6.0 install — but where it did, QUP would not start at all.

Nothing else has changed since 2.6.0.


QUP Karaoke Engine — v2.6.0

Released August 6, 2026 · Previous version: 2.5.0

  • New — background visualizations. Whatever is drawn behind the lyrics is now one kind of thing you pick from, in Config → Plugins → Background Visualization, and only one can be active at a time. Music Video Backgrounds is the first of them; "None" gives you plain lyrics. The picker appears once you have a visualization installed.
  • New — "Start videos with audio". Karaoke tracks often open with a second or two of silence before the music, and the video used to start with the file and stay that far ahead of the song the whole way through. QUP now holds the video on its first frame until it actually hears the karaoke, then starts it in step. On by default, and it does nothing on tracks that start immediately.
  • Fixed — the video brightness slider did nothing. Music Video Backgrounds has had a "Video brightness" control that was saved but never reached the projector — the brightness was fixed in code. It works now, and takes effect while you drag it rather than on the next song.
  • Fixed — auto-crossfade in Silence mode could stop working entirely. Raise the CUT slider past about halfway and the silence and resume detectors overlapped and cancelled each other out, so filler never came up in the gaps. Near the top of the range it was worse: filler never ducked at all and played over the whole song. Silence mode now behaves across the full range of the slider.
  • Fixed — the CUT threshold line on the meter lines up with the CUT slider across its whole travel.
  • Fixed — the list font size no longer resets on the Playlist and Rotation after a restart. The size was always saved correctly; those two panes simply never picked it up when they were built, so they came back at the default until you touched the setting.
  • Fixed — Media Library folders you collapsed stay collapsed. They were reopened on every launch. Folders nested inside others — the Audio and General groups under Plugins — could not be remembered at all before, and now are.
  • Fixed — the Internet Radio station sync stops cleanly when QUP closes, instead of continuing to download into a database that is shutting down.
  • Changed — the row order list and height weight boxes are gone from Skin & Layout. They stopped doing anything in v2.0.27, when the main window moved to dockable panes — reordering wrote a setting nothing read back. Arrange panes by floating and docking them and by dragging the divider. Skin selection and font size are unchanged.
  • For plugin developers — new VisualizationPlugin interface for drawing behind the lyrics, PluginContext.setKaraokeAudioTap() for the decoded karaoke stream, and startVideoWithAudio() / getVideoDimLevel() on PlaybackListenerPlugin. All have defaults, so existing plugins need no changes. Full reference on the Plugin API page.

QUP Karaoke Engine — v2.5.0

Released July 31, 2026 · Previous version: 2.4.1

This release is about one thing: settings you changed that QUP then forgot. If you have ever set something in the control panel, come back later and found it reverted, this is the release that fixes it.

  • Fixed — control panel settings now save when you close the window. Several sections only wrote their settings when you pressed an Apply or Save button. Change something, close the window, and the change was quietly thrown away. This affected Cloud, Kiosk Security, Discord Party, OBS, Music Video and SongShop.
  • Fixed — disabling the Discord Party plugin now sticks. Unticking "Enable Discord room automation" and quitting brought it back enabled on the next launch, because that setting was only written by the Save button.
  • Fixed — the list text size under Skin & Layout stopped resetting. Your chosen size was being saved correctly all along, then overwritten with the default every time QUP started and every time you changed skins.
  • Fixed — Skin & Layout could not save at all. The section was added to the control panel in a way that discarded it, so nothing in it could be persisted.
  • Fixed — "Enable Kiosk Song Purchase" never recorded its own setting. It silently followed whatever the main Tricerasoft enable was set to.
  • Fixed — the Tricerasoft auto-up credit limit dropped the last digit you typed, and ignored pasted values entirely. Entering 50 stored 5.
  • Fixed — the two database backup checkboxes showed each other's setting after a restart, so correcting one silently flipped the other.
  • Fixed — the Enable DBV checkbox for kiosk 4 never showed its saved setting, and kiosk 3's box showed kiosk 4's.
  • Fixed — a configured Discord announcements channel could be erased. If QUP saved while the Discord bot was not connected, the empty channel list overwrote your setting with a blank.
  • Fixed — your SongShop login could be destroyed if the stored password could not be read back. QUP now leaves unreadable saved credentials alone instead of overwriting them with blanks.
  • Fixed — in SongShop, a download folder typed and then locked was discarded, with no way to re-enter it because locking makes the panel read-only.
  • Fixed — a crash on the kiosk screen when kiosk 1 was connected and kiosk 2 was not.
  • Improved — settings save when you close the control panel, not only when QUP exits. A show runs for hours, and a crash or a forced quit previously lost everything you had changed since launch.
  • Improved — the Internet Radio station sync now stops cleanly when QUP closes. It used to keep downloading and writing to the station database during shutdown, which could leave the station list half-updated.
  • Improved — the rotation debug log records the rotation order each placement was judged against, making it possible to see exactly why a singer landed where they did.
  • For plugin developers — QUPPlugin gains onConfigPanelClosed(), called whenever the config window closes and again just before shutdown(). Persist settings there instead: plugins taking more than 3 seconds to shut down are abandoned, which can kill a save. It has a default empty implementation, so existing plugins need no changes.

QUP Karaoke Engine — v2.4.1

Released July 31, 2026 · Previous version: 2.4.0

  • Fixed — "Min singers in playlist" now actually works. This setting was saved and shown in Config → Bribe but never enforced. Bribing now stays switched off until that many different singers have a song waiting, so nobody can buy their way up a near-empty rotation. Singers see the reason on the kiosk and phone instead of an empty list. Leave it at 0 for no minimum.
  • Fixed — a dead session could bounce the next patron straight back to the scan screen. When a phone session expired, the "session gone" response was being cached by the browser and replayed to the next person who scanned on that device, kicking them out on their first refresh. Fixed on the server, so it no longer depends on the app being up to date.
  • Improved — the touchscreen kiosk greys out slots it cannot sell. Positions blocked by your bribe rules now show greyed with LOCKED in place of the price, and tapping them does nothing, matching what the phone app already did. Requires the updated kiosk download.

QUP Karaoke Engine — v2.4.0

Released July 31, 2026 · Previous version: 2.3.1

  • New — you decide what a bribe is allowed to jump. Some songs in the queue are protected: ones you dragged into place, ones someone already paid to move, singers who have waited past the maximum wait time, and the locked top of the queue. Each of those now has its own switch in Config → Bribe, plus its own cost multiplier, so a jump can be expensive rather than impossible. A song carrying more than one protection needs all of them enabled and is priced at the highest single multiplier — premiums never stack.
  • New — counter-bribes are back. A singer can pay to jump ahead of someone else's paid jump, so the top slot stays for sale all night and whoever wants it most keeps paying. On by default at a 2× premium; turn it off in Config → Bribe if you would rather a paid jump be final. The sniped singer keeps their place relative to everyone else.
  • New — "Highest bribe position" actually works. This setting was previously saved but never enforced. Set it to 1 to allow bribing all the way up to the next singer, or to a higher number to keep the top of the queue off the market. 0 means no cap.
  • Fixed — new singers were losing their turn to bribed songs. With new-singer preference switched on, a first-timer was queued behind every song that had been bribed up, because a paid jump was being treated exactly like a KJ lock. A first-timer can now be placed ahead of a paid jump, which simply moves down one spot and keeps everything else it bought. There is a switch for this in Config → Bribe if you prefer money to always win.
  • Fixed — bribes from the kiosk never went through. Every bribe submitted from the touchscreen kiosk failed with "Playlist has been updated, please try your bribe request again," no matter how many times the singer retried.
  • Fixed — bribes from phones charged the wrong amount. Bribes submitted through the mobile app were deducting a small fraction of the real price, and the "not enough credits" check was not working. Both now charge and check correctly. If you run the paid bribe system, expect bribe charges to look right for the first time — which means noticeably higher than they have been.
  • Improved — singers can see what they cannot buy. Positions blocked by your settings now appear greyed out on the kiosk and phone with a short reason, instead of being offered and then refused after payment. The prices shown are the prices the system charges.

QUP Karaoke Engine — v2.3.1

Released July 31, 2026 · Previous version: 2.3.0

  • Fixed — rotation order is now exactly right. The singer rotation now strictly follows the proven rotation rules: new-singer priority actually takes effect, a first-timer's first song can't be jumped by a regular, and a returning singer whose songs were removed re-enters the current round instead of being pushed to the back. The rotation round can also no longer jump backward mid-night — this was behind singers appearing to sing back-to-back while others waited.
  • Changed — the Queue and Rotation panels no longer sort by clicking column headers. What you see is always the true play order. Sorted views looked harmless but silently made drags, moves and right-click actions hit the wrong entries. The search box still filters as before.
  • Fixed — song counters stay truthful. Removing, reverting or toggling a song as played kept phantom counts on the singer, quietly placing their next song in the wrong round.
  • Fixed — bribe jumps respect protections. A paid jump is refused if it would displace a locked, protected or already-played entry.
  • Fixed — Rotation panel right-click. "Remove From Rotation" and "Change Singer Name" work again.
  • Under the hood. Every one of these rules is now enforced by an automated full-night rotation simulator that runs on every build.

QUP Karaoke Engine — v2.3.0

Released July 29, 2026 · Previous version: 2.2.0

  • New — Discord Party. Run your karaoke night in a Discord voice channel and let QUP moderate it for you. QUP moves an "On Stage" role as the rotation advances, so only the singer whose song is playing can talk. The room opens between songs and for a short applause window at each end of a song, so people can cheer without talking over the performance. Singers claim their name with /iam in Discord — they enter their name and PIN in a private dialog only they can see. Configure it under Config → Plugins → Discord Party; there's a full setup guide in the documentation.
  • New — automatic handling of missing singers. If the person whose turn it is isn't in the voice channel, QUP pauses the song, pings them, and gives them a grace period to appear. If they turn up it resumes; if they don't it moves on to the next singer, exactly as if you'd pressed Next. An unattended room keeps running.
  • New — filler music into Discord. Optionally, QUP transmits your filler music into the voice channel between songs, so the room isn't silent while nobody is sharing their screen.
  • Fixed — microphones on macOS. Mic input didn't work at all on macOS: the app was missing the microphone entitlement, so the system blocked it without ever prompting. Also fixed a crash when changing microphones, and mic effects now work when your microphone and speakers are the same audio interface.
  • Fixed — songs queued from a phone ignored your rules. Max Singer Repeat and the closing-time cutoff were being bypassed for anything queued through the mobile or web path — one singer could fill the whole list. Songs queued by the KJ are unaffected and still override the limit as before.
  • Improved — singer PINs now reach the venue. A patron who signs up on their phone gets their PIN synced to your local singer database, so it works at the venue too. Existing singers pick theirs up the next time they sign in on their phone.
  • Improved — documentation. New guides for Discord Party, MIDI Karaoke, Mic Effects, AutoFiller, Genre Tagger, Internet Radio, the Metadata Editor and the Plugin Manager. See Documentation.

QUP Karaoke Engine — v2.2.0

Released July 25, 2026 · Previous version: 2.1.4

  • New — MIDI & Soft Karaoke (.mid / .midi / .kar). QUP now plays MIDI karaoke files through a built-in SoundFont synthesizer, with the lyrics on your projector and preview screens exactly like CDG — highlighted word-by-word as the song plays. A General MIDI SoundFont is bundled, so MIDI songs play out of the box, and you can import .mid, .midi and .kar files straight into your library.
  • New — per-instrument MIDI mixer (Media Library → Audio). Live VU meters and a volume knob for every instrument, mute the guide-vocal track for a true sing-along, switch SoundFonts on the fly, and save a custom mix per song. A built-in catalog lets you download hundreds of additional SoundFonts.
  • New — full MIDI transport. Key change (transpose), tempo, and seek for MIDI — all gap-free, no dropouts — and the music-video background now works with MIDI too, compositing the lyrics over the video.

QUP Karaoke Engine — v2.1.4

Released July 24, 2026 · Previous version: 2.1.3

  • New — Mic Effects tempo sync. Lock the mic echo/delay to the song's tempo (BPM). Tap the beat or let QUP auto-detect it, choose a note value (1/2 · 1/4 · 1/8), and the echo stays in time with the music. You can also save per-song mic-effect presets that load automatically when the song starts.
  • New — Analyze BPM in the Genre Tagger detects and stores the tempo of your whole library, so the mic echo is in sync the instant a song starts. QUP also fills in tempos in the background when nothing is playing.
  • Fixed — microphone inputs on macOS and Linux. The mic input picker now works on Mac (Core Audio) and Linux (ALSA/PulseAudio) — previously those platforms listed no microphones at all. Added an input driver selector that matches the audio-output settings.

QUP Karaoke Engine — v2.1.3

Released July 23, 2026 · Previous version: 2.1.2

  • New — Mic Effects. Add reverb and echo to your microphones, right from the Media Library (Plugins → Audio). Wet-only, and it works with whatever sound device you use.
  • The projector QR-code size slider now resizes the code across its full range (previously the change was barely visible).
  • Turning on "Show Wait Time" no longer blows up the up-next scroller text size.
  • Config-panel drop-down menus now display with the correct light theme.

QUP Karaoke Engine — v2.1.2

Released July 23, 2026 · Previous version: 2.1.1

  • Security vulnerability hotfix — a recommended update for all users.

QUP Karaoke Engine — v2.1.1

Released July 23, 2026 · Previous version: 2.1.0

A quick follow-up to 2.1.0 with a handful of fixes:

  • macOS — the app now launches on a clean Mac. The 2.1.0 DMG could fail to start at launch on machines without certain developer tools present; the runtime is now fully self-contained.
  • Fixed a "Could not create the Kiosk Song Database" error on macOS after scanning your library.
  • Fixed password fields showing their contents as plain text instead of dots across the settings panels — including OBS and SongShop.
  • The license import / registration window now always opens on top, so it can no longer get stuck behind the main window.
  • Karaoke Maker — added an optional "Allow CPU encoding" fallback, with clear plain-English messages when the GPU encoder is busy.
  • New: QUP now checks for updates and shows a "New Version" notification when one is available.

QUP Karaoke Engine — v2.1.0

Released July 21, 2026 · Previous version: 2.0.55

This is a big one. QUP now runs natively on Linux, ships signed and notarized installers on every platform, and adds music video backgrounds behind your CDG lyrics. Full details below.

🐧 Linux support (new)

QUP now runs natively on Linux in three flavors:

  • AppImage — single file, double-click to run, no install required. Self-installs a desktop and applications-menu shortcut on first launch.
  • .deb — native Debian/Ubuntu package. Installs to /opt and adds a menu entry.
  • Portable zip — bring-your-own Java 21, for the widest range of distributions.

All three include the native audio engines built for Linux — SoundTouch key change, ysfx graphic EQ, and PortAudio device I/O. They're built against an older glibc so they run on essentially any distribution from 2022 onward (Ubuntu 22.04+, Debian 12+, Fedora 35+, RHEL/Rocky 9+).

Verified end to end: real karaoke playback (audio, CDG lyrics, key change, and EQ), filler MP4 video, and music-video backgrounds all working on Linux.

🔏 Signed & notarized installers

No more scary download warnings.

  • Windows — the installer is now signed with Azure Trusted Signing (Authenticode, timestamped), so you'll see far fewer SmartScreen warnings.
  • macOS — full macOS support arrives this release with a signed, Apple-notarized, and stapled DMG that passes Gatekeeper cleanly (just drag to Applications). The app bundles its native audio engines, and a series of macOS-specific fixes landed: a startup crash on read-only install directories, an invisible maximized window on the second launch, the kiosk HTTPS keystore path, config persistence, and a self-contained yt-dlp.

🎬 Music video backgrounds (new)

Play music videos behind your CDG lyrics. QUP automatically downloads the matching video (video-only, with the artist included in the search), prefetches your entire upcoming queue, and starts the background mid-song the moment its download lands. The video is composited behind the lyrics with the CDG on top, and it's performance-tuned to avoid per-frame allocation.

🎵 Audio & A/V sync

  • Video karaoke / MP4 — audio is now the master clock, fixing audio/video drift.
  • CDG lyrics are slaved to the audio clock in absolute terms (off the UI thread) with output-buffer latency compensation, so lyrics stay locked to the music.
  • CDG timing offset is now deterministic at startup and persists across restarts.
  • Seek is reliable and immediate on both the karaoke and filler players — fixed backward-seek jumping to the next song, playhead jumps, and tempo-shift position errors.
  • ASIO — karaoke and filler are now summed onto a single shared mains bus/pair for clean pro-audio routing.
  • Crash fix — skipping a song could crash the app due to a native heap corruption during PortAudio teardown. Fixed.
  • The native graphic EQ (ysfx/JSFX) is now active in the packaged builds.
  • Removed the old LibVLC/vlcj video backend; JavaCV/FFmpeg is now the single video path.

🪟 Windowing & docking (Winamp-style)

  • Per-window controls (quit, hide, shade) and a system-tray presence.
  • Dock and undock all three sections together (all-or-nothing), with z-order and focus fixes — no more flicker, the focused window stays on top, and the whole workspace can go fully undocked and hide the main frame.
  • Single-instance guard — only one copy of QUP runs at a time.
  • The app and taskbar icon is now the QUP brand (previously a generic icon), including on floating windows.
  • The exit confirmation dialog now reliably appears over the transport controls.

🎨 Config panels

Fixed the dark skin leaking into config panels. Tables, checkboxes, text fields, sliders, scroll bars, and combo boxes now render correctly, and text boxes look properly sunken.

🔌 Plugins

  • AutoFiller v2.0 — a from-scratch redesign.
  • Genre Tagger — now writes genre to MP3 ID3 tags (not just the database), reads artist/genre/album from filler ID3 on import, and adds a "Rescan filler ID3" backfill.
  • Metadata Editor (new) — right-click tag editing plus "Explore item".
  • File Management — added a Path column (right-aligned, leading-ellipsis so the containing folder stays visible; auto-grows to fill), "Remove from library" and "Delete from disk" right-click actions (also on the core libraries), and several new karaoke/CDG filename import and rename formats.
  • Internet Radio — plugin source added.
  • SongShop — configurable download folder.
  • Plugin Manager — enable and disable plugins (restart to apply).
  • AutoFiller and Genre Tagger are now surfaced as Media Library tabs, with M3U playlist support and a library right-click menu API.

👤 Singer management & library

  • The Singers Database now has a visible home under Singer Management, where the KJ can edit singers and adjust credit balances.
  • The Media Library tree has been reordered — Local Library first, then Singer Management.

📁 File dialogs

Native OS open, save, and folder dialogs (via JavaFX) now replace the old Java choosers.

☁️ Cloud

Now-singing info is emitted in the cloud poll, and PHOTO downloads resolve the configured cloud host.


This release covers 127 commits from April 25 to July 21, 2026.

Note: v2.0.54 was tagged but never released — the build failed at compile time due to an ambiguous-overload bug in the new file chooser API. v2.0.55 is the working release with the native file dialogs.

v2.0.55

Added

  • Native file and folder pickers across the entire app. The Add Folder, Add Files, Browse, Save, and Import dialogs now use the platform's native file picker — IFileDialog on Windows 10/11, NSOpenPanel on macOS, GtkFileChooserNative on Linux. On Windows you get the full File Explorer–style picker with the This PC sidebar, address bar with breadcrumbs, recent folders, pinned locations, and OS theme support (light/dark mode follows your Windows setting automatically).

Changed

  • Plugin SDK: file chooser API replaced with action-oriented methods (openFile, openFolder, openFiles, saveFile) that return the selected file directly. Plugin authors no longer configure a chooser before showing it.
  • Database singer-list import simplified to use a CSV-only filter (the previous mixed files/directories mode was vestigial; the call site only ever consumes CSVs).

Removed

  • Internal cpanel theming sweep for file chooser widgets — no longer needed now that file dialogs are rendered by the OS.

v2.0.53

Changed

  • File chooser theming for plugins now flows through the plugin SDK (PluginContext) rather than direct internal references. Genre Tagger, File Management, and Karaoke Maker plugins migrated to the SDK factory methods. Lays groundwork for future picker improvements without touching plugin code.

v2.0.52

Fixed

  • File chooser dialogs no longer have dark Folder Name fields or Files of Type combo boxes. Both widgets now render with white backgrounds and black text, matching the rest of the file picker. Affects the Media → Add Folder, Database → Browse, Music Video → Cache directory, and License chooser dialogs.

v2.0.51

Fixed

  • Number spinners across all configuration panes now render with white backgrounds and black numbers instead of solid black rectangles. Affected widgets included Auto-pause threshold (Kiosk Security), Max cache MB (Music Video), Intro duration (OBS Recording), Min queue depth and No-repeat window (AutoFiller), height-weight spinners (Skin & Layout), and the Simulation engine spinners.
  • Scroller's editable font combo box now displays the currently selected font name in black on white — previously the selection box was unreadable.
  • Configuration table column headers (Media Library Folders "Folder" / "Filler" headings) now display in black text instead of blue.
  • Empty tables (Kiosk Security pattern filter table) no longer fill with dark color when there are no rows.
  • Spinner up/down arrow buttons render consistently as flat-style buttons matching the rest of the cpanel.

v2.0.50

Added

  • Flat WACUP-style arrow buttons for combo box dropdowns and spinner up/down controls. Matches the existing flat-button styling for regular cpanel buttons.

v2.0.49

Fixed

  • Cpanel tables, lists, and trees now have white backgrounds (previously appeared as dark holes when empty — most visible in the Bribe singer list and Kiosk Security pattern table).
  • Non-editable combo box dropdowns display items in black-on-white rather than dark colors. Affects Output settings, Kiosk Security drop-downs, and Scroller selection menus.
  • Spinner inner text fields correctly render with white backgrounds.

v2.0.48

Added

  • Custom flat-button rendering for cpanel buttons. Buttons now have a raised bevel with hover and pressed states, matching the WACUP visual style.

v2.0.47

Fixed

  • Cpanel text labels, buttons, and checkboxes no longer render in blue on light backgrounds — foreground text is now correctly black throughout the configuration panel.
  • Text input fields, spinners, and combo boxes have white backgrounds across all cpanel panes (some plugin config panes were rendering dark).

v2.0.46

Fixed

  • Plugin configuration panels (AutoFiller, Music Video Background, OBS Recording, Karaoke Maker, Genre Tagger, File Management, SongShop) and the Simulation pane now have consistent light backgrounds matching the rest of the cpanel. Previously these panes inherited the global dark theme.

v2.0.45

Internal

  • Diagnostic release. No user-visible changes.

v2.0.44

Fixed

  • Restored proper rendering of cpanel controls after the v2.0.43 theming change. Buttons now display their raised bevels, dropdowns show their arrows, and text fields have visible borders.

v2.0.43

Changed

  • Cpanel light-theme implementation refactored to use a centralized override table rather than per-component color setters. More consistent and predictable theming behavior across all panes.

v2.0.42

Added

  • Plugin panes that lazily construct widgets (e.g. when an "Enable" button is first clicked) now get themed automatically when new widgets appear.
  • NativeFileChooser.createFolderChooser convenience method (pre-configures folder-selection mode with drag-and-drop enabled).

Fixed

  • File chooser dialogs maintain the cpanel light theme more reliably when reopened.

v2.0.41 — Wait Time clock starts fresh when your song is up next

Fixed

  • Wait Time now resets when a singer's next song becomes "up next." Previously, if you had two songs queued and your first song was playing, your second song's wait clock was already counting — so the moment your first song finished, your second song would show something like "10 minutes" of wait time. That was misleading. Now the clock starts at zero the moment a song actually becomes the singer's next-up turn.

v2.0.40 — Fixed "Est Time: NOW" on second singer

Fixed

  • The singer in position 2 of the rotation no longer incorrectly shows "NOW" as their estimated time. Only the currently-playing singer should display "NOW"; everyone else should show how long until they're up. The calculation now accounts for remaining time on the currently-playing song. The same fix applies to the scrolling display.

v2.0.39 — Polish on the new mobile kiosk

Fixed

  • Your Submissions list now displays in rotation order. Your next song to be sung appears at the top, not the most recently submitted one. Played songs and errors fall to the bottom.
  • Credit balance updates correctly on the mobile kiosk. Previously the kiosk showed "$0.00" for credits even after the KJ added credits via Singer Database → Edit Singer. Now changes propagate within a second or two.
  • Bribe submission errors are clearer. Instead of a generic "required" message, the kiosk now tells you exactly what's wrong.

Changed

  • Bribe cost table now only shows singers you can actually skip past. Previously every singer in rotation was listed, including ones at or after your own position (which always cost $0 because there's nothing to skip). Now the list shows only actionable move-up targets.

v2.0.38 — Live kiosk state; view the full playlist; Change Song fixed

Added

  • View Playlist on mobile. A new button on the patron kiosk opens the full current rotation — every singer, every song, in order. Your own entries are highlighted. See where you are, see who's ahead of you, see the big picture. Same data the KJ screen shows.
  • Rotation position indicator. The kiosk now shows "You're #3 in line, 2 songs ahead" so patrons know where they stand at a glance.
  • Live state refresh. The kiosk refreshes its view every 10 seconds. Songs that have already been sung disappear from "Your Submissions." Credit balances update. Bribe availability updates.

Fixed

  • Change Song now actually works. The command was being silently rejected by the engine due to a name mismatch. It's been recognized now. If you click "Change Song" on a queued submission and pick a different song, the swap goes through and you see "Done."
  • Played songs no longer linger on the patron's kiosk. If you sang your song and it finished, your kiosk updates within 10 seconds to show it as played, and stops offering Change Song / Bribe buttons on it.

v2.0.37 — Change Song and Bribes wired up (with caveats addressed in v2.0.38)

Added

  • Change Song button on patron kiosk. Patrons can now swap a queued song for a different one — as long as their original submission hasn't been sung yet. Uses the same "verify it reached QUP" feedback flow as regular song submission.
  • Bribe system on patron kiosk. Bribe-enabled venues now show a Bribe button next to each of a patron's queued songs. Tapping it shows who they can move ahead of and what it costs. Patrons select a target, confirm the cost, and the bribe is processed by the engine — which deducts credits, validates the cost, and reshuffles the rotation. KJs credit singer accounts manually via Singer Database → Edit Singer (no payment processing on the kiosk; cash-in-venue model).
  • Bribe button auto-hides when bribes are disabled in the venue's Bribe configuration.

Known issues addressed in later releases

  • v2.0.38 fixed the QUEUE_REPLACE switch-case gap that prevented Change Song from actually working end-to-end.
  • v2.0.39 fixed credit balance display, submission ordering, and bribe cost-table filtering.

v2.0.36 — Finally: patrons' songs actually reach the queue (and the kiosk tells the truth)

This release fixed three converging bugs that had caused silent song drops. After this, first-session fresh installs work end to end.

Fixed

  • The "double CloudSync" race. On registered-install reboots, two cloud-sync workers were running simultaneously on the same install. One had the song-queue engine wired up; the other didn't. Whichever fetched a patron's submission first processed it — so submissions failed or succeeded at random. Now there's exactly one sync worker per install.
  • Silent song drops. As a consequence of the above, roughly 5 out of 8 song submissions were silently failing with "Enqueue engine not ready" while the patron's phone happily showed "Submitted!" Now that the race is fixed, and combined with the ack-verify flow below, submissions are reliable.
  • Catalog sync on library changes. If you registered your cloud before adding your media folder to QUP, the server-side song catalog was empty and the kiosk found nothing when patrons searched. Now, whenever QUP finishes scanning a library folder, the cloud catalog refreshes automatically — no restart required.

Added

  • Submission ack-verify. When a patron submits a song, the mobile kiosk shows "Sending..." then "Verifying with host..." then — only after QUP actually confirms the song was queued — "In queue." If QUP rejects the submission, the kiosk shows "Couldn't queue" with the reason. If QUP doesn't respond within 60 seconds, the kiosk shows "Still trying... if this keeps happening, ask the KJ." No more silent success; no more patrons wondering why their song never came up.

v2.0.35 — Auto-initialize kiosk on registration

Fixed

  • QR code now appears automatically within 60 seconds of completing cloud registration. Previously, even with everything else working, the kiosk token had to be manually minted by clicking "Initialize kiosk now" in the Kiosk Security settings. That step is now automatic when a venue verifies its email.
  • Rate-limit friendliness for the nonce-fetch calls that precede every signed request. These are now exempt from the per-IP and per-install general buckets, so high-frequency polling no longer starves other cloud operations.

v2.0.34 — Fresh-install QR rendering

Fixed

  • Cloud polling now self-starts on a fresh install. Previously, registering cloud on a brand-new install left the polling scheduler unstarted, which meant the venue's status never flipped to "active" internally, which meant the QR code URL never resolved. Fixed.
  • Poll and sync rate-limit ceilings doubled. The original values were sized assuming one counter increment per request; in practice each request produced two increments, so the ceiling tripped during normal operation. Now set correctly.

Changed

  • The old /sing/ patron URL is deprecated. If a patron scans an old-era QR code linking to /sing/something, they'll now see a friendly page directing them to scan the current QR on the karaoke screen, instead of getting a confusing error. The supported patron flow is /k/<token> which resolves to a cookie-persistent /s/<session> URL.

v2.0.33 — Secured cloud auth migration

Changed

  • Cloud authentication fully migrated to signed requests. Previously, some cloud endpoints used a shared secret model that was prone to subtle desync bugs (secret generated on the client, secret generated separately on the server, the two never exchanged — silent auth failures). All runtime cloud endpoints now use per-install cryptographic signing. Authentication desync is structurally eliminated.

Breaking change

  • Clients on v2.0.32 and earlier will need to upgrade to v2.0.33 to continue using cloud features. (Fresh installs on pre-v2.0.33 were already broken in practice due to the desync issue this release fixed.)

v2.0.32 — Multiple stability fixes

Fixed

  • Cloud sync now starts immediately after registration without requiring a QUP restart. Previously, completing cloud registration correctly updated the cloud settings, but the actual sync worker wasn't started until the next app launch.
  • No more "split-brain venues." If cloud registration was already complete, the app no longer attempts to re-register on restart, which was previously creating duplicate venue records server-side.
  • Venue name length check. Venues named with fewer than 3 characters are now accepted (previously the registration form silently rejected them).
  • Silent cloud errors now surface. Sync failures that used to go to an invisible error stream now appear in the log with full stack traces, so operators can diagnose issues.

Added

  • Session ban / unban from Singer Management. The Singer Management table now lets a KJ ban a specific kiosk session (e.g., a problem patron) and reverse the ban later.
  • Catalog sync progress indicator. The Media Library window shows an indicator strip during a cloud catalog sync, so operators can see the operation is in progress.

v2.0.31 — Signed request rate limit

Fixed

  • Singer Management panel no longer polls continuously when hidden. It used to make signed cloud requests every 10 seconds forever, whether the panel was visible or not — about 360 requests per hour. Now it polls only when the panel is showing, and the per-install hour cap was raised to accommodate bursts.

v2.0.30 — Fresh-install UI defaults fixed

Fixed

  • Checkbox defaults on first launch now match the intended values. A long-standing bug meant that even though many settings had sensible default values in code, they were silently overwritten to "unchecked" on fresh installs because the save-preferences code read from the UI state before the UI was fully initialized. The Karaoke settings panel now sets each checkbox explicitly after creation, so defaults persist correctly. Affected checkboxes include the proportional scroller toggle and eleven others.

v2.0.29 — Cloud settings persistence on registration

Fixed

  • Cloud is now enabled automatically when registration is verified. Previously, a successful registration verification didn't flip the "Connect to QUP Cloud" checkbox on or save the updated state, so restarting the app meant re-enabling cloud manually.
  • Production cloud configuration is now bundled with release builds. Shipped zips contain the correct live-production cloud settings out of the box.

v2.0.28 — Baseline release

The starting point for this release series. All subsequent changes above build on this.

Notable features present as of v2.0.28 (not new — included here for context)

  • Crossfades between the filler playlist and karaoke songs with configurable duration.
  • Async song-length scanning and database v3 migration with background backfill of missing lengths.
  • Proportional CDG rendering that scales cleanly at any window size.
  • Per-role equalizer namespacing (main output vs. phones output).
  • Click-to-position on the global playback slider.
  • QR float overlay on the CDG window.
  • GenreTagger plugin (freedb/MusicBrainz metadata tagging).
  • AutoFiller plugin with Enable/Disable toggle and manual "Fill Now" action.

QUP Karaoke Engine v2.0.27

The biggest UI refactor since 2.0 — the main window is no longer a fixed layout. Each major section can float, dock, and snap freely. Plus a ton of polish throughout.

Dockable windows

The Player, Media Library, and Playlist are now independent panes. Dock them in the main window or pop them out to float wherever you want. Drag title bars to move, and floaters snap to each other at the edges when dragged close. Clicking any one floater brings the whole group to the foreground so nothing gets buried behind another app. Each window can be set "Always on Top" independently, and layouts persist between sessions.

Media Library redesign

A left-side navigation tree now covers Rotation, Local Library (Karaoke + Filler), and Plugins. Each library has its own "Add to Library" button with Add Folder / Add File(s) — fast imports no longer require a detour through Preferences. When docked, a draggable divider between Media Library and Playlist lets you size each one to taste.

Filler playlist overhaul

The filler queue finally behaves like it should — currently-playing is pinned at the top, tracks disappear after they finish, and the NOW indicator actually points at what's playing. AutoFiller keeps topping things up whenever the queue runs low.

Right-click everywhere

Right-click almost any title bar, list view, or empty chrome area to get a shared menu with Dock/Undock, Always on Top, AutoFiller, Genre Tagger, Send Message, New Session, Preferences, Singer Database, and Exit. No more hunting for where a feature lives.

Alternating row colors

Every list view (karaoke, filler, playlist, rotation, plus every plugin table) now renders with alternating row colors for easier scanning. Right-click any list to toggle it — the setting is global and persists between runs.

Native file browsers

Open/Save dialogs now render with the native Windows look instead of QUP's dark theme. Feels much more at home when navigating your file system.

Notable fixes

  • Filler Genre column is actually visible and resizable now (was being hidden by a column-index bug)
  • Corner resize on floating windows works reliably on the first click, every time
  • Right-click menus no longer flash and disappear when opened on an unfocused floater
  • Ctrl-A in list views selects the rows you're looking at, not the navigation tree
  • Transport controls stay properly centered inside the Player window at any width
  • Filler library alternating colors match the rest of the UI

QUP Karaoke Engine v2.0.26

New Features

  • Up Next Scroller config panel — Full settings pane for the CDG window's upcoming-singers overlay. Configurable scroll style (horizontal/vertical), animation speed, custom font and size, color mode, transparent overlay option, scroll position (top/bottom), and Cloud QR code display with position and color pickers.
  • Skinned title bar — Custom-drawn window title bar that follows the active skin theme.
  • MMCSS audio thread priority — Audio playback threads now register with Windows Multimedia Class Scheduler for lower latency and fewer glitches during heavy CPU load.

Bug Fixes

  • Fixed right-click song queueing — "Enqueue Song" from the singer submenu was silently failing. Songs now queue correctly when selected from the right-click menu.
  • Fixed cloud registration — Registration was hitting a retired server endpoint, causing "Error communicating with server" on signup. Now connects to the correct API.
  • Fixed folder removal freeze — Removing a large media folder (thousands of files) no longer locks up the UI. Deletions now run in the background.
  • Fixed connection leaks — Cloud sync and HTTP calls were accumulating open connections over long sessions. Cleaned up for better long-run stability.
  • Fixed exit confirmation dialog — Properly sized and non-resizable.
  • Reverted FlatLaf experiment — Restored Nimbus via QUPDarkLaf. EQ sliders back to 3D shaded knobs, all 10 bands visible.

Security Improvements

  • Removed legacy SSL bypass that weakened encrypted connections
  • Removed hardcoded credentials from source
  • Hardened HTTP error handling to prevent silent failures

Under the Hood

  • ~30 resource leaks patched for improved stability during extended shows
  • Background processing improvements to keep the UI responsive during database operations

v2.0.25 — Architecture & Reliability

The filelist panel — the main screen where you browse and search your song library — was rebuilt from the ground up. What was a single 2,700-line file is now five focused modules handling table display, search, file importing, column preferences, and right-click actions separately. This makes the codebase easier to maintain and sets us up for faster feature work going forward.

Other improvements in this release:

  • Right-click "Enqueue Song" submenu now shows all singers currently in rotation for one-click queuing, with a "More options..." fallback for the full dialog
  • Bad file marking and unmarking available directly from the right-click menu based on current file status
  • Multi-select support for bulk song deletion from the database
  • Filler table gets its own right-click context menu with enqueue and folder browsing

v2.0.24 — Security Hardening

A comprehensive security and stability pass touching 21 areas across the engine. The highlights:

Input validation — A new centralized input validator now screens all data coming in from the kiosk web interface. Singer names, hashes, pin codes, mobile numbers, and general text fields are all checked for length limits, allowed character sets, and common injection patterns before they reach the database.

Safer data handling — Replaced the legacy XML parser with Gson for configuration serialization. Thread-safe collections now protect shared data structures that are accessed from multiple threads simultaneously. Several places where the application could abruptly terminate have been softened to graceful error handling instead.

General hardening — Path traversal protections, stricter input sanitization on HTTP parameters, and defensive null checks across the kiosk communication layer.

v2.0.23 — Performance & Polish

This release focused on fixing rough edges reported from live venue use:

  • Media database loading performance improved — library scanning is noticeably faster on large collections
  • Filler music crossfade behavior fixed — transitions between filler tracks and karaoke songs now blend smoothly without volume jumps
  • Build size reduced by removing duplicate and unused libraries from the distribution
  • First-run experience fixed — eliminated a double-restart that occurred on fresh installations
  • Column layout preferences now load with proper guards, preventing crashes when saved preferences reference columns that no longer exist

QUP Karaoke Engine v2.0.23 Release Notes

Genre Tagger Plugin

Brand new plugin that tags your entire song library with genre metadata from the freedb database — over 1 million artists catalogued.

  • One-click genre tagging — download the pre-built genre database from qupkaraoke.com (~45 MB), then click Tag Library. Genres appear in your media library instantly, no restart needed.
  • freedb import — for advanced users, import the full freedb dump directly from archive.org (~850 MB). QUP stream-parses the archive without extracting it to disk.
  • MusicBrainz fallback — songs that freedb doesn't recognize get queued for MusicBrainz lookup. Start it when you're idle — it runs at 1 query per second in the background. Pause and resume anytime.
  • Persistent LED indicators — the Genre Tagger window shows green LEDs with dates for each completed step: IMPORTED, TAGGED, and BRAINZED. State persists between sessions.
  • Loading screen — the Genre Tagger opens instantly with rotating fun messages while the database loads in the background. No UI freeze.
  • Browse for local file — already downloaded the freedb dump? Point QUP at the file instead of downloading again.

AutoFiller Plugin

New plugin that automatically keeps your filler music playing between karaoke singers. No more dead air.

  • Enable with one click from the skinned popup window — right-click any empty area and select AutoFiller
  • Shuffle mode — plays through your entire filler library before repeating any track
  • Repeat avoidance — set a time window so the same song doesn't come back too soon
  • Genre filter — limit auto-fill to a specific genre using ID3 tag data from your MP3 filler files
  • Fill Now button — prime your filler queue before the show starts
  • Live status — shows queue depth and available track count in real time

Genre Column in Media Library

  • Genre column added to both the karaoke and filler file lists
  • Artist and Genre columns added to the filler table
  • Genre data populates automatically after running the Genre Tagger

Right-Click Context Menu

  • Right-click on empty areas of the main window for quick access to AutoFiller, Genre Tagger, Control Panel, Singer Database, and About
  • Menu is dynamic — only shows plugins that are actually loaded

Media Database Performance

  • Song scanning is dramatically faster — indexed lookups replace full table scans, batch transactions replace per-song commits
  • Database bloat fixed — automatic compaction after scans prevents the database from growing to multiple gigabytes over time
  • Clean shutdown — database is properly checkpointed and closed on exit

Plugin API Expansion

For plugin developers building on QUP:

  • New FillerPlugin interface for hooking into the filler playback system
  • New SkinnedDialog utility for creating themed popup windows that match the active QUP skin
  • New genre tagging methods: updateSongGenre(), updateSongGenres(), updateFillerGenre()
  • New refreshMediaLibrary() method to update the file list UI without a restart
  • New getPluginDatabase() for plugin-private SQLite storage
  • SongInfo expanded with genre and album fields

Bug Fixes

  • Fixed: Application required two restarts on first launch — now starts fully on the first run
  • Fixed: Upgrading with new columns no longer crashes on startup — column count mismatches are handled gracefully
  • Fixed: Filler music going silent on manual crossfade song transitions

- Fixed: Build size reduced from ~245 MB to ~90 MB by excluding unnecessary platform-specific native libraries

v2.0.22 — April 13, 2026

Crossfade & Distribution Fixes

  • Fixed filler music going silent on song transitions when crossfade is set to Manual mode
  • Fixed crossfade gains resetting on each new karaoke song start in Manual mode
  • Fixed crossfade incorrectly triggering during seeks in Manual mode
  • Filler volume slider now correctly applied on all playback paths
  • Distribution size reduced from ~245 MB to ~90 MB by removing unused libraries (OpenCV, Tesseract, sensor drivers, and non-target platform binaries were being bundled unnecessarily)

v2.0.21 — April 12, 2026

KaraokeMaker Local Files & Fast Restart

  • KaraokeMaker now supports local MP3 and MP4 files — use the Browse button instead of requiring a YouTube URL
  • Accurate duration detection using FFmpeg probe replaces the old bitrate-based estimation
  • Fast song restart — video mode seeks to the beginning instead of fully reloading, audio mode caches duration to skip the rescan
  • Stop → Back now immediately restarts the current song without needing another Play click
  • Playlist wait times show "PENDING" for a singer's queued songs that aren't up next

v2.0.20 — April 11, 2026

File Management Plugin & Plugin API Improvements

  • New FileManagement plugin — batch rename and re-import songs with support for 6 naming formats (DISC/TRACK - ARTIST - TITLE, ARTIST - TITLE, and more)
  • Right-click selected songs to re-import with a different naming convention or physically rename and reorganize files on disk into a clean folder structure
  • Karaoke and Filler sub-tabs with multi-select, sortable columns, and a configurable output folder for file conversions
  • Progress bar for batch operations across hundreds of files
  • Plugin API extended with SongInfo — plugins can now query and inspect the full song library
  • New buildPluginApi Gradle task automatically rebuilds the plugin API JAR when interfaces change
  • Five plugins now ship with QUP: SongShop, Music Video Backgrounds, OBS Recording, KaraokeMaker, and FileManagement

v2.0.19 — April 11, 2026

KaraokeMaker v2 & GPU Acceleration

  • Complete rewrite of the KaraokeMaker plugin with a job queue system — queue multiple songs while one is processing
  • Jobs persist between sessions so you can close and reopen without losing your queue
  • Per-song output settings: brightness, duet mode, frequency slider, and visual effects are now set per song, not globally
  • Right-click menu on queued jobs: Re-Start, Re-Sub (redo transcription only), Re-View, Import to library, Delete
  • GPU acceleration throughout: NVIDIA NVENC for encoding, CUDA for vocal separation (Demucs), and CUDA for lyric transcription (Whisper) — falls back to CPU automatically if no NVIDIA GPU detected
  • NVIDIA CUVID hardware video decoding for music video backgrounds and karaoke video playback
  • Language support for 65 languages with auto-detection and manual override
  • Graceful handling of songs where lyrics can't be transcribed — produces instrumental karaoke instead of failing
  • Music Video plugin now supports browser cookie import for authenticated YouTube downloads
  • Music Video plugin strips track numbers from search queries for cleaner YouTube results

v2.0.18 — April 10, 2026

Session Recording & Media Library Improvements

  • Session Recording — every song queued, dequeued, moved, or removed during a live show is logged automatically
  • Session Playback — replay saved session logs through the real rotation engine for debugging or training
  • Per-folder media scanning — each media library folder now has its own Scan and Remove buttons with an inline progress bar
  • Rescan All button replaces the old "check boxes then rescan" workflow
  • Database settings panel cleaned up with a simpler vertical layout
  • Fixed a rotation bug where singers could get scheduled back-to-back at the start of a show

v2.0.17 — April 9, 2026

Portable Distribution

  • Switched from native installers to a portable zip distribution — just unzip and run, no installation required
  • Per-platform JavaFX bundling for Windows, macOS, and Linux
  • Gradle now auto-compiles all plugins as part of the standard build

v2.0.15 — April 5, 2026

Plugin Architecture

  • New plugin system — third-party developers can extend QUP with custom song stores, media tabs, recording integrations, and more
  • Four shipping plugins:
    • SongShop — browse and purchase songs from the Party Tyme catalog directly inside QUP
    • Music Video Backgrounds — automatically downloads YouTube music videos as CDG backgrounds via yt-dlp
    • OBS Recording — controls OBS Studio via WebSocket to auto-record each karaoke performance with scene switching and lower thirds
    • KaraokeMaker — AI-powered karaoke track creation: downloads a song, separates vocals from instrumentals, transcribes lyrics, and builds a karaoke file with timed lyric sweeps
  • Playlist right-click menu — Exchange Song, Replace Singer, Lock/Unlock in rotation, Show Singer History, Dequeue
  • Video drag-and-drop support for MP4, MKV, and AVI files
  • Plugin developer guide included for third-party development

v2.0.14 — April 5, 2026

Bug Fixes & Stability

  • Fixed music video backgrounds looping indefinitely after the last karaoke song ends
  • Improved rotation engine stability in headless/CI environments

v2.0.13 — April 4, 2026

Rotation Engine Overhaul, Simulation & Cloud Queuing

  • Deep analysis and alignment of the rotation algorithm with the original ml_akdj C++ engine
  • Graduated new singer preference — replaces the old on/off checkbox with a 0–100 slider that controls how aggressively new walk-in singers jump the queue
  • Max wait time lock now correctly protects only a singer's next song, not all their queued songs — matches the original algorithm's intended behavior
  • Same-rotation tiebreaker corrected to use actual singer position in the rotation list
  • Full simulation engine — run fake shows with randomized singers, songs, bribes, and KJ moves to test rotation fairness before going live
  • Simulation displays a purple "SIMULATION" banner on the kcombo web interface with a simulated venue clock
  • Rotation invariant tests added to the CI pipeline
  • Bribe cost calculation fixed for songs queued via cloud and kiosk
  • Double-click to edit singer name
  • "Unmark Bad File" option added to the right-click context menu

Cloud Song Queuing

  • Singers queue songs from their phones — scan a QR code displayed on the kcombo screen and they're in
  • Mobile-first web interface with search-as-you-type across the venue's entire song library — even libraries with 120,000+ songs search instantly, with phones only downloading a handful of results at a time
  • QR code rotates daily to confirm the singer is physically present at the venue
  • One account per device per venue prevents duplicate signups from the same phone
  • Returning singers are recognized automatically when they scan in on a future night
  • Singer selfie photo upload from phone camera, displayed on the kcombo screen above the current singer
  • Song change and replace — singers can swap a queued song for a different one without losing their spot
  • "You're next!" notifications — in-app banner and vibration alert when a singer reaches position 2 or 1 in the queue
  • No port forwarding or special network setup required — works behind any firewall
  • Live queue view — singers see their position and estimated wait time from their phone

v2.0.0 — March 29, 2026

Major Release

  • Application now starts immediately — no blocking dialogs on launch
  • JavaFX video playback reliability improved with an alternating MediaPlayer strategy that avoids a known GStreamer pipeline degradation bug
  • Import Media button added to the file list for quick song imports
  • Venue name is now a simple text field instead of a button
  • Output defaults corrected: JavaFX video, PortAudio audio, WASAPI driver on Windows
  • Build system modernized with dynamic file scanning and updated GitLab CI for Windows, macOS (Apple Silicon), and Linux builds
  • Version format standardized to three-part numbering (e.g., 2.0.0)

v1.1.51 — March 22, 2026

Skin System, Crossfade Engine & UI Overhaul

  • 14 bundled skins themed after classic hi-fi receivers — EAD Ovation, Technics SC-CH900, Kenwood KR V-106, and more
  • Live skin switching — change the look of the entire application without restarting
  • All UI components (VFD timers, scrolling displays, VU meters, waveforms, EQ sliders, transport buttons) are fully skinnable
  • Vector-drawn transport buttons replace old bitmap buttons — scale cleanly at any size
  • Filler music EQ — filler now has its own independent 10-band equalizer (separate from karaoke EQ)
  • CUT slider and VU meter — horizontal CUT slider for filler volume with a redesigned VU meter bar
  • Smart crossfade engine with three modes:
    • Silence — auto-fades filler based on silence detection in the karaoke audio
    • No Karaoke — filler plays only when no karaoke song is active
    • Manual — direct slider control
  • Crossfade mode persists between sessions
  • Config panel redesign — tabbed interface replaced with a tree-navigation panel (always light themed for readability)
  • Alternating row colors in all list views, configurable per skin
  • EQ curve visualizer with smooth spline rendering
  • EQ memory preset buttons redesigned with LED indicator lights

v1.1.0-b48 — Pre-March 2026

Foundation (Java 21 Port)

  • Filler music system — dedicated filler music player with its own playlist, crossfading between karaoke and filler streams
  • Filler checkbox per media folder — designate folders as filler music (excluded from kiosk and song search)
  • Internet radio URL support for filler music
  • Filler songs appear on the kcombo web interface as "Filler" with no rotation logic applied
  • VU meter panel — real-time stereo VU meter
  • Smart crossfade — monitors karaoke audio levels and automatically fades filler at natural silence points
  • Kcombo web interface — live queue display for the audience showing current singer, upcoming songs, rotation order, and queue status
  • Kiosk touchscreen keyboard improvements
  • Bribe visual indicator on kcombo — bribed songs show a tiled money GIF background
  • Cloud backend with venue registration, live playlist sync, singer photo uploads, and session heartbeat