Hello Quartz Composer!

June 15th, 2009

I’ve always been kind of a control freak, especially when it comes to motion graphics. I went into OpenGL with C++ because I felt that it gave me more more control than other ways of making music animations.

Control can come at a price - and right now its at the expense of output. Before I can make something, I feel like I have to restructure the code. But I know that would be getting too involved in the details of refactoring rather than creating something new. It would be a long process and I’m sure my creative drive would dampen along the way.

Enter Quartz Composer.

I have recently come across QC while watching some WWDC videos at work, and I can’t believe I haven’t given it much attention before. Its a visual/programming environment, similar to Max/Jitter and Isadora in its patch-and-cable interface. “Patches” are basically units of inputs and/or outputs that can be hooked together to eventually render something to screen. There are three classes of patches: Providers (of data of some sort), Processors (of that data), and Consumers (renders the result).

What is most appealing to me about QC is that, besides the default patches, it is also extensible with Objective-C. Lucky for me I have been working with Cocoa for the past year!

Even though I would still be coding custom patches, I can see the GUI  saving me a time and energy. I can experiment with different configurations and orders of data, processing, and rendering by rearranging patches, not by messing with function calls. I had often thought of the different objects in my own programs as units that hook up to each other, and I wanted to make this more obvious by defining protocols (interfaces) that the different types of objects (sound provider, animation classes) would have to follow. This all seems to be thought of in QC.

So I can’t wait to really get into it. I’ve been watching some tutorials to see how to get it working with sound. Theres a music visualizer template that actually provides audio spectrum data, which was a big challenge for me when creating my own program. One of the videos showed the Audio Spectrum patch output.  I was instantly reminded of my debug logs when developing Noesys.

Which makes me wonder if in porting my animations to QC, I would just throw out most of the FFT code. I don’t want my previous work to seem like a waste of time. A comforting thought is that at least I can write better processors to go with the Audio Spectrum patch now that I have gone through understanding and implementing my own.

I must admit this discovery is bitter sweet. I’m a little shocked that my investigation into competitors and frameworks at the time of my thesis didn’t lead me to QC sooner - or that none of my knowledgeable professors or peers knew about it to point it out. But then again these videos on QC I am watching are from 2007 and on, and I finished Noesys in Spring 2006.

My next steps are to look at the tutorials on the web and the posts on Create Digital Motion to catch up on what people have been doing with QC. The WWDC video also briefly describes how to use QC for interactive prototyping, so I think the first project might be somewhat work related, using mouse events. More to come…

Differential Dynamics

March 15th, 2009

Differential dynamics is a kind of motion - periodic motion - that was originally described by John Whitney Sr. in his book Digital Harmony. One can’t really say he discovered the phenomenon, but he did discover a proper application for it in visual music. Whitney believed the cyclical tension and resolution of differential motion was a fitting match to musical structure.

Here is a demo of differential dynamics I mocked up using a sample program he outlines in his book.

burned by an ATM

February 25th, 2009

About a month ago someone stole $300 out of my account. I carelessly left my ATM card in a machine at Wamu and walked away, and whomever noticed it stepped up and did the wrong thing.

Cold hearted, cold cash.

If it wasn’t for my online banking - I checked it that night, I would have never caught the extra transactions and reported my card stolen so quickly. I was pretty lucky I guess - I wasn’t mugged… and it was only $300, all of which my bank reimbursed.

But still it really disturbed me that night. I don’t know what upset me more, the fact that these two women, living in my neighborhood, stood right beside me and made the withdrawal, or the fact that I got burned by an ATM machine.
Yes, you heard me…it wasn’t completely due to my error, but because of the machine’s design! I think I told that to the Customer Service rep on the phone too, he wasn’t listening.
Here I side with the school of Donald Norman, who says that we are not at fault for mistakes or errors ,usually, but that we are mostly the victims of poor design. Just remember the last time you went to pull a door with a huge handle that screams Pull Me! when it was meant to be pushed or vice versa.

I know I’m not the only one. Many people I know have given their cards to machines and then walked away. Fortunately, if it was the end of their transaction, the card is just left hanging, then it gets sucked back into the machine and returned to the bank.
In my scenario, I know that nobody saw my pin number. So I assume that the screen was hanging there with my card saying:

Can I help you with anything else?
Can I help you with anything else?

I get this screen from time to time and think - “How thoughtful. Yes, I’d like to do something else….”
But this is the screen that allowed someone else to pretend they were me. This is the step that burned me. The last things to come out of the ATM were my receipt and cash, which are usually signals for Transaction Complete (especially the receipt). So out of habit I left the ATM, and this screen was waiting for the next person.

To check on this sequence I returned last week and made two tests to try and replicate the events that day.

The first time I didn’t get the outcome I expected. I knew I had made a deposit and then asked for cash, but when repeating these steps in Trial 1, my card came out at the end along with my cash and receipt.

But it could have went differently. During the ATM sequence, towards the beginning, the system asks if you would like to see the balance of your account. I chose this route for the second trial (Trial 2) and this is how it panned out:
Physical actions are bold. The highlighted steps are the shifty ones.

Physical actions are bold. The highlighted steps are the shifty ones.

That’s what happened! The end - or what seemed like the end - of the transaction came : I was given a receipt and cash. But the machine still kept my card and wanted to know if it could “help [me] with anything else?” “Let someone steal my money” or “Feel like an idiot” might as well have been options for me here.

A couple things I don’t understand from this sequence. Why would the fact that I look at my balance at the beginning of the transaction trigger a different series of events? Did the designer think that because I was doing more than the average customer at the ATM that I’m the kind of bank user that needs to do several more things?
In my mind, receipt + cash = done. Its a signal (I’m a lot like Pavlov’s dog). I wasn’t thinking about the fact that I didn’t get my card back yet. I get a receipt at the end of every other buying experience I have. Why should this be different? And again, I don’t know why I should get two different outcomes.

I wonder if they tested all these user paths for error. I would think that since it is a money-dispensing machine that is not intended for long-term use that they would design it to be totally fool proof. The fact that I know several people who have made similar mistakes means they must have not tested enough.
The last thing - I promise - that comes to mind is the ATM you find at your local deli - small screen, out of service at times, and always charging fees. They may seem like shitty little machines - but I will never lose my card at one. This is because most of these machines have a kind of a forcing function:

It’s called the SWIPE.

The card never goes into the machine. It stays in your hand! Either a) its cheaper to make machines this way b) they are not as rugged as the ones that take your card at the branch c) the designer just thought a little more about it.

Whatever the reason, you’ll never leave the machine with the card still in it ready for your, or the other guy’s, next command.

But if it falls on the floor, I guess you could say that it’s out of the system’s scope.

Djing in the Digital Era - Interface Woes [Wars] Part 1

July 20th, 2008

This past weekend, I played music at a friend’s loft party in Greenpoint.
It has been a few months since I purchased Traktor Skratch from NI, and this is the second time I would bring it outside of my house. It’s good to take it out because problems arise that you would never face by keeping it safely set up in one place.
The first time I tried to bring it out, everything seemed to be on but the timecode would not get read into my computer. After about 15 minutes, my nerves got the best of me and I reverted to the 15 or so backup records I had brought with me down to Miami.
Little did I know the problem was due to a little button labelled input mode on the front of the box that must have been set to cd or something else. I checked my setup about a dozen times but didn’t think to look at this switch. This was a last obstacle, a stupid oversight… but I’ll know this for next time. There won’t be anymore setup blunders!

I was wrong. I thought I encountered all the difficulties I ever would, but this weekend after making sure the loft would have cd decks there, carefully packing my timecode cds and selecting music (the input mode switch still burned into my memory), I get to the party to find an all-in-one-cd-and-mixer-jammy, with no outputs for my computer to get to the timecode. I winged the rest of the night and played directly from my computer, which actually went pretty well and forced me to learn some shortcuts.

That being said all the djs there had different setups. There were no turntables - I would’ve brought them but I wanted to try to use what they had. There was the all-in-one cd jammy, I was using Traktor Skratch, sans Skratch, and another dj was using Ableton live. I’m trying to think of a comparable field or hobby. It just struck me as funny that we had three different setups.

I’m still on the fence about the benefits of djing digitally. It’s similar to the tradeoffs of owning mp3s, in general. In a way, its faster and more accessible because you have immediate access to your library in your computer, but it feels farther away and harder to get your head around this spaceless, faceless, massive amount of music. Now I’ve transferred this problem to my djing. I spend tons more time tracking down high quality files, making and organizing my playlists (since I can’t recognize an mp3 as fast as I can an album cover) than flipping through stacks of records and dumping them into a bag. Or at least it just feels like it.