The choice of the operating system (OS) was a key step in the process. My goal was to build something that could change the sound of my guitar while i was playing it.
I started writing patches in Pure Data in Windows, but it soon became obvious that something was wrong : the delay between the input (when i would pluck the strings of my guitar) and the output (after going through the Pure Data patch) was annoyingly long.
This delay is called the “latency” (read wiki article). It amounts to the time needed by the computer to capture the audio data from the guitar in the soundcard, to process it using different layers of software, and to play it back (either through the built-in speakers or through the soundcard and the amplifier). Though it is impossible to reach a latency of zero, a resonnably low latency (around 5 ms) is hardly perceived by the human ear, and can be considered as “real-time”.
Windows has not been designed to minimize audio latency. Though some workarounds exist (see ASIO4ALL), I found it practically impossible to get a reasonnable latency in Windows. UPDATE : a reader claims to have reached a 5-6ms latency under Windows XP. He’s written a blog post (in French) with many references (in English). It is probably worth a read if you’re not familiar with Linux.
Linux distros are based on a kernel (shared by all distros if i’m not mistaken), which makes it possible to get a much lower latency than when using Windows.
When I started installing various linux distros to find one which would suit my needs most, the generic kernel wasn’t performing very well per se, but a “patched” real-time kernel (rt-kernel) could be installed which made it possible for me to get a latency below 5ms. Distros such as Ubuntu Studio and Planet CCRMA-Fedora used to come with this patched rt-kernel.
Recent versions of the generic linux kernel have drastically improved in terms of audio latency, and make it possible for any Ubuntu or Fedora (or virtually any other distro) user to run Pure Data in real-time with a latency below 6 ms. This is sufficient for creating effects for the guitar to be used while playing live.
Please note that Mac OS is also supposed to offer good performances in terms of audio latency.