MiLight Controller

with LightFX





HOW IT WORKS



Have you ever seen those fancy TV’s that project a color on the wall behind them, based on what it’s playing?
It's a technology called 'Ambilight'. This project started because I wanted that kind of effect on my big projector screen while playing movies. You can get that effect with Philips Hue, probably Lifx lamps and various combinations of Raspberry Pi/ Arduino with LED strips. Most of these methods are probably more expensive or non practical for a non permanent fixture, such as a foldable projector screen. I wanted very cheap hardware. It turns out there are Wifi RGB lamps that don't cost a fortune.You can find them branded as MiLight / LimitlessLED / EasyBulb. A basic setup for example (lamp+wifi bridge) will cost you $30 or less and a few minutes to setup. My software in both free and paid flavors. I'd like to hear how it worked for you. I hope that it will suit most people's needs. Ideas are always welcomed of course. The idea behind this app is pretty simple really. Audio and video is processed by this app while it's playing and colours are calculated based on certain algorithms. Those colours are then passed to the lamps via WiFi. I’ve also ported some of my previous work ,namely a LightFX (aka AlienFX) compatible protocol.

End result looks something like this.

LIGHTFX LIBRARY



LightFX (also known as AlienFX) is an interesting technology used by some games. It allows the game to set the colour of the lamps directly. So far only a handful of games have adopted this technology. This app incorporates support for this technology.
Note: LightFX is deprecated for V6 since there are not enough game titles to support its development



KODI/XBMC



If you don't use Windows, the Ambilight part of the application has also been ported as a standalone Addon for Kodi/XBMC. This Addon is compatible with all platforms (Windows,Linux,Mac OSX, Android etc) and all CPU types (x86,ARM etc) that are supported by Kodi.
Download and install as zip, configuration is the same as the windows version.



WHAT YOU NEED




You will need the following stuff in order to take advantage of this app:




computer

Computer

for playing the audio /video file

gears

This App

It will process the signals and decide what to do and calculate the colours

    Requirements are:
  • Windows Vista/7/8
  • .NET 4.5
  • VC++ 2013

wifi

MiLight / LimitlessLED / EasyBulb WiFi Receiver Bridge (v4 or newer for better results)

This controller is used to bridge the computer and the lamps.
You'll need at least one. Make sure you get the right version of it as older versions (prior to v4) are only able to support one colour instead of four

milight lamp

MiLight / LimitlessLED / EasyBulb Lamps

You need one of the coloured versions of the lamps or LED strips:

  • RGBW warm white
  • RGBW cold white
  • RGB (limited support)
You can get away with only one lamp but you'll get a much better result with 2 or 4 lamps

HOW TO SET IT UP



A more detailed guide is included with the app upon installation. Here are a few basics

Settings

settings


Effects

The following are common for most effects:
Latency: How often the colors change. Lower latency means faster color change but also higher CPU load
Sequential lights: When checked, lights won’t all be updated together. Instead they will change one at a time

controller


Static color

This is your basic mode. It simply sets a color of your choice to each zone. Clicking on one of the lamps brings out this colorwheel.

static color effect settings


Audio mode

This mode lets you drive the lights using music.

audio color effect settings


Cycle colors mode

This is your classic mode where colors rotate in pattern. You can also apply a strobe effect.

static color effect settings
You can define your own light sequence by creating a script file. The script files are placed in the folder named “loops” inside your installation directory. The scripts must have the “.mlcc” extension to be recognized by the program. The file itself is a text file, a demo script is this:

<mlc>
<options>fadein,fadeout,randomcolor,randomlamp=4 </options>
<color>00000000</color>
<color>809c4500</color>
<color>ffc75600</color>
<color>b4f48e06</color>
</mlc>

The script has 2 parts. First part is the options, this is optional. Here you define how you want your effect to behave, simply by writing the keywords.

The valid options are:

  • fadein     This specifies whether the colors should be faded in
  • fadeout     This specifies whether the colors should be faded out
  • randomcolor     If specified, colors will be played in a random order. If not they will be played sequentially starting from the top
  • randomlamp=XX     If specified, a number of lamps XX must also be specified, eg. randomlamp=2. This tells the application how many lamps to randomly change at any given time. Valid ranges are 1 to 16. If not specified, all lamps will change color together

The second part in a script are the colors. Each color must be written in the form <color>AARRGGBB</color> where AARRGGBB is an ARGB HEX color value:
  • AA: The relative brightness of the color, range 00-FF
  • RR: The amount of red color, range 00-FF
  • GG: The amount of green color, range 00-FF
  • BB: The amount of blue color, range 00-FF

eg. <color>80FF0000</color> for color red, half brightness.
You can define the same color multiple times if you want it to be more common.


A list of premade sequences can also be found online here: http://bitbucket.org/epocapp/milightloops
If you have made a sequence and you would like it to be featured on this site, email it at epocapp@gmail.com with subject “Color Sequence Submission”.



Screen color mode

This is the main mode for this app. This mode does all that fancy tricks with movies. It takes some getting used to but it’s worth the effort.

screen color effect settings


Per-Zone control

The Milight WiFi bridge can support sending commands to 4 different lamp groups (called "Zones") simultaneously. The app has support for sending commands only to some of the zones. This enabled you to control only certain zones via this app when you utilize multi-room setups with the same bridge.



Triggers

This mode allows you to define custom strategies for effects. You can specify what effect the controller will use based on:

  • The applications you have running
  • A time
  • Both
The criteria are hierarchical top-down. Starting from the top, the first criterion that is met will be applied. If you specify a time but no process the application will assume that you want that time to have priority over all other process-based triggers. Multiple process names can be stacked using the “;” symbol. For example firefox;notepad

Triggers


Presets

Presets is basically a save/load function. It allows you to store various different configurations and restore them with the click of a button.

Triggers


Skins

Skinning allows you to customize the app for a more personal look. You can choose one of the included skins or you can make your own. More info is included in the user guide that comes with the app.

A list of themes can also be found online here: http://bitbucket.org/epocapp/milightskins
If you have made a theme and you would like it to be featured on this site, email it at epocapp@gmail.com with subject “Skin Submission”.

Skin1


Skin2


Skin3


Skin4


Command line usage

You can also launch the app or feed it information during its lifecycle using command line parameters. So far you can only change the effect type but more modes will be implemented as needed. This features is useful if you’re writing a script of your own.

Usage:
“Milight Controller.exe”<options>
<options> are:

  • -e or –effect or /e or /effect: followed by the effect number:
    • 0 = Off
    • 1 = Audio
    • 2 = Screen Color
    • 3 = Static color
    • 4 = Cycle Colors
    • 5 = Lava Lamp
    • 6 = No effect
    For example: “Milight Controller.exe” –e:0

  • -q or --quit or /q or /quit exits the application


  • -f or --frequency or /f or /frequency:<value> for the effects that have an overall frequency slider
    Valid range is 10-1000, (1000ms = 1 second)


  • -b or --brightness or /b or /brightness:<value> for the effects that have an overall brightness slider
    Valid range is 0-255


  • -c or --color or /c or /color:<ZONE>,<A>,<R>,<G>,<B> for the static color effect only
    Valid ranges are:
    • <ZONE> 1-16. 1-4 refer to first controller, 5-8 the second etc
    • <A> 0-255
    • <R> 0-255
    • <G> 0-255
    • <B> 0-255
    Multiple colors can be stacked on the same command as long as you follow the -c:<ZONE>,<A>,<R>,<G>,<B> convention for each zone you want to paint


  • -gc or –getcolor or /gc or /getcolor: <ZONE>
    <ZONE> 1-16. 1-4 refer to first controller, 5-8 the second etc.Requests color for a zone in static color mode

A few examples
Switch to custom color mode:
"MiLight Controller.exe" -e:3

Sending this command will change the first 3 zones to Red,Green,Blue with full brightness:
"MiLight Controller.exe" -c:1,255,255,0,0 -c:2,255,0,255,0 -c:3,255,0,0,255

This command will change those 3 zones to white with brightness 100%, 70%, 50%:
"MiLight Controller.exe" -c:1,255,255,255,255 -c:2,178,255,255,255 -c:3,128,255,255,255





Sending commands via Telnet

You can also send the above command line parameters via the network by using a telnet compatible client, for example PuTTY.
You need to establish a connection to the IP of the PC running the controller using the listening port specified in settings (default 8899).
The commands use the same format as the command line arguments with one exception.
At the end of the command you have to add a dot (.).
This signifies the end of the command to the server.
You can see the example below.

screen color effect settings



Sending commands via HTTP

You can also send the above command line parameters via HTTP with a browser.
You need to browse to the IP of the PC running the controller using the HTTP listening port specified in settings (default 8898).
The commands use the same format as the command line arguments.
You can for example access the page on http://127.0.0.1:8898
When sending commands over HTTP the proper format is: http://<ip address>:<port>/?<command>
Don't forget the "/?" part...
for example http://127.0.0.1:8898/?-e:3

Stacked commands must be separated by the symbol ‘&’
for example http://127.0.0.1:8898/?-c:1,255,10,20,15&-c:2,100,0,55,185

NEWS



23/2/2017

This is the first stable release that adds support for V6 bridges

8/2/2017

We're moving to a new server. If you want update checking to work make sure you have installed at least version 1.5.5.0 or 1.6.2.9

25/12/2016

Initial support for the V6 bridges was added. It is still beta so give it a try and let me know how it performs.

19/11/2016

It seems there's a new version of the bridge, V6. It looks like they may have changed a few things that may break compatibility with the app. Until the app has been thoroughly tested with V6 bridges avoid using the app with a v6 bridge.

30/5/2016

I've been asked many times to add the possiblity for users to create their own color sequences. Today's relase is all about that. You can read how that works in detail both on this page and in the user manual. Basically all you need is a text editor and some time to read the guide.
A list of premade sequences can also be found online here: http://bitbucket.org/epocapp/milightloops
If you have made a sequence and you would like it to be featured on this site, email it at epocapp@gmail.com with subject “Color Sequence Submission”.

22/5/2016

Today's release sees the addition of skinning support so you can customize how the application looks.
You can choose one of the already available skins or you can make your own by following the simple guide included in the application manual.
A list of themes can also be found online here: http://bitbucket.org/epocapp/milightskins
If you have made a theme and you would like it to be featured on this site, email it at epocapp@gmail.com with subject “Skin Submission”.

14/5/2016

A new release today… This release sees the addition of a custom trigger algorithm. You can now specify what effect the controller will use based on the applications you have running. For example you can set the controller to switch to “screen color” when your favorite media player is running or “audio mode” when your audio application is running. Take a look at the guide to get more info.
Also, I want to thank everyone for their initial, overwhelming, support. I also want to thank the couple of odd trolls who took it upon themselves to sent me hate mails about my decision. They convinced me that my decision was the right one.

15/4/2016

It seems that the people who sell those things aren't interested in helping out. Too bad

16/3/2016

I've added some preliminary support for older bridges as well as RGB lamps/LED strips but there's a catch. You can only send one color per bridge. You'll need to provide feedback on how they work.

9/3/2016

I've had reports that some antivirus programs think this app is a virus. It is a false alarm. I've already asked the antivirus makers to address that issue.

4/3/2016

In an effort to provide better compatibility, I have reached out to the companies that make /sell these products in order to provide me with some test samples.
Their initial reaction has been positive.


SUPPORT



You need to have some basic knowledge of how to configure the MiLight Wifi bridge and how to pair the lamps to each zone. Read the manuals that came with those products, they explain the whole process

Lights aren't changing
You either have an old bridge (only version 4 and on bridges are supported) or you have misconfigured the app. Make sure you know the IP address(es) of your MiLight bridge(es). Also configure the correct port. Make sure (by pinging for example) that you can reach your bridge(es) from your computer. This application requires access to your local network so if you have a firewall make sure you configure it accordingly to allow access. LightFX games require access to your local network too.

Configuration is correct but lights still aren't changing
You may have paired the lamps to the bridge in an incorrect manner.
The correct procedure is this:
1) Switch off all lamps
2) Switch on the lamp you want to pair to the first zone of the bridge
3) At the same time press the "ON" button of the corresponding zone from your phone app.*NOT* the "ON" button for all the zones.
4) Repeat for the rest of the lamps/zones

If for some reason the phone app isn't working for you, you can also use this app to do the same:
1) Switch off all lamps
2) Load the app and switch to "Static color" mode
3) Switch on the lamp you want to pair to the first zone of the bridge
4) At the same time, from the app, click the lamp icon of the zone you want to assign the lamp to and choose a random color
5) Repeat for the rest of the lamps/zones

Lights stop working after a while but the app is still functioning
There is a problem communicating with the MiLight bridge. Remember that this is a network app. Any problems you may have on your local wireless network (such as poor connection) will cause problems with this app too. Try pinging it. If it doesn't respond try rebooting both your router and the MiLight bridge. You can also try adding a static route from your computer the bridge.

Screen colour mode isn't working with games
If you want to have this effect within games, you have to run the game in either Windowed or Borderless mode. The reasons for that are technical and have to do with the way a full screen game is handled by Windows.

The app is crashing
Write down the error. Exactly what it says on the crash window and email it to me


Compatibility matrix
This is based on user observations and is not official in any way.
Bridge/ Controller versionLamp version
v2rgb
v5v5rgbrgbw
v6v6cctcct

DOWNLOADS

Please report bugs or feature requests:
for the windows app HERE
for the Kodi Addon HERE

***If any of you has a V6 bridge please provide some feedback using the latest version***

Please read the news section


Downloads:
MiLight Controller 1.6.4.1 (Stable release including V6 bridge support)


Kodi/XBMC Addon 1.0.8 (Legacy/Unsupported)


Get the unlimited version for $12
  • Test the app thoroughly before ordering the Pro version
  • Please allow a few days for the delivery
  • Licenses are not refundable
Changelog:
1.6.4.1     23/2/2017
  • First stable release with support for V6 bridges

Pro vs Free

  FreePro
Updates yy
Effects yy
Support n y
Controllers supported 1 4
Per-zone Contol n y
Presets(Configuration import/export) n y
Triggers(Effect auto-switching based on running applications) n y
Custom color sequences(Make your own custom color loops) n y
Skins(Customize how the application looks) n y
Tablet Mode n y
Advanced Effect Tweaking n y
LightFX Support n y
Minimize to Tray n y

CONTACT


Send me a Message:

epocapp@gmail.com


Get the unlimited version for $12
  • Test the app thoroughly before ordering the Pro version
  • Please allow a few days for the delivery
  • Licenses are not refundable

Created by BLACKTIE.CO