NINJAM uses compressed audio which allows it to work with any instrument or combination of instruments. You can sing, play a real piano, play a real saxophone, play a real guitar with whatever effects and guitar amplifier you want, anything. If your computer can record it, then you can jam with it (as opposed to MIDI-only systems that automatically preclude any kind of natural audio collaboration1).
Since the inherent latency of the Internet prevents true realtime synchronization of the jam2, and playing with latency is weird (and often uncomfortable), NINJAM provides a solution by making latency (and the weirdness) much longer.
Latency in NINJAM is measured in measures, and that's what makes it interesting.
The NINJAM client records and streams synchronized intervals of music between participants. Just as the interval finishes recording, it begins playing on everyone else's client. So when you play through an interval, you're playing along with the previous interval of everybody else, and they're playing along with your previous interval. If this sounds pretty bizarre, it sort of is, until you get used to it, then it becomes pretty natural. In many ways, it can be more forgiving than a normal jam, because mistakes propagate differently.
Part tool, part toy, NINJAM is designed with an emphasis on musical experimentation and expression.
NINJAM can also save all of the original uncompressed source material, for doing full quality remixes after
(1): While MIDI has many wonderful uses, it also has substantial limitations when working with real instruments.
(2): Limitations of note: sound hardware latency (>5ms), perceptual CODEC latency (>20ms), plus typical and theoretical network latency (>40ms).
Preferred client - REAPER:
REAPER is a Digital Audio Workstation for Windows and OS X that also provides native NINJAM support via the "ReaNINJAM" effect, and allows you to use VST/VSTis/ReWire/MIDI hardware/etc with NINJAM. REAPER also can import NINJAM sessions directly for remixing/editing.
The main requirement for running the server is outbound bandwidth. For example, a 4 person jam needs approximately 768kbps of outbound (and only 240kbps inbound) bandwidth, and a 8 person jam requires approximately 3mbps of outbound (and 600kbps inbound) bandwidth. We are planning on updating the architecture to support a more distributed model, but this is just an alpha release.
A server setup guide is here.
Server source code available via git, below
Compiles on Linux, FreeBSD, Darwin/OS X, Windows, and more.