Launchpad Lights MIDIFire is a free Max for Live MIDI effect to be used in Ableton Live.

Born as a "side project" for Launchpad Lights, at its core there's a simple MIDI file player that lets you easily import and launch MIDI clips from a MIDI Track or a MIDI Effect Rack chain pressing one (or more) buttons on your Launchpad.

This way you can select and trigger your lightshows just like you do with your samples!

Support My Work

Launchpad Lights MIDIFire is free.

This of course means you can download it, use it and share it with others at no cost.

Still, its development requires considerable time and effort... so, if you like it and find it useful, please consider donating a little something to help me keep working on it, to finally bring Launchpad Lights to life and to make them both always better.

If you like Launchpad Lights MIDIFire, if you have any question or suggestion about it, if you want to know about new updates or simply want to share any of the works you've done with it, please like the Launchpad Lights page on Facebook and post something there or send me a message.

To load a MIDI clip file just drag and drop it anywhere on the device.

Note
MIDI clip files have to be MIDI Type 0 (with a single track) to be read properly.

The text in the MIDI File area1 changes to show the file name as the sequence gets loaded into the player.

Notice that the Get Colors in MIDI clip button2 in the Play section lights up blue. As you play the clip for the first time, this will analyze the sequence to check which velocities are used in the file to make it easier for you to modify the colors in the Remix Colors section.

In the Start1 section you can choose how you want to trigger the loaded MIDI clip.

When the Bypass option2 is active all the notes reach the player, so every button you press on your Launchpad starts playing the clip.

You can select a specific note/button3 in the "traditional way", reducing the Chain Key4 to a single note.

Note
With the bypass option you can only use buttons that send Note on/off signals.

When the Button option1 is active (it was called Note Gate in MIDIFire 0.8), you can easily select which button to use directly on the device.

Just click on the blue SET button2 and then tap the button you want to use on your Launchpad. The corresponding value3 and type4 are displayed into the relative areas.

From now on the MIDI clip starts playing only when you press that same button.

You can still select a different button simply by repeating the process.

New in 1.0
With the button option you can now select buttons on your device that send Note on/off signals but also Control Change signals.

This means, for example, that you can start or stop your clips using any of the circular buttons on the Launchpad Pro in Programmer Mode, but also (not very practical in real-life situations but still possible) one of the knobs or faders on a LaunchControl XL!

With the Receive Chain option1 (a new feature in MIDIFire 1.0) you can start the loaded clip as soon as another one stops playing.

You just have to choose which Chain Number2 you want to use, from 1 to 999, to start playing the clip.

When a Chain is triggered from the Send Chain option in the Stop section of one of the MIDIFire instances in your project, the Chain In3 dot flashes blue and the Chain Number is checked against the one set in the Receive Chain option. If they're the same, the clip starts playing.

Note
Chains are common to ALL instances of MIDIFire 1.0 in your Live Project, so you can start playing more than one MIDI clip by using the same Chain Number in different MIDIFire instances placed anywhere within the Project.

This means that, for example, you can trigger three different clips on three different Tracks that send MIDI to three different devices at the same time.

Or you can easily create Lightshows that span through different devices chaining different MIDI clips on different Tracks and trigger the whole Chain at the press of a single button.

Whichever option you choose, you can always test-start the loaded MIDI clip with the Play Now button.1

Note
Just like any button on your Launchpad it supports both press and release so you can quickly check if the Playing Mode you choose in the Play Section is the right one for that particular effect.

In the Play1 section you can modify the parameters that affect how you play the loaded MIDI clip. With the Mode2 dropdown menu you can choose the way you want the clip to react to the touch of the buttons on your Launchpad.

Trigger: The clip starts playing when you press the corresponding button on the Launchpad. This is the default setting and it's also the only allowed Mode if you're using the Receive Chain option in the Start section.

Gate: The clip starts playing when you press the corresponding button on the Launchpad and keeps playing while you keep the button pressed. As soon as you release the button, the clip stops.

Toggle: The first time you press the corresponding button on the Launchpad, the clip starts playing and it stops when you do it again.

New in 1.0
In Trigger and Toggle modes, the clip now starts (or stops) on button press instead of release. This increases accuracy and timing while performing.

The Loop3 toggle lets you choose whether to play the clip just once or loop it until you manually stop it.

With the Real Time1 option selected (another new feature) you have continuous control over the BPM value of the loaded clip.

The Live Sync2 toggle (active by default) keeps the tempo synced to the Live Project, so you have to disable it first if you want to change it.

You can change the BPM value anytime: before playing the clip but also while it's playing. The clip tempo changes immediately to adjust... in real time. (hence the name)

Warning
This function is based on one of the nicest features of the seq object in Max: you can send tick messages to seq and the time between each tick is used to control the clip's tempo. This is also the only way you can assign an exact BPM value to a loaded clip that overrides its original value.

The only problem with this approach (and the main reason why a speed option exists in MIDIFire) is that the seq object has a known bug that hasn't been fixed yet: the first tick is always out of sync and the next ones try to compensate and "catch up", with weird results. While this is hardly noticeable at higher BPM values, it becomes annoying below 30 BPM (this is why if you go below that value the numbers become red).

I like this feature too much not to include it, but if you need to slow down your clip too much you should consider using the speed option instead.

The Speed1 option (formely called Tempo in MIDIFire 0.8) controls the loaded clip's speed compared to its original tempo.

Note
This means that the clip's tempo is not related to Live's one. If the clip has been created at 240 BPM and the speed value is at 100%, the clip will play at 240 BPM no matter what, even if Live is at 120.

You can modify its value2 directly or use the slider3: both range from 1% to 300%. Unlike Real Time, if you change the speed value the clip will reflect this change only if it starts after the change has been done. So you'll have to press the button again or wait for the next loop cycle.

The Get Colors in MIDI clip4 option, when it's active, analyzes the velocities that are used in the loaded clip while it's playing and stores them to make it easier for you to find them when you want to change your effect's colors in the Remix Color section.

When you load a MIDI clip into the device it is automatically turned on and it turns off as soon as the clip stops playing the first time, so you usually don't need to worry about that... but of course you can turn it on again if for some reason the clip didn't play all the way through and you find some velocities are missing. Just make sure the next time you play the clip it gets to the end before stopping it!

The Remix Colors1 section is one of my favourite new features in MIDIFire 1.0.

It was originally created as a separate Max for Live plugin, but I thought that it could fit nicely into MIDIFire, so I decided to include it as an internal module.

It gives you the ability to change the velocity values of the notes in the loaded clip without having to modify the clip itself.

This means that you can use the same clip for two or more effects that share the same shape but have totally different color schemes.

Note
With the ability to map some of the controls in this section to an external controller (for example the buttons and knobs of a LaunchControl), you can take this even further: not only you can enable and disable the effect on the fly, switching between the original colors and the "remixed" version, but also modify the colors while the clip is playing.

When you first enable the module by clicking on the Active1 toggle and play the clip, nothing changes. This happens because when the device gets loaded the first time, the velocity values and the output values are exactly the same.

To change them you use the two main controls, composed of one Dial with a value below and a colored square on top of it. The first one, labeled In2, shows the velocity value that is originally in the clip. The second one, labeled Out3 shows the corresponding output value that is sent to the Output Device and Channel selected in the MIDI To section of that Track.

You'll notice that when you move the In Dial or change its value, the Out Dial moves as well, showing the output value that is currently assigned to that specific velocity value. Once you've selected the velocity value that you want to change with the In Dial, you just have to move the Out Dial until you find the output value that you want to use in its place. When you do this, every time that velocity value is played in the clip, the relative output value is sent to the Output Device.

If you repeat this process for each velocity value that is used in the clip, you can have different light effects using the same file.

You can revert the velocity values to their original output values anytime using the Reset Active4 button (for the currently selected one) or the Clear5 button (for all of them).

Modifying each and every one of the 128 velocity values (actually 127, cause the 0 is always no-color/LED off) in the selected color palette can be time consuming. In the last slide of the Play section I told you that the Get Colors in MIDI Clip option can help you quickly find just the ones you need in each clip you load into MIDIFire.

Once the clip has been played once and analyzed, the numbers1 under the Colors in MIDI Clip label change to show you how many different velocity values / colors are used within the clip, in the format active / total. At the same time the In Dial (and the Out Dial with it) moves to the first used velocity value. You can then cycle through the used values with the Prev2 and Next3 buttons.

Of course you can always browse through the other velocity values in the "normal" way moving the dials... keep in mind, though, that if you remember to let the MIDI clip play till the end at least once while the Get Colors in MIDI Clip option is active, all the colors you really need to edit to completely change the effect are just a couple clicks away!

Once you're done editing, you can also save4 the color palette you created in a file on your disk. This makes it possible to load4 it in another instance of MIDIFire that contains another clip and use it on different effects that share the same colors... or (and this is imho the only reason to do it) you could edit all the colors and effectively build a custom color palette that can be re-used in different clips. The choice is yours!

The colored squares1 on top of the two Dials shows you the colors from the selected color palette2 and can give you an idea of the color you are replacing and the one that is going to be displayed on the Launchpad.

Both color palettes have a range that goes from 0 to 127, and include all possible velocity values. The Launchpad Pro and MKII have a palette of 128 colors, so for each velocity value there's a different color. The Launchpad S and Mini have a palette of 16 colors that gets repeated 8 times in the 0-128 range. This means that each color is binded to 8 different velocity values... keep that in mind when you want to change them.

About Launchpad colors and Displayed colors
Using this module you'll probably notice that for some values the colors displayed in the squares diverge a bit (and sometimes more than that) from the ones you can see on your devices.

Even if, thanks to the very good guys at Novation, the color palette for Launchpads Pro and MKII has been created with the exact RGB values that are sent to the devices for each velocity value, the way these values contribute to create a colored light on a Launchpad or a pixel on your display is quite different, so the only way to make them really look alike is to browse them one by one and find a closer match. This process has already been done for the 16 colors palette but, as you can imagine, 128 colors require much more time, so it will be probably finished in one of the next updates.

In the Stop1 section you can choose how to stop the loaded MIDI clip once it's playing and what should happen after that.

Exactly like the Button option in the Start section, you can specify a button on your device that will immediately stop the clip upon press.

Note
This method uses the same button selection component of the Button option, so you can now select buttons on your device that send both Note on/off signals or Control Change signals.

Click on the blue SET button2 and then tap the button you want to use on your Launchpad. The corresponding value3 and type4 are displayed into the relative areas. If you want to change the button, simply repeat the process.

Warning
This option works well only when either the Button or the Receive Chain start options are selected in the Start section.

The loaded clip can also be stopped in response to a Chain signal sent by another MIDIFire instance.

When the By Chain toggle1 is selected, if the device receives a Chain with the same Chain Number2 specified in the box, the clip stops playing immediately.

Note
For example, using a single Chain Number you can stop a looped clip (that otherwise would go on forever) and at the same time replace it with another one, switching between two light effects.

To stop the clip anytime you can also click the Stop Now button3.

Note
Clicking the Stop Now button always works, no matter what Start option or Play mode you choose in the relative sections.

The Stop section is also the place in which you can choose if you want to extend your light effect by chaining it to something else.

Whether you manually stop the clip (with a button on your Launchpad, a Chain signal or the Stop Now button into MIDIFire) or the clip stops playing by itself when it reaches its end, if you have the Send Chain toggle1 active the relative Chain Number2 is sent out to all the other MIDIFire instances you have in your Live Project.

If one or more of those instances have been set to receive that same Chain Number in the Start section, the clips loaded in those instance will start playing right away.

At the same time, all clips loaded within instances that have the same Chain Number set and the By Chain toggle active in the Stop section will stop playing.

Some of MIDIFire's controls and parameters can be mapped within Live to be automated and controlled via other devices in the project or external MIDI devices (like the Launchpad itself or a Launchcontrol, for example).

This lets you use these controls on the fly while performing and also to record their changes if you decide to record the performance, so that they can be replayed or modified later.

The mappable controls are:
- the Real Time BPM value1 in the Play section.
- the Active toggle2, the Prev and Next buttons3 and both the In and Out dials and values4 in the Color Remix section.

Note
These controls are the ones I thought a user like me would probably like to tweak during a performance, but of course you could want to be able to change something else. As MIDIFire is a Max for Live device, this is not much of a problem. If you want, you can click on the Edit button5 on the top-right of the device's title bar. This opens the Patch Editor window in Max, where you can add this kind of "ability" to many other controls.

Warning
The operations listed in the next steps are not difficult, but they are not intended as a complete tutorial on how to edit a Max for Live device... even if the concepts can be generalized, they just describe how to accomplish this specific task with the MIDIFire device.

Remember that when you edit something that has been done by someone else, there's always the risk of "breaking" something by mistake or altering some parameters that could lead to a "malfunction" of the device. If something goes wrong, keep in mind you can come back here anytime, download MIDIFire again and start over.

Note
If this is the first time you modify something in Max for Live, you should probably watch some tutorial or check the online documentation first.

The first thing you have to do is click on the Freeze / Unfreeze button1 in the bottom bar of the patch window to allow the editing of the device. When you do that you can see that the device's appearance changes slightly2, as now you can see the boundaries and the editing view of the elements inside.

Note
You should still be in Presentation Mode. This mode allows you to see how the device looks once it's within Live. As in Patching Mode things look quite different, if you look at the patch window and see an awful mess, check the Mode Switch button3 in the bottom bar: it should be yellow. If it's not, just click on it to change the mode... all should get back to its place.

On top of everything, there's a transparent live.drop component. This lets you load the MIDI clip by simply dragging it anywhere on the device when you're in Live but now, being on top, it doesn't let you select any of the other components... so you have to move it.

Just click anywhere on the device's interface: you should see some semi-transparent squares4 all around the device. This means you have selected the live.drop. Drag it somewhere out of the interface's area. Don't worry, there is a very easy way to put it back where it should be once you're finished.

With the live.drop out of the way you can now reach the other components. Just click on the one you want to be able to map to select it (in this case the Receive Chain toggle). The semi-transparent squares appear once again around the object, confirming the selection1.

Now open the object inspector panel, either clicking on the circular i icon2 on the right bar of the patch window or using the keyboard shortcut CTRL or CMD + i (depending whether you're on Windows or OS X).

You have to look for Parameter Visibility3 inside the inspector panel's Parameter section (if you don't find it, make sure that you've selected the All tab4), and change its value from Stored Only to Automated and Stored5.

Repeat this process for all the components you want to map.

Warning
The ability to map and automate controls is of course useful, and you could be tempted to enable it for all of them... remember, though, that every control that has this option adds its changes to Live's undo history, and that's true for each instance of the device within the project. Usually it's not a big deal but, if you have many controls that change frequently, it could quickly become a heavy load for your computer, especially on older machines.

Once you're done editing, it's time to save the device... but there are a few things you have to do first in order to make it work as it should.

First of all, you have to put the live.drop back where it was. It is transparent, so you don't see it... but, as it's quite big, it should be easy enough to find clicking on the general area where you moved it before. Once you've found it (the semi-transparent squares are once again your friends), open the object inspector1 the same way you did for the controllers.

Check if the title bar2 says live.drop (if it doesn't you have selected the wrong thing) and, inside the inspector, look for the Presentation Rectangle value3 (it's in the Appearance section under either the Layout or All tabs4). Change it to: 0. 0. 1176. 169. and press enter.

Now that the live.drop is fixed, you have to lock and freeze5 the device, so that all the external files (in this case JS) gets included in it.

When you've done that, you can save the device, close the patch editor window and go back to Live.

Congratulations, you're done!

If you want to use the MIDIFire in a project that will be shared with others (for example if you make a cover and want to distribute a working project file that doesn't require your viewers to install the effect beforehand) you should create a new folder (in this case "M4L") inside the project main folder1 and copy the MIDIFire .amxd file2 in it.

Inside Live you can find this new folder inside the Current Project folder3 in the the "places" section of the sidebar. You can now easily drag and drop the effect from here instead of the Max MIDI Effect folder.

This way when you zip the project folder the .amxd file will be included in the package and, once the project file gets opened on another computer, Live will find the effect in the right path and the lightshows should work, even if it wasn't already installed on that machine.

You should also do this with all the MIDI clip files4 you intend to use in your project.

Coming Soon

Goodies

COMING SOON

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.