The development of Launchpad S

Four years ago, I was involved with the design of the original Launchpad. Conceived as a clip launcher for Ableton, we quickly realised that it had many other uses, so we prepared a MIDI reference manual so that programmers and hackers could control it easily.

It was abundantly clear from the start that people would like Launchpad. Its success as a product came from two sources: the power that it imparted to Ableton, and the community of programmers who, eager for an affordable tool like this, quickly put together a plethora of third-party products: sequencers, music warpers, and even emulators for other controllers.

More than three years have passed since we sold our first Launchpad, and it feels good to revisit it. It’s not very often an engineer gets the chance to reappraise an old project. Even less often does one get the chance to do so with an excellent assistant, Ross. He’s done most of the hardware design and implementation work this time around.

A short while ago we manufactured our last Launchpad. From now on, we are making Launchpad S. Compared with the other controllers that have emerged in the meantime, it is fundamentally a straightforward device, but this simplicity is part of its strength.

We set out to maintain 100% compatibility with the original Launchpad, so that Launchpad S would continue to work seamlessly with existing programs. We’ve actually added very few new features, for reasons that will become clear. But from an engineering perspective, it is a substantial redesign, and the briefing was better in every way. There’s much more to S than a superficial makeover.

Faster!

If I have one regret about Launchpad, it’s our choice of microcontroller – the part that interfaces with the computer and provides all of the device’s functionality. We used exactly the same chip that we employed in Nocturn: a ST7 microcontroller. This enabled us to work very quickly, and to improve our buying power to make the device more economical.

One of the biggest frustrations with this microcontroller is its communication speed. Because the processor is based around a fairly old eight-bit core, we were confined to a low-speed variant of USB 1.1 that limited us to 400 MIDI messages per second. Even when we are clever about it (Ed – kernel mode MIDI drivers are a scary place to be “clever” – getting maximum throughput in the WIndows driver was extremely difficult – davehodder), it takes at least 100ms to update the status of all 80 LEDs on Launchpad. This complicated the effective control of Launchpad beyond the Ableton environment, and stopped us from using class-compliant MIDI, but these were seen as acceptable compromises.

Our sleight of hand was to employ double-buffering – a trick borrowed from certain home computers of the 1980s. This enables a programmer to set up every LED in advance and to switch them all instantly with a single command. Our compromise makes life more complicated for the software designer, but it permits flicker-free fast updating. We put in a mode so that this feature could be used to flash LEDs too. A lot of programmers ended up making very creative use of double buffering, and started to do other things that we didn’t anticipate.

Faster communication.  Given the opportunity for a rethink, the first thing we changed was the microcontroller. Times have moved on since 2009, and it’s possible to upgrade from the old 8-bit device to a shiny 32-bit ARM core. Thanks to a price war between semiconductor manufacturers, this costs only a few cents more than the old solution. Extra speed carries many advantages. The new Launchpad’s USB can handle MIDI at around forty times the speed of the old one, rendering double buffering unnecessary, but we’ve left it in for backwards compatibility.

Class-compliant MIDI.  Faster USB not only allows Launchpad S to be updated directly at a civilised speed; it also allows us to make it class compliant. So the new Launchpad doesn’t require a third-party driver (except for multi-client operation under Windows, but that’s a Microsoft thing). As well as being great news for Linux and iOS developers, class compliance also allows us to improve our MIDI parsing. So Launchpad S deals gracefully with badly-formatted MIDI, and will respond to System Exclusive device inquiry messages that the old Launchpad didn’t have the capacity to support.

Upgrades.  The firmware in the original Launchpad was not upgradeable, but we actually turned this to our advantage. It was a great motivator for keeping the product simple and spurning featuritis, as well as being a spur to get it right first time. Launchpad S is based on technology that we’ve deployed in many other products, and it allows us to respond to demand for product enhancements without stranding our existing users.

A great advantage of being able to change the program space is that we can now add a configuration page. This allows a number of new features. One of the most important is that a user with more than one Launchpad S can now label them to give them different IDs, so that they can enumerate differently and software can determine which is which.

Brighter!

Moore’s Law has a counterpart, Haitz’s Law, in the LED world. The LEDs we put into the original Launchpad, that led the industry in 2008, look rather dim in 2013. One of our goals was to obtain visibility in full sunlight using bus power, and now it’s just about possible to see what the Launchpad is doing when it’s operating in full sunlight. We have achieved this in two ways: by sourcing LEDs that are the brightest available, and by finding smarter ways to squeeze as much light from them as we can.

One thing we didn’t do is add a blue LED element. We ran experiments using them, but there are still a couple of problems. The first is that we can’t quite get the device bright enough for our satisfaction using bus power alone. The annals of engineering are littered with the corpses of products released before their core technology was ready. The time is not yet right for a bus-powered device with eighty LEDs, but give it a year or so and Haitz’s Law will help us out.

The second problem is that we’d need to update the MIDI protocol that Launchpad uses to talk to the outside world. That would turn it into a different product, and would break backwards compatibility with certain software that remaps MIDI traffic to deal with Launchpad.

Colour separation.  Brightness was not our only priority. We’ve been listening to our customers, and one of the more interesting feature requests we have received is to improve the device for colour-blind users. Certain people find it particularly difficult to distinguish between the amber and green states of Launchpad. In Launchpad S, we deliberately selected LEDs with a colour spectrum that spaces the red and the green wavelengths much further apart. The green element is an emerald green, closer to the colour of a traffic light, and the wavelength of the new red element is just a few nanometres higher. Amber is balanced so it looks about the same as it does on the existing Launchpad.

If you do confuse reds and greens, Launchpad S will be a substantial improvement. And if you’re not colour blind, there are now more distinct colours within the colour space that Launchpad offers, whereas before you would have had to be content with three.

Launchpad S vs Launchpad, Full-power mode

Photographs cannot do adequate justice to light emitting devices, but this will give an idea. A Launchpad S battling against a Launchpad under office lighting, both showing the 16 available colours.

Welcoming careful drivers.  It wasn’t sufficient just to find brighter LEDs: we decided to find a more responsible way of putting current through them. The original Launchpad drove its LEDs directly from the 5V USB supply, and LED current was obtained by tempering this voltage with resistors. As we have only 500mA to use, this meant that about 40% of the power we had at our disposal was converted to heat without ever encountering the LEDs. The new scheme uses a switch-mode regulator to divide the input voltage down to 3.6V. Some of our LEDs are driven directly from this, which saves fitting a few resistors, and makes the system about as efficient as it can be: more like 80%. Although the extra regulator costs a little more, we can use fewer components so the cost implications are not severe. The extra efficiency also gives us more current to push through our new LEDs.

Faster multiplexing.  Launchpad multiplexes LEDs. This is a technique that makes more efficient use of our circuitry by turning different LEDs on at different times. No more than a quarter of the original Launchpad is illuminated at any instant and, because it takes time to set up the next set of columns, no LED is on for more than about 18% of the time. The use of a switching regulator gives us more of a power budget to spend on driving LEDs, so Launchpad S is multiplexed one third at a time via a faster processor. Now each LED is on for about 29% of the time (the faster processor helping to reduce the overhead), allowing them to be quite a lot brighter.

Banishing flicker.  We can configure certain LEDs to be lit dimly. When an LED is set to ‘dim’ on Launchpad, it lights for only one multiplexing pass in every five. This was about as small a duty cycle as we could achieve before we could see the device flickering. Unfortunately, video cameras work faster than the human eye. This accounts for the flickering you can see when the LEDs are set to their ‘dim’ mode while the Launchpad is being filmed. One of my pet annoyances with the original device is that it seldom accounts well for itself in Youtube videos.

Launchpad S is so much faster, we changed the way that we do multiplexing completely. We also changed the way that LEDs are dimmed so that we have 64 steps of dimming rather than Launchpad’s five, giving us improved control over contrast and colour balance. The round-trip frequency, at which the dimmest LEDs flicker, has also been increased from 56Hz to 400Hz. This is somewhat faster than a video camera, so dim LEDs no longer flicker when they’re filmed.

To show you this, we used a bit of magic firmware to slow the old and new Launchpads down to 0.25% of their proper speed (so half a minute of the video corresponds to about 1/14 of a second at full speed). The video below shows both Launchpads displaying the same LED pattern as the still photographs on this page. It shows quite clearly that two very different techniques are used, at very different speeds. This is why the dim settings on Launchpad flickered on some video cameras, while the ones on Launchpad S just won’t. Apologies for the video quality, but it proves the point!

More productive!

iPad compatibility.  The LEDs are sufficiently bright to enable us to provide a special low-power mode for Launchpad S. This uses a maximum of 80mA instead of 450mA, which allows the device to be powered from an iPad. Surprisingly, it’s actually a little brighter than the original Launchpad, while using less than 20% of its power.

Launchpad S vs Launchpad, Low-power mode

Launchpad S in low-power mode. The one on the left consumes less than 20% of the power of its older brother on the right.

Reapportioning cost.  We have been able to reclaim quite a lot of the expense of using a newer processor and higher-spec LEDs by thinking harder about the way that the printed circuit board is laid out. Launchpad’s circuit board has four layers in total: two layers of printed circuitry are buried internally. The new one uses a few tricks that we’ve devised in the meantime, and we’ve safely reduced it to two layers. This simplifies the manufacturing process and saves quite a lot of cost, so that we now provide a much-improved Launchpad for the same retail price as the original one. We have even rethought the packaging, slimming down the gift box considerably, so the units are smaller, lighter, and easier and cheaper to transport.

You’ll also notice that we’ve removed the silk screen legends from the buttons: they’re all blank now. This reflects the fact that Launchpad’s uses became far more expansive than we had anticipated, and transcended both Ableton and Automap.

For the same cost as Launchpad, you can now get hold of Launchpad S: a better-engineered product that takes advantage of four years of hard thinking and technological advancement. We hope you like what we’ve done.

18 comments
  1. Many thanks for this post. Really informative.

    The programs made for the old one are compatible with the new one? From your post I believe that you maintained the same API, but I would like a confirmation.

    Thanks.

    • Ben Supper said:

      We attempted to maintain 100% backwards-compatibility with the original Launchpad. As far as we know, everything that runs on Launchpad will also run, unaltered, on Launchpad S.

  2. Wish you all success with the new Launchpad! I still have my old one, can someone please tell me where do I find the MIDI reference manual mentioned early on the post? Thanks!

    • Ben Supper said:

      The new guide is here. It is just as valid for Launchpad as Launchpad S. The original one is kept here, although I think the newer one is better (having written them both).

      In general, all our product documentation can be found at uk.novationmusic.com/support/downloads.

  3. Thanks for your reply Ben! I just sold my old launchpad 😦 but ready to get the new one!

  4. On a side note… this is a question for Ben Supper: I have also a Novation Zero SL MKII, which I think is a great companion for a Launchpad, but I find it hard to map. Is there a Programmer’s Reference Manual for the Zero SL MKII? Knowing how the MIDI information for the device can be manipulated would be great! Thanks on any help given!

    • Ben Supper said:

      The Zero SL MkII is quite a lot more versatile and complicated in its MIDI implementation than Launchpad. I remember it being discussed, but we did not publish such a guide for Zero SL MkII.

  5. Ben, lovely blog post; great insights!

    I love the launchpad, and use it to aid in programming pinball machines, emulating the machine’s switches and lights when I’m not physically near the machine to test the game’s software. And interacting with the machine when I am physically near it, without the ball having to roll across the play field.

    I’m a bit disappointed at the omission of blue LEDs (because how many years will the next Launchpad iteration take?) and would have gladly traded them if that meant the overall brightness would have been Launchpad-1-esque (not sure if that’s the case – less bright wouldn’t be acceptable I agree). But I’m very glad that the Launchpad is evolving, I was a bit worried!

    I was wondering: with the 64 steps of dimming, it would be awesome if we could specify the exact dim level for each note-on message, so we can smoothly fade in and out the pads. This would be an awesome feature for me to better emulate pinball machine light shows (were the same is done by pattering the lights).

    • Ben Supper said:

      That’s a great use for a Launchpad!

      It’s not for me to say that ‘blue LEDs are coming’, but we’ve certainly experimented with them. Technically it’s a bit more of a challenge and, as I stated, the technology is only just maturing to the degree where it can be done well.

      The release firmware doesn’t have the capacity to manipulate the dimming independently, but this was a feature that a certain developer requested, and it will almost certainly be slipped in as a SysEx extension in later firmware.

      • Almost 6 months have past, maybe it’s time for an update?
        Is there any chance of a firmware release with the independent LED dimming feature?
        That would make me a very happy man…

      • Hi Koen! To expose more LED brightness levels would require changing the protocol in ways which would either be very complex or would invalidate existing code, so we’re not currently planning to do so. Additionally, you can’t perceive that many differences in brightness with the existing LEDs, so it might be less useful than you’d hope.

        I’m not sure if the restricted firmware we opened up on GitHub would let you access that layer, but it might be worth a look.

        https://github.com/Focusrite-Novation/launchpad-firmware

      • Here’s to hoping the Launchpad Pro is just as programmable and does support finer LED brightness levels / color control.

      • Some time has passed again and I got the Launchpad MK2 last week. I’m glad to say this is the Launchpad I’ve been waiting for. Full RGB control without losing any brightness – just awesome.
        Example lightshow I programmed within the first two days:

        Don’t know if you were on this project too Ben but I’m sure your fingerprints are on it somehow, so thank you!

  6. Thanks on your previous replies Ben. I have one more question regarding Zero SL MKII. Is there a way to obtain the MIDI values/notes that the hardware employs for custom mappings? Any software you can use to obtain this information? Thanks again!

    • Ben Supper said:

      I’d have to refer you to Customer Support for that information: they’ll be more helpful than I can be. Any documentation of that kind for Zero SL would have been put together by the Automap team, of which I wasn’t a part. This is the best way to get in touch with them.

    • I’m working on a post about SL MkII, I hope to publish it soon.

Leave a reply to Vitor Jesus Cancel reply