Jump to content

PC Based DMX Control development


wodp

Recommended Posts

Missterbassman is going to sort me out with a pair of the Chauvet Omega IIs (funny you can still only download the original Omega manual from chauvet website, but hey) which are 5-channel I think (for less than the list price too) when my loan's cleared, but as you say its the separate gobo + colour channels we're essentially after. I've been playing around with ideas for my software and am having to introduce workarounds for things like CMY (I have access to mac300s at work and they wont be simple and just do colour on one channel :** laughs out loud **:) like a boolean parameter for if a moving head/scanner uses CMY or not and then displaying the right controls accordingly. It'll be written in VB cos I'm not sure about hiding/showing windows in java, even though the way it's going writing custom classes to store all the information about a show would make it so much easier and efficient. Then I could use my RS232 interface on the iBook I'm getting later this year (with the help of a usb-rs232 9pin cable) without having to learn a new language and port my software ;)

 

Dave

Link to comment
Share on other sites

  • Replies 56
  • Created
  • Last Reply

I decided to write my program in VB too however it is slightly on hold dude to too much uni work!

 

I have had real problems with timings, how to time when changes happen and sending the right data without overloading the program, I would be interest in your thoughts on this or how you are going about a show or a scene or something. It may well be that I have completely the wrong idea!

 

Sadly I don't have access to anything cool :rolleyes: just a scanner and a dimmer pack. But the idea was to create more of a DMX desk so it could cope with whatever you throw at it. However I am not sure how successful this would be.

 

Ideally I want it to control lighting and animatronics (via servos). Its all connected via a serial interface to a convertor board from Milford Electronics. Seems to work and costs a lot less than any of these specialist PC to DMX services!

 

Do you have much of your app done? I would be interested in seeing, not to steal it obviously I like the challange! ;)

Link to comment
Share on other sites

im writing an app in VB as well! probably wont use it for much though. I dont trust VB in a show situation..

 

the way I'm doing mine, is by using an MDI interface, and a global output sub, which you can pass parameters to if needed. so there's potential for, say, 2 seperate DMX cards to be connected.

 

because all the outputs and chanels are global, you can have as many child forms as you want, and spawn as many copies. so at the moment, you can have a 6 channel fader module, and spawn 8 of them for 48 channel control (you can tell it which channel to start on).

 

I tried using the VB pro control sliders as the DMX faders on my app. but they were so unflexible, so now im just using pictureboxes as faders.

 

im hoping ot make it so that you can channels with colours, to correspond to groups of channels. then you could define 6 presets, say, and use the app as a 6 preset controller. or, you can set it so that the 'yellow' faders are to be recorded into the next preset. the whole thing will be based on a HTP idea.

 

as its in MDI, I can make a range of different forms. I hope to make a moving fixture child form, with maybe an X/Y controller that you assign to different channels, and different wheels you can assign to channels.

 

thats all potential though.. at the moment its just an (up to) 512 channel signle preset controller. I also hope to add a LAN control into it, and then get someone to program something for a PDA (im told you can do that in VB.NET).

Link to comment
Share on other sites

It seems everyone starts off with VB!!

 

P. Funk How does your app function, do you set scenes and then play them back or is it live control. I can't seem to finalise my ideas! I want to be able to record movements and sequences etc but at the same time it needs manual control!

 

I have just gone and got a simple DMX controller to try and clear my mind a bit more. And your right VB isn't the most trustworthy of things, I might rewrite it in C#, but is that any better?!!

Link to comment
Share on other sites

I too have one of those milford instrument things. My workaround is to have any DMX program sending its DMX via a sub called sendDMX which has paramteres chanNo and valToSend as integers.

 

VB won't install atm cos my hdd is screwed and in need of replacement when loan comes through - I can't therefore show you a screen dump of mine, but I'll try and explain the prototype I wrote based on experiences with Abstracts VRX controller.

It's meant for 12 scanners, and it has a basic library which stores channel offsets for pan, tilt, gobo, colour + shutter for each unit in it's library (as well as the lamp on/off channel offset + values). The display had 12 strips with a textbox showing current value for each of the 5 paramteres above, a lamp on/off tickbox and a selected tickbox. There were also lamp on/off all units and select/deselect all tickboxes. Below that was 3 sliders (one for colour, one for gobo, one for shutter) which affected the relevant value for the selected scanners. I also did an x/y area where you held left mouse button down to move a dot for realtime affecting of the pan/tilt settings. It had 100 or 128 static presets, and (the bit I was dead proud of) you had a tickbox next to each row of paramters saying which params a preset would store!

 

If that makes no sense, I'll try and find my VB6 code and zip it up for download. Note I didn't get round to adding actual send DMX values bit (forgot to bring up the interface to uni last term) so it shows what would be sent by sendDMX method in the debug window.

 

Thinking about a new DMX app (to do better control of scanner presets etc) I actually realised Java would be better behind the scenes (cos it's so easy to write classes cos collections of objects would be so much better than fixed-size arrays and you wouldn't need loads of arrays which is how my vb code would do it). Basically I'm going to try and emulate the best bits of the software I've seen, and strip out all the extras I don't need. Uni work is going to limit time I have for development till exams are over though.

Link to comment
Share on other sites

I too have one of those milford instrument things. My workaround is to have any DMX program sending its DMX via a sub called sendDMX which has paramteres chanNo and valToSend as integers.

 

thats almost exacxtly the same as mine. I have no DMX interface at the moment, but I will just put the code in there when it comes.

Link to comment
Share on other sites

I'm currently writing a designer/controller too, with the plan to opensource/GNU it sometime. As you've mentioned though things are a matter of time. I'm hoping to do mine crossplatform so it will work on Mac, windows, linux etc. Ideally it will take plugins so people will be able to add their own features/modules.

 

I'm currently trying to find a venue where I can test it too, as the last place (a club) I used no longer exists. I'll post a link to the software hopefully in the future. I haven't really got the money for scans, even though I want to!

Link to comment
Share on other sites

...And your right VB isn't the most trustworthy of things, I might rewrite it in C#, but is that any better?!!

C# is one of the worst ideas Microsoft ever had, according to a group of experienced programmers I know.

(Never tried it myself. Prefer C for computers and MPASM for PICs)

 

Do it in Java or C++ if you want object-oriented, or C if not. VB is fast for interface oriented stuff, but isn't very good if you want to communicate with low-level devices like USB and other ports.

 

On the other hand, if it works and is fast and reliable enough, don't knock it.

Link to comment
Share on other sites

If it happens before may/june time (when I leave leicester probably for a year of work placement) and a linux port will work under OSX on the iBook I'm getting in the next couple of months, I might be able to test it at the club I glass collect/do basic lighting at. Alternatively if you live in/near leicster, I'll pm you when I have my scans (prolly a pair but maybe just one) and you can bring the stuff round to try it on that.

 

Dave

Link to comment
Share on other sites

me name's Jon :blink: (but that user was already taken)

 

at the moment, its just live control. but I'm hoping to change it into scenes at a later date. I cant think of an efficient way of crossfading though. Im thinking I have to use a timer (set on 50ms or so) that goes through all the channels that need changing and incrememnts them accordingly

 

However, I think mainly this app will be monitoring / rigging software. I might take a DMX out form the desk, and put it into the program, so I can see what levels all the channels are at. and then have notes of what each channel does above the level indicator. I might expand that to broadcast over LAN, so that if im up a tower or something, I can check the level on a laptop (the wonders of wireless :huh:) or change it, or put a channel up, etc..

Link to comment
Share on other sites

Yeah my first app is mainly live but with static scenes. I'm stuck at the same point as you in terms of taking it further and doing the crossfades. Timer-wise, maybe the delay you should use is that of the DMX protocol? (eg if it does 40 refreshes a second your timer runs every 25ms - not sure if that's the right number of refreshes but illustrates my idea).

 

Dave

Link to comment
Share on other sites

maybe the delay you should use is that of the DMX protocol? (eg if it does 40 refreshes a second your timer runs every 25ms

Unfortunately, the problem you'll find with that is that DMX is an asynchronous protocol and as such does not have a fixed refresh rate. Instead it varies depending on the number of channels in use (a 24 channel desk would in general refresh more often than a 48 channel of the same type), and the speed of the controller.

 

The required minimum packet length is 1196us (microseconds; no symbol!), giving a maximum rate of 836Hz. The minimum refresh rate is not limited by the standard, and may be considerably lower than 40 Hz (the fastest rate for a board sending 512 channels of information is 44Hz).

 

Of course, you could just set a refresh rate of say 40Hz, but then you lose out on the potential much higher speeds when sending less information. But it would be easy enough not to do this, and levels for each channel would just be calculated incrementally each time the output loops past that channel.

 

Btw, I personally would have used C++ to write software to output DMX

 

Let me know if I've missed the point entirely.

 

Peter

 

(Recommended reading - Adam Bennette's guide to DMX, available from the PLASA website)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.