sh0dan // VoxPod

Monday, September 27, 2004

Music is Math

I have been buying some new music lately. I've been quite lucky to strike gold almost every time. Of course it's hard to buy crap when you got excellent online music stores like bleep, where you can get some of the best music, that has been made to date - and also is able to listen to the music before you buy.

Soft Pink Truth: Do you Party
[sorry - although bleep is good, it is not good to link into]
This album totally blew me away! It contains an extreme amount of samples composed into very detailed and melodic pieces of music. It contains a great deal of retro-sounds used in a very funky way. Although it resembles the great "My Way" album by Akufen, it is much more funky and much more interesting.

Very recommendable!

Other albums I've bought lately:

  • Mouse On Mars: Radical Connector. A great album from MoM. Really shows they have grown up, but are still able to keep the egde and make some truely rememberable tracks.
  • Björk: Medúlla. Björks ability to find new and interesting ways to sound has amazed me for quite a while - and she hasn't stopped yet. The very interesting ways she combines completely vocal tracks and electronic music makes a great and intersting album. While I was there I also picked up "5 Years" - a track that has haunted me for years. Finally I got it!
I also picked up some stuff from magnatune, that deserves mentioning here. Artemis is an intersting band with a great album. Great vocals combined with good production. In the same category, Curl might also be worth checking out.

PS. In case you are wondering, the title is from BOC:Geodaddi.

Tuesday, September 14, 2004

Article on Content Creation

Just found this very good article on Gamasutra regarding content creation tools. It relates specifically to exporting 3D-material from 3D-packages, but it presents some very good generic guidelines for software creation. Some of the points I noticed:
  • Your software should never "fail". Always provide good informative, and at best visual feedback of the problems.
  • Don't assume artists (and users) think like programmers.
The only addition I have for the article is fast feedback. When doing tools it is essential to have instant (or as fast as possible) feedback of what you are doing. Having a testcycle of more than a few seconds brings creativity to a stop. There is nothing more frustrating than having to wait too long to see if the one minor adjustment you've made is having the effect you intended.
Fast test-feedback is important in almost every aspect of creation - I as a programmer also know it from compile and especially link-times.

This is great inspiration for the tool I'm currently working on (3D accelerated video editing mentioned here earlier). Everything is currently in technology-testing phase, and no GUI decisions have been made yet. I guess the main lesson is to apply the good old KISS principle on the design plans and attempt not to overengineer things from the beginning.

The status of the project is, that beside a lot of learning DX9, I've got some test setups running. I've got basic videotransfer working, so I'm now able to transfer RGB, YUY2 (with unpacking to YUV4:4:4 on the CPU) and YV12 (No unpacking needed) to the graphics card - have it converted to Float YUV 4:4:4, convert it back to RGB32 and displayed at a very reasonable speed. I've also tested readback from the graphics card - Reading back full float 16 is way too slow, but some tricks might be possible here (and 32bpp YUV or RGB is still an option)

I'm still having a few issues with nVidia's cG compiler, but at least I've been able to get a (very slow) GeForce FX 5200 for both my machine at work and at home. So I'm now able to do DX9 Pixel Shader 2.x fragment programs. Performance is not the very best on the FX5200, but these are also very slow cards, so I'm not that concerned with the performance aspect yet.

Doing video as 16bit float seems like a very good idea. My main concern is actually running out of video memory. Efficient caching and usage of video memory is more important here as it ever was. This is also why I've decided to redo the video request method, and implement a "managed" filter chain.

How to handle interlaced material is also something that needs testing. There are three possibilities. I think of right now:
  1. Maintaining the image interlaced.
  2. Fieldseparate, use half height and double the framerate.
  3. Fieldseparate, but bob to full height and thus double framerate.
2. and 3. can be combined, but also implementing 1 would lead to the same "problems" AviSynth faces today. Only implementing 1. will make handling interlaced material as difficult for filters (and probably new users) as for AviSynth.