iJam was created to lower the barrier to entry for collaborating musically with others. People are often unable to do so for a number of reasons. People:

  • typically need to be in the same room
  • can't afford instruments
  • can't relocate instruments easily (e.g., drums)
  • lack the technical expertise to set up existing systems

iJam is a mobile application for the iPhone which facilitates networked, collaborative music making via musical "sessions." Users can play either play an instrument by themselves or "share" playing an instrument. Either way, this is then heard by all members of the session. It features multiple virtual instruments playable via multi-touch and gesture-based input mechanisms (accelerometer, etc). iJam is designed to make it effortless to quickly collaborate with others.

To start, a player can either create a new session or join an existing one. Sessions can be configured to be Wifi-based or Bluetooth-based, with both using Apple's Bonjour service to broadcast their presence.

Figure 1: iJam main application screen

From here, the user can select from (currently) a few instruments, including drumelectro, rhodeybass, and metronome. These are synthesized using Pure Data software. iJam uses this extensively for its audio back end, and Pure Data's port to the iPhone is available as the open-sourced pdlib on this site.

Figure 2: iJam simplistic 'drumelectro' interface. Drums are movable. Note the timeline above.

iJam can currently be used in two different "modes": sequenced or free-form. The two modes can be toggled by selecting the red record button on the options pane for the instrument. When in sequenced mode, all notes played are recorded on the timeline and played back on all future iterations of the loop unless the timeline is cleared.

Currently iJam requires a server with Ross Bencina's oscgroups server software to be running on a local machine, but this will be integrated into the host iPhone in the future (this allows for completely serverless session creation). Once connected, clients use UDP multicasting to send OSC messages directly to other session participants.

I've been working on the project as part of my senior design class, and plan on continuing work throughout the Winter 2010 semester. My group and I are on target to have iJam available on the App Store in Spring 2010. Subscribe to my blog if you're interested in its development.