QLab: Beyond the stage

February 11th, 2006

Over on the OSXAudio forums, someone recently asked the interesting question: what can a “theatre app” like QLab do that other audio processing applications like Live can’t?

It’s a great question. And the answer leads to something more: the unique architecture that sets QLab apart from not only the music-oriented applications like Live, but from even the other “theatre” applications.

But before I get to that, what exactly is the difference of a cueing application like QLab from an audio processing application like Live or Logic? The distinction is basically one of work flow.

The paradigm for programs like Live is a musical environment in which the application digests a constant, steady stream of audio. It’s like one big river of sound you melt and shape through the instrument that is your computer. This “application as instrument” paradigm is quite powerful, but not quite the right fit for all scenarios, especially when you’re moving away from music into other art forms that incorporate audio.

Often it is helpful to be able to treat your audio as many discrete events. You need to be able to build a framework of audio events that is very precise but also very flexible. For example, the sound of the thunderstorm may need to fade out at exactly 3.6 seconds after the lights dim, but the sound of the telephone ringing may happen at a radically different time every night depending on how the actors are playing a scene. So you can’t compose the musical score of a play the same way you can compose the score of a song.

Now here’s where things get interesting. This paradigm of discrete events goes way beyond theatre. I’m focusing on this art form at the moment, but I’ve explicitly designed QLab to be more than just an application for the stage. The ability to collect discrete events together in an exact but flexible way can be used in hundreds of different ways. QLab doesn’t know what kind of cues it’s running, it just runs them. I’ve designed the architecture to let both me and other developers create any kind of cue their hearts desire.

Imagine an interactive museum exhibit: The exhibit designer might set up a video input cue that supports motion sensing to start a sequence of events when a patron enters the north corner of the room. When the motion sensing cue activates, entire other series of events occur in the room. On top of it all, using a timer cue the exhibit could be told to activate at 9 in the morning and turn off at 5, and an email cue could be told to email the museum curator the total amount of time the exhibit had been running that day.

It’s this general event-oriented architecture that sets QLab apart. This is what gives QLab such potential. And after the immediate needs of the core application are completed—once the foundation has been laid—it’s the addition of new, dramatically different kinds of cues that are going to add that extra special spice.

0.9.501 Available

February 8th, 2006

This release should dramatically improve the responsiveness of the playback controls when many cues are playing. I’ll look to do more, but this should help. (In general, I want to refine the playback controls quite a bit, but I like giving you the chance to play with many incremental updates rather than wait a long time for new features.)

Growing Pains

February 8th, 2006

Just wanted to alert folks to the bug filed in ticket #101. It appears that when many sounds are playing at the same time the updates to the new playback controls can take over to the extent that the playback window becomes very unresponsive. It appears this may be worse for people with slower computers. I’m looking into where the bottleneck is and I’ll post a fix when I can.

0.9.5 Available

February 6th, 2006

Tonight’s release adds the ability to pause, rewind, and fast forward all active sequences.

The playback controls aren’t in their final state—I have some more tweaking I want to do—but they represent a strong step in the right direction. Let me know if they help.

Almost two weeks and no release?

February 5th, 2006

Trust me, I’m working on it. Possibly too much. It’s been a rainy weekend here in Baltimore; ideal for curling up on the couch with the PowerBook and working on my carpal tunnel syndrome until the wee hours of the morning. The carpal tunnel hasn’t progressed very far, but the code has. 28 hours worth over the last two days. Obsessive? Possibly. But then again other guys spent the weekend staring at huge men in bright skin-tight stretch-suits clobber each other for the sake of competition, an experience many would not dream of missing.* I submit to you that obsession comes in many forms.

At any rate, the new playback controls are essentially complete, except for a few stubborn loose ends. I’ve been saying to myself “in a few days” since last weekend, but I really do think it will be just a few more days. So sit tight and watch this space.

(* For those reading abroad, today was the High Holy Day of American Football: the Superbowl.)

On the Road to 1.0

January 29th, 2006

As I wrote on the mailing list, I’ll soon be turning my attention to sketching out a roadmap to that gleaming city on a hill, Version 1.0. There are plenty of cool features that I’m itching to work on, but I think it’s important to finish up the basics and get 1.0 out the door sooner rather than later. So maybe less with the gleam and more with the granite foundation. Either way I need a map to tell me when I arrive. Which means that you, gentle blog reader, should speak up now if you’re inclinded to speak up at all. Got a must-just-gotta-oh-my-god-if-you-don’t-I’ll-never-use-this-program feature you want in 1.0? Well heck, tell me what it is! Post it to the mailing list, or post it on the tracker, or even post it as a comment to this entry. Just stick it somewhere I’ll see it.

I’ll be focusing in the next few days on ticket number 56. Once I do have a roadmap to 1.0, I’ll be sure to sum it up here.

0.9.4r7 Available

January 23rd, 2006

This release cleans up the cue numbers, including the option to auto-number new cues.

I am also trying to increase your ability to manipulate QLab using only the keyboard. To that end I’ve added a key command to move back and forth between the Inspector panel and the current workspace, and to move among the available tabs of the inspector panel using the arrow keys.

Oh, and I swapped the locations of the notes panel and the controls panel in the workspace window. This layout seems more intuitive to me, and it also gives you the option of changing the size of your GO button a bit more.

0.9.4r6 Available

January 19th, 2006

Tonight’s release focuses on cue numbers and providing other ways to set cue targets (instead of just drag and drop).

The current implementation of cue numbers is not a complete solution—I have not yet included automatic generation of cue numbers, for example. But you can renumber selected cues by a user-specified increment. (Would one call that “semi-automatic”? Hm. Sounds violent.)

Hark ye; the features do grow apace

January 18th, 2006

In the next day or two I’ll be posting a new version featuring cue numbers (and the ability to target via cue numbers), alternate sound file assignment methods, and a few other goodies.

I then expect I’ll start narrowing down exactly what features must be in version 1.0. Since feature requests have leveled off in the Tracker, I’d like to nail down a concrete roadmap on which to focus my efforts in the coming weeks. I want to make the basic feature set solid and powerful, and spend some serious time building up my testing framework and remote debugging tools. My goal is to keep development focused, to keep delivering steady improvements in a timely manner. Not every feature request will make it into 1.0, but with a little luck they won’t be too far behind.

0.9.4r5 Available

January 11th, 2006

This is primarily a bug-fix release, handling some annoying UI issues and some more serious playback bugs. For one thing, this should make seeking through sequences a kinder, more reliable experience. This release also revises the playback logic internally to ensure that tricky recursive flow control doesn’t bring the app down. In short, not much new to see on the surface, but worth the download underneath.