It’s been a big month for us here at BPI! We moved out of the old shop (just in time, since that huge storm blew out a window – if we hadn’t already moved Ben’s office out, all the computers and electronics would have been soaked!), and we’re mostly settled into the new shop. I’ve been organizing the office, while Ben got the router set up in its new home and started organizing the electronics shop. Meanwhile, the littlest member of our team has settled right into her office – we’re pretty sure she’d be happy to just move in there and never come home.
We got the move done just in time, since cue light season is back in full swing – we’re shipping 6 Prospero units in the next six weeks – and Ben is about to do a beta installation of Horatio Outdoor. He’s also continuing development on the Midi Show Control box, which should be done by mid-October.
We’ve also got some exciting news: we’re exhibiting at LDI for the first time this year! I’ve gone into master planning mode, making schedules and designing the booth, while Ben gets Horatio and Prospero ready to show off to the world. It’s going to be a crazy couple of months, but we’re excited. If you’re going to be at LDI, drop us a line, and stop by to chat with Ben – Booth #1782!
Sad to leave behind our “urban stained glass”, and our fabulous neighbors at the Design Center!
Good thing we got out before the storm – there were giant puddles in the middle of the former office!
New home of our little CNC router.
She’s made herself right at home.
The new MSC Box lets you pause and restart MIDI data with the press of a button.
We’ve been slacking off on the weekly roundup posts, but we had a good reason: we were moving the shop!
While we loved our shop at the Design Center, with its urban stained glass (aka graffiti on the windows) and awesome neighbors (hi, Plant Lady!), an opportunity arose that was just too good to pass up. Clear Story Creative, who we’ve done some great projects with in the past, had some extra space and invited us to move in!
BPI is still a separate operation, with our own dedicated space in their shop, and Ben gets an air conditioned and heated office out of the deal (no more fingerless gloves for programming in the winter!). Ben also gets people to talk to during the day (so you might see him on Facebook a little less often…), I get my own desk (instead of a tiny corner of an electronics workbench), and the littlest member of our team even gets a new office and some new friends (who are already providing her with exciting new toys…).
Posts might be sporadic for the next few weeks as we continue to settle in, but keep an eye on our Facebook and Twitter accounts for pictures as we get the office set up and decorated!
Packing up the old shop
We packed everything onto pallets to make it easier to move. Hooray for pallet jacks!
The furniture was the only thing that didn’t go on pallets, so Ben only needed one helper to get everything moved (thanks, Ken!)
We thought a 26′ truck would be more than enough space, but it ended up packed to the gills…
Enjoying the A/C after moving all the furniture in. The disco ball goes up next week.
Our littlest team member had to test out Ben’s new desk. He might never get it back…
Ben had a crazy schedule last week, working on at least 3 different projects every day and taking him everywhere from 2 different construction sites to the Water Cube downtown, The Beauty Shoppe in East Liberty, and at least three different coffee shops.
He installed a DIN rail Horatio in a newly-built office building (surface-mounted inside the rack, since there was no more space for a rack-mount version), cleaned up some programming for the Water Cube’s grand opening next Thursday, had great meetings with a bunch of interesting people doing interesting things (more on that later), and attended an Internet of Things panel hosted by Fygment, a great local organization that’s bringing together entrepreneurs of all kinds in Pittsburgh.
Upon returning to the shop at the end of a long day, he also discovered that someone had logged into the Horatio demo site and played with the lights while he was away. (Hello, whoever you are, and thanks for the blue disco lighting!)
DIN rail Horatio mounted inside the rack
Close-up of the DIN rail Horatio
An anomaly in the Water Cube usage data. Based on a Facebook comment, turned out to be kids spraying each other with the fountains!
Blue disco lighting in the shop, thanks to a Horatio demo user!
The shop is clean! Mostly. Enough that we could have a fun party, meet some great local artists, and chat with them about their current and future projects. Thanks to everyone who came out, and to the Office of Public Art for hosting! We’re hoping to make this a regular (maybe monthly?) thing, so more news on that soon!
Ben’s also been hard at work this week continuing work on Horatio development – and he even found some time to fix his 30-year-old backhoe, which made the littlest member of our team very very happy.
The shop hasn’t been this clean in years. We need to have parties more often.
The shop, all clean and ready for a party!
We rigged up a few interesting lighting effects to show off some of our recent work.
Goodies for the party guests: flyers, business cards, and candy!
Repairing Ben’s treasured backhoe for use by our junior team member.
Not a lot of photos this week, but it’s been busy nonetheless! Ben finished up work on the Water Cube, which soft opened at the EQT Children’s Theatre Festival downtown on Thursday. In addition to installing a custom Horatio with more than 30 sensors to monitor the water and lighting systems, he also ended up designing a custom lighting controller and helping to troubleshoot some lighting problems. The end result is a pretty great installation – great art, great lighting, and still and sparkling water on tap!
We also spent some time this week getting the shop ready for a party! The Pittsburgh Office of Public Art is hosting an event for local artists as part of their Public Art 201 series, and we’re excited to meet some more Pittsburgh artists and chat with them about what we do.
And as always, Ben continues work on Horatio development – the outdoor beta unit spent some more time on the roof this week, and it held up great in those crazy windstorms. We’re hoping to get the chance to beta test it around the city this summer with the PGH Lab project – our application is in, and our fingers are crossed! We’ve had such great experiences working with the city on various projects over the last few years, we’d love to have them give Horatio a spin!
The Water Cube at night
Drinking fountains on one face of the Water Cube
Horatio Bridge Device with sensors connected
Real-time data on the Cube’s water usage
The littlest member of our team is hard at work getting ready for the party
Ben spent most of this week working on a custom Horatio installation for a public art project downtown. When the installation opens tomorrow, we’ll be monitoring everything about it, from lighting to water to CO2, via 30 different sensors connected to a custom-built Horatio. We can’t say much about it right now, but check out the photos below, and stop by the parklet at Penn & 8th downtown after tomorrow to see it for yourself – it’s going to be great!
Ben also found time this week to do a little more testing on the outdoor Horatio, stop by a local Horatio installation in progress, and head down to Market Square to assist with Mix N’ Match strike. It was a busy week!
Swapping out the CO2 regulator for a digital sensor to monitor flow and consumption.
Left NPT to Right NPT nipple, plus a female to female (right hand) NPT coupler, to make the CO2 sensor fit.
Sensor in place, monitoring the CO2 tank.
Wiring up some sensors to monitor the art installation.
Horatio, mid-installation. Not the recommended mounting orientation.
Beta unit of the outdoor Horatio, mounted on the roof of the shop to see how it holds up out in the elements.
Ben’s been working on all sorts of things this week, including customizing a Horatio for a new art installation in the Cultural District, finishing up that DMX-to-IR converter, and updating the touch-sensitive basketball backboard we built with John Murray Productions for Chevron STEAM Zone’s Vertical Leap exhibit a few years ago. He’s also testing out a new outdoor version of Horatio – by hanging it out the window at the shop. Life is never boring here at BPI!
Another of Ben’s offices this week: a new interactive art installation opening Downtown in 2 weeks!
Testing out the DMX-to-IR converter board before installing it in its case.
The DMX-to-IR converter is almost done!
Updating the touch sensors from the Chevron STEAM Zone Vertical Leap exhibit.
Hanging a new outdoor version of Horatio out the window to test its resilience.
Now that we’ve told the world about Horatio, we spent the last week getting everything ready for the first few units to ship. Ben’s been busy building the Bridge Devices in the shop, while I’ve been preparing a little surprise for our first customers.
Ben also spent some time working on a custom DMX-to-IR converter for a client (to cue infrared-controlled LED candles via DMX), and the littlest member of our team has been working on writing (and coloring) her numbers. She’ll be in the shop building Horatios in no time!
Just a sneak peek at what Ben’s working on this week: an art installation called Mix N’ Match that opens in Market Square on Friday and runs through the end of April. Starting tomorrow he’ll be in the Square with the awesome folks from Flyspace Productions all day every day, rain or shine, ’till they get this thing up and running. If you’re in the neighborhood, stop by and say hi!
One of the things we’re developing right now is a new product that will monitor architectural lighting installations (more on that soon!). We’re testing out the system in our shop, but before we could test it properly we needed to create a nice dataset to feed into the system. To do this, we decided to mock up a basic architectural lighting system and generate some random lighting effects, which our new prototype system could monitor.
Among the random things that live in our shop is a mockup of an architectural lighting system from a project we did last year, consisting of 30 feet of RGB iLight Hypnotica. The lights in that system didn’t do anything particularly useful for our purposes, but with some modifications it became the perfect testbed for our new product.
I wanted to create something like a realistic use case, so I started by writing a script that turns the lights on at sunrise and off at sunset (so our on and off times will drift as the season changes). Simply turning the lights on to a static look didn’t give us a lot of useful data to monitor, though, and it would have been difficult to detect whether the controller was still running or if it had crashed.
My solution was to create a generative lighting system, but rather than doing something complicated like a Forest Fire, I went with the simplest algorithm possible: a random walk.
Random walking is where you vary a value (or a position) based on a random input. So if we have a random walk over a range of -1 to 1 with integers, our possible inputs are -1, 0 and 1. A random selection of those inputs might be 0, 0, 0, -1, -1, 1, -1, -1, 0, -1, so if our value started at 0, it would do this:
0 0 0 -1 -2 -1 -2 -3 -3 -4
This is, of course, not a particularly useful function all by itself, but we can scale it up.
In this case, we took the 186 DMX channels of our lighting rig and simply produced a random walk for each value, continuously. The initial approach was a bit flickery because we didn’t handle the ends very well – variables just sort of wrapped around from 0 to 255, causing channels to bounce back and forth repeatedly from full to out. Adding some nudging on the ends smoothed things out, and we now have a rig that produces random colors continuously.
Here’s the key bit of code:
for i in range(len(self._data)):
if(self._data[i] < 25): self._data[i] = self._data[i] + random.randrange(0,20) elif(self._data[i] > 230):
self._data[i] = self._data[i] + random.randrange(-20,0)
self._data[i] = self._data[i] + random.randrange(-25, 25)
In short: if the current value is less than 25, add a random number between 0 and 20. If the current value is greater than 230 (25 less than 255, the maximum), subtract a number between 0 and 20. Otherwise add a random number between -25 and 25.
This executes 40 times per second, so the lights can change color rather quickly. Here’s a look at the finished test system:
In this case we’re doing a random walk on each of the Red Green Blue channels. This doesn’t always end up being particularly interesting, but on average it does – and it gives us some good data to monitor with our prototype. Another approach might be to run the random walk on the Hue channel of a Hue Saturation Lightness colorspace, and then map those into RGB. This would get you saturated colors at maximum brightness, but would not wander off into dark territory like the current software does.
For our testing purposes, we also need to track sun-up vs. sun-down. The way we handled that was through the python ephem module, which gives you access to all sorts of data for astronomical bodies and observers. In this case, we simply needed to calculate the sun’s angle to the horizon: if it’s above 0 the sun is up; if it’s below 0 the sun is down. It would be possible to add correction factors for dawn and dusk, but simply tracking day vs. night was enough for our purposes.
We based our script heavily on Sean Sill’s ola_simple_fade.py from the excellent Open Lighting Architecture library. You can download our script here.