DMX software to control lights with programmable interface - dmx512

I find myself in the need of a software to control lights with a programmable interface. Basically what I want to do is to automatically control the lights using some criteria that I programmed inside a program. My program will then control the lights passing through the software I'm searching for, of course this would need a programmable interface to which I should pass the commands to control the lights.
I've been searching for a software like that in the last couple of days without success, what I found are only softwares with GUIs for users, but no specification whatsoever about programming the light behavior instead of manipulating it by hand.

There's some really good information & code samples (including a working class that I wrote) here: Lighting USB OpenDMX FTD2XX DMXking
Ultimately, you end up setting byte values (between 0 and 255[FF] (brightest) in a byte array.
It's fairly trivial to implement simple effects such as fades or chases.
If you haven't got that far yet (e.g. up to the code) you'll need to get ahold of a USB DMX controller.
There are a number of them out there, but the thread above has sample code for two different flavours.

I think you may well have the same problem as I have been having. It seems to largely depend on what else you are asking the pc or laptop to do at the same time. If you simply want to control lights from a laptop for example, there are some amazing software packages out there, although a bit expensive, but very effective. There is also a different route now if you have an iPad or iPhone. Try googling iPad dmx light control. Its pretty amazing the stuff available.
I know this isn't necessarily answering your problem, but I think we may be searching for similar solutions, so please check out my post about midi control of dmx lights, as we might find a solution between us which works
Pete

I also wanted an environment where I could quickly write code that would create interesting effects for my DMX effect lights and lasers, and ended up creating it myself. I just announced the first public release of Afterglow, my free, open-source live-coding environment for light shows. You can find it at https://github.com/brunchboy/afterglow

I needed precise control of individual mutli-channel (RGBAW) DMX512 lights and wanted to write code in C++ for Windows. I adapted the C# example from Enttec's website for OpenUSB and released the code:
https://github.com/chloelle/DMX_CPP

Related

Selectively giving control to mouse input devices

I want to develop a multiple mouse input tool for Windows, with the ability to selectively give control to an individual mouse device. I would also like to track MouseMove events of devices for which click events are disabled and display a pointer.
The closest existing solution I am aware of (for Win7) is TeamPlayer, but it lacks the functionality to restrict control to an individual mouse (or customize cursor images), instead freely transferring control with a left click. I have tried manually disabling devices by DeviceID, but once re-enabled TeamPlayer will not recognise them. Additionally, many of my mouse devices have the same DeviceID.
I have been considering Microsoft's MultiPoint SDK, having already developed an interactive multi-mouse game in Unity3D using MultiPoint TUIO (a multi-touch TUIO framework simulator for the MultiPoint SDK) and Mindstorm's Unity3D-TUIO.
MultiPoint TUIO uses a MultiPoint overlay window and sends TUIO messages to the underlying target window. However, I see problems with this kind of approach (i.e. routing MultipointMouseEvents) to control the pointer in non-MultiPoint windows. For example, a click event would take focus away from the MultiPoint window, returning control to all input devices.
Can anyone suggest a better approach?
UPDATE
Regarding use of MultiPoint in Unity, I found adapting MultiPoint TUIO was overkill but used the same approach.
I created an application (in WPF) implementing a UDP server and a transparent window registered with MultiPoint, which would position and size itself to exactly overlay a Unity window. [Note: you must enable "Run in Background" in the Unity Player settings.]
Then I streamed the MultiPoint mouse positions and events to a UdpClient receiver in Unity, in a class called MultiPointInput, which keeps track of the states in static members. Then a particular mouse position, for example, is accessed with MultiPointInput.mousePosition(mouseID) (analogously to Input.mousePosition).
I have successfully used it in the classroom with 15-20 wireless mice. The SDK is very stable, but there are insidious hardware issues when using more than a few wireless mice (varying ranges and interference).
I was searching for ways to detect input from multiple mice inputs, and couldn't find anything useful that was easy to do. I kept bumping across this Multipoint SDK but it seems that it's dead for a long while, or maybe it was never alive - virtually nobody documented any usage.
I also found suggestions for trying to capture the raw input data, and I found this:
http://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard
which supposedly manages keyboard devices separately at a very low level, but I have no idea how to implement anything like that. Have you tried anything like that? Can you give any feedback as to why/why not others should go ahead with that?
Also, could you possibly give more details about how manageable is the solution with TUIO? I'm currently trying to figure it out for my unity game, in which I require multiple mice's separate movement inputs.
UPDATE: I used SDG Toolkit:
http://grouplab.cpsc.ucalgary.ca/cookbook/index.php/Toolkits/SDGToolkit
for reading multiple mouse input and it proved successful. I had to mess around with it for a while, but finally got it working, and I based my application on the simplest example app they offer. I basically combined a socket server/client project with this SDG app. The server was my Unity game, and the client was the app, sending data at every mouse move.
The funny thing is it didn't work on any other computer I tried it on, and I can't figure out what I actually did to make it work on mine. I tested a lot on why the server/client wouldn't be working, when it was actually the SDG thing that didn't work for others. Basically, it was my mistake to take a 2007 (and virtually dead) library and pretend that it should be infallible.
Anyway, if anyone (read: solus :D) wants to give this SDG a go some time, and check if it works for them, it would be awesome. The library seems intuitive, simple and efficient. The only problem is that it doesn't work for some odd reason.
If you are looking for a ready-to-use and multiplatform library for Unity, then you may be interested in Multi-Input: https://www.assetstore.unity3d.com/en/#!/content/59967 - it supports multiple mice, keyboards, and pads connected at the same time.

Taking use of laptop custom buttons

I have a Lenovo Y550 laptop which has a nice looking touch sensitive strip with led lights on top of keyboard. The usage for this is however quite useless (it can be used to start 4 different Lenovo programs) so I started to think if I could program something of my own for it.
However I don't have any experience with this kind of thing.
First of all I'd like to know if it's even possible to use it on my own program in any way (capture touches or even control the lights).
Second, where should I start researching about this? I checked Windows Device Manager to see if I could spot anything helpful there, but no success. I can only see many kind of HID devices there.
One thing that is on my mind is to use some kind of hooks to take usage of this. Could that work? I don't really mind what language I'll have to use, learning new ones is a useful anyway.
If it is possible to totally control the touch sensitive strip it would be nice to light up the led lights as I will on it (now led light lights up where my finger is).
I did something similar for my Logitech keyboard. I had to hook the low level keyboard hook, and I modified the Logitech specific key codes into a Windows generic one. All in all a very simple, short and limited tool, without any configuration, but it did its work reliably and only used a few kb or memory.
Get a low level keyboard hook working, set a breakpoint and see what key codes you get. Don't know about the LEDs though.
Edit: Found it. It's been quite a while since I wrote this.

What's your Favorite Extreme Feedback Device? [closed]

We've probably all heard about the connecting lava lamps and ambient orbs to your continuous integration systems. I was curious to know what other interesting things people are using or have heard of for extreme feedback devices? Also, this Tux Droid seemed pretty sweet
An idea I have is to buy one of those USB missile launchers and write a program that can aim it at the stations of known users...
I like the system Last.fm uses. Along with antique analog devices to monitor server response time, loads of LCD displays, they also have red, yellow and green giant gummi bears to alert developers to broken builds. Makes me wish I had the time and money to set up similar stuff at work.
At Agitar we tried several feedback devices and I'd say lava lamps have a unique characteristic to recommend them: it takes a while for the wax to melt.
That might seem like a small thing (and it is) but the effect as that it was a race by the team to fix the build before the wax would start moving.
However one thing we learned is you want two lamps, red and green, not a blue one like in the picture. Because having a lava lamp on is kind of nice so you shouldn't be denied that just because the build is good. ;)
A Batman sign on the office ceiling:
http://www.jensjaeger.com/2010/04/extreme-feedback-device-the-batman-lamp/
Nothing beats the old nipple-crocodile-clip-rs232 combo.
We at the Softwareschneiderei have several XFDs in place:
- a lamp (no lava)
- a portable fountain
- a led bar
- loudspeakers
- wall-mounted displays
- the infamous USB rocket launcher
you can read about them on our blog:
http://schneide.wordpress.com/category/extreme-feedback/
So far, we find the lamp the most useful, but the portable fountain is considered the "coolest" one. The led bar is the device needing the least explanation. The rocket launcher is battery powered and needs the most attention (reloading!).
This year, we introduce at least one new device.
The Nabaztag rabbit is quite popular, especially because there are many interfaces developped (for example for Hudson server).
alt text http://leblog.wcie.fr/.a/6a00d8341cb14e53ef0120a4ee0220970b-800wi
I've given thoughts to using one of these
Think: You broke the build, so your keyboard's glowing red until you fix it.
Sadly, last I checked, the utilities to change the kb's color were Windows only, so I'll never buy one.
Well, we've used CruiseSaver, and threw it up on a huge wide-screen LCD monitor.
Edit:
Also, I was on a project where we put a Mr. Potatohead on the desk of the person who last broke the build. It stayed there until someone else broke it, which might be 5 minutes or 5 weeks...
CruiseControl.NET + CCTray + Growl + Prowl = iPhone Push Notifications of when and who broke the build.
My preferred is this one https://github.com/luismreis/beacon

What's the easiest, most practical way to toggle several lightbulbs with a PC? [closed]

This question is mainly electronics related, but it also has a programming aspect.
Some background on the problem
We have a traffic light on a wall in our office. When people come in to the office, they can immediately tell from the traffic light whether last night's automatic build & test runs went smoothly: Green means all tests passed, yellow means some tests failed and red means some builds failed.
Right now, there are three switches on three cables hanging from the traffic light and someone has to manually toggle these every morning. I'm looking for an easy way to automate this process with a PC.
Some background on me
I can write software. I have some soldering experience. I know digital design theory, but I've never built a physical device. I don't have a lot of time on my hands.
The question
How can I control three 110V lightbulbs (or any device) from a PC with the minimum amount of effort (and investment)?
Some lax constraints
I don't care about the effort to write the software to control a serial/USB port.
Having said that, it would be nice if I don't have to write any software and just use existing tools.
I prefer not to do any soldering! I can go with one of those hobby kits where you push components into slots etc. Or perhaps it could be something from Toys "R" Us.
I'm willing to purchase an existing device like an Arduino board.
It would be nice if I can get this done with just parts that are lying around. For instance, I have an old 2400Bd modem that I can take apart (though, that would probably be followed by some soldering).
Update
Similar projects that are mentioned in the answers:
"Red Bear Alert!" - The Hudson Bear Lamps
(source: magnetiq.com)
Big Brother Traffic Light
(source: magnetiq.com)
Bubble, Bubble, Build's In Trouble
(source: magnetiq.com)
An arduino board seems like overkill for something this specific, espeacially if you aren't going to be using it with conjunction with anything else. Plus you are going to have to buy a variety of components or an arduino shield (specifically the relay shield) so it'll quickly add up, especially if you don't want to solder (you will be looking at about $120+tax for the arduino and the shield.)
Since you are switching AC (the lightbulb) and the computer gives out DC, you will need relays. Also you will need to switch the relays with transistors as I don't think the output from serial or usb will output the mA you want.
The easiest way to go about this is to use a USB relay board. Something like this would work great http://www.robotshop.us/phidgets-1014-relay-interface.html. Plus its 1/3 of the price of the earlier combination. Even better they give you libraries to control it so programming is a breeze.
Also if you go on eBay you can get them even cheaper, especially if you don't mind using the now "antique" parallel port instead. I don't think you'll get libraries though.
Good luck
Look into X10
(Edit: replaced original posters NSFW link with wikipedia page on X10)
Get a USB traffic light and a USB extension cord. I gravitate toward the simplest solution possible. Should be pretty easy to write some software to drive it.
Just to give some more options:
Relays can be replaced by thyristors. These don't suffer from mechanical wear..
Another cheap and easy solution: Buy a cheap three channel light organ and connect it to the sound output of a pc. Find the resonant frequencies of the three outputs by playing back some test sine-tones or a sine-sweep.
That way you can not only toggle the three lights, you can dim and pulsate the lights as well. No need to mess around with USB and relays.
This device "IP Power 9258" should work for you, it is an ethernet comtrolled power bar. It is similar to the device used in this project "Red Bear Alert!" - The Hudson Bear Lamps.
A google search for relay controlled power strip, lists tons of projects to build your own.
I found a guy who built a full fledged traffic light here: http://people.usm.maine.edu/houser/bblight/index.html. Looks like more work than you want to do though.
You'll need:
an open collector output board (like USB Interface Card Module VM110) and
some 12V relays (like Omron G5LE-14 SPDT)
You may use you PC's 12V to power the relay coil.
Boards usually come with drivers and libraries to control them.
The X-10 modules are likely the easiest path to take. If you try to do 110 V switching on your own, your project will quickly become a hardware project rather than a software one. X-10 (used to?) have a dongle that plugs onto a serial port (called a "firecracker"). The protocol for that can be found online.
Final caveat: X-10 is kind of low-tech and subject to interference from modern switching power supplies. So try it in your office before committing to the software effort.
Use a serial port, which drives a H-bridge (you can get a chip off digikey) which drives a relay (digikey again). The H bridge electrically isolates the serial port and limits the current draw. It's not possible to switch wall current with a transistor, so that's why you use a relay.
Most PC components will not handle 115 VAC. You could take a look at some the stuff from x10 which is an old home automation standard. Other wise you will need to use relays controlled by a PC to switch the 115 VAC.
If you enjoy doing it yourself, a serial port interface wouldn't be too difficult. A serial port has at least two lines that can be switched on/off: RTS/CTS and DSR/DTR. When you turn either line on, you're getting +5VDC on that particular line. You can use those lines to control relays that in turn switch the lights on/off.
Here's one big issue: If I'm TC'ing that day, I can't see your light. Considering that, I'd build this as a little light that sits in the tray and shows the current build status. People that want to know the build status can install it, people that don't care won't be bothered by your intrusive traffic light. I heard a presentation from a consultant once and he said he'd done this at one company and the VP types just loved it. Here's one link; the sample is in Python.
Edit: Seems CruiseControl.NET has this sort of thing already.
Ever think of trying phidgets? (www.phidgets.com)
USB Power relays:
http://www.phidgets.com/products.php?product_id=1014

Writing a game controller driver for some hardware connected via USB

I'm looking to create a driver for a game controller I have (a cobalt flux www.cobaltflux.com ). The physical controller itself has nine face buttons and two control-box buttons (start/select). The control box has a usb port, but as far as I can tell no one has ever written drivers for it before. The end result I want is to be able to plug in the cobalt flux via the usb port and have windows recognize it as a game controller.
I have some programming experience. I'm a senior undergraduate student in computer science at UC Davis and an intern at a large embedded systems company, however this project involves several aspects I have no experience in: interfacing hardware and software via a USB port, investigating feedback from hardware I didn't build (which bits light up when I press a button?), and creating drivers and indeed programs in general for windows.
Since I don't personally know anyone who would be able to set me on the right track for a workflow to solve this problem, I'm asking here. I imagine the approach going something like:
I connect the device via a usb
I open up a program to poll what the effects of pushing buttons are on the USB channel
I write a program that interfaces those signals from the USB port to the game controller drivers that windows has
It may be worthwhile to note that I need to have joyPAD support and not joySTICK support for the buttons since play will involve pressing down any number of buttons at once and joysticks generally only register one direction of input at any given time.
Any advice or help would be greatly appreciated. I am having trouble figuring out where to start.
I have exactly the same problem for more than a year now and I did not found the right solution yet.
When you plug in the pad via USB it announces with a device ID and a vendor ID which device it is. Windows Plug-and-Play starts searching for a driver. This mechanism spots it is a pointing device (in my case one or 2 mice) and makes sure that it is treated as a raw data input device. Input from these devices is converted to messages handled by the OS. The solution seems to be to pass the messages of such a raw input device to the right handler. In my case the two mice are both recognised as mice and the messages are used by the same handler as the ones coming from the 3rd mouse that is really my pointing device. I am not experienced enough in C++ coding in order to dig into the rawinput API. I just received an interesting link as answer on my question: http://www.icculus.org/manymouse/ at least this gives an answer on my problem. May be it will give you ideas for writing your driver! Good luck !!! Stefan

Resources