The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Getting started with audio programming

I'd like to get my feet wet in audio programming. My longterm goal is to produce something like Garage-Band for Windows and Linux. However, I have no idea on how to get started.

What libraries do you recommend for a task like that?
Tales from Margaritaville Send private email
Monday, November 13, 2006
Learn the basics...  filtering concepts and practices, the math behind it, sampling, Analog to Digital conversion (and back), etc.

The most important aspects of any of these libraries are 1) speed and 2) accuracy.  If you do stuff in realtime, it gets even more important.
KC Send private email
Monday, November 13, 2006
If you have a Mac, start by learning how to write AudioUnits plugins. If you have a PC. start by learning how to write VST plugins.

Once you can write a plugin with great usability and fantastic performance, using vector processing instructions, then move on to writing a host.
Aaron the Audio Developer
Monday, November 13, 2006
I agree with Aaron on writing plugins first.

There are good examples in the VST/ASIO SDK as well as some (basic) AU examples which you can run in AULab and Garageband.

Oh, and get used to the fact that documentation and reality diverts.

Husker Send private email
Tuesday, November 14, 2006
Some additional things:

Good source about audio programming:

Something for starters:
Husker Send private email
Tuesday, November 14, 2006
Aaron The Audio Developer isn't mm_aaron, by any chance?
Wednesday, November 22, 2006
I'm not sure that VSTs are the best place to start replacing Garageband. The only audio algorithm which is troublesome is timestretching, for which libraries are available from SoundTouch (free but crap) to Elastique (expensive but good) ... I think the biggest challenge is the graphical manipulation.

Download a demo copy of something like Sony ACID and think about how you would replicate the timeline. Download a copy of Mixmeister Fusion and think about the same thing. If you can get it, try an older copy of Mixmeister Pro 6. By now you'll be getting a feeling for the types of graphical manipulation your users will expect.

Once you figure out ways to represent tracks (I'm talking about track transitions, mainly) the rest is easy.
Thursday, November 23, 2006
PortAudio is great for cross-platform audio.

Audacity (garageband for windows & linux, just not quite as pretty), uses a combination of portaudio and wxWidgets.

If you're talking about making an open-source project, maybe you could just join the audacity project instead of starting your own. Or branch it if they don't like the garageband-clone direction, similar to how gimp has a photoshop clone branch (gimpshop). 90% of the changes would be in the UI, it shares the same basic feature set with garageband.

Audacity has nice visualization and many, many features.

If you're talking about doing a commercial product building on top of Audacity is not an option, of course.

Avoid OpenAL like the plague, it's garbage.
Pete Send private email
Saturday, November 25, 2006

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz