LMMS Progress Report: July 2025
Welcome back to our monthly series of LMMS Progress Reports!
To those of you who participated in Best of LMMS this year, I hope you had fun and were able to finish your tracks on time.
If you missed last month's progress report, you can find it here.
Nightly News
July was a fairly productive month, even with some developers temporarily gone on a summer break. In total 13 PRs were merged last month.
Playhead and Timeline for the Pattern Editor (#7794)
This PR by regulus79 is a significant user experience improvement for the Pattern Editor, adding a visual highlight to currently playing beats and a timeline similar to the one in the Song Editor and other editor windows.Inputs and Outputs Selection for JACK (#7919)
michaelgregorius added audio input and output selection dropdowns in the settings for users using the JACK audio backend, eliminating the need for an external connection management tool.Remove the Gate knob from effects (#8011)
This PR by messmerd removes the Gate knob from effects, effectively hard coding its value to zero.For those who don't know, for the longest time every effect in LMMS has had a "Gate" knob, and its existence has been a source of confusion for users since no one knew what it actually did. Its purpose was to control the silence threshold for the "auto-quit" feature - a feature that automatically puts effects to sleep after they've been silent for enough time as a way of improving performance. This is a good feature to have, but allowing users to control what is considered "silence" using the gate knob is not. It was far too niche to be taking up valuable real estate in the effect chain. But more importantly, it was also broken, since any gate value other than zero would put an effect to sleep before it was fully silent, creating a discontinuity in the audio output.
So for these reasons, we've finally gone ahead and removed the gate knob altogether. While this is technically a breaking change, the auto-quit feature has been disabled by default for over 5 years and it's unlikely that many projects used a non-zero value for the gate anyway. We are better off without it. With its removal, we also improved the performance for most effects by using a more efficient silence detection algorithm and only running it when needed. This may be noticable if you use a lot of effects.
Other changes:
- Recording logarithmic automation hotfix (#7621)
- Use C++20 in RemoteVstPlugin (#7916)
- Remove
m_resizable
from Clips (#7954) - Fix Carla breaking GUI on Wayland (#7966)
- Remove
currentPatternChanged()
that has no effect (#7989) - Fix import of xpt and xptz files (#7990)
- Allow export of only the selected notes (#7991)
- Remove
Knob::setHtmlLabel
(#7993) - Set the sample rate for MP3 exports (#7998)
- Remove lots of useless/misplaced includes (#7999)
In progress
In the past month, 22 new PRs were opened, of which 7 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
Add Qt6 Support (#7339)
The linker errors in the MSVC build were finally fixed, and a number of additional deprecation warnings were resolved. All we are waiting for now is review and testing.Make playhead red when recording (#7847)
Fix crash when using certain VSTs (#7976, #7987)
Certain older VSTs (such as Synth1) crash when notes are played, and Fastigum through significant effort was able to pinpoint the cause of this bug and implement a fix. For the Windows MinGW and Windows MSVC builds, it was just a matter of using the right linker flags, but for Linux, it was trickier and required patching the Winebuild tool. However, since we do not want to maintain such a workaround for Winebuild in the long term, we contacted the Wine team in hopes of fixing it upstream, and that is where we are at now. Unfortunately things are taking a while, so maybe the best plan of action will be to merge the PR with the Winebuild workaround which will fix the problem in the short term.
In the works
Refactor PortAudio backend (#7444)
sakertooth plans to add a warning message when the sample rate chosen in the config file doesn't work, but this may require some refactoring.Refactor to move
positionChanged
signal to Timeline (#7454)
This PR by regulus79 fixes a regression that erroneously hides the Piano Roll playhead during Record-Play mode.Add support for multi-channel plugins (#7459)
messmerd recently opened two PRs, #8011 (gate knob removal) and #8016 (Audio buffer view improvements), which contain changes the multi-channel plugin PR depends on. The first PR has already been merged and the second is nearing completion. Aside from that, some API simplifications and documentation improvements have been made, and the regression noticed back in June (when an effect returns a "continue if not quiet" process status) is nearly fixed.Remove the FIFO thread (#7568)
This PR by sakertooth simplifies the wayAudioEngine
renders audio buffers and removes some unnecessary conversions between sample types. These changes will likely benefit performance across the board.Add ability to drag files to and from external applications (#7849)
AW1534 refactored the way mime types are handled, now generating a list of supported mime types and file extensions at runtime based on which plugins are available rather than hard coding them. Now that the refactoring work has wrapped up, the PR is ready for further review and testing.Fix knob linking / refactor linking (#7883)
This PR by szeli1 reimplements knob linking in a more efficient and reliable way. It's great to see work being done to remove the cruft present in theAutomatableModel
class.
Other PRs
These PRs were also created or worked on during July.
- Initial support for CLAP plugins (#7199)
- PathUtil std::string support (#7246)
- Don't fill notes that overlap slightly (#7569)
- FileDialog Enhancements (#7575)
- Stream sample previews instead of loading all contents into memory (#7705)
- Add Duplicate Notes Shortcut to Piano Roll (#7873)
- Make Resizing Tracks more Natural (#7878)
- Add Oscilloscope Effect (#7937)
- Better support for smooth scrolling trackpads and mice (#7941)
- Fix sensitivity of tangent editing in Automation Editor (#7946)
- Update crash01, cello01, e-organ01 to shorter files (#7948)
- Note editing shortcut changes (#7959)
- Vestige: resize on IdVstPluginEditorGeometry (#7963)
- Fix Octave Chord in Piano Roll Only (#7974)
- Fixed missing emails in the author section (#7975)
- ignore .vscode/ folder (#7988)
- Modulation and manual override proof-of-concept (#7995)
- Update Piano Roll Knife Tool (#8000)
- Set minimum deployment target for macOS builds (#8004)
- PianoRoll: fix getKey and remove dead code (#8008)
- Fixed translations, to be uploaded to Transifex (#8010)
- Don't upload strings from third-party code to Transifex (#8013)
- Better loop handles + prevent negative loops (#8015)
- Audio buffer view improvements (#8016)
- Glue all notes if none are selected (#8018)
- Fix the sidebar bookmarks getting reset when opening a file dialog (#8019)
Goals for August
We're continuing to work towards the goal of releasing a new alpha version. As you can see from the remaining milestone issues, it is close to completion, so with some concentrated effort we will be able to release it soon. That will be the main focus of our efforts in August.
New contributors
- aumenhoffer fixed a GUI issue on Wayland in (#7966)
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 August!