Older blog entries for volsung (starting at number 5)

I was thinking in the shower this morning and realized that my public interfaces to libao are fairly annoying. Why make the application keep track of the driver function table *and* the device state. If real life is any indication, groups of items tend to get separated and lost. I should just make generic wrapper functions that take device id's (think file id's) returned by the ao_open function, lookup the associated function table, and call the right function.

Does this sound familiar? I should have looked at the standard UNIX open() and write() functions. Doh! Reminder to self: Never forget precedent. If UNIX programmers like it, it can't be that bad. :) (I'm sure someone in the audience will have issues with that one.)

Anyway, I've started installing ALSA onto a spare Linux box I have at work. Once I get the hang of it (and get it to work with my AWE32 card), I'll write an ALSA driver for libao. Still waiting for someone (Monty) to tell me how I should get this package into the vorbis tree. Maybe my last email was unclear. (Or maybe Monty is clairvoyant and knows that I needed to fix my code.)

libao is ready to integrate into vorbis now. I still need to hear back from Monty about how to get all my changes into the tree. Next up I need to add support for ESD and ALSA.

More work on libao/ogg123 integration. Today I figured out how to do autoconf and got my compilation magic to work. Now I can output to the soundcard and 6 wav files simultaneously. (Though either the IDE or the P-166MHz CPU is causing some serious skipping when the OS finally decides to flush the disk cache. ) Now to go through and do cleanup and submit to Monty.

This is actually rather exciting. I've never submitted anything to an Open Source project before. (Well, aside from a lame patch to vorbis that Kenneth was going to submit already.) Most nifty.

Spent most of the afternoon monkeying with an 8 year old color laser copier my father got for free. Works pretty well, and now I know more about fixing and operating these things than I think I wanted. Unfortunately, they lost the Postscript unit that let you use the copier as a printer. I drool at the thought of owning a printer that does color and postscript natively. (No more damn PCL, please!)

Oh yeah! Nothing like a working program to make you feel good in the morning! I've got libao pretty much working now. Multiple device support is working too. (Let this be a lesson to you: Beware of pointers to pointers. Dereferencing them improperly leads to madness.) I just ran ogg123 and let the output go to the null device, the soundcard, and a wav file all at once. Whee!

Now I've got to clean up the code and make the build process more slick. I should also write an ogg123 man page. I wonder how you do that.

Did some more work on the libao cross-platform audio library. I almost have all the bugs out. I think I did something stupid with the linked list of devices, so I still haven't got multiple device output working yet. Next up will be doing the configure/Makefile magic to get all the right files compiled in. Hopefully I can start pestering Monty about integrating it by Saturday or Sunday.

Maybe someday I can grow up and understand the actual libvorbis code. I suppose I can dream. :)

Whee. This is an interesting site. I've been lurking here for a few days. The trust metric is a really interesting idea. I remember discussing something like it with Slashdot comments, though the goal was different. Our idea was to change moderation to a basic "like it/ don't like it" choice and make everyone a moderator. The system, through a probably order n^3 algorithm, would assign every other user on slashdot a score based upon how similar you were in comment taste. Eventually, the system could "pre-score" comments based upon how others who were similar to you liked him. We thought it was neat, although it would surely kill the slashdot servers.

Anyway, I'm currently working to add cross-platform audio support to ogg123, the command line vorbis player. I started with libao, a crossplatform audio library buried in ac3dec, which was buried in the LiViD archives. I'm having to rewrite it severely so it does not require automake, just autoconf, and so it allows many simultaneous output drivers to be in use. It's coming along nicely, though I'm going to hit a wall soon when I need to test the IRIX and Solaris code. (Unless someone decides to send me a free UltraSPARC.)

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!