How to Collaborate On-line
Break the misconception that once you have a home recording studio, you can do it all yourself. I perform in a band, and benefit from the expertise of the other group members...
Like the saying goes, "The result is greater than the sum of all of the parts"...
There are several methods to collaborate online with other users using Ardour and Ninjam...
- 1 Using Ardour session-exchange
- 2 Using Ninjam
- 3 Additional Resources
Using Ardour session-exchange
The problem with collaborating online is that the files that are generated when you record an auditory product using Ardour are very LARGE. For example, if you decide to create a zipped tarball (a method to build a single file from a group of directories/files and then compress or “zip” that file) can balloon to 90 MB to 120 MB of hard disk space for a simple 4-5 minute song... Imagine posting that file on the cloud, or making that file available on a distribution server! Then just consider the pain of compressing and decompressing those files - there must be an easier method...
... and there is...
If you are not concerned with more than one person simultaneously editing the same session, there is a python script (program) that will allow you to easily share your sessions for editing by other users. The name of this application is called session-exchange, and it has been around for several years...
The advantage of session-exchange is that the user can allow for downloading of files to all collaborators of a session, and only have the musicians work on the most recent edits of the auditory product. When you create a song in Ardour, you are required to either create a session, or open an existing session. This allows ardour to create subdirectories to store all audio data into a concise location on your computer system. Ardour uses the term snapshot to relate to a new session file that is generated (i.e. not affecting the original session) that simply stores the current state of the edited session. Therefore, only snapshots (and the related data updates) need to be shared, thus saving space and transmission time. This is an efficient method of collaborating Ardour sessions over the Internet...
An analogy: This may be an oversimplification, but relate it to how the vi text editor works: there is a swap file (editing transaction) and the original file. Only upon saving the editing session is the original file updated with the newer information… No doubt, the swap file is smaller than the actual file, and thus easier to transfer between computer systems. Also, the swap file is useful for backup purposes (eg. in case of accidental disconnection from your remote editing session)… The only difference from this vi text editor comparison is that the snapshot informs the session exchange program which other auditory files are required to be downloaded in addition to the snapshot file...
Installing Ardour Session Exchange
The easiest method to install session-exchange is to download the source from Ardour SVN site. SVN stands for Apache Subversion which is a method to make it easier for programmers to collaborate together on complex programming projects. This basically the online version of RCS which stands for Revision Control System.
Here are some WIKIs for definitions of SVN and RCS:
Steps to Install Ardour Session Exchange:
- Go to the Ardour Download site: http://ardour.org/download_full
- Go to the section labelled: Public read-only SVN access
- Open a shell terminal window, and login as root or super-user (eg. sudo su )
- Switch to the Ardour Download site, copy and paste the command (listed in the Public read-only SVN access section under tools and look for file called session_exchange.py) into your shell window:
svn co http://subversion.ardour.org/svn/ardour2/branches/2.0-ongoing
(It is recommended to use the command stated on the site, since the version may change over time...)
- After the above executed command is completed, there will be a subdirectory created in your current directory
(In this case called 2.0-ongoing).
- Change into the 2.0-ongoing subdirectory, and change to the other subdirectory called tools.
- Issue the following command to run session-exchange:
- A Session Exchange application window should appear on your screen.
(Note: You can right-click on the desktop, and create a launcher to run this application in the specified pathname, so you can just double-click on your desktop to launch this application...
Configuring Ardour Session Exchange
Now that you have installed and have launched Ardour's session-exchange program, we need to configure the application to allow us to share our recorded Ardour projects with other users. Perform the following steps to configure your Ardour session-exchange application:
Steps to Configure Ardour Session Exchange:
- Before you start configuring Ardour Session Exchange, make certain that you have an Ardour session on your computer to share. Also, note the pathname to your Ardour session directory that you want to share.
- Next, you need to give yourself a username so other members will be able to identify you. Click on the edit menu, and select preferences. Type in a username for yourself (I have used the username msaul just as an example), and then click OK.
- We need to create a session for sharing purposes. In this way, we can focus on a particular session until we complete our project.
- You have two choices: Create Session (start a new session, and open in Ardour to create a song, then save, and collaborate with other user), or Add Session (specify the pathname to an already existing Ardour session).
- For this tutorial, we will add an Ardour session to be shared (I created one called doors_demo.
- Click File then Add Session. An Add Session dialog box will appear.
- Specify the pathname of the session to be shared (usually created in the user's home directory, and then select the session name that ends with the .ardour extension, then click OK.
(You can add as many sessions to share as you wish...)
- You should now see your session contained in the Session Exchange application window.
If you click on the session by name, you will see the yourself as the only user participating in the session exchange. If you click on your username, you will see the original session, as well as any of the session "snapshots" that have been taken...
- Next you need to add another user or users in order to help collaborate or work on your song.
- In the Session Exchange application window, click the edit menu, and then select Add Collaborator.
- In the Add Collaborator dialog box, create a username, and then enter the IP address for that user's computer system.
In order to obtain the IP address for a computer system, you can open a shell terminal window and issue the command: ifconfig
(look for the value labelled inet addr).
Note: accept the default port number... You can create other users for sharing as well...
Also note: If your computer is connected via a router, you can configure your router to "route" the port number to a specific IP address to your networked machine. Your router's user manual should provide information how to do this. This is NOT a very complicated operation, and is usually located under "Advanced Settings"...
- When you have entered the required information, click OK.
Fetching a Snapshot
If you have properly setup Session Exchange, then you should be ready to share your Ardour song with other users...
Note #1: The other user will need to install and setup their Session Exchange application, but use your IP address and your username...
Note #2: The other users MUST create the sessions using the exact spelling or your session names: otherwise, you will not be able to exchange sessions...
Steps to Fetch an Ardour Session:
Let's assume that we are the "other" user that will download or "fetch" the doors_demo session that msaul has created.
- Launch the Session Exchange applicaton
- Make certain to create a new session using the EXACT name of the session as your friend's session name that is being shared.
- Make certain to add your username and Add your group member's username (in this case: msaul) as a Collaborator.
- Select the session, select the user, and then select the session name (either original file, or the dated "snapshot" file)
- Click the edit menu, then select Fetch Snapshot.
- If files are downloading, you should notice at the bottom of the dialog box a message indicating "connection made".
- When the message at the bottom of the dialog box reads, "connection lost", then the downloading process is completed.
- You should be able to open that revised session, for further editing and collaboration.
A Warning About Collaborating with Ardour Session Exchange
The Ardour Session Exchange application is designed to collaborate with a group of people, but only one person at a time should exchange, edit. and save sessions,before allowing others to proceed with the exchanging and editing of these sessions.
This application reminds me of the SVN or RCS applications (discussed above), except there seems to be no safeguards to “lock files” when they have been “exchanged” or “checked-out” to be worked on by other users. Perhaps a locking mechanism would be in order in a future release of this application. Perhaps this type of safeguard would be too "constricting" for the artistic or collaborative process of musical composition…
Regardless, this is an interesting tools which believe I will use many times in the future....
The next type of collaborative application is called Ninjam, and it encourages collaborating (jamming) in real-time (or more appropriately in "fake-time")...
Ninjam is a way to allow users to perform a "jamm" session over the Internet.According to Wikipedia a jam session is defined as:
"a musical act where musicians play (jam session) by improvising without extensive preparation or predefined arrangements. Jam sessions are often used to develop new material, find suitable arrangements, or simply as a social gathering and communal practice session."
Therefore, Ninjam is not recommended to playing pre-arranged musical arrangements, but can be used to help improve sections of songs, or help individuals to learn how to improve their live performance skills. Note: Ninjam sessions have the ability to be recorded: therefore, sessions can be recorded to be edited via a DAW such as Ardour, and allow the user to practice their skills. On the other hand, the user can collaborate with Ardour to create songs in order for an individual to "play-along" and practice their skills...
How Ninjam Works
It is incorrect to think that Ninjam allows users to play in "real-time". This would be impossible due to delays or what is referred to as "latency".
The Ninjam Guide "Ninjam in a Nutshell" states:
"Most people have experienced this phenomonon when watching newscasts with a satellite uplink or speaking on a cell phone -- there is a perceivable difference in time between the moment someone speaks and the apparent time the other party hears them... The end result is if two people are trying to play a song together, the induced lag (which is termed latency by most tech heads), ends up causing each person to extend their tempo waiting to catch the other person’s playing. Since the other person is doing the exact same thing, the end result with two people is usually a continually slowing tempo."
In order to deal with this challenge, Ninjam allows user to collaborate in "Fake-Time". A common beat track is used, which allows users to start recording their measure, then other user's will start playing their measures, etc.
The Ninjam in a Nutshell" guide then states:
"The end result is that nobody hears the exact same jam. It’s a bit contrary to classical jamming and requires everyone to adhere to a common tempo, but once you get used to it many find that it’s compatible with most styles of jamming and the strict tempo enhances the experience."
There are 2 separate applications that run for Ninjam:
- Ninjam Client: An application that allows the user to connect to a Ninjam Server (nicknamed a "Ninjam Farm"), to play with other users. For example, here is a link to various Ninjam farms:
Note: You should use the ones for testing purposes only, and NOT the BPM contest servers if you are just testing-out your connection...
- Ninjam Server: An application that allows the user to run a Ninjam server to create your own Ninjam Farm (private area) for user jam sessions...
Installing Ninjam Client (via wine)
Although there is a Linux version for Ninjam, I can't seem to get it installed on my Ubuntu Studio 10.04 64-bit system...
I'm not certain this is the BEST method for running Ninjam client in Linux, I did have success in running the Windows version of Ninjam client via wine. Here is how I was able to do it..
STEPS TO INSTALL NINJAM CLIENT (VIA WINE):
- Make certain that you have already installed the wine application. If you are not certain, refer to this link to learn how to install applications (like wine) via the Synaptic Package Manager: [ Install_Applications_in_Ubuntu ]
- Go to the Ninjam website.
Here is a link to the Ninjam Download Page: [ http://ninjam.com/download.php ]
- ATTENTION: In my situation, I was not able to use wine to install the Ninjam installer, application, so I actually downloaded and installed the Windows version of Ninjam on a Windows system. I copied the entire NINJAM directory into a USB stick, and then copied over to my Linux system.
- Open a shell terminal window, and run wine to run your Windows (i.e. Ninjam) application
For example, assume that I copied to the NINJAM directory and its contents to my home directory (/home/msaul). Then I ran the wine application as follows:
- After a while, the Ninjam Client application window should appear...
- In the future, you can create a shortcut to run this wine application for Ninjam client for convenience...
Configuring Ninjam Client for Jack (via wineasio)
If you wish, you can connect to a session to listen to a session in progress. The Ninjam Farm page (refer to link above) provides updates (if you refresh your web-browser) of users currently participating in various test jam sessions.
On the other hand, if you wish to participate in the Jam Sessions with your own instruments, you must setup your computer system to do this.
This tutorial will assume that we are running Jack Audio server. In my situation, I am running Jack, Qsynth, and Bristol Organ via my Tascam US122 USB device to record MIDI data from my old Yamaha keyboard...
STEPS TO INSTALL AND SETUP WINEASIO:
- Determine which type of computer system you have (32-bit or 64-bit)
- Download the zipped file called wineasio_0.7.5_debs.zip (just right click that file link and save-as on your system). Here is link that contains that file link: [ html ]
- Open a File Browser, go to the Downloads directory, and double-click on the downloaded file: wineasio_0.7.5_debs.zip. You should see a version of wineasio for 32-bit and 64-bit architecture...
- Point and double-click on the appropriate file for your computer system's architecture, and follow the instructions in the deb installation window.
- ATTENTION: This is very important! You need to register WINEASIO to run in wine. DO NOT BE LOGGED IN AS SUPERUSER WHEN RUNNING THE FOLLOWING COMMAND! Instead as a regular (unpriviledged) user, issue the following command:
regsvr32 wineasio.dll (even if you have a 64-bit computer system!)
- The wineasio driver should be properly installed...
Now you need to run Ninjam client and configure it to work with the wineasio driver. Please perform the following steps:
STEPS TO CONFIGURE NINJAM CLIENT WITH WINEASIO:
- Start the Jack Audio server. If you are not certain how to do this, refer to one of my other tutorials: [ Quick & Simple - Setting up Jack Server and Q-synth ]
- Open a shell terminal window, and use wine to start the Ninjam client. Your situation will be different than the following example, but let's assume that Ninjam client has been copied over to my home directory, and my home directory pathname is /home/msaul. Under that assumption, the command to startup the Ninjam client would be:
- When the Ninjam Client application window appears, click on the Options menu, then click Audio Configuration.
- The NINJAM audio I/O configuration dialog box will appear.
- Set the Input/Output System to ASIO.
- If all is well, you should see the ASIO Driver display Wine ASIO Driver, and the Input Range and Output Range values should appear in the text boxes...
- You can now click on the ASIO Configuration button to display the Jack Audio Connection dialog box.
You will not see anything until you actually connect to a Ninjam session, then the NINJAM SESSION will appear in the connections dialog box...
- Switch back to the NINJAM audio I/O configuration dialog box, click OK to exit ...
- Switch to the Ninjam Client window.
- Click on the file menu, then select Connect.
- The NINJAM Connection Configuration dialog box will appear.
- Enter a host number to connect (preferably test.ninjam.com:2600 or test.ninjam.com:2601) for testing purposes.
- Click the Connect button, and click the "I agree" checkbox in the NINJAM Server License Agreement, and then click the Accept button.
- Switch to the Jack Connections dialog box. Select the ALSA tab, and connect the device (In my situation, Tascam US-122) to Bristol (B3) Organ.
- Then select the AUDIO tab. You should now see ASIO_NINJAM. Make the necessary connections. You should now be able to perform in the session...
NOTE: When you are performing, you are creating on ogg file of your performance, which is saved on your computer! This is useful, since you may want to test to see if you are recording in the session, although there may not be other members present. You can always listen to the recording afterwards to confirm you are being heard. WARNING: Due to the latency of connections, you need to be patient and listen to the ENTIRE recording, before assuming that you did not record! FYI...
You can view (or change) the default location of the saved files. To view or set the default recorded session location, click on the options menu, then select Preferences...
Installing and Running Ninjam Server
To be completed...
Ninjam in a Nutshell (Basic Ninjam Guide)
Ninjam Website (Downloads, servers, Forums)
http://ninjam.com/jamfarm/index.php (Ninjam Farm - open test servers - Please use last 2 for open access...)