NavigationUser loginCMS by Drupal |
An Audio Compressor / LimiterI posted an audio compressor / limiter written in Haskell to HackageDB and BartForge this weekend. I also posted its ancillary pure-Haskell WAVE file IO library, and my Haskell argument parsing library. It all still needs a lot of work to be good, but it's usable now. Enjoy.
|
How
about posting some audio files to demonstrate your software? I'm not at all sure how to build it on my computer - or even what the general intent of the program is.
Good point
You'll need a Haskell compiler to do anything with this stuff. I don't know what the state of Mac Haskell actually is.
The program implements a hard limiter, currently, with kind of a funny curve. I should generalize it a bit at some point. You stuff a WAVE file in, and out comes a WAVE file with its dynamic range modified according to the limiter parameters.
I can post some audio files, but the effect is subtle. I'm building a delay line this evening. I'll finish that up and post samples from it soon instead.
Nyquist
There's a LISP variant called Nyquist which is the audio effects programming language for Audacity. The only obvious advantage I can see for Nyquist is that literally tens of thousands of people will try your effects if they can be plugged right in to Audacity.
The currently available crop of Audacity effects is not that great, so you have an opportunity to really make a difference.
None of that matters if you're just flexing your Haskell muscles in a pleasant way.
Audacity plugin
Audacity is starting to drive me nuts, actually. It seems to be constantly not quite working right, at least under Linux; I've been fighting with its input level control, which doesn't seem to work at all right now, this evening. That said, you're right that it is pretty universal and cross-platform.
My vague plan at this point is to maybe build a NetPBM-like toolkit for offline audio processing. It would essentially be a SoX replacement/symbiote. The key difference is that you would construct pipelines of simple programs instead of trying to figure out the Martian command-line arguments of SoX. In particular, one would continue to rely on SoX for conversions to and from WAV files, which is the only format I intend to support.
Somebody seems to have recently created a way to build LADSPA plugins in Haskell. This would let me turn my code into Audacity plugins—Audacity supports LADSPA plugins on Mac and Windows as well as Linux. Maybe I'll give that a try if I get some time. Thanks for the idea!
Post new comment