ArtBus: Counting Binary With Light
The ArtBus, an open source installation interface, and the programming it took to work with Max/MSP was no easy task, but the man who got it done, SAIC's Robb Drinkwater, talks about how. It's a little complex, so I'll break it down into terms that even I can understand.
Robb Drinkwater uses a magic box that talks to any connected ArtBus hardware and tells the hardware to do things. Magic box gets angry when ArtBus doesn't listen!
ROBB DRINKWATER: I'm Robb Drinkwater. As Ed mentioned, Ed and myself and Matthew Nelson have been working on ArtBus for a couple of years now. My original involvement with the project was Ed came to me and said, "You're a guy who knows Max/MSP," and Ed had the hardware for ArtBus, and of course the idea was to get ArtBus to work with Max.
So, Ed's kind of told the story already. I'll abbreviate it a little bit. But Ed came to me, showed me the ArtBus. I had never seen it before. He explained as an interface device. I thought, "Ah. That's okay. I've used interface devices before with Max. That should be no problem." Boy, are those famous last words because, of course, it turned out to be quite a bit of a problem getting Max and ArtBus to play nice because there's two contrasting approaches to the same idea. So, the solution was to write a piece of custom software that would glue the two of these things together, and so that's sort of what brought me into the project. And because I program in Python, I decided that we would make a little Python utility that would allow ArtBus to talk to Max and Max to talk to ArtBus.
And so, this is the transmogrifier that Ed mentioned. It's something that I've been working on for a while. Matt Nelson got involved, helping make the transmogrifier, and an early version that you see here is this one, and this is what allows Max and ArtBus to communicate to each other. So, this is a little application that's just running in the background, and it does all the translating that needs to be done in order for Max and the hardware to work with each other.
So, one of the nice things that grew out of this was that originally we wrote it custom for Max. It was just a way of getting ArtBus and Max to work together. As we continued to work on the project, we decided we were going to make the transmogrifier work in Open Sound Control, and I won't get into all the details about what OSC is. You can go to OpenSoundControl.Org to read more about what that is, but what's nice is that what this means is that ArtBus can talk Open Sound Control, and so then yes it can talk to Max but it can also talk to Pure Data or any audio application that already knows how to use Open Sound Control. There's quite a few Open Sound Controls become very pervasive in sound applications, so there are quite a few that's supported. There are even libraries for other pieces of software, so Flash supports it now, Director supports it so this makes ArtBus able to talk to a whole bunch of other things. But as one demo example here, we have Max talking to ArtBus via Open Sound Control.
So basically, it's pretty straightforward. As Ed described before the way ArtBus works is that you have to send a command to the ArtBus and basically ask it a question such as, "What is this value?" and then that message has to come back and be used, and because Open Sound Control is about sending messages back and forth, it has worked as a perfect format or platform for that type of communication. So, in this Max patch up at the top here, we have this area where we're actually communicating with the analog board, so the three potentiometers that Ed showed, and then those go out Open Sound Control through our little Open Sound Control application here so that we can actually talk to the hardware, and then when the data comes back from there, it comes back into Max through Open Sound Control, and then we get to use those values.
Here is another Max patch, and this is just a little file player patch.[p Let me see if the audio is turned back up, let's see this. So I've already loaded in this little patch that's a drum loop which is just playing in a loop, and then what I can do is I can use the potentiometers on the ArtBus. This one, obviously, controls the speed. There is it's original speed.
GRETCHEN HASSE: Here we go.
ROBB DRINKWATER: You can play [SOUNDS LIKE] Saccharin.
And then because ArtBus bugs or these board comes in different types -- right now, we have an analog board and a digital board, so you'll notice on the other side of the Max patch here, up here, and this is where we're communicating with the digital board. I'll down the audio for a second here so you can hear me talk.
Actually, you know what, why do it there when I can do it here, down here on the pots. One of these should. Not that one. Let me say this one, is it?
GRETCHEN HASSE: There you go.
ROBB DRINKWATER: We can control the volume. So, going back to the Max patch, over here this one communicates to the digital board. That doesn't send back any values but if you look at the board down here on the table, as my move the slider in Max back and forth, that's counting in binary, lighting up those little LEDs. And if you'll notice the little flashing green LED on the ArtBus, every time I move the slider that's a message that's getting sent over to the ArtBus, and then it flickers on and off because the other ArtBuses are simultaneously also still being addressed, so we'll see this one over flicker here, asking to -- each are getting their commands. So again, because it's a bus, you can send commands to different boards at different times and these boards can be feet and feet away from each other, all strung together, and then you can communicate with any particular board at any particular time whenever you need to.





Post new comment