Bruce's Blog Just another in the neverending world of blogs


Building a simple “drop box”

If you've ever had a need to drop something onto a stage, be it snow, confetti, a prop brick or rock, or something else altogether, then you've likely wanted something called a "drop box".  As the name implies, it's a box (or other container) that is used to remotely drop something onto the stage.  While not necessarily suited for snow (unless you want a comedic effect of a bunch of snow all falling at once), it can be useful for dropping many other items.  Building one of these is actually very simple, easy, and best of all inexpensive.

The key to remotely triggering something to drop, unwind, etc. is to have a way to essentially pull a pin electronically.  A common approach to doing this is by the use of solenoids, but solenoids come in all shapes and sizes, and unless you know exactly what you need it can be a daunting task to get the correct one without wasting time & money.  A less expensive approach, which can work just as well, is to use a car door lock actuator.  This is the device that locks and unlocks a car door that has electric locks, and you can find them easily and they're very inexpensive.  You can find them for sale on sites like for as little as $5.00 each. You can also find them at many car part stores, and if you have access to an automotive junkyard you might be able to get some there for free or very cheaply.

A car door actuator is designed to run on 12 volts DC, however for your needs a regular 9 volt battery is likely enough.  When voltage is applied one way the actuator quickly extends to a fully open position.  When voltage is applied the other way it quickly contracts to a fully closed position.  The distance it travels is approximately 3/4".  Below is a photo of actuators in fully open and fully closed positions:

To build a simple drop box you just need a couple pieces of wood, a tin can, a hinge, and an actuator.  Attach a hinge to the back of a tin can and mount it on a block of wood.  Attach the block of wood to a long strap of wood so you have something that looks like this:

The left image shows the can in the "up" position.  It will be held that way by the actuator.  Gravity will then drop it into the position shown on the right, dropping the contents of the can out onto the stage floor.  The wooden block that the hinge is attached to also serves to stop the can from swaying back and forth, but instead keeps it vertical.

Put the tin can in the "up" position, then mount an actuator on the horizontal strap of wood so that it just holds the can when fully extended.  Make sure that you mount the actuator so that the can drops free when the actuator is retracted.  You might also want to staple a scratch piece of cloth to the bottom of the wooden block that the hinge is on.  This will help to muffle the sound the can makes when it drops.  Add a clamp so you can hang this from a lighting grid and you're all set:

The one thing I have not done yet is to add a safety cable.  I strongly recommend that you attach a short flexible cable between the clamp or wood strap to the tin can, and I will be doing that shortly after I post this. And as with anything you hang over a stage or audience make sure the whole thing has a safety cable attached to the lighting grid.

All that's left after this is to wire it up for use.  As mentioned before, a simple 9 volt battery should suffice.  However if you want to get fancy then just wire a DC transformer to it and you can control it from a standard theater lighting system.

Obviously the actuators can be used for all sorts of things. If you need to drop a bunch of balloons, confetti, etc. then just build a larger box with a hinged bottom and use one or more actuators in the same way to hold the bottom closed.  If you need a flag to unfurl just wind the flag around a wooden dowel like it was a window shade and attach a similar dowel along the bottom edge to give it some weight.  Hold the bottom dowel in place with the actuator, and when released the weight of the dowel will unroll the flag.  The possibilities are limited only by your own creativity with making use of the actuators.

Here is a brief video that demonstrates my drop box in action:


Feb 2010 Vacation (St John, Disney, Kennedy)

The following is Heather's journal of the vacation.  All the photos I've published from the trip can be found here:

Here is a recap of our trip to St. John in the USVI, Walt Disney World and Cape Canaveral, FL.  It was a wonderful trip (albeit much too short) and getting to spend time with Bruce was very special.

Saturday, Feb 6

Waking up at the crack of dawn in Boston we made our way in the bitter February cold to the airport.  The check-in, TSA screening and flight was uneventful.  We arrived at the airport in St. Thomas an hour later than expected due to the major snowstorms going through the Mid-Atlantic States.  It made me thankful that we had a direct flight.  We rented a 4-wheel drive Jeep from the Budget rental company at the airport and headed to Red Hook to catch the car ferry to St. John.  The ferry runs hourly on the half hour and the boat was pulling in as we got there.  The ferry was very easy and after backing the Jeep on to the boat we were on our way.  We got out of the car to catch some breezes  on the upper deck and had our first view of St. John.  The weather was sunny, mid-70’s, slight breeze and not a raindrop in sight all week…absolute paradise especially given the freezing weather we had just left.  Upon arrival in Cruz Bay we headed to Starfish Market at The Marketplace to get some provisions for breakfast the next day.

The drive to Concordia from Cruz Bay took about 45 minutes along Route 20.  What a beautiful drive and Bruce was especially thankful that he had the fortune of driving partway behind a large construction vehicle that took up most of the road and honked loudly warning oncoming traffic that it was approaching the switchback.  Above and beyond having to “keep-left”, the switchbacks on St. John are brutally steep.  As you come up some of the hills the road seems to just disappear from in front of the car.  We were tired upon arrival and decided to eat at Café Concordia that night to keep it simple.  The meals there were a tad expensive, but the food was good and a bonus that it was steps away from our tent.  Bruce had a salmon dish and I had a flatbread with Manchego and prosciutto along with a couple of iced teas to wash it all down.  So good after the long drive and we could not have asked for a better view looking out over Salt Pond Bay as the sun set, absolute paradise.  We unpacked our bags and settled in for the first night to the night sounds of crickets and gentle waves lulling us to sleep.

Sunday, Feb 7

Waking up with the sun we started a routine that we carried out each morning on the island.  I would wake up, head to the bathroom, douse myself with bugspray so as to not get eaten alive and then set the table on our porch for a leisurely breakfast.  Bruce would get up, head to the bathroom, douse himself with bugspray and then try to capture the wildlife through his camera lens while eating breakfast and enjoying the view.  He set up some very creative lures throughout the week and we have some great pictures of the visitors enticed to our porch by his sugar-water, mango and banana pieces.  We came to St. John to snorkel and snorkel we did on our first day.  We drove by Cinnamon Bay coming in and headed back there for our first day.  The parking was easy and our tour book indicated that the beach was great for beginners.  First, we stopped by Maho Campground to buy some sandwiches and drinks for lunch and then checked out the charter options endorsed by Maho.  Cinnamon Bay is absolutely gorgeous and we tucked ourselves under a Maho tree that provided shade for the entire day.  After getting out our snorkel gear, we headed in to see what we could see.  Not 30 feet into the water we spotted a turtle munching away carefree on the grassy bottom.  He was a good size and I was very excited for what this meant we were going to see the rest of the week.  We continued on snorkeling our way around a point to Maho beach and saw plenty of coral and fish on the way.  There were a lot of people on Maho beach from the campground and we decided to head back to Cinnamon Bay as it was much less crowded.  Swimming back around Bruce noticed a guy standing in the water looking at the hillside facing Maho campground.  Soon he noticed that there were two very large iguanas scrambling up the hillside and knocking sand down as they moved.  Very cool and I regretted not stopping to look at them more as we didn’t see anything that big for the rest of the week.  Getting back to our towels we dried off and opened up our lunch.  We were not alone on the beach for long as 3 resident chickens began to circle hoping for a handout.  Little did they know that I was not a rookie and realized that if I handed out anything that would have been the end of our peace and quiet on the beach.  They soon wandered off looking for easier targets.  After a nap and more swimming, we headed back to Cruz Bay to purchase some more food to stock up our fridge.  We also stopped in to the National Park Service Visitor Center to ask about signing up for their guided tour of the Reef Bay Trail.  They do a guided tour where you hike down the length of the trail and then get picked up at the bottom and ferried back to Cruz Bay eliminating the need to climb back up the rather steep elevation.  Unfortunately they were fully booked up so we didn’t get to sign up for that tour.  Getting back to Concordia we started our second daily ritual of taking a dip in the pool to cool off from the days activities and then taking a shower using the solar shower.  We found that the afternoon was the warmest time of day to take advantage of the solar shower.  That night we dressed up and I tried my hand at driving and “keeping left” as we headed to Coral Bay to Island Breezes for dinner.  In my opinion they had the best buffalo wings and burgers on the island.  This perhaps was influenced by my consumption of an absolutely beautiful island concoction called a “painkiller”.  It is a yummy mixture of dark rum, OJ, pineapple juice, coco lopez and topped off with just sprinkle of grated nutmeg.

Monday, Feb 8

Today we decided to stay even closer to home.  After breakfast and cleaning up the tent we packed up a lunch and hiked down from the campground to Salt Pond Bay.  It was a relatively easy trail and we ended up getting to the beach so early that we had our choice of spots to set up.  We found a shady spot with a picnic table and set up camp for the day under a nice shade tree.  At Salt Pond we had the fortune of seeing a group of cuttlefish and a rather large barracuda.  A lot of the week I felt that ignorance was bliss.  The group next to us later asked if we had seen the 4ft specimen and only then did I realize what I had been looking at.  Bruce had a chance to test out his video equipment while snorkeling this day and we had a fun time exploring the different reefs mostly off to the left-hand side of the beach.  A quick nap under the shade tree and we hiked back up to Concordia later in the afternoon for a refreshing swim then shower.  We made dinner on our deck and watched the best sunset of the week.  Bruce had read somewhere that Concordia had mosquito netting for the beds and we asked at the store.  The mosquitoes were eating me alive and it was hard to sleep being woken up by their incessant buzzing in the ear.  I was so grateful that he did this as it made for much more comfortable sleeping.  No need to go to bed coated in bug spray=happy girlfriend.

Tuesday, Feb 9

Today we switched it up by heading out for a hike.  We wanted to do the Reef Bay trail, but didn’t want to hike down and then back up the 947 foot 2.4 mile trail (we are on vacation).  After some research we headed to the Lameshur Bay trail instead.  This trial has about 467 feet of elevation and is 2.6 miles long down to the Reef Bay sugar factory.  There are some sugar mill ruins that we inspected before setting up for lunch on the beach.  At some point during lunch Bruce looked behind us on the beach and noticed that there were mongoose (plural of which is mongoose-dem on St. John) loitering behind us as we ate.  We proceeded to finish our lunch and get both video and pictures of the “shy” creatures.  Heading back out from the beach got plenty sweaty during our hike back.  As we were driving out, we noticed two people hitchhiking and pulled over to give them a ride.  Their names were Scott and Anna and they were the glass blowing artists in residence at Maho campground.  During our drive together they informed us that Friday night was prime rib night at Maho, advice that we took full advantage of later in the week.  We got home and after dinner and watching the sun set from our porch, then we headed down to listen to the steel drum artist playing that night at the Café Concordia pavillion.  We had several drinks (one of which was a “mistake” given to Bruce by the bartender) and then stumbled back to the tent.

Wednesday, Feb 10

Back to snorkeling…today we decided to head out to the Waterlemon Cay area.  We checked out the ruins of an old suger mill at Annaberg before heading over to participate in a Waters Edge Walk led by a park ranger from the National Park Service.  The ranger pointed out animals and plants native to the island near the shoreline.  There were several small boys on the tour and I’m sure it’s because of them that we saw so much.  They pointed out queen conch, sea cucumber and even our first sting ray of the trip.  I say leave it to young boys to find all the animals hiding in the shallow water in the grass.  The ranger also pointed out the Machineel tree nearby and discussed its caustic properties.  She said you should never locate yourself below this tree especially during rain.  She also let us know that she had noticed a Machineel tree located at Salt Pond Bay with a picnic table underneath it last time she was there.  Yet another reason for me to believe that ignorance is bliss.  Thankfully we did not have any ill effects from our day possibly spent beneath this caustic tree at Salt Pond Bay.  After this walk we headed over to a rocky beach to access the water closer to Waterlemon Cay.  We had lunch then started our swim out to this cay.  One side of Waterlemon was full of fish and coral, the other had mostly died out.  Waterlemon was probably where we saw the best coral of the week.  After Waterlemon Cay, we decided to head to the grassy beach area and saw some more cuttlefish and two rather large rays.  Just as we were about to leave a lady yelled that she was looking at a turtle and we went back into the water to chase the turtle around for a bit.  Wrapping up our snorkeling we headed over to the East End of the island to check out Sloop Jones and his t-shirts.  On our way back we stopped at Vie’s Snack Shack for some yummy conch fritters with hot sauce.  The goats across the street from the snack shack were particularly vocal and it was fun to watch them chase each other.  Dinner that night was at Skinny Legs, it seems that they have some sort of New England connection as they had Red Sox, Patriots, Bruins and Celtics banners displayed prominently on the walls.  They also had a great t-shirt store called The Jolly Dog adjacent where we found a lot of nice shirts including the “Dip” shirt that Bruce purchased outlining all of the dip signs that had been modified by locals on the island, very whimsical.

Thursday, Feb 11

We awoke early today to head over to Cruz Bay to catch our charter on the Stormy Petrel.  Rick and Rachael were our guides for the day.  Rick even let me pilot the boat on our way over to Spanishtown, Virgin Gorda where they had to process our paperwork through British customs. On the way to Virgin Gorda Rick pointed out a dolphin in front of the boat as well as a rather unusual yacht called simply “A” which we later googled and found to be owned by Russian Business Tycoon, Andrei Melnichenk.  From there, we went to the Baths at Virgin Gorda. What an amazing place! The current was incredibly strong today everywhere we went and we needed to take a lot of care just to get onto the beach at the baths.  People were being pulled off their feet as they attempted to get to shore.  Rick led us through the baths while giving us an overview of this incredible rock formation.  From there, we went to the Cooper Island Beach Club Restaurant for lunch. They called our lunch orders in ahead of time so that they were ready when we got there. This island has roughly 15 people that live there and they run the hotel, restaurant and gift shop.  The beach was lovely and the food was absolutely delicious.  Both Bruce and I had the Chicken Roti wrap with mango chutney…so good!  Properly fueled we headed to The Indians to snorkel.  The current was again a factor here and a lot of the passengers onboard elected to not snorkel too far from the boat.  We then headed back to Cruz Bay to go through US Customs.  We did a brief bit of shopping at Mongoose Junction and then headed back to Coral Bay and dinner at Shipwreck Landing before heading home.

Friday, Feb 12

We headed out today with the idea that we would rent kayaks from Maho and go out to Whistling Cay to snorkel.  Upon arrival we discovered that our plans were to yet again be effected by the storms in the mid-atlantic.  The waves were so strong on the beach at Maho that they were not allowing anyone to take out kayaks.  The guy at the rental shop suggested that we check out Haulover Bay on the East End of the island instead.  He assured us that this beach was protected by Tortola and was not going to be as affected by the current.  This was a very easy access beach and we had the entire beach to ourselves for the most part.  We snorkeled over to the right hand side of the beach to rest for a bit on an isolated stretch of sand.  We sat in the gentle surf for a bit and I collected some nice shells for my nephews.  After watching some pelicans taunt us by posing close enough that Bruce could have gotten some good shots, we headed over to the other side of the beach.  The center of Haulover bay was fairly deep and soon we were unable to see anything.  I kept referring to it as primordial ooze and it took us a good 20 minutes to snorkel across it.  As we got over to the left-hand side of the bay we found some excellent coral, lobsters and huge schools of fish.  Just before we were going to get out of the water we spotted a 5-6 ft long nurse shark swim slowly by.  From turtles to nurse sharks the progression of our snorkels throughout the week was just great.  I don’t think I breathed while the shark went by and I was certainly shaking a bit after it had passed.  It swam by so gracefully.  That night we headed over to the absolute chaos that is Prime Rib night at the Maho Bay campground.  Bruce and I were absolutely floored at the number of kids/people running around.  We were unprepared for a cafeteria style dinner service and it was in full swing when we got there.  After the dinner, we headed down to check out the glass blowing demonstration put on by Anna and Scott, the hitchhikers that we had picked up earlier in the week.  We stayed for two of their demonstrations where they made a swordfish and attempted to pull a flower together that just didn’t work out.  I was fascinated as I had never seen glass blowing this close.  It is amazing the steps they go through till they get to the finished product.  The glass seems to look like nothing at all until the end couple of steps when it emerges into its final shape and then goes into the annealer to cool down slowly overnight.  We then headed back over the rough Maho road to Concordia to hop into bed for the night.

Saturday, Feb 13

Our final day on the island, we woke to watch the sunrise over Drunk Bay.  We made breakfast for the final time and packed up for our trip to Orlando.  We checked out of Concordia and filmed our final drive back to Cruz Bay for posterity.  When we arrived at the car ferry we thought that we were going to be left on shore waiting for the next ferry, there certainly did not look like there was any space left on the boat.  Somehow the car parkers were able to get two more cars on besides us, the parking guys on this barge know their stuff.  We were not able to open our car doors, but we were on the barge.  We drove around St. Thomas for a bit and then found a place to pick up some lunch.  After lunch we found a scenic point that overlooked the airport.  We stayed there watching the planes take off and land until we finally had to admit that we needed to catch the plane and return our rental car.  Saying good-bye to St. John and this portion of the vacation was hard.  It was such a special week to have had with Bruce.  The flight from St. Thomas to Charlotte was uneventful.  At the Charlotte airport I had promised Bruce that the last time I was there, they had some excellent BBQ restaurants.  Unfortunately, we were not able to find one when we looked around.  From Charlotte to Orlando we ended up sitting on the plane for over an hour while they attempted to “redistribute the fuel”.  We arrived in Orlando past 11 and then waited for another hour plus for the Not-So-Magical, Disney Magical Express service to whisk us to our hotel for the night.  We ended up walking into our room at the Coronado Springs around 1am and getting into bed around 2am.

Sunday, Feb 14

Valentine’s Day and for some reason we were up by 9am and ready to start our day.  We found the breakfast at Coronado Springs and then headed to the Magic Kingdom for the first part of the day.  We went on several rides including the Haunted Mansion and the Big Thunder Mountain Railroad.  We went to an exhibit that had debuted at the 1964/65 World’s Fair called Innovations.  They had a comedy show modeled after Monster’s Inc called Laugh Floor that was very funny.  Then I was nostalgic to see the Disney that I remembered as a kid so we went to see the Country Bear Jamboree show followed by the Hall of Presidents.  The animatronics at Disney is amazing and yes they even had Obama up and giving a speech.  We headed by bus to Hollywood Studios next where we saw several more shows including Muppets 3D and the Indiana Jones stunt show.  The Indiana Jones show had way too much of a cheese factor for me.  We next headed over to see the final viewing of Fantasmic!  It is a show that Disney runs on two days a week.  This show was incredible with all the latest water/projection/laser and fire effects.  Very well integrated and just an amazing story to watch being performed.  Some of the effects really took your breath away.  The park closed after the show and we headed back to the room.  Bruce had very thoughtfully ordered some chocolates and a carmel coated apple and rose which were waiting when we got back to our room that night.  What a great guy and a great first day ending to this part of the trip.

Monday, Feb 15

We woke up early today to take advantage of the early opening of Animal Kingdom for guests that were staying at the Disney Resort Hotels.  I knew the animals were going to be most active in the morning and wanted to take full advantage of that.  We went on a Safari Ride, to the Bugs Life Show, had unknowingly walked into a character breakfast that featured Daisy Duck and Goofy.  The Safari ride was a little too cheesy for my taste.  Too much “keeping a look out for the poachers ahead mates”, and not enough information given on the animals we were actually seeing.  We did go to a show entitled Flights of Wonder in which Bruce was picked as a volunteer to go up on stage and take pictures as an owl came swooping over his head and landed on a perch behind him.  Very cool and the other birds in the show were amazing to watch flying around.  Animal Kingdom was a little bit of a let down for me in that I had expected more information about the animals and not so much Disnification.  We headed back to the hotel room for a quick nap and when we woke up; Bruce got a call from his parents letting him know that his Cousin Caryl and her daughter Andrea were down at Disney.  We called Caryl and found out that they were at Epcot.  We just happened to be heading for Epcot for the second part of our day so we made plans to sit down with them.  What a small world and a nice surprise for the afternoon.  It was good to catch up with them.  We went on to ride the Mission: Space ride and then see a film on the Circle of Life.  We had reservations at the Morocco restaurant at Epcot and had a nice meal with a bit of belly dancing and Moroccan music entertainment played on a Kanoune.  We finished up the day watching the Epcot fireworks and speaking with a girl who was doing an internship at Disney.

Tuesday, Feb 16

Today we wanted to finish up the final couple of rides and attractions that we wanted to see at Epcot and Hollywood Studios.  We got up and headed to see Soarin',  a new ride at Epcot which simulated a glider ride over the California coast.  Pretty neat ride that included scents that were sprayed into the air as you rode over different scenes such as orange groves and pine forests.  We then headed over to try out the Test Track.  All I have to say about that is that Disney has nothing on some of the switchbacks and roads on St. John.  We had a fancy lunch at Chefs de France in the French pavilion complete with a visit by Ratatouille.  After lunch we caught a boat over to Hollywood Studios where we went to check out Star Wars and then proceeded to wait almost 3 hours in line for the new Toy Story ride.  It was a great ride that was super interactive and much too short.  We went to go see the Fantasmic! Show for the second time and finished our night with dinner at the Brown Derby.

Wednesday, Feb 17

Bruce woke up and went to get the car at Hertz while I stayed in the room to putter around a bit and pack luggage.  We had breakfast at Disney and then headed off to our next adventure at the NASA Visitor Center.  They had a 3-hr bus tour of the NASA grounds including the shuttle launch pads, the vehicle assembly building and a Saturn V rocket.  We also learned that during every space shuttle launch there is an armored personnel carrier left idling near the launch pad as an emergency escape for the astronauts.  If a problem occurs the astronauts ride a zipline from the top of the launchpad to a point a half mile or so away from the pad.  The astronauts then have a decision to make - either run into a nearby bunker or risk their luck driving off in the armored personnel carrier.  The Saturn V rocket we saw is one of three that were built but never used due to cuts to the Apollo moon program.  The grounds around NASA are protected by the Department of the Interior and are home to many wild animals including 12 nesting pairs of bald eagles.  Our tour guy even referred to the numerous armadillos we saw as "rats in spacesuits".  We also had the opportunity to touch a  moon rock, and finished up our day at the visitor center watching an IMAX movie on the space station.

Thursday, Feb 18

We went to the Astronaut Hall of Fame where they had numerous astronaut memorabilia and also had the Mercury capsule flown by Scott Carpenter.  We then went back to the NASA Visitor Center and finished up a the last couple of exhibits, including a hall of images taken by the Hubble Telescope and a visit to the rocket garden.  We headed back to Disney to catch the Magical Express back to the Orlando airport and then back home to Boston.


Controlling PC/Mac software from a DMX console

I seem to be working on more and more shows where video is used, usually controlled via something like a PowerPoint or Keynote presentation running on a Mac or PC.  Being able to control that remotely via a lighting console would be useful for a number of reasons.  Not only does it let you synchronize things more closely, but it makes it easier for a stage manager to call a show, and also easier for a running crew since they don't have to worry about whether the next cue means pressing something on the lighting console, something on a keyboard or laptop, or both.

You can find commercial products available that let you simulate pressing a key on a PC/Mac keyboard via DMX, such as Rosco's KEYSTROKE™, but unless you need to trigger lots of fancy key sequences then the approx. $400 US price tag may be a little much for you.  If all you want is an inexpensive way of pressing a button like the space bar via DMX then there are much more inexpensive ways if you don't mind a little tinkering.

You basically need two components.  First, you need a DMX decoder that lets you toggle a switch or relay.  The only other thing you need is a module that lets you simulate pressing a key on a USB keyboard.  There are numerous ways of doing both, and depending on how much you're willing to spend and how much you're willing to tinker you can spend as little as $0 on a solution.  $80 or so may be more likely, but even that is a much better price to pay than the commercial products!

The DMX interface

If you have an old DMX device lying around you may be able to cannibalize it for its DMX decoder circuit.  If not then you can buy a one channel DMX relay for as little as $40 from places like ApogeeKits or All Spectrum Electronics. For a bit more you can get 4 or 8 channel DMX relays from places like Northlight Systems or Blue Point Engineering. Depending on how fancy you want to get a single channel relay is likely enough for most needs.  Do you only ever plan to control something like PowerPoint or Keynote?  If so then you only need to remotely trigger a single keystroke.  If you need more then how many individual keystrokes do you need?  So 1 may be enough for most cases, but 2, 4, or even 8 may provide you with additional flexibility.

The Keyboard interface

If you have an old keyboard lying around then you already have all the remaining parts you need.  With very little effort you can find many websites that discuss keyboard hacking, or taking apart a keyboard to make use of the guts so that you can make other devices send keystrokes to a PC.

If you don't have an old keyboard lying around or don't feel like cracking one open to cannibalize it then you can always buy a USB keyboard encoder, which is basically a device that emulates a keyboard.  This is the approach I chose for a few different reasons.  After hunting around for a while I came across the U-HID Nano, which at $35 fit both my budget and my needs perfectly.  This tiny module (only about 1.5" long) is fully programmable via a Windows app and lets you specify up to 8 individual keys to emulate.

The U-HID Nano

Things to be Aware of

Depending on what components you scrounge/hack/buy there are various issues you should be aware of.  If you hack a keyboard to use as the PC interface then make sure you're fully aware of how the keyboard behaves.  By default, Windows, OS-X, linux, etc. all treat a prolonged key press as a signal to repeat that key over and over until you let go of the key.  So if your DMX console sends a prolonged signal to your DMX relay you may find that it results in the computer you're trying to control interpreting it as multiple key presses.  If you are trying to control an application like PowerPoint this way then you could find yourself cycling rapidly through slides when you don't mean to.  You might be able to deal with this by doing some rather precise timing work with your lighting console or going into your PC's settings to reduce the keyboard repeat rate, but neither of those are very "neat" solutions.  If you're fine with that approach then more power to you!

This is one of the reasons why I decided to go with the U-HID Nano device mentioned above.  One of its nice features is that it supports a "pulse" mode for emulating keystrokes.  When it receives a signal on one of it's control pins it sends a momentary key press rather than latching the keystroke down until the signal is removed.  In this way you can trigger a momentary key press by setting the DMX value of the appropriate channel to a non-zero value and you don't have to worry about quickly setting the DMX channel back to zero or about the PC interpreting the key press as a repeated one.

If you go with a device like the U-HID Nano or hack a keyboard and decide to support more than one keystroke then the next question to ask is whether you want to use one DMX channel or more.  Since a single DMX channel provides 8 bits of data you could apply one bit to each keystroke. (It sounds like the U-HID Nano is almost made for this!)  Using a single DMX channel can save an otherwise scarce resource if you have a limited number of free/available DMX channels.  The problem here is that you can easily find yourself in a situation where you send keystrokes that you don't want to, and you may find it very difficult to work with your DMX/keyboard module.   If you accidentally fade the DMX channel up/down in a lighting cue you'll find it generating all sorts of unwanted keystrokes.

By mapping a single DMX channel to a single keystroke you make management of keystrokes much easier.  If you trigger a keystroke by setting a channel to a non-zero value then you won't accidentally trigger more keystrokes if that channel then fades to another level.  An 8-channel DMX relay is more expensive, but if you only ever expect to need to send one or two keystrokes during a given show then a one or two channel relay should be plenty for your needs.  Again, since the U-HID Nano is fully programmable, you can change the keystrokes it sends in just a few seconds. If all you need to do is send a single keystroke so you can automatically cycle through PowerPoint slides then a single channel DMX relay and a U-HID Nano would make an excellent combination for less than $100.

My Setup

I actually had an 8-channel DMX relay from Blue Point Engineering sitting idle from a previous project I needed it for.  I simply wired all the common terminals of each relay together and then attached them to pin 1 of the U-HID Nano.  Each of the remaining pins then went to the normally open pin of one of the relays.

I also picked 8 keystrokes that I'm most likely to use and programmed one for each of the 8 pins on the U-HID Nano.  Using the configuration utility you can download from their website I set each pin to be a key switch with the down action set to "Pulse Primary" and the up action to "Clear".  The completed box works like a charm!


Sending messages to Growl on a remote Mac (for Irssi integration)

Growl, IRC, and Irssi

Growl, for those who don't know, is a handy utility for Mac OS-X that lets applications unobtrusively display notifications on the screen.  Many applications have buil-in support for popping messages up via Growl.  One handy use is when an IRC or IM application receives a message for you but the application is minimized.  You wouldn't see the message if the app is minimized, but with Growl the application can pop up a message on the screen.

Irssi is a highly customizable IRC client - it calls itself "the client of the future".  One of the many features of Irssi is that you can customize it with perl scripts, and you can find literally hundreds of perl scripts for Irssi with very little effort.

As a professional systems administrator I need to have remote access to the systems I manage, as well as the ability to communicate with my fellow admins.  We run an IRC server that lets us chat with each other whether in the office or remotely.  I could run an IRC client on my Mac at work but the problem with that is accessing it remotely.  Interacting with the desktop remotely is painfully slow, and a text-based IRC client like Irssi in conjunction with a utility like screen lets me keep my client logged into IRC and allows me to access it from virtually anywhere at any time.  Most of us also opt to run our IRC clients on a shell server rather than our own desktop systems since the servers are more easily accessible, and less likely to go down due to hardware problems, power failures, etc.

So on my Mac at work I run Irssi in a screen session on a linux server.  The problem is that I can miss important messages if I don't keep an eye on the Irssi session, and as any sysadmin will tell you it's very easy to get distracted.

I have found a few solutions that hook a remote Irssi session into Growl on your Mac desktop, but none of them had quite the features that I wanted.  So I ended up writing my own, in part to learn a little about Growl & Irssi, and in part to give me those features I desired.  Everything I've written can be downloaded from the link below, and it's all covered by the GPL so feel free to use and modify it as long as you adhere to the GPL.


There were three primary features I was interested in.  The first was that the client and server communicate via TCP so that I could use port forwarding in SSH to ensure a secure connection between Irssi and Growl.  The second was that if I didn't want to rely on an SSH tunnel that the datastream could be optionally encrypted to ensure a secure connection.   Encryption is performed using  Blowfish, and to enable it you just specify an encryption key in the configuration file. If you don't want to use encryption just comment out the encryption key.

The third feature is that the Irssi integration allow me to specify arbitrary text that would trigger Growl popups.  I want Growl to notify me if somebody mentions certain key words or phrases in IRC.  My Growl module allows you to easily add and remove arbitrary strings that will trigger Growl popups so that I can add and change them as desired.

Another feature not related to Irssi that I decided would be handy was to extend it so that I could easily add it to any other environments where I might want remote Growl messages.  To that extent I wrote a command line utility that also lets you send Growl messages, and it supports the same features as the Irssi module.

The scripts should be extremely easy for anybody with minimal perl experience to install.  They do require a number of perl modules, such as the Mac::Growl module that interfaces with Growl, as well as Crypt::CBCeasy for Blowfish encryption and a few others.  See the README file for a complete list of all the modules.


The README file has complete instructions, but in a nutshell:

  1. Install the appropriate perl modules on both the client and the server
  2. Create the file ~/.growl-server on your Mac with the desired options (see the comments in the included sample)
  3. Run on your Mac
  4. Place in your ~/.irssi/scripts directory on the system where you run Irssi
  5. Edit and modify any of the documented options to match those in ~/.growl-server
  6. Load the growl script into Irssi

Optionally, or if you just want to use the command line utility to send Growl messages:

  1. Create the file ~/.send-growl on the system that will be sending Growl messages
  2. Copy to the system
  3. Run (use -? or --help to see command line options)

Download remote-growl-0.01.tar.gz here.


DMX-512 Primer (an end-users perspective)

There are a number of good DMX-512 resources available on the internet, but many of the primers focus mostly on the technical aspects of the protocol and less on practical usage.  What follows is information on DMX-512 from more of a practical users perspective.  For more resources see my DMX-512 Resources page.  If you have other questions you'd like to see addressed here please e-mail me (click on "About" at the top of the page) or post a comment.

What exactly is DMX?
DMX is actually shorthand.  The full standard is DMX512-A, which is typically referred to as just DMX-512 or DMX.  It was originally designed as a standard for lighting consoles to communicate with dimmers used in theatrical lighting.  Up until the early 1990's most lighting systems used proprietary protocols between consoles and dimmers, so it was difficult to have a console from one company communicate with dimmers from another.  As DMX512 gained popularity it was quickly adapted by manufacturers of special effects, moving lights, etc. as a means to also control those devices.

DMX is a serial digital protocol.  If you've used computers for a long time and are familiar with modems then the concept is very similar.  Your lighting console will send one control signal down the DMX cable, followed by the second one, followed by the third one, and so on until all the data has been sent.  Once all the data has been sent the console simply repeats itself and starts sending out the first control signal again.  This happens quite rapidly - the default rate for DMX is 250 Kbaud or 250 thousand bits of data per second.

Why "512"?
The 512 in DMX512-A corresponds to the number of control signals the protocol supports. A single DMX cable can carry 512 individual signals, so if you have a lighting console connected to a dimmer pack via a DMX cable then that cable can control a maximum of 512 dimmers.  It is possible to split a DMX cable (more on this below), but each split would carry the exact same 512 channels of data as the source cable.

So a single DMX cable (or a cable split to run to multiple devices) would be capable of controlling any one of the following:

  • 512 individual lighting dimmers
  • 32 intelligent lights that require 16 channels each
  • 256 dimmers, each of which has a light plugged into it and an individually controlled color scroller attached to the light
  • Any combination of the above in which the total number of channels required is less than or equal to 512

The number 512 is easily represented in binary (512 = 2^9 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = hex 200, etc).  As such it provides an easy protocol for devices like lighting consoles (which are essentially just glorified computers) to work with them.

What exactly is a DMX channel?
A channel is simply one of the 512 control signals in the DMX512-A protocol.  As it is a digital protocol, each channel is represented by 8 bits.  Those 8 bits represent a value between 0 and 2^8 or 256.  Most lighting consoles will abstract those values to a range between 0 and 100%.  Newer and more feature-rich consoles will provide an option to let you view and work with DMX channels in either decimal (0-100%) or hexidecimal (0-255) depending on your needs.

So to summarize everything from above, DMX-512 is a protocol running at 250 Kbaud that transmits up to 512 8-bit values repetitively.  (If you only use 100 channels then only those 100 8-bit values are transmitted.)

What is a DMX universe?
A single DMX universe, at the most basic level, is just a single DMX cable that carries 512 channels of data.  More specifically, a DMX universe is a single DMX network.  If a single DMX cable is run out of a lighting console and then split (see below) into multiple other cables, then all those cables make up a single DMX universe.  They all carry the exact same DMX data.

Many lighting consoles have the ability to control multiple DMX universes.  If a lighting console supports two or more universes then you will find two or more DMX connectors on the back of the console.  They will be labeled something like "DMX universe 1", "DMX universe 2", etc. or "DMX 1-512", "DMX 513-1024", etc.

So exactly how many devices can DMX control?
This actually depends on the lighting console you have.  If the console only supports a single DMX universe then it can control a maximum of 512 independent single channel devices.  If you want to control 16 channel devices then a single universe can control only 32 devices (512/16 = 32).  Obviously if your lighting console supports multiple universes then the number of devices you can control increases.

If you only have a single universe it still doesn't mean you can control only 512 devices.  Suppose you have a setup where you have ten different Red/Green/Blue LED lights.  Each light takes 3 channels, one for the intensity of each color.  If you want to control those 10 lights independently then you would need 30 channels.   However suppose you wanted all ten of those devices to always work exactly the same (perhaps they're all providing a uniform wash on a stage).  If that's the case then you can set all ten of those lights to the same DMX address, and they will all respond identically.  In this setup you only end up using 3 channels instead of 30.

You can have a virtually unlimited number of devices that are all set to respond to the DMX channel if desired.  This isn't always desired, but in certain cases it can be very useful.  It's not uncommon to see multiple color scrollers set to the same DMX channel if they're used for color washes.  So between consoles that support multiple universes and setting multiple devices to the same DMX channel you can control a virtually unlimited number of devices.

DMX cables & connectors
The DMX protocol physically requires 3 individual wires within a DMX cable.  These are identified as:

  • Data common
  • Data +
  • Data -

The Data + and Data - are simply complements of each other, so if the Data + line has a voltage of +1 volt when compared to the common then the Data - line will have a voltage of -1 volt.  If you look at the DMX512-A specification or other websites that discuss DMX you will find references to a second pair of Data + and Data - lines that are considered optional.  These are considered optional as they are not actually used in typical DMX environments.  Some devices may make use of them, but if they do then it's not in any standardized way.

The specification for DMX is very specific with respects to the connectors and cables that should be used.  Unfortunately many liberties have been taken over the years that has muddled the waters as far as both cables and connectors go. The DMX specification stipulates that 5-pin XLR connectors be used, and the vast majority of professional lighting consoles, dimmers, etc. all use 5-pin XLR connectors despite the fact that only 3 pins are used.  Among other things, the use of 5-pin connectors helps to prevent you from accidentally plugging a lighting console or dimmer pack into a 3-pin audio XLR cable.  If that audio cable is connected to an audio mixer that provides a phantom power supply of 48 volts (used by microphones) then you could burn out part of your console, dimmers, etc.

The DMX specification also stipulates that cable that adheres to the RS485 standard be used.  Cable designed to this specification can carry digital signals over long distances in electrically noisy environments. Standard shielded microphone cable is not RS485 rated so it should not be used.  Some examples of RS485 cable include Belden 9841, Belden 9842, and Alpha 5274 among others.  A quick Google search for those will find plenty of sources for them.

Unfortunately (or fortunately depending on your perspective) some manufacturers of intelligent lighting effects realized early on that despite not being approved by the DMX512-A specification, that regular microphone cable can actually carry a DMX signal for short (50 feet or so) runs.  They also realized that traveling disk jockeys already likely have lots of microphone cable so to cater to their needs they started developing and selling DMX controlled party lights using 3-pin XLR connections.  Today you can find lots of 3-pin intelligent lights from a wide range of companies like American DJ, Chauvet Lighting, and even Martin and many others.

Because of the prevalence of lighting gear that require 3-pin XLR connections it's a good idea for any lighting designer to have at least a few 3-pin to 5-pin adapters.  You can make them yourselves - just connect pin 1 to pin 1, 2 to 2, and 3 to 3, leaving pins 4 and 5 on the 5-pin side unused.

Splitting DMX cables
Simply making a 'Y' connector out of three XLR connectors is a BIG no-no.  Depending on the quality of the cable you use and the length of each leg of the "Y" you will likely have some of the DMX signal reflect back down to the junction and out the other leg, resulting in what can best be described as schizophrenia by your DMX devices.  They will start behaving in extremely unpredictable ways due to the "leak" of the signal from one leg to the other.

If you need to split a DMX signal (and it's a very common need) the right way to do it is with a device known as an optical splitter.  This is a device that you plug a single DMX cable into and it may have 2, 4, or many more DMX outputs that each mirror the signal on the input line.  Each of the outputs is electrically isolated from the others using optical isolators which prevent reflections from one leg impacting any of the other legs.  Examples of DMX optical splitters can be found here, here, and here among others.

One nice feature of some DMX splitters is that they  support both 3-pin and 5-pin XLR connectors, meaning that they can be used not only as splitters but converters as well.

Terminating DMX cable runs
The same signal reflections described above when splitting a DMX cable using a "Y" connector can happen on a single un-split run of DMX cable if it is long enough.  To prevent this from happening it is good practice to always attach a DMX terminator to the end of each DMX run.  A DMX terminator is simply just an XLR connector with a resistor attached between pins 2 and 3.  You can make your own DMX terminators very easily or even add an LED or two in order to make a useful DMX tester.

You may quickly find that sometimes termination doesn't seem to be important, especially with shorter cable runs.  But if you see even the slightest odd behavior in your devices then it is strongly suggested that you add a terminator and also make sure your DMX cables are of the right type and not damaged in any way.  Lots of problems can be traced to dirty DMX signaling caused by a lack of termination and/or faulty cables.

Some devices will have DMX termination built into them.  Check the devices manual to see if it does, and if so how to enable or disable it as needed.  Usually this is just a switch you can turn on or off as needed.  If a device does provide built-in termination then make sure it's disabled unless you need it (the device is the last one in a DMX chain).

DMX Addressing
Any device that uses DMX must have a way to specify the DMX channel(es) that it will respond to.  This is typically referred to as the "starting address", and for simpler devices like color scrollers it is usually set by a series of rocker switches or dial switches.  Rocker switches are used to add together the binary values 1, 2, 4, 8, 16, etc. into the desired value.  Dial switches let you pick the values 0-9 to specify a three digit value.  More sophisticated devices like robotic lights will typically have a control panel with menu options that let you set the channel with a few button presses.

In all these cases what you are setting is just the first address that the device will respond to.  If a device only uses one address then it's easy enough to keep track of.  If a device requires more than one address, such as a four channel portable dimmer pack, then the address you specify plus three more would be used by that device.  So if you specify channel 132 for a four channel dimmer pack then 132 controls the first dimmer, 133 controls the second, 134 the third, and 135 the fourth.  The "fancier" the device the more channels it is likely to use, and a different number of channels may be used depending on how you program the device.  A robotic light may use 16 channels in one mode but 20 in another.  It is critical that you keep track of how many DMX channels each device you have uses and make sure you don't accidentally overlap channels.  If you overlap channels across two devices you'll likely get very unpredictable results.

It is possible, and perfectly reasonable, to assign the same DMX address to multiple devices.  Suppose you have 6 fixtures that provide a wash across your stage and each of those fixtures has a color scroller attached to it.  If you know for certain that you'll always want those 6 fixtures to use the same colors at the same time then you can set all those scrollers to the same DMX address and they will all scroll in unison.  However if you want to wash half of your stage in red and half in blue then you might need to assign three scrollers to one channel and three to another.  If you need to independently control all of them then you'd need to assign them six different channels.

Working with color scrollers and other common devices
Color scrollers are one type of device that DMX is well suited for and fairly easily to understand.  A typical color scroller uses a single DMX channel to adjust the positioning of a scroll of gels in front of a stage light.  Depending on the type of scroller it may have 8, 16, or some other number of colors in the gel scroll.   A DMX value of 0 will display the first color in the gel scroll, and a value of 100% or 255 (2^8) will display the last color in the gel scroll.  By adjusting the DMX value you can "dial in" any color on the scroll.

[Note: There are vendors who sell different types of scrollers that use two scrolls of gel to create a wide mix of colors.  If you are just getting started in working with scrollers make sure you know what you're using.]

A DMX cable by itself is incapable of providing the power required to operate a color scroller.  Some scrollers, mostly older ones, plug directly into an AC line, which means that you would need to run both power distribution and DMX to each scroller you use.  This, needless to say, is a real pain.  Most modern scrollers as well as many other devices (DMX irises, moving mirrors, etc.) now get their power from a standardized power supply.  A Power Supply Unit, or PSU, takes both an AC line input and a DMX input, and combines them into a single output on a 4-pin XLR cable.  Different sized PSU's can power a different number of devices.  Make sure you don't overload a PSU with too many devices.  Using 4-pin cable you can daisy-chain a number of devices like scrollers, mirrors, and irises together.  On more than one occasion I have created a "poor mans" intelligent light by attaching a scroller, iris, and moving mirror to a Source 4 fixture, and having to daisy chain only a single cable among those devices makes it that much easier to manage.

The 4-pin cable that runs from a PSU to scrollers and other devices is a very special type of cable, so don't go making your own unless you're absolutely certain you know what you are doing.  Two of the pins provide power and two provide the DMX signal, using the negative power lead as a common.  The two power leads are 14 AWG and the DMX leads are 22 AWG, with slightly different characteristics to a standard DMX cable.  So be very careful if you are going to make your own cables.

Important: As mentioned above, some vendors sell different types of scrollers that work in slightly different ways than conventional scrollers.  These scrollers, and other devices, also make use of 4-pin XLR cables to connect power and data from a PSU to the device.  However these PSU's are incompatible with the PSU's used by conventional scrollers despite appearing to function identically and using the same 4-pin cables.  The Wybron CXI scroller is one example of a scroller that uses a custom power supply.

8-bit and 16-bit Addressing
If you ever work with devices like robotic lights or moving mirrors you will have to understand the difference between 8-bit and 16-bit addressing.  As mentioned earlier, each DMX channel provides 8 bits of data, or a value between 0 and 255.  But suppose you have a robotic light or a mirror that can pan around an entire 360 degree circle.  Mapping the range of 0-255 to 360 degrees means that for each value you would have to move the fixture more than 1.4 degrees.  For a very short throw that may not seem like very much, but if you want that light to have a 25 foot throw then each of the 255 steps would correspond to 8 inches of movement.  Not many lighting designers would approve of that!

In order to provide better control over actions like panning and tilting intelligent lights, moving mirrors, etc. they typically combine two DMX addresses together for each parameter (pan and tilt).  By combining two DMX addresses together you jump from 8-bit (0-255) to 16-bit (0-65,535) resolution, which gives you much more control over the positioning of the fixture.

Some devices like the Rosco I-Cue mirror let you specify if you want the pan and tilt parameters to use 1 channel (8-bit) or 2 channels (16-bit), so depending on how you configure the device it may use 2 or 4 channels.