What is SynJam?
Joining the Band
Picking the MIDI
Playing the MIDI
Jamming Along
Using Microphone
Toy Status


Java Chat
Firewall/Router Help

Arcadia Toys:

Other Games:
Well of Souls
Rocket Club

TurnAbout API
New Parks
New WoS Worlds
Rocket Club Models

Synthetic Reality
Golden Souls
Donate $
Contact Us

synJam is one of the toys which can be played in Arcadia. It is a collaborative music performance and composition 'game'...

To get SynJam, download Arcadia then Fetch Toys

What Is SynJam?

It's a toy that allows everyone to hear the same MIDI file, and then to add their own notes to it in real time. You can add additional instruments and tracks to each song as you see fit, and save your results as new MIDI files which you can then share with your friends.

It's similar to the Collaboration toy, only for the ear.

The expectation is that the original MIDI file acts as a super-metronome (giving not only the beat, but the initial melody etc), and that over several passes the song takes on a richer life, until the original MIDI tracks can be removed and the song lives on its own.

And that's it. It's a head-on collision between a MIDI player and a multi-track recording studio, with Internet multiplayer elements and a little time travel thrown in for good measure. Get it.. measure? A music joke!

But How Do I Actually PLAY It?

Oh, you mean, how do you get your notes into the song? Well, you have three basic ways right now:

Virtual Piano

The main screen has a little picture of a piano keyboard on it, and you can mouse click on that. This requires no extra equipment, but you can only play one note at a time and it's easy to miss.

MIDI Controller

If you have something like a Electric Piano that has a MIDI-OUT plug, you can connect that to your computer (with an appropriate cable.. I like the MIDI-to-USB cables as the joystick ones never work right for me)


Something I am still working on is my microphone-to-midi decoder. When you have that turned on, then what the microphone hears is analyzed for pitch, and volume and then I synthesize MIDI key up/down events to match. At least in theory.

It's not really very good yet, and I find people are pretty intimidated as a rule to 'sing' into the microphone since other people can hear you. And if you're a good enough singer that you don't mind THAT, then you're probably pissed off that it doesn't do a better job capturing your beautiful voice :-)

You can also use all three methods at the same time, if you have enough hands.

How To Join The Band

Currently, only the Server Moderator can add players to the band. (In Arcadia, one player is the 'moderator' of the server - they have a little crown next to their name. If there is no moderator, you can grab the crown by right-clicking on your own name and selecting "Make Me the Moderator." You can also pass moderatorhood to another player).

To get someone in the band, the moderator right-clicks on their name in the Arcadia Player List and selects "Let X join the band"

No more than eight people can be in the band at any given time.

How to Pick a MIDI File

Note: a MIDI file is not an MP3 file. SynJam is all about the MIDI and can deal with no other file format.

In the upper right corner of the sheet music is a little set of buttons which I hope are familiar:

  • OPEN (a MIDI file)
  • SAVE (to a new MIDI file)
  • STOP (if the file was playing, this stops it)
  • PLAY (start playing the file from the beginning

The OPEN button opens a File Browser, rooted in the toy's "Midi" folder. (SynJam can only load MIDI files from this folder, or sub-folders of it.)

If you installed Arcadia to the default location, your MIDI folder will be here:


If you have a MIDI file you would like to use with synJam, you must copy it to this folder first.

How to Play/Fetch a MIDI File

Once you have Picked which MIDI file you would like to play, you can push the PLAY (right-pointing triangle) button to start playing it. Anyone can push their own PLAY button to hear the song, but if the moderator does it, then it forces *everyone* to play the song at the same time.

In the Arcadia player list is a column of information labelled "Song" which indicates whether you have the same version of the MIDI file as the moderator. If it says "same" then you do. Otherwise it will say "????" if you don't have the file at all, or some number if you have a file of the same name, but which appears to be different from the version the moderator has.

If you need to get the same version as the moderator, right-click on the moderator's name and select "Fetch Song From X" to start a download from the moderator. (Not everyone is able to serve files in this way, so you may need to try fetching from someone else who appears to have the same version as the moderator). You can only fetch files from the toy12/midi folder and its sub folders.

How To Jam Along With The MIDI File

If you're in the band, and the MIDI file is playing, then you can jam along to it. The easiest way to do this is simply to click on the virtual piano keyboard.

Of course, when I say 'easy', I really mean 'hard' or 'fiendishly difficult'

The really easiest way is buy yourself a MIDI capable keyboard and a matching cable to attach it to your PC. Then you can play on a real piano and have your notes sent to synJam.

And the WEIRDEST way is to use your microphone.

How To Change Your Instrument

You can use the Toy Options dialog to pick any of 128 "General MIDI" instruments. (some of them are kinda weird, and your fellow musicians will appreciate it if you don't just pick "gunshot" and "Helicopter" over and over again. Mercifully there is no "fingernails on chalkboard" -- but some instruments come close.)

As a convenience, you can also right-click on the piano to bring up a menu of your 25 'favorite' instruments. (It is pre-loaded with my own favorites, but each time you use the Toy Options dialog to select an instrument, that instrument is added/moved to the bottom of the right-click menu, so you can pre-load your favorite 'patches' for easy access)

NOTE: During the first recording pass of a song, you can change the instrument any time you like, but those instrument changes will become part of your 'track' and you will not be able to change them in later passes in the same recording session.

How To Change Your Delay

For this you have to use the Toy Options dialog. Leave it at zero if you don't understand it.

Because latency on the internet prevents two players from hearing each other in completely real time (well enough to meaningfully 'jam' together), each player can choose a time delay. Your time delay determines how much later in time you are hearing the MIDI file than the moderator is.

As a musician plays along to the MIDI as he hears it, his notes are sent to all the other players. Those players with a greater delay setting than the musician (i.e. downstream of the musician), will hear the musician's notes 'in the right spot' of the MIDI file, and can jam along with those notes in what feels to them like real time (even though the musician actually played those notes a few seconds ago).

Players who are upstream (lower delay) than this musician will NOT hear his (or her) notes during this pass of the MIDI, but WILL eventually get the notes added to their copy of the MIDI file, and will hear them in subsequent passes.

Visualize a river with the MIDI notes flowing down it. Each musician stands at a different spot on the bank and pours their notes into the river. Only listeners downstream of a particular musician hear his notes as they stream by. But the river is really an infinite loop and after awhile (the next pass), all the notes from the previous pass stream past you again.

Audience members generally have the highest delay, so they can hear all the notes in the same pass they were created.

How To Save/AutoSave Your Jam Session

Press the SAVE button to open a dialog which lets you save the current session. The dialog lets you choose to filter various channels from what gets saved (you can mute individual contributors, for example). You can also add a brief alphanumeric string to remind you what you liked about this session.

The file is always saved to your "midi/jams" folder. So on a normal installation, it will look something like this:

c:\Arcadia\Toys\Toy12\Midi\Jams\synjam-12345-me and bill-originalMidiName.mid

So, to recap:

  • it is in the sub folder "midi\jams" so it doesn't overwrite a file in "midi"
  • it always starts with 'synjam'
  • following that is a numeric time stamp, so you can tell what order you saved the files
  • It has your 'memo' text ("Me and Bill" in this example)
  • It has the name of the original MIDI file you played against.

You can also enable the auto-save feature (a checkbox on the Toy Options dialog) which will automatically save 'interesting' Jam sessions (with the memo set to "autosave")

Right now a jam session is interesting if it has 'enough' notes added by actual players (not just the original MIDI file)

Muting/Clearing Tracks

From time to time, you might wish to mute one or more tracks, or even to completely empty a track of notes. SynJam gives you two interfaces for this:

Muting Via the Player List

Right-click on a band-member's name and select "Mute X's Instrument." This will mute notes being played in this pass by that player. (Right click again and select un-mute to bring them back).

Muting Via the Options Dialog

The options dialog has a list of all the tracks (players plus the original MIDI file tracks). Right click on any one of them to get a list of options:

  • Clear This Track (Completely remove all notes from track)
  • Mute/Un-Mute this Track
  • Mute All But This Track
  • Un-Mute All Tracks

The Clear Track feature is the only one which actually deletes notes from the track. Use it when you don't want to keep anything played on that track. Note that some MIDI files put multiple channels of information in a single track.

How To Earn Bravos

As you play the game, you earn performance points for taking part. This makes your "Rating" change (as seen on the Arcadia Player List... I am a "Player/Groaner with 0 Bravos")

As I earn points, I earn the right to bestow "Bravos" on other players (I can NOT give MYSELF Bravos...but I do earn good karma for giving Bravos to others).

The actual mechanisms that generate points must remain a secret, but you can bestow a Bravo on another player by right-clicking on their name and selecting "Applaud X (I can give up to N Bravos)"

The idea is you get Bravos when other people give them to you. And they have to first earn some performance points (by playing) before they can give Bravos. When I give you a Bravo, it does NOT make me lose any Bravo's other people have given me, it just spends some of my earned points.

How To Use Your Microphone to Jam

Warning: This is kinda creepy at the moment, and works best if you croon gently in your highest falsetto voice (ergo, perfect for maximizing your embarassment!)

Basically this depends on using the Arcadia Speech feature, which is enabled by clicking the little microphone toolbar button. This opens the Arcadia Microphone window. Set the mode to "Push to Talk" and then right-click on the push to talk button (right-clicking makes it stay down without your having to hold your mouse on it. Click it again to turn it off)

It will then complain that you should click on someone's name (and if you do, you will be sending voice TO THEM, and they will get a good listen to your embarassing falsetto) You probably don't want to do that, since it will also cause a lot of lag during the jam session.. (so maybe I will disable that)

Anyway, if you were successful, an extra window will appear on the Sheet Music, with lots of squiggly lines in response to what the microphone hears.

This still won't actually 'play the piano' until after you open the Toy Options dialog and click the checkbox for "Use Microphone As Controller"

Once you do that, you will see it start to plink away at your Piano keys in response to what it hears. Heaven help us all.

SynJam Options

You open the options dialog by clicking on the Toy Options toolbar button (that's supposed to be a wrench on a baseball) It has three basic sections.

MIDI File Information

This summarizes the current MIDI song, and duplicates the load/save/stop/play button. The play button also doubles as a pause button, but this is local to you only (other people do not pause, not even if you are the moderator.. and come to think of it, there is a chance that when you resume from pause, as moderator, you will actually force everyone to start over from the beginning)

Your Preference Settings

  • Your current instrument (also adds instruments to the bottom of the right-click-on-piano favorite 25 menu
  • Your current delay (how far downstream you are from the moderator)
  • Autosave enables automatic saving of 'interesting' jam sessions
  • Decorate Keyboard adds green lines to notes used by the MIDI (to help you stay in key)
  • Use Microphone as controller - lets mic input generate note events.

The Current Track List

The dialog is resizable, so you should be able to see all the tracks at once. The list includes all the tracks from the original MIDI file at the top, and then the 8 musician tracks (for the current pass) below that. Right-clicking on a track gives you the muting/clearing options for that track.

More About MIDI - Events, Channels, Tracks, and Streams

For our purposes, MIDI is just a way of 'describing' a piece of music.


As such, it is a morass of individual time-stamped "events" where an event is something like "I changed my instrument to the flute", "I pressed down on the 'C' key of my piano", and "I lifted the 'C' key of my piano"

SynJam puts very little between you and the events. The SynJam Sheet Music shows you the start and end events for each note, and draws a colored bar between them so you can see 'how long' each note lasts. In traditional music notation, the individual notes are 'decorated' (solid oval, hollow oval, with varying squiggles added to let you know how long the note is held. This uses less paper, but doesn't give you a natural feel for the length of the note, and is not great for showing multiple instrument parts at the same time.) OK, OK, I am rationalizing.. I draw the score the way I do because it was fun and easy to do it that way. I won't try to defend it any more than that :-)


A MIDI Song can have up to sixteen 'channels' in it. You might think of a channel as being an instrument. One channel might be a piano, while another is a flute. The piano channel can be playing multiple notes at the same time (all ten of your fingers mashing keys on the piano, for example), while the flute channel can only play a single note at once.

In theory, two flutes could share the same channel for the most part (each being just one of your piano fingers, as it were), but the problem would come in when both flutes wanted to play the same note at the same time. The MIDI channel would then get confused (like two fingers both mashing the same piano key.. there is only one note to be played, and if the fingers wanted different start and end times for that note.. well.. it would be weird)

So, in general, each instrument gets its own channel. And thus each MIDI event includes a timestamp, a description of what sort of event it is (key down, key up), the key in question (A above middle C), and the CHANNEL it is assigned to.

Over the course of a song, a single channel can change instruments, so that it is a flute for awhile, then a piano, then a flute again. So from that perspective, perhaps it is better to think of a channel as being a musician, with a bank of instruments lying about them, and the ability to put one down and pick another up without missing a beat.


When you record a MIDI song to disk as a '.mid' file, you are basically writing down those million events. You could just write them down in one big pile and be done with it. And some MIDI files do exactly that. But others try to be nicer and break the events into logical categories (like the channels) and save each channel's events in a separate 'track' of the recording. (Why not just call it a separate 'channel' of the recording? Well, you can have many more than 16 tracks). Additional tracks can be used to hold 'meta info.' For example, many MIDI files use several tracks just to hold Title and copyright text information about the song. (This is nice, and you should respect that).

And, just to be confusing, many MIDI files mix it all up, with some tracks holding NO midi channels, some holding one MIDI channel, and some holding multiple MIDI channels of events.


This is just a synJam word in this case. When I say stream, I mean "a source of MIDI events." When synJam first opens the MIDI file, it creates N streams (one for every track of the .mid file). Then an additional 8 streams are created for the 8 players. When I press a key, the MIDI event for that is placed in MY stream. (it is also sent to all other players, who then add it to the stream they have reserved for my notes).

So, each stream is an ordered list of MIDI events.

Then, when the time comes to PLAY the composite MIDI song, synJam pulls the events from all known streams, in order and sends them off to your computer's MIDI out driver, who then does the magic of actually turning those events into sound.

SynJam's time-travelling ability allows each person on the server to be feeding their MIDI out driver at a different point in time, so that downstream players get all the events from the upstream players in time to feed them to their MIDI out driver without it becoming 'starved' for input (and adding a stutter to the song).

But I try not to actually use the Stream word in the game, and just make you think there are a lot of Tracks (some of which were in the original MIDI file, and some which are just related to the musicians on the server.)

Tell Me More About The Main Display - What's with the lines?

The Main Screen has... Three sections (not counting the regular Arcadia stuff like chat and player list)

Score Sheet

This is Uncle Dan's Own Version Of Music Notation. It borrows a bit from every other form of notation. That vertical line down the middle is 'now' and the music scrolls under that line. You 'hear' a note when it passes under that line. Notes are horizontal bars which indicate their start and end (so a long note is a longer bar). Most of the song's notes are 'grey' but the 'selected stream' notes are colored.

You can sort of make out a standard musical staff (two groups of five horizontal lines each, with a treble and bass cleff graphic - not necessarily drawn in the right place, I point out)

It's currently just an output device, but if you are downstream of another musician, you will see their notes appear to the right of the centerline (and upstream player notes will appear on the left side, but you won't hear them until the next pass.)

In general, the notes from the MIDI file are a light gray, and the notes coming live from the musicians are different colors (each musician has their own color). And finally, the 'selected' track is in a easy to see darkest color.

Virtual Piano

Along the bottom of the window is a little piano keyboard with the seven most popular octaves (my opinion only). Use your mouse and click on it. You're a musician! It only works when a performance is in progress. Note that it also shows the keys being played by the 'selected track'' (the highlighted notes on the Score Sheet)

Microphone Status

When you have the microphone stuff turned on, you will see analysis info in a little black window in the lower left. Think of it as an oscilloscope with a computer watching it and looking for notes in the chaos.

Please just tell me what to DO!

Sure! Let's say you and two friends want to try it out. Your names are Alan, Bekki, and Celeste. Alan and Bekki like to play instruments, but Celeste just wants to listen.

  • All three of you start up Arcadia and join the same server and select synJam. Let's pretend Alan is the moderator
  • Alan then right-clicks on both his own name and Bekki's name in the PLAYER LIST and selects "Let <name> in the band!"
  • After that, Alan and Bekki will show extra decoration in the player list, so you can tell they are musicians.
  • Alan, Bekki, and Celeste then each open their Toy Options dialog.
  • Alan picks an instrument (let's say a piano) and sets his 'delay' to 0. (everyone wants to hear him)
  • Bekki picks an instrument (let's say a cello) and sets her delay to 3 (she wants to hear Alan 'in local real time', so she makes herself 3 seconds downstream of him.)
  • Celeste doesn't pick an instrument, but sets her delay to 6 (she wants to hear both Alan and Bekki in 'local real time')
  • Alan also pushes the Open MIDI button and picks a starting midi file
  • Everyone sees when that happens, and they get a little message if they don't have that file. They could right-click on Alan's name in the player list as 'fetch' the MIDI file from Alan.
  • Alan pushes PLAY (and since he is the moderator, this causes everyone to play the MIDI file)
  • Alan hears the MIDI file start immediately
  • Bekki hears the MIDI file start 3 seconds after Alan hears it
  • Celeste hears the MIDI file start 6 seconds after Alan hears it (and 3 seconds after Bekki hears it)
  • Alan then clicks on his virtual piano ('along with the midi file')
  • Alan hears his note immediately, and sees it appear on the sheet music in time with the MIDI file.
  • Bekki hears Alan's note 3 seconds later, but on the same spot on the sheet music (which is running 3 seconds behind Alan)
  • Celeste hears Alan's note 6 seconds after Alan pressed it, but also sees it in the right spot on her sheet music
  • Celest also hears Bekki's notes in the right place on the sheet music.
  • But Alan does NOT hear Bekki's notes.. he does see them appear 'in the past' on his sheet music, but they arrive too late to be heard
  • The song comes to its end, and Alan and Bekki are tired of adding more notes, so Alan presses STOP
  • Alan hears the music stop as soon as he presses STOP
  • Bekki hears it stop 3 seconds later
  • Celeste hears it stop 3 seconds after that.
  • Alan then presses PLAY again and it all repeats as before, only this time EVERYONE hears Alan's and Bekki's notes from the first pass. Alan and Bekki can now add additional notes, with the same who-hears-what as during the first pass

I can't get it to WORK!

NOTE: You probably have to wait for Arcadia to finish playing its opening theme music before you can successfully open MIDI files in synJam -- Ironic, huh? If you just can't get it to work at all, try disabling music from the ARCADIA options dialog.

I expect you're not alone. But work through this:

  • download and install toy as normal, play it in SOLO mode
  • click on the Top Options tool bar button (baseball with wrench on it, on the far right)
  • click on Select MIDI and pick a song
  • click on PLAY
  • If you don't hear anything, then check your MIDI volume (windows volume control) and generally verify that you CAN play midi files in general. But there may be conflict if you have two MIDI playing programs running at the same time.
  • Make sure you are the moderator and then right-click on your name in the Arcadia Player LIst and "Add XXX to Band" which makes you a musician
  • If you do hear it PLAY the selected song, and the Score Sheet is scrolling along, try clicking on the virtual piano. You should hear what you play, and see your notes get added to the Score Sheet.
  • Now, attach your MIDI keyboard if you have one and press its keys.. you should see its notes get added just like when you used the virtual piano.

The microphone analysis code is fairly math intensive, so you might find your computer is not up to the task. You really aren't missing that much yet. I have lots of work to do on that feature.

Toy Status:

The game is fairly complete for its original objectives - allowing people to Jam together in semi-real time, using a MIDI file as a meta-metronome. Now it just needs a little spit, polish, and game attributes added.

To Install Toys:

  1. Run Arcadia
  2. Select your 'channel'
  3. Push the "Check for New Toys" button
  4. Follow Instructions.
  Copyright 1999-2014, Synthetic Reality Co. All Rights Reserved