HyperLightSynth9000
From DomWiki
Contents |
StageSynth
Downloads
- Coming soon. I need to get the license clarified on the Enttec USB DMX PRO before I can redistribute it. Once that happens I will begin posting builds (hopefully regularly).
- In the meantime, the code in the SVN repository on sourceforge contains all the latest stuff, minus the DMX USB PRO driver code.
News
12/9/2008 - Got a Wii controller hooked up and am using the acceleration to drive lights. SO COOL. Also, UDP networking support added so you can chain multiple copies of StageSynth over a network. Hook up your entire neighborhood!
12/1/2008 - New tutorial video posted that shows off a lot of the capability of the software: http://www.youtube.com/watch?v=aXhNvE9LKUQ
11/20/2008 - First successful real-world use of the software during a real show. I passed two xbox360 controllers around in the audience, hooked up my laptop with an Enttec USB DMX PRO, and let the audience influence the stage lights. Everything was working great, including real-time modifications to the scene while the show was running. It works!
11/18/2008 - LINUX! The Linux version ACTUALLY WORKS with Mono + Winforms. Unbelievable! It compiles and runs on stock ubuntu linux. I will need to make a linux specific USB->DMX driver, but that is easy.
11/17/2008 - My Enttec USB->DMX Pro came in the mail today, and I made StageSynth work with it. So cool! It's fun to control stage lighting with an Xbox360 gamepad. :) If you order one of these, remember to get the 5 pin to 3 pin adaptor.
11/09/2008 - Now an open source project! LGPL licensed, on SourceForge, grab the latest SVN code if you like!
What?
I like running lights (like the ones you see over there), and I like writing software. I also like connecting strange things together.
So I wanted to be able to use input from:
- Oscillators
- Joysticks / 360 controllers / ps3 controllers / wii controllers (with tilting)
- Keyboards
- MIDI Controllers
- Foot pedals
- Bass/mid/high from audio files or live input
- Signals from the internet / a webpage / an iPhone?
- Anything else you can possibly wire into a computer
Combine it in weird ways (like multiplying/adding) and route it to different DMX channels that can then control a full stage lighting rig for a concert.
The goal
Build a modular lighting synthesis program that is the equivilant of a (non-sucky and non-cumbersome) visual programming language. If you've used a synthesizer program for audio - think along those lines but for lights. Oh yea, make it open source and easy to hack on.
What's done so far
The basic architecture is in place. You can create nodes, drag them around, hook them up, and do a bunch of other stuff. Creating new nodes is so easy, it's a total joke. I wrote it in C# and Winforms because I hate writing GUIs and Winforms is just stupidly, insanely easy to get something up and running fast.
Here's what it looks like on Day #4 of coding (this is now a pretty old screenshot)
In that image I have an Xbox 360 controller hooked up and it's affects the lamps in real-time. (I may post a movie when it controls some real lights)
Where's the source code
LGPL licensed and up on SourceForge, you can grab the latest from the subversion repository.
If you want to hop in the project development just send me your sourceforge username and I'll add you to the project.
(If you don't know what subversion / source control is and how to use it, it's pretty simple and makes working on a project with other people really easy. Ask me how.)
I'm a programmer, how can I extend this software?
The goal is to be MODULAR. Adding more kinds of nodes couldn't be easier. Hell, the classes are SELF-REGISTERING. All you have to do is derived a class from INode and blammo - it magically appears in the New Node menu, and any public properties show up automagically in the property editor. Just to show you, here's some code for the Node that takes 2 input wires, sums them together, and puts the result on the output wire:
[NodeDescription("Add", "This class's output is the sum of its inputs", 'a')]
[Serializable]
public class NodeAdd : NodeTwoInOneOutBase
{
public NodeAdd(int x, int y, string sName) : base(x, y, "Add") { }
public override void Update()
{
base.Update();
float fSum = 0;
foreach (WireSlot s in m_aInputWireSlots)
fSum += s.Value;
m_aOutputWireSlots[0].Value = fSum;
}
}
It's that easy. I made it really easy because I want to see tons of contributions and make this the most insanely modular lighting software out there.
What about Linux/Mac
DONE. Mono (an open source .NET implementation and C# compiler) has a Winforms implementation and so far it works GREAT! This app runs fine under a stock Ubuntu linux with some mono packages installed for winforms.
Coding the GUI stuff is best done under Visual Studio for now due to the form designer, but I'm interested in seeing if SharpDevelop could be used. You can, however, add new things manually by hand if you really want to, but Visual Studio is the best option at the moment.
All the C# code should be platform independent, the individual drivers for the USB->DMX adaptors will have to be made into platform specific versions if needed.
If you are working on this software under Linux or Mac, I'd love to hear about it, feel free to contact me with any questions and I will definitely make sure everything is running. In the future I want to have automated builds and testing for all 3 platforms.
-Dom


