NINJAM stands for Novel Intervallic Network Jamming Architecture for Music. The software and systems comprising NINJAM provide a non-realtime mechanism for exchanging audio data across the internet, with a synchronisation mechanism based on musical form. It provides a way for musicians to "jam" together over the Internet; it pioneered the concept of "virtual-time" jamming. It was originally developed by Brennan Underwood, Justin Frankel, and Tom Pepper.
Principle
Creating music naturally relies on players' ability to keep time with each other. Latency between players causes natural time keeping to be thrown awry. The internet does not provide a low-latency data exchange mechanism that can be used over global distances. In order to approach latency-free collaboration, NINJAM extends the latency, by delaying all received audio until it can be synchronised with other players. The delay is based on the musical form. This synchronisation means that each player hears the others in a session and can play along with them. NINJAM defines the form in terms of the "interval" - the number of beats to be recorded before synchronising with other players. For example, with an interval of 16, four bars of common time would be recorded from each player, then played back to all others.
Reception
The process was described in Wired as "glitch-free", and "designed for musicians who enjoy realtime collaboration." In MIT Technology Review, the software's users are described as "really loyal" due to its free and open source status. Other music product vendors have added support for NINJAM; Expert Sleepers, a vendor of electronic music hardware and software, added plugin support for NINJAM in 2006.
Technical background
Each player in a NINJAM session feeds audio data from their client to a server via a TCP/IP connection to a specific port. The "client" here is only the component that the player uses to connect to a NINJAM server, encode and transmit their audio stream, receive and decode remote players' streams and handle the chat session. Each player will also need some way of feeding audio information to the NINJAM client - either by using the client as a plugin in a DAW or by using the standalone version with a direct audio input. Each client's data is synchronised against a distributed clock. This clocking is then used to distribute the data out to all the other clients so that they can play all the remote streams in sync. The server does little apart from manage connections, chat and data streaming.
Overview of usage
Clients and client setup considerations
Common considerations
All clients feed data at 0 dB to the server, regardless of local monitoring levels. When setting up, the NINJAM client "local" level is set to 0 dB. "Local" does not affect transmitted volume. The slider labelled "local" only affects what the user hears locally, not what others hear. The user must adjust their input level - before the NINJAM client in the signal path - to affect what remote players are hearing. There is limited headroom in an audio channel, so it is considered good practice never to let audio level peak above 12 dB, and to set one's "loud" level at around 18 dB; this ensures space in the mix for others.
REAPER-tied VST effect
s are a commonly used option but requires that the user install REAPER.
Server and server set-up requirements
More detailed set-up and configuration is available on the NINJAM web site.
Bandwidth
According to Cockos, of bandwidth requirements, outbound bandwidth is the major requirement. A 4-person session will require approximately 768kbit/s of outbound and 240kbit/s of inbound bandwidth. An 8-person session will require approximately 3Mbit/s of outbound bandwidth.
O/S, Hardware & NINJAM
Win32
Windows 2000 or later, CPU 500 MHz, RAM 4MB, NINJAM v0.06
OS X 10.3 or later, G3. RAM 4MB NINJAM v0.01a ALPHA for OS X
Linux
It is claimed that the server source code compiles on Linux, FreeBSD, Darwin/OS X, and Windows. There is no information available regarding what versions of Linux & FreeBSD are required nor of the hardware required to support the application running under those OS's.
Development status
This is a GPL project, so source code is available. Development appears to have stopped in 2005 for the client and 2007 for the server, but since 2012 new clients have been created. The lists the github page as the "official github mirror," and that page shows a commit in late April, 2020.
Content
The NINJAM servers hosted by Cockos record and index their content at under the Creative Commons license; the music files are hosted at The Internet Archive. As of January 2010 there were over 23,000 hours of content, or approximately 1.2TB. As of March 2012, recording activity is ongoing.