In 2012 I found a keyboard midi controller at a yard sale for $10, and I couldn’t pass it up even though I’m not much of a keyboardist. Once I brought it home I had to find a way to use it, and that search led me to LMMS. There are many good tutorials and other documentation which cover every aspect of installing, configuring, and using LMMS, and I’m not trying to duplicate any of those efforts. This article is meant more as a review and a memoir than as a how-to guide.
LMMS is an obsolete acronym for “Linux Multimedia Studio,” which made for an awkward name when it became a cross-platform application. The website currently says “Let’s Make Music” in the top banner, which would work for the acronym if we could think of a word that starts with “S” to add to it. (Any suggestions? How about: “Let’s Make Music, Sonny?” Yeah, nevermind.)
Actually, I did a bit of reading before I settled on LMMS. The other option was to use JACK to connect Rosegarden or some other midi sequencer to a software synthesizer. But I didn’t want to mess around with different applications held together with duct tape and chewing gum in some MacGyver-ish Linux audio setup; I just wanted to plug in my new toy and play with it. So I opted for the all-in-one approach of a single application which acts as a sequencer and a synthesizer, which is LMMS.
As I have said before, this approach differs somewhat from the traditional Unix philosophy of connecting together small, modular tools. But the Unix philosophy applies to the design of a software application, not necessarily to the preferred behavior of its end users. The web browser you are using to read this article may or may not have a modular design under the hood, but you probably use it as an all-in-one solution and its modularity is transparent to you as the user. Would you rather open a terminal and use wget to retrieve the html document, then pipe it to some html rendering engine? Yeah, I didn’t think so.
Anyway, as I was saying, LMMS is a really nice environment for composing electronic music. I was impressed with it from the first time I used it, and I am still pleased at what a capable synthesizer it is. I am not an LMMS guru, or a sound engineer, or even a music theory expert, but let me give you a quick description of its tools and how I used them to make a few songs. When you first launch LMMS you are greeted with an empty project which has one each of the four possible track types: instrument, sample, beat+bassline, and automation. In the following sections we will review three of these four; I haven’t used sample tracks in a song yet, so I’ll revisit that topic in a future post.
WARNING: This article is for geeks only. You may have noticed that already. Proceed at your own risk. I do recommend that you download the LMMS song project files from the links below and open them in the program as you read my descriptions.
LMMS file: Alan Sanderson – Lullabye.mppz [14.3 kB]
This was the first song I sketched out on LMMS, cutting my teeth on how to organize a project, edit the piano roll, make a drumbeat, and shape the waveform and envelope of the sounds. The tune was a fingerstyle guitar piece that really lent itself to decomposition into melody and arpeggio parts, and I felt like a kid in a candy store designing the sounds to use in the verse and chorus for those two parts. The Triple Oscillator synthesizer in LMMS is based on the manual controls of an old analog synthesizer (like the Mini Moog), and it is easy to recreate classic old-school sounds. I am an old fan of Kraftwerk and Switched-On Bach, so these old sounds take me to a happy place. Every sound in this song, including the percussion sounds, was produced with the Triple Oscillator.
I settled on a percussive buzzy sound for the arpeggios and a softer, more sustained sound for the melodies. My favorite sound was the verse melody, which used a low frequency oscillator to produce a delayed vibrato effect. The most versatile sound is the chorus arpeggio, which is also used to make the echo chords during the intro and adds to the bass texture during the song’s interlude. A fifth sound was added for the bass, and once I had the five voices I arranged the piece as a sort of instrumental folk song, with every voice taking a solo on the different melodies.
I have two quick tips for the beginning electronic composer, which are both illustrated in this song. They are both subtle things but they make a huge difference to the listener. First, separate your sounds in stereo space. Notice how the two arpeggio voices are sonically similar, but separating them into the left and right speakers makes them more discernible. Second, adjust the volume of individual notes to make the phrasing more expressive. I can’t overstate how much this helps the listener connect with your song. This phrasing is done naturally by trained musicians on an instrument, but must be done manually and intentionally when you are programming events in a piano roll editor. This tip applies equally to percussion sounds.
And speaking of percussion, I had a lot of fun shaping the drum sounds on this song. Two in particular are worth mentioning: The Rattle sound used on the backbeat was made using a low frequency oscillator, and I thought it sounded like a guiro or washboard sound. I stumbled upon the Ride sound by playing with different ways to combine the oscillators, and then I ran it through a HiPass filter to remove the lower frequencies from the sound. It sounds a bit like a tambourine to me.
Here is where we talk about the Beat+Bassline editor, which is the place to program your drum patterns. Notice that all of the drum sounds are here, and not in the Song-Editor window. Each pattern you create in the Beat+Bassline Editor appears as a separate track in the Song Editor window, where you simply control where each Beat+Bassline pattern appears in the composition, as you can see in the Song Editor window screenshot above. Sounds can be copied from the Song Editor window to the Beat+Bassline Editor window by holding the Ctrl button and dragging the handle on the far left of the track, so if you start making a sound in the wrong place you can move it later.
LMMS file: Alan Sanderson – Alpha.mppz [16 kB]
Once I felt a bit comfortable with using LMMS I had the idea to revisit this old song of mine that was never recorded very well in the past. The bass, organ, and guitar are very similar to the old recordings, but I added two sounds to this arrangement which I think added a lot of interesting texture and I will describe how I made them here.
The Zap sound was inspired by an echo effect used by Jason Hissong on the song “Perfect Machine.” With just a few notes you can fill the audio canvas with sound. The Triple Oscillator uses a square wave, and I used the Feedback Delay Line effect.
The bassvibe sound demonstrates a subtle stereo panning effect where the pitch of the note determines the stereo position of the note. This is the kind of ear candy that is easier to do in electronic music than in other types of recordings, and which acts as a little love note that only your audiophile listeners will appreciate. (Sometimes when I hear the opening sequence of Kraftwerk’s “Electric Cafe” on nice headphones I say, with tears in my eyes, “I love you too, Florian!”)
A final point about Alpha is the obvious fact that there is an organic instrument mixed in with the synthesizers. I did not record the guitar with LMMS, and as far as I can tell there is no way of doing that (although this song by Jens Hochapfel is an interesting approach to work around the same limitation). So I took a mixdown of the song from LMMS and imported it into Ardour to record the guitar and do the final mixdown. There was a bit of back and forth because recording the guitar part led to some changes in the overall composition and I went back to LMMS several times to revise my work. This made for an awkward workflow at times, especially as I found that LMMS didn’t play very well with JACK on my system, so I may try a different approach the next time I do a composition with mixed electronic and organic instruments.
LMMS file: Alan Sanderson – Omega.mppz [9.2 kB]
This song came together quickly because the composition needed less work than the others, and because I knew my way around LMMS better by the time I started working on this. There are a few techniques I want to point out in this song project.
First, the Beat+Bassline function can be really useful for any sound sequence which repeats unchanged. I used it here for the drum pattern, and also for the Duck and Reverse sounds. I could have used it for the bass and flute sounds, which also repeat themselves, but it turned out to be easier to just copy/paste a pattern in the song editor in that case because they repeat with changes. The bass track on “Alpha” was a bit of a mess for that reason, which is why I took this approach on “Omega.”
Second, the Flute sound was produced by softening the attack on the sound envelope. A similar but more extreme technique produced the fade-in of the Reverse sound. When you are shaping sounds in your synthesizer, make sure you play with the envelope to see what it does to your sound, and you will be pleasantly surprised with how much you can do.
I also played with some different synthesizers on this project, branching out a bit from the Triple Oscillator. The Duck sound was made using the BitInvader plugin, which allows you to graphically draw the waveform you want with the mouse pointer. I actually used the “pluck.xpf” preset, and added the C* AutoWah effect. (Just for the record, I wasn’t trying to make this track sound like a duck. I named it the duck sound only after my wife pointed out the resemblance.) The Harp sound was made with the Opulenz plugin, which produces very clean and pleasing sounds. I will surely revisit that plugin in other projects.
Finally, I used automation to produce a fadeout at the end of the song. To do this I created an automation track, then clicked in that track to define the desired region. Then I found the control slider for the master volume and held the Ctrl key while click-dragging that control to the region in the automation track. Then I double-clicked on the region to draw the volume envelope I wanted for the fadeout. You can use discreet, linear, or cubic Hermite (curved) progression. A volume fadeout is a trivial use of automation, but it can be used to produce any dynamic change to any control in LMMS. (As Zombo.com says, “The only limit is yourself.”) Also, different regions in an automation track can be attached to different controls, and you can have as many regions as you want in a single automation track.
LMMS is a great tool for shaping electronic sounds, and allows you to get as granular and geeky as you want. There are a lot of preset sounds, and the library gets better with every release, but you are by no means limited to using the presets. The interface is easy enough for kids to use, although I will admit that my kids are kind of geeky. I have never had so much fun with sound engineering as I have since I started working with LMMS. It is not a general-purpose tool, and there are some important things that it can’t do, but it is very good at what it does do.
The overall verdict: Two thumbs up for LMMS, which has become a permanent fixture in my Linux home studio. I offer a big congratulations and thanks to the developers for making such a fantastic tool.
P.S. Please feel free to play with my songs, remix them, rewrite them, or whatever else you want to do. Please post a comment below with a link to your derivative work!
NOTE: These three songs appeared on the Lost and Found album, released December 2019. All three songs were significantly revised after this post was written, so head over to the album page to hear the updates and download the new LMMS project files.
To Wish Impossible Things
Alan riffs on an old song by The Cure using a looper plugin on the MOD Dwarf.Read more
Unit Circle (Around My Heart)
A trigonometry love song.Read more
Unboxing the MOD Dwarf Founders Edition
Unboxing the MOD Dwarf Founders Edition, a Linux distro in a stomp box effects pedal.Read more
Prelude in C (music video)
A surfing music video for “Prelude in C.”Read more