How to Collaborate On-line

From CDOT Wiki
Revision as of 10:58, 12 July 2010 by Msaul (talk | contribs)
Jump to: navigation, search

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...


Using Ardour session-exchange

Purpose

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:


http://en.wikipedia.org/wiki/Apache_Subversion

http://en.wikipedia.org/wiki/Revision_Control_System


Steps to Install Ardour Session Exchange:

  1. Go to the Ardour Download site: http://ardour.org/download_full
  2. Go to the section labelled: Public read-only SVN access
  3. Open a shell terminal window, and login as root or super-user (eg. sudo su )
  4. Switch to the Ardour Download site, copy and paste the command (listed in the Public read-only SVN access section) 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...)
  5. After the above executed command is completed, there will be a subdirectory created in your current directory
    (In this case called 2.0-ongoing).
  6. Change into the 2.0-ongoing subdirectory, and change to the other subdirectory called tools.
    Session-ex1.png
  7. Issue the following command to run session-exchange:

    ./session_exchange.py

  8. 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:

Session-ex2.png
  1. 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.
  2. 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.
  3. We need to create a session for sharing purposes. In this way, we can focus on a particular session until we complete our project.
    Session-ex9.png
  4. 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).
  5. For this tutorial, we will add an Ardour session to be shared (I created one called doors_demo.
  6. Click File then Add Session. An Add Session dialog box will appear.
  7. 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...)


    Session-ex8.png
  8. 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...

  9. Next you need to add another user or users in order to help collaborate or work on your song.
    Session-ex5.png
  10. In the Session Exchange application window, click the edit menu, and then select Add Collaborator.
  11. 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...

  12. 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.


  1. Launch the Session Exchange applicaton
  2. Make certain to create a new session using the EXACT name of the session as your friend's session name that is being shared.
    Session-ex11.png
  3. Make certain to add your username and Add your group member's username (in this case: msaul) as a Collaborator.
  4. Select the session, select the user, and then select the session name (either original file, or the dated "snapshot" file)
  5. Click the edit menu, then select Fetch Snapshot.
  6. If files are downloading, you should notice at the bottom of the dialog box a message indicating "connection made".
  7. When the message at the bottom of the dialog box reads, "connection lost", then the downloading process is completed.
  8. 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")...


Using Ninjam

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:

    http://ninjam.com/jamfarm/index.php

    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 a private area for user collaboration.


To be completed...


Additional Resources

Ninjam in a Nutshell (Basic Ninjam Guide)

Ninjam Website (Downloads, servers, Forums)