JACK and ZynAddSubFX Survive Intense Thrashing!
I wrote a program with a serious memory leak, and filled up my 512MB RAM and 1GB swap. My computer, falcon, was in serious thrashing mode. The red led was on solid, X was completely unresponsive (characters I typed in my xterm showed up about 10 minutes later). Even my laptop's network connection was unresponsive (because falcon is my router here)
While I was debating as to why the Out-Of-Memory killer hadn't reaped my runaway process yet, I got curious as to whether JACK would work at all. So I reached over and pressed some keys on my MIDI keyboard (ZynAddSubFX was running, as it usually is), and sure enough Zyn came sounding through loud and clear. In fact, I couldn't hear a single XRUN. It was as if the computer was as idle as could be. I was seriously impressed.
Impressed, but not overly surprised. I did ask for this after all. I have
2.6.13 with Ingo Molnar's realtime-preempt patch, and rtlimits configured
properly. jackd runs at priority 65, and my sound card at priority 99. I have
the realtime-preempt patch configured at PREEMPT_DESKTOP, because I've had
stability issues with PREEMPT_RT. PREEMPT_DESKTOP has been solid though, I
have a 33-day uptime, and I use falcon heavily.
I won't go into the details again on how to get where I am, because the information in the last paragraph coupled with tapas' excellent instructions for realtime preemption and rtlimits are all you need.
One last statistic, in case you still don't believe me. That thrashing session started about an hour ago and lasted about half an hour. Here's the screenshot from qjackctl:

Posted in audio | no comments |
Hearnet 0.0.4--Don't Paniq!
Leonard paniq Ritter sent me a nifty patch for hearnet some time ago. I really dig it, and I finally got around to incorporating the patch and releasing a new version. Here's what paniq has to say about it:
changed code so that it uses 32-voice polyphony and plays bridges / chromatic orders.
as an effect, you get very harmonic sounds if packet sizes on a site are the same, and quite weird stuff if packet sizes vary.
Go get it and see how much cooler it sounds!
Posted in audio | no comments |
LAM
LAM is a site that aggregates music made with linux and spits it back out at you in the form of HTML, RSS (podcast), and M3U. I wrote it as an excercise in learning Ruby on Rails while reading the Pragmatic Programmers' excellent (as always) book Agile Web Development with Rails: A Pragmatic Guide.
It was, and is, a lot of fun. More fun than I've had doing web-stuff in a very long time. But the real reason for this post is so that it will be linked from somewhere so Google will eventually pick it up and return it on a search for "linux audio music" or "music made with linux".
Posted in audio | no comments |
dmix by Default in ALSA 1.0.9
I say, it's high time to celebrate. From the ALSA 1.0.9 changelog:
- Summary: Use dmix/dsnoop for default PCM
Use dmix/dsnoop plugins for default PCM in most of mobo chips
If you don't know what dmix is, basically it solves the problem of only one program being able to play audio at a time on cheap sound cards. In other words, kick those abomination sound servers (e.g. esd and artsd) out the door.
Posted in audio | no comments |
IMMS
In the days of yore, the napster days, it became apparent that traditional music selection just wouldn't cut it. Then we all had hard disk crashes and our music selection was manageable. But I remembered my dream of writing a plugin for XMMS to do adaptive playlisting. When I once tried to realize that dream I was quickly defeated as I realized what it would take to beat the XMMS API into submission. One man, mag, had the courage and ambition to tackle XMMS and do what so many of us undoubtedly dreamed about. The result was IMMS.
IMMS was great but it wasn't practical for someone as obsessive about listening to music as I am, until very recently. As a result I didn't really give it a try although I knew it would be wonderful when it reached "that point". Well it has arrived.
The changes that had to be made, and have been, are:
- Don't mess with queuing and non-random play. Queuing just barely got here and I was not about to lose my new favorite feature just for an adaptive random, and I play whole albums in sequence all the time. Especially Afro-Celt Sound System. IMMS wasn't to blame here, it was the lame XMMS interface (the main reason I never had the gumption to write something like IMMS). XMMS CVS now has fixed this (I think it was mag's patch) and IMMS naturally takes advantage of it.
- Be responsive. Nothing is more annoying than a break in the music. IMMS was moderately responsive on most systems, but throw it on the network drive here at work and the time it was taking to do frequency analysis needing to copy the file over was making xmms sluggish and unresponsive and taking forever. (This is why I really need this adaptive stuff - I can't stand half of what my coworkers like, but I'm not about to waste the time finding and the disk space copying everything I like to my computer. Besides, I just might like one of those artists with a weird name that I've never heard before.) IMMS recently split out into daemon and plugin parts, so xmms is not interrupted while the analysis and whatnot happens, and it is a lot smarter about bandwidth too.
IMMS is keen, great, and all that. You want it. Go grab XMMS CVS and IMMS 2.0.1 and enjoy. (yes, forget about your package manager, until they catch up anyhow)
Posted in audio | no comments |
snd-cs46xx doesn't do wavetable synthesis
I got a Turtle Beach Santa Cruz sound card which is driven by the cs46xx ALSA driver, but much to my dismay there doesn't seem to be a way to get its wavetable MIDI synthesis to work in linux. So I guess it's back to the softsynths for me, e.g. fluidsynth. They're not so bad, but I think the card would have done a better job of it.
Still, it's a good card.
Posted in audio | no comments |