Language Design

Lately I’ve started YET ANOTHER project of mine. This time its a spin off of the Z80 assembly language. Yes, yet another useless programming language released onto the world, and yes, I enjoy pain. So why am I doing this project? Why don’t I finish my terminal or start building that z80? I don’t know. I start many things and finish only a select few. Hope I finish this one

               

Linux Audio Needs an Overhaul

With the newest versions of Ubuntu and Fedora, PulseAudio has replaced ESD as the default userspace sound server. But what can it really bring to the table that hasn’t already? The amount of audio servers is staggering, each self described with similar terms to each other ALSA, OSS, ESD, aRts, JACK, and GStreamer, to name a few. Followed shortly by the number of mix and match patches that makes working with audio a pain, alsaplayer-esd, libesd-alsa, alsa-oss, alsaplayer-jack, gstreamer-alsa, gstreamer-esd, and there’s even more!

When does the madness stop?

I would love to know but I’m sure it wont be for a while. The confusion really seems to stem from the fact that there’s no clear documentation unless you’re a developer and the overlapping goals for all of the projects. Lets take a look at the description for ALSA. This is copied from the ALSA site at http://www.alsa-project.org

The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system. ALSA has the following significant features:Efficient support for all types of audio interfaces, from consumer sound cards to professional multichannel audio interfaces. Fully modularized sound drivers. SMP and thread-safe design.User space library (alsa-lib) to simplify application programming and provide higher level functionality. Support for the older Open Sound System (OSS) API, providing binary compatibility for most OSS programs.

Ok well that sounds all well and good; however what about ESD? http://www.tux.org/~ricdude/overview.html

The Enlightened Sound Daemon mixes several audio streams for playback by a single audio device. You can also pre-load samples, and play them back without having to send all the data for the sound. Network transparency is also built in, so you can play sounds on one machine, and listen to them on another.

More confusion is to be had if you even dare to make music on a linux box. Most DAWs (Digital Audio Workstations) require JACK. Well JACK can use ALSA, PortAudio, CoreAudio, FreeBoB, FFADO and OSS as a backend. So what do we have so far? A back end sound daemon, a secondary program that th DAW talks to, then the DAW. Why should we need that secondary program? *Nix has a standard for it’s graphics and its XORG, why can’t we decide on one audio server?

The biggest source of confusion is that there are so many audio programs offering their own APIs. Such as the userspace ALSA library, aRts, ESD, and GStreamer. In addition we also have on top of the audio server a secondary application, SDL and OpenAL for games, Open Sound System (OSS) for legacy applications, and JACK for pro-level, low-latency operations.Applications such as Xine and MPlayer don’t even USE these external libraries and do everything internally. When does it end? So far we have 3 or 4 applications running just to play an MP3. An application like Rhythmbox relies on GStreamer to decode sound files from compressed form into raw audio. GStreamer in turn passes the audio down to ESD, and ESD delivers it to the ALSA hardware driver. How does this make any sense?

PulseAudio is a replacement for ESD. However at this point most apps are so relient on ESD that many things are broken. For example it is impossible for me to select a line in if I wish to use skype or audacity. Instead it selects my built in laptop mic and even with the gain low its still loud, recording mostly my fan.

The whole issue is just absurd. Standardization of the Linux audio system is vital. The whole issue has been summed up best by Adobe, http://blogs.adobe.com/penguin.swf/linuxaudio.png.

               

Not dead yet.

So not much has been going on here. I’ve been working on making an album (two unfinished tracks at the bottom of this post). And I’ve been doing some x86 ASM and C programming. I’ve come to the conclusion I have too much I want to do. I’m working on a POSTIX Shell in C, a boot loader so I can make a memory dumper for cold boot attacks (if those Princeton fucks can so can I), I want to work on music more, I want to set up a small studio, make a synthesizer, and more. Just lots of little projects that always start out “Oh wouldn’t it be cool if…”. While I havent been actively posting a lot recently I have on the otherhand kept kinda busy playing with all these ideas at the same time. Oh well if anyone is still reading this drop me a comment. I might even start a weekly “news” podcast to keep this thing going.

Happiness Death Squad - Prelude to War

Happiness Death Squad - E_Vile