January 6th, 2021

Trying LMMS Again A Decade Later



Ah, winter. Nothing better than a good old rant to brighten up the day in this dull gray weather we’ve been having for several weeks now. Normally, dat zekt and me would have locked ourselves in at the studio for the month of December, to record a new Doppelplusungut. But well, things are a bit different these days. Long story short, as we live in different countries, we simply couldn’t meet up this year. So instead we went looking for a way of collaborating online without blowing through the rather tight monthly data limit I’m currently “enjoying”.


For the PC side of things, we normally stick to a mix of Milkytracker, HammerHead, Hydrogen, and Buzé, with the main sequencing work being done in Audacity. However, we knew this wasn’t going to be feasible this time, considering the constraints. So dat zekt suggested we give LMMS a try. Initially I was rather sceptical, since I strongly disliked LMMS the last time I tried it out. Then again that was more than a decade ago, so I felt that maybe it was time to give it another try. And so we did. And, to my surprise, the experience hasn’t been completely awful. So, after using LMMS daily for the past month, I’d like to share a few thoughts on it.


The number one positive thing I can say about LMMS is that it was really easy to get started (again). With a few notable exceptions, things are intuitive to the point that you’ll be happily composing your first track within 15 minutes of opening the application for the first time. In that respect, LMMS wins out over pretty much any other Linux DAW I’ve tried so far. Also, once you do get stuck, the documentation is generally helpful and to the point, albeit a bit sparse at times.


I’ve had to recompile LMMS a few times before I had a version that produced project files compatible with dat zekt’s setup. Compilation was straightforward and worked out of the box on my semi-broken Gentoo system. That in itself is quite a feat for such a large application. Also, it runs very stable on my machine (crashing only once when I was trying something weird with a hacked .mmp file), and I’ve not experienced any audio issues whatsoever either.


I was also positively surprised by how clean and polished most of the UI widgets are nowadays, and I’m happy to hear that the LMMS team is planning even more improvements in that area. While LMMS has always had a strong focus on this, in the early days it was very much a case of wanting too much and achieving too little. Anyway, that blurry pixel mess of yonder certainly won’t be missed.


What I’m less thrilled about is the overall UI layout. LMMS does not make very efficient use of the available screen space. Everything tends to get crammed into the upper left corner, while the bottom and right part is mostly a gray void. I found myself constantly resizing and moving around things, in order to be able to interact with more than one sub-window. At the very least, widgets should auto-resize when the main window changes size. Also, I’d give bonus points for ensuring that sub-windows actually stay within the visible workspace when resizing the main window. Ultimately I think a tiling approach would work better than the “many floating windows” approach LMMS currently uses. Blender is a good example of a tool that gets this right. Also GIMP switching defaults from floating docks to tiles a while ago worked really well in my opinion. However, of course that would require a huge amount of work, so I can understand that the LMMS team is not too keen on tackling this.


If I were to name the one feature I really like about LMMS, it would be the fact that virtually anything can be automated. I suppose this is a feature that every major DAW has nowadays, yet the way it works in LMMS is absolutely consistent and painless. My only minor nitpick here would be that the automation editor should default to linear interpolation for anything but toggles, but that’s nothing I’d lose sleep about. I guess a function generator for automation patterns would also be handy, though most of its potential use cases are already covered by Controllers. In addition, dials resetting to either their last saved value or their default on middle mouse button click is a small, but extremely useful feature. Oh yeah, controlling a Controller through another Controller is definitely good fun.


Last but not least, as a chipmusic fanatic, I’m of course pleased to see built-in SID, NES, and Gameboy emulation. Especially the SID synth saw quite a bit of use from us. Overall, I think the set of built-in generators is quite solid, with even quite advanced needs covered by the excellent ZynAddSubFX. Vibed, the string synthesizer, is also pretty neat, except that it tends to crackle on release (which is somewhat strange since this kind of Karplus-Strong inspired synthesis normally elimits crackling by design).


Using LMMS as a tool for remote collaboration exposed a few rough edges here and there, but overall the experience was positive. You definitely want to use the same version, or at least similar versions of LMMS when doing this, though, as there are breaking changes between releases such as renamed plugins, file format changes and so forth. The one thing that did give us a bit of a headache was related to the CALF LADSPA suite. While my LMMS build expects the CALF suite to reside veal.so, the LMMS packaged for Debian-based distros expects them to reside in calf.so. The upcoming LV2 support should resolve this, though.


So now let’s talk about the things that aren’t so great in LMMS. Exhibit A: Middle-click deletes blocks in the sequencer, but right-click deletes blocks in the piano roll. In my opinion, this is a major UX fail. Either middle-click should delete everywhere (since right-click opens the context menu in the sequencer), or even better, use something like Shift+right-click, since many newer laptops don’t have a middle mouse button anyway.


Another thing that’s solidly in “not good” territory is the copy&paste behavior in the piano roll. Pasting a set of notes will inevitably insert them at the beginning of the pattern. Is there any reason why it doesn’t work like in the sequence editor, where you can right-click to paste at an arbitrary position? Hmm, perhaps because right-click deletes in the piano roll?


Another major usability issue occurs when setting loop points in the sequence. According to the documentation, right-click should set the right loop point, and Shift+right-click should set the left loop point. Except, that’s not how it works. In practice, both will set either the left or the right loop point depending on which is currently closer to the mouse pointer. To whoever thought this is a good idea: No, it’s not.


Then we have the amazing beat/bassline editor. Beat/bassline patterns default to a length of 16 steps. It’s possibly to change the length (in 16-step increments). However, doing so does not increase the horizontal size of the pattern display, but instead redraws all the steps to be smaller. By the time you’re up to 64 steps, the whole thing is pretty much unusable because the steps are too small to hit with the mouse. Why you cannot simply make the editor scrollable like pretty much everything else is beyond me. Well, then stick to less steps, I hear you say. In theory, yes, that’d be the way to go - except that unlike all other segments in the sequence, beat/bassline segments are not unique. Which means you’ll need a new track in the sequence for each variation. Also, I was wondering why it’s called the beat/bassline editor when you apparently can’t actually set notes. Or, change a trigger’s volume or panning. Turns out you can - by opening a beat/bassline track in piano roll mode. Great. So why not just use a piano roll in the first place? Just to be clear, I like the general idea of having your percussion tracks lumped together in some sort of meta-track. I just wish it wasn’t so poorly executed.


As far as I’m concerned, these are the major stinkers in terms of usability. There are some other, minor ones. None of these are really a show stopper, but I’d like to mention them for sake of completeness. Playback not stopping at the end of the song is an obvious one, as far as I understand that’s being worked on, though. When loading a sample on a sample track, LMMS will remember the last used directory when loading on a sample track that already has a sample loaded, but not on a new sample track. Undo doesn’t work well with transpose actions: When you transpose a block of notes, undo will un-transpose single notes instead of the whole block. Finally, soloing multiple tracks works differently from any other music editor I know. Normally, you hit the solo toggle for each track you want to hear. In LMMS, you hit the solo toggle for one of the tracks you hear, then hit the mute toggle for the rest of them.


I was also disappointed by a number of missing features. LMMS still doesn’t have LV2 support. It’s being worked on and will probably land soon, but honestly this should have been prioritized early on, instead of spending time on actually maintaining a fork of the CALF plugin suite. Likewise, no DSSI support is quite a let-down (especially considering LMMS used to stand for Linux MultiMedia Studio), though LV2 support will make DSSI support redundant for the most part. There’s also no native (Linux) VST support. I could understand if they didn’t want to support VSTs for ideological reasons (and I’d actually support that - like, why should an open source audio application support proprietary plugins), but LMMS does support Windows VSTs, so that’s not a valid excuse. One more missing feature that fortunately is finally being worked on now is Humanization. In the past, the claim was always that it’s impossible to implement due to some architectural limitations, so I’m not sure what has changed now. Either way, I think it’s a must-have for any serious audio production suite.


So, in conclusion, would I recommend LMMS to aspiring Linux audio producers? Well, we successfully used it as our main driver for producing an EP with it, so it’s undoubtedly usable. And, for what it’s worth, it was actually a rather enjoyable experience. It’s clear that the LMMS team has put quite some thought into providing a smooth and intuitive user experience, despite the points I mentioned above. Also, ultimately there’s not that much competition in the field of open source DAWs, unless you prefer a MIDI-centric workflow like in Ardour. Zrythm looks very promising, but I find it too much of a hassle to build at this point.


That said, I’d still prefer a decent tracker-based DAW instead. Sadly, things are looking not so great in that regard lately. Neil Sequencer, which was my go-to tool for “normal” music production for many years, is dead and virtually impossible to build on modern Linux. The Buzztrax project also seems to suffer from a significant lack of humanpower. At least their website is up again. There’s also Radium, which has roots in Octamed on Amiga, rather than Jeskola Buzz like the former two. I haven’t tried it yet, but I think I might give that a go one day.


Anyway, I think the best way to sum things up is: LMMS has come a long way since its early days. It is very easy to get started with, but do expect to find a few dark corners here and there when trying to pull off some more advanced tricks.


PS: In case you were hoping for an announcement of the new Doppelplusungut release: We’re planning something special this year, so things are taking a bit longer than normal. I expect the final release some time around the end of winter/early spring.