Archives for : March2010

Burying Sleeping Beauty

So, nearly two weeks without an update, and this one is going to be about movies instead of anything really techie. Trust me, you don’t want to see my Core Audio code for 360iDev just yet; it’s going to take some time and luck in the next two weeks to get my demos lined up.

In the meantime, I took my daughter, Quinn, to How To Train Your Dragon today, and I’ve got animation on the brain again. That and the release (if not in my town) of Waking Sleeping Beauty, a documentary that tells the increasingly familiar tale of how Disney turned around its feature animation department from near-extiction to world-wide acclaim and massive financial success, largely on the merits of four classic films: The Little Mermaid, Beauty and the Beast, Aladdin, and The Lion King. Entertainment Weekly had a brief retrospective on how TLM initiated the turnaround, and Wikipedia has filed it under Disney Renaissance.

It’s a great narrative, stunning when you think of how the troubled studio of the mid 80’s lost Tim Burton and actually fired John Lassiter. But there are some pretty big holes that are missing in the conventional wisdom version of the story.

Not the least of which is the elephant in the room: just 10 years after The Lion King, Disney gave up on traditional animation, retraining all their artists in CG techniques so they could make debacles like Chicken Little. So what the hell happened?

Animation fan-boy that I am, I mentally split the post-Lion King movies into two groups: 1995-99 are the “formula films” (edit: previously said “unnecessary films”), and 2000-2004 are the “troubled films”. Let’s start with the first group. With the success of the four modern classics, Disney apparently had a formula, and forced all of its subsequent films to fit that mold: family-friendly musicals, with merchandisable funny sidekicks. In retrospect, some of those traits seem tacked on. Nobody remembers the songs from Hercules or Mulan, and the funny gargoyle sidekicks in The Hunchback of Notre Dame were a terrible distraction from what was otherwise a strong musical drama (Les Miz Lite, if you will). And the less said about Tarzan, the better. Interestingly, the collective opinion of Pocohontas seems to have gone up in the last few months, thanks to widespread perception that Avatar is effectively an expensive retelling of the same story (a point best made in this YouTube video)

They must have known they were in a rut, because they tried to break out. The effort is more admirable than most of the post-99 films. Aside from the icy artistic indulgence of Fantasia 2000, you have three films that feel like they were written by committee: Brother Bear, The Emperor’s New Groove, and Home on the Range, the latter two of which suffered production shutdowns, title changes, and massive retooling (to be fair, so did The Lion King, and that worked out OK).

They also made two sci-fi action films, Atlantis: The Lost Empire and Treasure Planet. U.S. audiences have never gone for animated action or drama in a big way – the Japanese will go wild for Gundam, but Americans won’t – and these didn’t change any minds. Atlantis is a bit of a obsession for me, in that I think it may have as good an Act I as I’ve ever seen, yet falls apart faster and more completely than any movie I can recall (if you’ve seen it, how much of the plot’s energy drains away once the big submarine is destroyed?). Anime fanboys saw superficial similarities to Nadia: The Secret of Blue Water, but if anything, Disney didn’t steal enough. In Nadia, the bookish hero meets mystery girl in the first episode, and they are the main characters. Atlantis keeps Kida away from Milo for half the movie, trying to distribute our interest among a crew of stock characters who just don’t carry the story (listening to the DVD commentary, the producers keep talking about “the adventurers this” and “the adventurers that”… when they should be talking about one or two genuine protagonists).

Atlantis’ failure probably kept people away from Treasure Planet, which is a shame. Despite the too-easy “in spaaaaace!” concept (smirked at by the EW story cited earlier), it’s vastly more story- and character-driven, and deserves a second look. Just skip the Martin Short annoy-o-bot if you can.

The only film that really succeeded in this era is Lilo and Stitch, a deliberate turn against Disney’s frequent technological indulgences (Tarzan’s “Deep Canvas”, Treasure Planet’s mixture of 2D and 3D animation), in favor of a cheaper, more personal film. In various accounts, notably the book Lilo & Stitch: Collected Stories From the Film’s Creators, the filmmakers cite Dumbo as a spiritual touchstone, which itself was intended as a simple, cheap, and direct film after the indulgence of Fantasia. It’s the most character-driven Disney film of the decade, and easily the most satisfying.

But it wasn’t enough. Suits decided the films were failing not because of bad stories but because audience tastes had switched to CG: just look at Pixar’s hot streak (which continues today), or the upstarts from Dreamworks. And maybe the suits were right: audiences largely passed on last year’s fine The Princess and the Frog. At any rate, in mid-decade, Disney retooled for computer animation, and turned out more troubled films, like Chicken Little and the title-changed Meet the Robinsons. If Bolt worked, it did so by cribbing shamelessly from Toy Story.

But that’s the other elephant in the room. As Disney feature animation began its decline in 1995, Pixar began its seemingly unprecedented run of 10 straight hits with the release of Toy Story. Their industry-defining success has created a new set of formulas to work from: Dreamworks’ How to Train Your Dragon shares a lot of beats with A Bug’s Life (which I seem to like a lot more than most people), and Sony Picture’s Animation’s Surf’s Up has a plot almost identical to Cars, released just six months earlier, except that Surf’s Up manages to tell the same story in 85 minutes instead of 115.

It’s funny, though: much as I admire and enjoy every Pixar movie, I can’t say there’s any one of them that I really love, the way I love Beauty and the Beast (or Miyazaki’s The Castle of Cagliostro or My Neighbor Totoro, for that matter). I don’t fully agree with the “best picture” talk that surrounded WALL-E or Up… y’all do realize the whole film has to qualify and not just the first reel, right? That means you’re also nominating the fat pod people on the Lido Deck and the talking dogs flying biplanes too.

Yet every time I think that Pixar’s number is up, that their next film will be the Poconhantas-style disappointment that starts the decline, they dodge the bullet. Toy Story 3 seems somewhat unnecessary (and surely Cars 2 is), but there was plenty of reason to doubt a movie about a rat and another about a senior citizen, and they’ve been great. Pixar’s already made a non-suck sequel, maybe they can pitch two more.

Speaking of sequels, that’s the other thing these Disney Renaissance stories often forget: there was a movie released between The Little Mermaid and Beauty and the Beast. In 1990, they released The Rescuers Down Under. I recall reading one account saying the genesis of the film was a meeting where Michael Eisner asked for a tally of recent animated features, with an eye to making a sequel to whichever one had made the most money. Kind of takes the shine off the story, doesn’t it?

Another conference, two more sessions

My editor on the Core Audio book passed along my name as a potential speaker for the Voices That Matter: iPhone 2010 conference… but not on Core Audio. My co-author, Kevin Avila, has that covered. And I’ll be covering CA two weeks prior at 360iDev, so why would I want to put all that work into a talk and use it twice, when I can put lots more work into two talks. That would be too easy.

Oh, did I say two talks? I meant three. Chuck suggested I do a location/mapping talk based on my experiences developing Road Tip, and after agreeing, I noticed the schedule had a spot for an In-App Purchase talk. Foolhardy me, I said to the organizers, “hey, if you don’t have a speaker for that topic, I can take it.” So now I’ve got two talks for VTM:i.

The tricky thing is, the VTM talks are going to be pretty easy to put together, given that I’ve already written extensively about mapping and in-app purchase here on [T:c];. Heck, I did I-AP last week for Ann Arbor CocoaHeads, and I think I only swore three times.

The Core Audio talk, which comes two weeks earlier at 360iDev, will actually be the hardest to put together because the proposal and topic are still pretty nebulous — “advanced Core Audio” — and because I’ll want to pull, you know, actual advanced stuff into it. On the other hand, it’s great that there’s a “Three Core Audio Hello Worlds” earlier in the conference, covering AVAudioPlayer, OpenAL, and Audio Units to some degree, so I can elide some of the basics and get right into the hard-core.

Thing is, I now have, what, three weeks to put the hard-core together. Alas, another crunch.

Oh, and here’s a promo code for VTM:i: PHASPKR. I don’t have a code for 360iDev, but if you follow 360idev on Twitter, you might catch one flying by.

Losing sight of land

On a few of my books, most notably QuickTime for Java: A Developer’s Notebook, I reached a point where I’d google for background knowledge, alternative opinions, or just help on some API and only find stuff I’d written and posted myself, or find nothing at all.

On one hand, it’s bad news, because it means I have to tough it out myself. On the other hand, it also means that the book is going to be able to deliver real value, since it’s going to offer knowledge that isn’t already readily available. The worst kind of books are the ones that just rehash official documentation; material like that is as miserable to write as it is useless to buy and read.

Anyways, in this case, the query in question (ooh, avoid awkward alliteration always…) is the constant kAudioFileGlobalInfo_AvailableStreamDescriptionsForFormat, which appears to have 200 Google hits, but actually only has about two pages and a total of 16 hits once all the duplicates of posts to coreaudio-api are removed.

And what is this constant for? There’s an interesting function in Audio File Services, AudioFileGetGlobalInfo(), that instead of dealing with a specific file, returns properties of Core Audio’s file handling in general. You can use it to figure out what filename extensions, MIME types, and HFS type codes go with various formats. In chapter 3, after discussing container formats, audio data formats, and the AudioStreamBasicDescription, we can use the kAudioFileGlobalInfo_AvailableStreamDescriptionsForFormat property to make some discoveries about CA-supported formats. Quoting from the property’s documentation:

Returns an array of audio stream basic description structures, which contain all the formats for a particular file type and format ID. The audio stream basic description structures have the following fields filled in: mFormatID, mFormatFlags, and mBitsPerChannel for writing new files.

In other words, we pass in a AudioFileTypeAndFormatID struct, setting the mFileType to kAudioFileAIFFType and the mFormatID to kAudioFormatLinearPCM and it will pass back ASBDs that tell us some interesting things about the limits of AIFF files: that they can’t handle more than 32 bits per sample, and that they only support big-endian integer samples. Change the mFileType to kAudioFileCAFType and you’ll find you have a lot more freedom (because you can put audio in pretty much any CA-supported format into a CAF file).

The Core Audio book can’t help but be hard; it’s the nature of the source material. But I think we’re doing pretty well in the intro chapters to demystify the core concepts and provide the tools for finding your way around the many APIs.