LMMS Progress Report: May 2026

Discuss the latest LMMS news with other forum members.

LMMS Progress Report: May 2026

Welcome back to our monthly series of LMMS Progress Reports!

If you missed last month's report, you can find it here.

Nightly News

May was a productive month for development with 20 PRs merged, though due to the feature freeze currently in place, these are primarily bug fixes and performance improvements.

  • Fix resized samples getting shifted after tempo change (#7890)
    regulus79 fixed a bug where sample clips did not scale correctly during tempo changes if the sample's start position was manually adjusted.

  • Add Doxygen docs to GitHub Pages (#8329)
    yohannd1 added a GitHub workflow to automatically generate and publish Doxygen documentation for the LMMS codebase. You can find it here.

  • Fix volume knobs and tooltip bugs (#8359)
    This PR by messmerd fixes several bugs and recent regressions related to volume knobs and tooltips, including missing floating text when dragging a Fader and duplicate tooltips in LOMM, FreeBoy, and other plugins.

  • Fix MIDI import of multi-track files and CC automation (#8383)
    This small change to the MIDI importer by regulus79 allowed it to correctly import multi-track MIDI files and support CC automations.

Other changes:

  • Start running pitch shifter upon initialization (#7356)
  • Use std::round() instead of nearbyintf() (#8119)
  • Fixed key inputs not updating time display (#8266)
  • Prevent key modifiers in MainWindow from getting stuck (#8282)
  • Fix "Send to new SlicerT instance" not sending to Pattern Editor (#8339)
  • Fix beat clips being created with a length of 0 in the pattern editor (#8355)
  • Don't show irrelevant context menu options when right-clicking projects on the sidebar (#8368)
  • Fix length of non-beat clips in the pattern editor (#8369)
  • Fix sample track playback in pattern editor (#8375)
  • Oscilloscope: Add missing QApplication and QThread includes (#8377)
  • Fix Slow Midi Operations by Only Initializing the Detuning Clip When Needed (#8380)
  • Fix Clips Being Hard to Move When Zoomed Out (#8385)
  • Make Tiny Notes Easier to Move (#8386)
  • Fix attached subwindows occasionally snapping to minimum size (#8387)
  • Fix pan/velocity underflow when dragging lower than window bottom (#8389)
  • Revert "Start running pitch shifter upon initialization (#7356)" (#8398)

Other news

  • Website performance/reliability improvements (lmms.io#417)
    For a while now, the lmms.io website has struggled to stay up due to an influx of bot traffic. However, after some help from nykula, we've managed to significantly reduce CPU usage and the website can once again be reliably used.

In progress

In May, 33 new PRs were opened, of which 12 have already been merged. The following is a list of both new and old PRs which were worked on in the past month.

Nearing completion

  • Improve mix sanitization behavior (#7323)
    By default, LMMS sanitizes the audio output of all instruments and effects in order to prevent invalid floating-point values like inf and NaN, though the current sanitization implementation is very inefficient. sakertooth greatly simplified this implementation to improve the performance and added an option to the Settings which enables or disables sanitization. The visual indication displayed when an invalid audio sample is detected still needs some work, but the PR is otherwise mostly done.

In the works

  • SFZ Player plugin (#8391)
    regulus79 has been working on a new native instrument which plays SFZ files. This SFZ player supports the majority of commonly-used SFZ opcodes, allowing it to play most SFZ files in existence. It also supports pitch bending, microtuning, and per-note panning. More work is still needed on the GUI, and due to the feature freeze, it will have to wait until after the alpha.2 release to be merged. However, if you'd like to test it out now, you can download it here.

  • Aggregate plugin load failed into a single popup (#8395)
    sqrvrt opened another PR which deals with VST discovery and loading. This one improves the user experience when plugins fail to load by aggregating all failure messages into a single popup listing which plugins failed to load and why.

  • Add support for the Tracy profiler (#8418)
    messmerd added support for the popular Tracy profiler which should greatly help in diagnosing and fixing performance issues.

Other PRs

These PRs were also created or worked on during May.

  • Remove filepath from VST effect name (#6525)
  • Cache track length for Song Editor performance (#6741)
  • Add feature to export tracks (#7119)
  • Add MPE output support (#8034)
  • Fix PianoRoll toolbar buttons not being disabled initially (#8173)
  • Fix subwindow size limits (MainWindow::restoreWidgetState) (#8204)
  • Apply name filter if export file lacks extension (#8212)
  • Move ~/.lmmsrc.xml to canonical config location (#8264)
  • Bit Invader cleanup (#8298)
  • Add normalizePhase() for normalizing phase (#8327)
  • Fix missing "enter value" on double click (#8372)
  • Support translucency in top-level windows (#8382)
  • Disable vst embedding by default (#8390)
  • Fix FloatModel::getDigitCount() returning wrong value (#8394)
  • Fix subwindows occasionally snapping to minimum size 2: Electric Boogaloo (#8396)
  • Add descriptive tooltips to MIDI CC Rack knobs (#8400)
  • Add the ability to hide tracks in the pattern editor (#8403)
  • Revert my file browser changes that affected search (#8404)
  • Map BarModelEditor (aka "fader" even though it's a different thing) progress directly to cursor (#8405)
  • Make compilation smoother on OpenBSD (#8407)
  • Translations May 2026 (#8410)
  • Losslessly optimized png files (#8411)
  • Fix clip name not showing on empty MIDI clips (#8413)
  • Fix piano roll not updating after pitch bend node value change (#8414)
  • GUI update? (#8416)

Goals for June

In June, we plan to continue working on bug fixes, performance improvements, and alpha.2 milestone issues. The full list of PRs which we will focus on can be found here.

New contributors

  • jlintgod1 fixed the "Send to new SlicerT instance" context menu action in #8339
  • hstrejoluna added some missing #includes in #8377
  • Jarock12 fixed a bug where the keyboard inputs didn't update the time display in #8266

Administrative changes

  • headquarter8302 is now an admin on Transifex

Closing thoughts

Thanks for reading! We have a lot of work ahead of us, but if you'd like to contribute to LMMS's development, it could go faster. Whether you're a developer or a tester, it all helps!

If you have any questions or suggestions, please let us know below or on our Discord.

Have a great June!

"SFZ Player plugin" is a great idea for a new feature!
Thanks for thinking outside the box on that.