Present Perfect

2004-9-91:32 am

Yesterday we got a visit from Daniel Fischer who works on Warsaw Pakt. He showed us some of what it can do, along with a cool video of a performance being done with it where a person dancing is being traced in real time, and a generated image gets projected on a big screen behind her. At some point it was generating an outline for the shadow that acted like a contracting shell. So she would extend her arms, causing the outline to grow organically, and then shrink back around her later on. Hard to explain, and I’d link to the video which is supposed to be on the site but I can’t find it.

Anyways, afterwards we met for dinner at our favourite tapas place again. There Johan informed us that he ‘disliked birthdays’. Apparently I wasn’t the first to be informed of his dislike and I had the same ‘huh ?’ question as everyone before me. The observing reader will have realized by now that it was, in fact, Johan’s birthday.

So we sang a song and then Johan got to decide what to do that evening. So we ended up drinking a cocktail in the city, then a cocktail by the beach (which is where ‘they’ got an Orgy, which you can only order if there’s at least four people ordering it), and then that got rounded off with a nightly swimming session by Johan, Wim and Ismael. I was happy enough just watching their clothes for them since some guy was taking pictures and circling around us.

2004-9-61:18 pm

Ronald asked for some input on the volume applet, and since Seth gave him some advice that I consider bad, I’m posting my thoughts here so I don’t have to repeat myself too often.

My personal interpretation of usability is “do the right thing for the user automatically, and make other functionality as easily possible as can be without compromising the first goal.” This might be a wrong interpretation, so clue me in if it is. But to me, this means that it’s the software’s/developer’s responsibility of making the user do the right thing.

Now, the right thing for usability is, for most of GNOME, UI-driven, but sometimes also task-driven. In the case of the mixer applet, there’s another factor that comes into play, and that is “how audio works”.

Seth argues that there should be a slider that controls all of the inputs *at the same time*. While this might be nice UI-wise, it is the perfect way of getting really bad audio. And that’s because it conflicts with common sense principles in audio.

Let’s start with a ground rule: at any time you should only activate/turn up the volume for an input that’s actually usefully contributing to the signal. This means you shouldn’t have the CD volume up if you don’t have a CD playing. The reason for this is simple: it adds noise. It decreases the quality of your sound. Imagine that I have my phone line jacked into my SB Live, and the phone volume would be on all the time – it wouldn’t take me long to throw out my PC or switch to a sensible solution instead.

A second working principle is that the “master” volume is in fact quite different from all the others, so it’s a bad idea to change master *by the same amount* as all others that are mixed into master. The practice is simple – all levels beside master or to be set so that a) all inputs sound about equally loud for normal use and b) while respecting (a), each of them is set as high as possible without actually going into distortion. After that, you can use your “master” volume control to control your output volume for everything combined at any given time.

A third rule, quite succintly parodied in Spinal Tap, is: don’t turn the volume up all the way. This is a very difficult principle to get across to ANY person that doesn’t really know how audio works. I cannot count all of the times anymore that I went to some party or to someone’s home and the volume is cranked up ALL THE WAY because otherwise it’s not loud enough. At some point, turning the volume knob only gives you more distortion, making the output sound louder indeed, but also makes it suck incredibly for people that actually like listening to music. You’ll quickly notice that turning it back a few makes it sound a lot more pleasant without making it that much more silent.

The principle here is simple: If you can’t get it loud enough, buy new equipment. There is really nothing else you can do here.

Now, I hope I convinced you that having “one slider changing all others at the same time” is a bad idea. And I’m not saying that the solution is that the user should know all these rules. But I am saying that anyone that writes the code for this, or offers accessibility advise on this, is required to understand these rules in order to come up with a good UI.

So I’ll offer my suggestions on how I think this should translate to the platform and applications.

a) The platform should have a wizard that helps the user set decent volume levels for all the input tracks. The goal is to make sure that all the input tracks have relatively the same volume level for normal inputs without distorting.
Technically, this can be implemented by having the software monitor the level by monitoring the master output level, if the soundcard allows you to. If not, the user should do it by ear. The user should provide some audio on each of the sources you want to calibrate; ie. play a CD, talk into the microphone, … The software should mute/unmute each track as the wizard switches between them, allowing the user to switch between all of them until the levels are all more or less the same.

If the level controls are linear (I’m not sure if this is true for most soundcards, but it would make sense if they were), then the thing you want to store in your backend is their relative positions towards eachother. This way, you can nudge them all up or down a little if you notice distortion in either of them.

b) When this is done, the mixer applet should only export the master volume level. It would be nice if you could mark a distortion threshold somehow, so that the mixer applet makes it harder to cross it. Typically, the sliders just allow you to go from 0 to 100, where 100 means “sounds like crap” and 50 already means “you can only hear this if you’re a ten day old baby”.

c) applications should unmute the input controls they actually produce signal on, and remute them when they stop, and nobody else is using it. So the information on what application is using what control should be shared.
In practice, this means that the CD playback level is muted until an application starts up that plays CD’s through the cable connecting your sound card to to the CD player. When it exits, and it is the last CD using application to exit, it should mute it again. Preferably this would be done through library hooks, of course. And, the volume control preference program would also be a “user” of this track if the user decided to override global settings and wants to hear the CD always.
Same goes for your phone application, or your music player.

So, this in my opinion the correct way to translate the technical domain of “how it works on the system level” to “how you give the best user experience”. When all these parts are implemented correctly, the user experience will be that it “just works” and that “it doesn’t sound like crap”.

Codewise, it would mean:
a) there needs to be a wizard to set up sound levels correctly
b) there needs to be a daemon tracking the state of applications and their use of mixer channels; or some other way to exchange this information

I’m interested in what people think about this, and if there’s enough interest to actually make this happen for GNOME 2.10 ?

12:52 pm

Kristien was back to Belgium for the first time for her new contract. She’s working only halftime but making good money, so it’s worth it. I spent the weekend trying to sleep off my lack of sleep from the previous week, and for some reason I went in overdrive cleanup mode. My collection of computers had a number of copies of home directories at various stages in my life, because each time I a) get a new machine b) get a hard drive failure c) get a new hard drive to have more size, I just dump my homedir as a backup to some other drive without actually cleaning it up.

Which turns out to be quite painful when you decide you want to a) clean up and b) do proper backups for a change.

Also, going through some of my archived CD’s with photos, I have now convinced myself that CD rot is in fact a real problem, and about the only thing that will give me peace of mind is a combination of backing up to CD, DVD, and a live hard disk RAID. So I’ll start working on having a nice setup for that soon. The way I figure it is that my data matters to me, enough to pay for keeping it around. I wouldn’t like losing a whole bunch of pictures, or a bunch of old stuff I’ve done, so I have to do some work and pay some money to get it done correctly.

Of course, I also cleaned parts of the house, did some laundry and ironing, and other assorted bits, like trying to fix some stuff in the house.

2004-9-17:36 pm

Here I come baby !

I am going to an old friend’s wedding. I’ll be in Boston between the 16th and the 19th of September. Tickets were 426 euro, could have been worse. If you have waited to interview me for a job, now is a good time to speak up. And if I know you in some capacity unrelated to job interviews, let’s do lunch. I’ll have my people contact yours.

7:11 pm

This weekend I was looking for a piece of plastic that disappeared from a lamp causing it to fall on the floor. Which is where Kristien left it :)

So I got on all fours, looking around for the plastic bit, and I managed to put my hand on a push pin. It went clean into the palm of my hand, half a centimeter next to an important vein. That gave me quite a scare. I pulled it out, inspecting the thing for any rust spots, then calling my dad (who’s a doctor) to ask for basics to ease my mind. It did hurt a bit when I stretched my hand, but I didn’t hit any important muscle apparently. Every few hours I look at the delicate little red hole next to the blue vein and realise I’m probably lucky I didn’t hit anything major.