Control Your Show Remotely

 Sometimes, it is convenient to control your show from an interface other than Millumin on your computer. Or even using a specific interface to easily access certains features.
 This tutorial shows a few examples, but of course the possibilities are endless.

Simple Interactions

Millumin supports various protocols and standards : MIDI, OSC, DMX, Artnet, sACN, gamepads, … More info on this article : Interactions
 For example, if you want to control Millumin via a MIDI device, interactions should be sufficient for you.
 You could also use a gamepad, such as the Nintendo Switch JoyCon, or a more sophisticated system such as the DSAN PerfectCue.


TouchOSC is a cross-platform application to create custom interfaces. It shows its true power on your iPhone/iPad/Android, and allows you to control Millumin from there. So no need to be in the front of your computer any more !


We will use an iPhone in this tutorial, but the same applies to an iPad and an Android :

  • First, be sure your computer and your iPhone are on the same Wifi network. If you do not have one around you, create your own from your computer.
  • Download TouchOSC for your iPhone
  • Download the templates below :


  • Connect your iPhone to your computer, then upload the template for iPhone :

  • Open TouchOSC on your iPhone, then load the template :

  • Setup OSC connection in TouchOSC :

  • Setup OSC connection in Millumin :

  • Then press the ▶︎ icon to play the template (you may have to scroll with your finger on the toolbar) and control Millumin !


While you can edit your template within the TouchOSC version for iPhone, it is far more convenient to do so from the desktop application :

Please refer to the OSC documentation here to learn more about messages to control Millumin.

Legacy Versions (MK1)

If own an old version of TouchOSC, also called TouchOSC Mk1, you can use these templates with Millumin V2/V3/V4 :


For Millumin V1, use these templates :


StreamDeck + Companion

The Elgato Stream Deck is an USB keypad : each button is programable with its own action and display. Thus, this is a handy device to control your show.

If you are using one, you probably want to use Bitfocus Companion to easily program it. It offers a lot of possibilities !
 Also, it has an emulator, so you could quickly check if the Stream Deck may be useful for your workflow. Here are a quick tutorial.

First, launch Companion and Millumin. They should be configured as below :

Companion is web application, so it opens in your browser.
 Add a connection called Millumin :

And configure this connection as below :

Now, go to Buttons tab and select a button :

Set this button as a regular button then type next in the action field, so this button will launch the next column in Millumin :

Your action should look like this :

Lastly, click on emulator in the menu on the left to open it, and test your layout :

Of course, Companion can do so much more. For example, it has a variables section : these evolve in realtime and can be use to name your buttons.

Or use an expression to convert raw timestamp into a more human-readable format :

Note that you can also send custom OSC message : thus you could build interactions between your Stream Deck and Millumin, or use the OSC API.
 Add the connection OSC Generic to do so :

Open Stage Control

Open Stage Control is a libre and modular OSC / MIDI controller, that can be used as a standalone application as well as on a mobile device's browser. In the same fashion as TouchOSC.


First, set the ports/IP in Open Stage Control. Here is an example if you run it locally :

Set the ports/IP accordingly in Millumin :

Then, click the ▶︎ icon and open one of the templates below :


The ColumnControl template is a simple show-control :

The LayerClock template shows the progression of a media :

The LayerClock (multiple layers) template shows the progression of multiple medias.
 You can customize this template by duplicating a panel and changing its variables :

Please note that you can access the interface in a brower : try


Press CMD+E to edit a template : you can add some more widgets as well as create variables and scripts. In brief, you can do a lot !

Please refer to the OSC documentation here to learn more about messages to control Millumin.


Chataigne is a free and open-source modular software by Benjamin Kuperberg. It supports a wide range of protocols to create simple to complex interactions.
 To get a quick overview of Chataigne, you can read this tutorial : Setup a Backup Machine

Lemur (legacy)

Lemur is an application that send and receive OSC, just as TouchOSC, but it offers the possibility to create bricks with far more control on the OSC messages.
 Unfortenatly, it was stopped in September 2022. But if you still have this useful application, here are the steps to use it with Millumin.


The projects and templates used in this tutorial are below :


You can also find bricks for Millumin in the developer-kit.
 To upload and modify the Lemur files, you will need the Lemur editor available here.

First we will upload the Lemur file to your phone or tablet : open the story.jzml file downloaded above with the Lemur Editor application.
 It is important that your computer and your device are connected to the same network, so be sure to select your device in the editor :

Once connected, every modification on your computer will be automatically visible on your device, so you can test the results directly.

Then, open the OSC setup panel in Lemur, type your IP and Millumin input port :


Open the Millumin project called story.millumin and open the device-panel (CMD+K) : enter your device IP and port. By default, Lemur input port is 8000. Also ckeck the API feedback option, so Millumin will send OSC back to your device.


Now, you can hit the next button to go to the next column. Note that the names and transitions of the columns are displayed in this interface :

In the second tab, you can control the selected layer (in the same way as TouchOSC) :

And in the third tab, you have basic time control.
 This brick shows the elapsed time of the current media, in the layer called movies. You can edit the watched layer by changing the WatchedLayerName property in Lemur Editor :


Lemur’s flexibility allows you to adjust the interface depending on the column played in Millumin.
 This brick is available in the developer-kit, and you can customize it : the fourth tab contain a sample for the story project.

For example, on the first column, you just want to control the pyramids opacity. Once it’s finished you can go on the next columns and the needed controls appear.

Now, let's see how to create your own show-controller.
 First create a new Lemur page, so you can keep the rest of the sample clean :

Now open the ShowController brick you got from the developer-kit :

This brick is organized in containers. Each container can integrate several controls : sliders, faders, clocks, ... First we will edit the container called Column1. We can remove the fader (select it and hit backspace).
 We can also edit the text field : select it and edit the text in the right part of the interface :

You can then add a custom knob for example. Select it in the library and edit the address (/millumin/UFO/rotation) and the scale (from 0 to 360). You should now be able to control the UFO rotation :

Now, we have to decide on which column this container will be visible. Because the UFO layer is only visible on the fourth column, we have to set the visibleOnColumn variable to 4.

You can use the same interface for several columns : just type {1,2,3,4} if you want to have it on the first 4 columns.

Lastly, we will customize a second container. The same provide one called Column2, otherwise you can create a new one just by duplicating Column1 (right-click then duplicate).
 To make that block visible you have to right click on it and select bring to front.

And you just have to insert your components and customize their OSC address, just as before.
 This way, you can no repeat those steps and create a custom show-controller with cues indications, see the time remaining in a specific media, ...

   Follow Us


   Submit your Idea

If you need something, feel free to create an idea on Uservoice.
Indeed, it helps us to keep track of user requests, and see their popularity.

  Ask your Question