Ninjam

Last updated
NINJAM
Original author(s) Brennan Underwood, Justin Frankel, with notable work by Tom Pepper
Developer(s) various
Initial releaseJuly 9, 2005;18 years ago (2005-07-09)
Stable release
v0.06 (client & server), / July 20, 2005 (client), May 3, 2007 (server)
Operating system Windows, Mac OS X, Linux
Available inEnglish
Type Collaborative musical jamming
License GNU General Public License
Website www.ninjam.com

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" (improvise) together over the Internet; it pioneered the concept of "virtual-time" jamming. It was originally developed by Brennan Underwood, Justin Frankel, and Tom Pepper.

Contents

Principle

Collaboratively creating many forms of music naturally relies on players' ability to keep time with each other. Excessive latency between players causes natural time keeping to be thrown awry. Typical network engineering practice does not allow for sufficiently low-latency data exchange mechanism even within cities, [1] and the speed of light makes it impossible over regional or global distances. [2] 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 music in 4
4
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." [3] In MIT Technology Review, the software's users are described as "really loyal" due to its free and open source status. [4] 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. [5]

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 (commonly in the range 2049 upwards, depending on the host).

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 (IRC-like) 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

VST effects are a commonly used option (based on number of posts on the NINJAM support forums [6] ) but requires that the user install REAPER.

Open Source AU plugin

Derived from the Open Source Standalone version, works on Mac AU hosts. Similar considerations to REAPER-tied VST effect above.

Open Source standalone clients

Standalone clients are available for Windows, Mac OS and Linux. As the Linux version works with JACK, it can have audio routed to it from any JACK client. On Windows, use with virtual audio sources is problematic as there is no comparatively easy routing mechanism.[ citation needed ] Hence it is more suited to real instruments, where it provides a simpler alternative to the complexity of running a DAW just to access NINJAM.

Server and server set-up requirements

More detailed set-up and configuration is available on the NINJAM web site. [7]

Bandwidth

According to Cockos, of bandwidth requirements, outbound bandwidth is the major requirement. A 4-person session will require approximately 768 kbit/s of outbound and 240 kbit/s of inbound bandwidth. An 8-person session will require approximately 3 Mbit/s of outbound (and 600 kbit/s inbound) bandwidth. [8]

O/S, Hardware & NINJAM

Win32

Windows 2000 or later, CPU 500 MHz, RAM 4 MB, NINJAM v0.06

OS X

OS X 10.3 or later, G3. RAM 4 MB NINJAM v0.01a ALPHA for OS X

Linux

It is claimed [8] 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. Since 2012 third-party clients (wahjam, [9] Jamtaba, [10] Zenjam [11] and Ninjam-js [12] ) have been created. The Cockos Ninjam page lists the GitHub page justinfrankel/ninjam as the "official github mirror," and that page shows a commit in late April, 2020. [13]

Content

The NINJAM servers hosted by Cockos record and index their content at NINJAM AutoSong 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.2 TB. [14] As of 2021, recording activity is ongoing.

Related Research Articles

<span class="mw-page-title-main">Justin Frankel</span> Computer programmer known for Winamp and Gnutella

Justin Frankel is an American computer programmer best known for his work on the Winamp media player application and for inventing the Gnutella peer-to-peer network. Frankel is also the founder of Cockos Incorporated, which creates music production and development software such as the REAPER digital audio workstation, the NINJAM collaborative music tool and the Jesusonic expandable effects processor.

<span class="mw-page-title-main">Ardour (software)</span> Open-source digital audio workstation

Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Microsoft Windows. Its primary author is Paul Davis, who was also responsible for the JACK Audio Connection Kit. It is intended as a digital audio workstation suitable for professional use.

Independent Computing Architecture (ICA) is a proprietary protocol for an application server system, designed by Citrix Systems. The protocol lays down a specification for passing data between servers and clients, but is not bound to any one platform. Citrix's ICA is an alternative to Microsoft's Remote Desktop Protocol (RDP).

<span class="mw-page-title-main">Server Message Block</span> Network communication protocol for providing shared access to resources

Server Message Block (SMB) is a communication protocol used to share files, printers, serial ports, and miscellaneous communications between nodes on a network. On Microsoft Windows, the SMB implementation consists of two vaguely named Windows services: "Server" and "Workstation". It uses NTLM or Kerberos protocols for user authentication. It also provides an authenticated inter-process communication (IPC) mechanism.

<span class="mw-page-title-main">Virtual Network Computing</span> Graphical desktop-sharing system

Virtual Network Computing (VNC) is a graphical desktop-sharing system that uses the Remote Frame Buffer protocol (RFB) to remotely control another computer. It transmits the keyboard and mouse input from one computer to another, relaying the graphical-screen updates, over a network.

<span class="mw-page-title-main">Virtual Studio Technology</span> Audio plug-in software interface

Virtual Studio Technology (VST) is an audio plug-in software interface that integrates software synthesizers and effects units into digital audio workstations. VST and similar technologies use digital signal processing to simulate traditional recording studio hardware in software. Thousands of plugins exist, both commercial and freeware, and many audio applications support VST under license from its creator, Steinberg.

TightVNC is a free and open-source remote desktop software server and client application for Linux and Windows. A server for macOS is available under a commercial source code license only, without SDK or binary version provided. Constantin Kaplinsky developed TightVNC, using and extending the RFB protocol of Virtual Network Computing (VNC) to allow end-users to control another computer's screen remotely.

Remote Desktop Protocol (RDP) is a proprietary protocol developed by Microsoft Corporation which provides a user with a graphical interface to connect to another computer over a network connection. The user employs RDP client software for this purpose, while the other computer must run RDP server software.

Linux Terminal Server Project (LTSP) is a free and open-source terminal server for Linux that allows many people to simultaneously use the same computer. Applications run on the server with a terminal known as a thin client handling input and output. Generally, terminals are low-powered, lack a hard disk and are quieter and more reliable than desktop computers because they do not have any moving parts.

<span class="mw-page-title-main">Diskless node</span> Computer workstation operated without disk drives

A diskless node is a workstation or personal computer without disk drives, which employs network booting to load its operating system from a server.

NX technology, commonly known as NX or NoMachine, is a remote access and remote control computer software, allowing remote desktop access and maintenance of computers. It is developed by the Luxembourg-based company NoMachine S.à r.l.. NoMachine is proprietary software and is free-of-charge for non-commercial use.

Music Player Daemon (MPD) is a free and open source music player server. It plays audio files, organizes playlists and maintains a music database. In order to interact with it, a client program is needed. The MPD distribution includes mpc, a simple command line client.

Real-Time Messaging Protocol (RTMP) is a communication protocol for streaming audio, video, and data over the Internet. Originally developed as a proprietary protocol by Macromedia for streaming between Flash Player and the Flash Communication Server, Adobe has released an incomplete version of the specification of the protocol for public use.

This page is a comparison of notable remote desktop software available for various platforms.

Adaptive Internet Protocol (AIP) is a multi-channel protocol that allows an application running on any of multiple platforms to be displayed on any of a wide range of client systems. It supports rich remote display and input services with a number of display options to deliver the presentation of the remote applications onto the local display either as a standalone window, or within a contained remote environment delivered full-screen or in a standalone window. The protocol also supports audio, printing, and other device mapping services.

Remote Desktop Services (RDS), known as Terminal Services in Windows Server 2008 and earlier, is one of the components of Microsoft Windows that allow a user to initiate and control an interactive session on a remote computer or virtual machine over a network connection. RDS was first released in 1998 as Terminal Server in Windows NT 4.0 Terminal Server Edition, a stand-alone edition of Windows NT 4.0 Server that allowed users to log in remotely. Starting with Windows 2000, it was integrated under the name of Terminal Services as an optional component in the server editions of the Windows NT family of operating systems, receiving updates and improvements with each version of Windows. Terminal Services were then renamed to Remote Desktop Services with Windows Server 2008 R2 in 2009.

<span class="mw-page-title-main">Tonido</span>

Tonido is remote access and home server software for network-attached storage. Once installed on a computer, Tonido software makes that computer's files available remotely via the internet through the web browser or through native mobile apps. This allows access to files stored on the computer, including music and videos, to any computing device connected to the Internet in possession of login credentials. Data is by default transmitted via Tonido's servers, with no port forwarding required, but can be transmitted without using Tonido's servers by setting up port forwarding. Data transfer speed cannot exceed that of the slowest link in the data path, including USB 2.0 for USB-connected storage.

QVD is an open-source virtual desktop infrastructure (VDI) product built on Linux. Its main purpose is to provide remote desktops to users.

<span class="mw-page-title-main">Jamulus</span> Live music collaboration software

Jamulus is open source (GPL) networked music performance software that enables live rehearsing, jamming and performing with musicians located anywhere on the internet. Jamulus is written by Volker Fischer and contributors using C++. The Software is based on the Qt framework and uses the OPUS audio codec. It was known as "llcon" until 2013.

When playing music remotely, musicians must reduce or eliminate the issue of audio latency in order to play in time together. While standard web conferencing software is designed to facilitate remote audio and video communication, it has too much latency for live musical performance. Connection-oriented Internet protocols subject audio signals to delays and other interference which presents a problem for keeping latency low enough for musicians to play together remotely.

References

  1. Carôt, Alexander; Rebelo, P.; Renaud, Alain (2007). "Networked Music Performance: State of the Art". AES 30th International Conference, Saariselkä, Finland, 2007 March 15–17. S2CID   14369534.
  2. Guensche, Ron (August 2, 2007), Real-time Remote Collaboration via NINJAM, ProRec.com, archived from the original on 2008-12-10, retrieved 2012-03-30
  3. Van Buskirk, Eliot (April 26, 2007). "NINJAM: Near-Real-Time, Glitch-free Online Music Collaboration". Wired .
  4. Greene, Kate (May 25, 2007). "Jam Online in Real Time". MIT Technology Review.
  5. "NINJAM Plug-in v1.1". MacMusic.com. November 24, 2006.{{cite web}}: Missing or empty |url= (help)
  6. "NINJAM support forums". Cockos.com.
  7. "NINJAM Server Guide". NINJAM.com. Retrieved 2010-01-13.
  8. 1 2 "Download". NINJAM.com. Retrieved 2010-01-13.
  9. wahjam.org
  10. "Jamtaba.com". Archived from the original on 2014-10-18. Retrieved 2016-07-20.
  11. Zenjam Web Site
  12. ninjam-js Github Page
  13. Cockos Ninjam page Cockos, accessed 12 April 2020.
  14. "Autosong statistics". NINJAM.com. Retrieved 2010-01-13.