Intelligent Music Jam Factory
Software for Apple Macintosh
If you're lucky enough to have an Apple Macintosh computer, you can now take advantage of a revolutionary new program that improvises its own music based on the data you feed it. Review by Jim Burgess.
Once upon a time, computer software simply recorded music and played it back, but now it can improvise music of its own. Are the results listenable?
IN A CROWDED music software market where hundreds of companies compete for the consumer's cheque-book, sheer originality scores big points. After all, how much does the world need yet another sequencer program? The chances of a new program's success are that much better if it offers something so revolutionary that it simply cannot be compared to anything else in existence.
Case in point. Intelligent Music of Albany, New York, USA. A fitting name indeed for a company that produces a new breed of music software: composition programs designed not only to record musical performances, but to permit the user to manipulate, control and interact with the performance of a composition in real time.
Intelligent Music's first two offerings are formidable. Jam Factory, reviewed here, is an improvisation-oriented performance program. Next month we'll take a look at their second program, M, which is a music processor that accepts input from a variety of sources and permits the real-time manipulation of a performance by means of controlling a wide range of musical variables.
Both programs are written exclusively for the Apple Macintosh, and take advantage of the type of graphic control capabilities that have made the Mac such a favourite among well-heeled music software users.
Jam Factory uses four "Players" to analyse what you play and then creates "intelligent improvisations" consisting of likely variations on what you originally played. While Jam Factory is playing, you can alter the performance of each individual Player in a number of ways.
You "teach" Jam Factory's four Players how and what to play by recording MIDI data into them from any MIDI source. Their improvisations are based on the musical material you give them to work with; so the less you give them, the more predictable the results.
The basic musical material you give the Players is placed in what are known as Transition Tables. These are designed to keep track of the transitions between notes in such a way that each Player can perform intelligent improvisations based on the data that's entered into it.
Precise real-time control is offered over the performance nuances of each Player with a range of control functions that includes the ability to alter the timebase, accent and duration patterns, the swing factor and even the percentage of silence.
All performance parameters may be altered while Jam Factory is playing, either directly on the screen or with the program's unique Input Control System that lets you use any MIDI controller to access Jam Factory's functions via MIDI note commands.
Combinations of Player settings may be stored as a Preset, and you can switch from one Preset to another without stopping the program. This way you can create countless performance variations for the Players and switch between them to "arrange" a Jam Factory performance.
Finally, you can store an entire Jam Factory performance as a "Movie" and recall it later, or convert it into a MIDI file compatible with other music software.
THE MAIN SCREEN consists of the four Players; a master Control Strip where most of the overall functions of the program are located; a Preset window that is used to store settings for the Players to enable quick changes during performance; and a Conductor window that's used to store Movies of Jam Factory performances. In addition, there are a number of other windows that are accessed from pull down menus when you need them.
Getting around Jam Factory's screen is easy, thanks to some great graphics and the use of familiar Mac-type controls like buttons and toggles. Users of Opcode's DX Editor (also written by Jam Factory author David Zicarelli) may recognise the familiar Up and Down arrows that can be used to increase or decrease numerical values with the mouse.
The Control Strip is where most of Jam Factory's master controls are located. Tape recorder-style buttons are provided for functions like Go, Stop, Pause, Sync and Clear. Below these are overall tempo and metronome click values.
The Assignment Matrix is where the general state of each Player is defined. Here the functions Record, Play, Transpose, Control and Echo are available for each of the four Players, and you can alter the status of a particular Player at any time during its performance.
The Record function on the Control Strip window is used to record incoming MIDI notes or program changes into that particular Player. Any combination of Players may be set to Record at the same time, and you can switch Players in and out of Record while Jam Factory is playing.
Entering Record on a Player that has already been recorded on allows you to add new musical information to that Player. If you want to start all over again, you can clear a Player's memory and start from scratch.
"Getting around Jam Factory's screen is easy, thanks to some great graphics and the use of familiar Mac-type controls like buttons and toggles."
Jam Factory has an Input Note Limit feature which you can use to tell a Player not to record incoming notes that do not fall within a specified range. This is a great feature if you're using a synth or sampler with multi-split capability, because it lets you set each of Jam Factory's Players to respond only to a specific range that matches a certain sound.
By the way, each of Jam Factory's Players can be set to recognise incoming MIDI data on a specific MIDI channel only (the default is "All"). That way, you can have several people "jam" at once, each with their own MIDI controller. Another handy application of this feature is "bouncing" MIDI data from an external sequencer into Jam Factory - so you can record separate sequencer tracks into the four Players simultaneously.
Now, you can record one Player while you play others, but one unusual effect is using a Player in both Record and Play modes at the same time. As you record new notes and chords to the Player's existing data, you can hear the effect of doing so immediately in the playback of that Player.
If you make a mistake when you're entering musical information into a Player, you can correct it with Jam Factory's Input Editor. This is a pop-out window that lets you step backwards and forwards through the musical data relevant to the selected Player. The Input Editor can also be used as a step-time entry system.
Parameters can be copied from one Player to another using standard Mac editing commands like Cut, Copy and Paste. It's possible to edit specific Pitches, Durations and Player Settings independently, so you can combine the pitches of one Player with the durations of another.
Each Player can be assigned a specific MIDI output channel, and you can change the output channel as Jam Factory plays, to allow any Player's performance to be routed to different sound sources. Jam Factory can also send program changes for each Player.
There's an Echo function available for each Player, designed to send incoming MIDI data to the appropriate output channel - a welcome feature for those using systems with a master controller and a number of slave sound sources. And the Echo function works whether or not Jam Factory is playing.
The Transpose feature is designed to permit real-time transposing of any combination of Players during a performance. Middle C represents the original pitch you recorded at, and selecting any other note on your MIDI controller causes that Player to transpose by the appropriate amount. One interesting use of this feature is to transpose a Player assigned to a sampler using some percussive sounds; the rhythm remains intact but the samples being triggered change, often creating an unexpected and usable variation in a performance.
Finally, the Input Control System may be enabled for each individual Player, permitting the user to access Jam Factory's various controls and functions from any MIDI source. This unique interactive feature lets you do things like start and stop the program, turn Players on and off, set the tempo and even change Presets - all without leaving your MIDI controller.
EACH JAM FACTORY Player can have its own unique identity if you utilise the many graphic control functions available in the Player's Control Window. Here the nuances of any Player's performance may be altered by the user, permitting some sophisticated ways of interacting with a performance.
The Player's relationship to overall tempo may be controlled by changing the Time Base value. Changing from 1 to 2 causes a particular Player to play in half time relative to the other Players, for example. You can also change the phase of a Player's timing, to offset a Player's performance by a certain amount of ticks or clock pulses. Experimenting with both of these parameters can yield some highly unusual rhythmic patterns.
There's also a Swing parameter available to setup shuffle-type rhythms in much the same way as a drum machine does. The Swing factor is a variable percentage from 50 to 90, with 50% (or no swing) being the default.
Jam Factory uses a unique graphic display to allow you to alter the dynamic accents and phrasing of a performance. An Accent Pattern can contain anything between one and 16 steps. You can use the mouse to set up five different Accent levels, where zero equals no value and five equals full value. The Accent Pattern can be assigned to either Velocity or Legato/Staccato (phrasing).
Exactly how much of an effect the Accent Pattern has on these two parameters is determined by the Range Bar settings. By dragging the mouse over the desired range, you set the high and low values for both velocity and phrasing. You may also choose to use a random value rather than the Accent Pattern to determine actual range values.
"The purists may claim that what this program produces is not real music, but if they do, they'll be missing the point: using Jam Factory is fun."
This is a pretty powerful system. By assigning Accent Patterns to velocity you can dramatically alter the "feel" of a Player's performance. A value of zero can be used to create a "rest" in the Accent Pattern that will result in no note being played at that point in the cycle. And by setting up several Players with Accent Patterns of different lengths, you can create rhythmic cycles that play off each other in a constantly changing manner.
Jam Factory's Silence Algorithm provides the user with total control over the amount of randomly inserted silence in a Player's performance. You may vary the percentage of Silence anywhere between 1 and 100. The Skip control is used to determine whether a silent section will cause the notes that Player would otherwise be playing to be skipped over during the silent section. If Skip is off, those notes will simply be delayed and the Player will carry on playing from where it stopped after the silence is over.
You can also enable Sustain, which causes the note immediately preceding the silent section to be sustained over it. Otherwise, all notes are silenced at the beginning of the silent section.
The bar graph located in the upper right-hand corner of each Player's window is used to control the improvisational ability of each Player. The "bars" control the Transition Tables discussed earlier, and allow the user to specify a percentage of mix between first, second, third and fourth order. Essentially, the Transition Tables control the degree to which the program will mimic the original musical input. Using the principles of statistic probability, you control how much previously played musical information the program takes into account when deciding which note to play next. First Order will take a lesser amount of events in context than Fourth Order, for example. By the way, you can defeat the Transition Tables altogether and have the program play back exactly what you played into it, if that's what you require.
You can also use the Transition Tables to calculate the durations of the notes Jam Factory plays. Cyclic duration patterns may be created, and you can instruct the Player to either Lead or Follow pitch-changes to decide whether the rhythm determines the melody or the melody creates the rhythm.
Another unique feature of Jam Factory is known as Scale Distortion. It's designed to let you create unusual transposition patterns of a diatonic nature. By setting up a series of Scale Distortion Maps, you can define certain keys to trigger specific Maps, and thereby create a melodic variation for any combination of Players.
Jam Factory's Player controls are really designed to let you give each Player a unique identity and style. However, you may want to create quick changes in those parameters during a performance. That's what the Presets are for.
Storing a Preset is just like taking a picture of Jam Factory's screen. You recall a stored Preset just by clicking on it. Selecting a Preset during a performance can initiate a total re-configuration of all Jam Factory's settings, creating dramatic musical changes if desired.
And you can use Jam Factory's Movie feature to store a complete Jam Factory performance, including Preset changes.
THOSE ONE-IN-A-MILLION JAMS that go down wouldn't be much use if you couldn't save them. Fortunately, Jam Factory lets you save your files so you can repeat them and work on them at a later date.
By the way, Jam Factory can be synced to MIDI Clock either as a master or as a slave, so running it in sync with a sequencer, drum machine or other sync device is no problem.
If you set up some of the Players to respond to the Input Control System described previously, you can use an external MIDI sequencer to "automate" Jam Factory's controls, turning Players on and off, controlling the Step Advance feature, changing Presets, and just about anything else you might want to do. This way, Jam Factory can be "cued" in and out of a sequence when desired.
Furthermore, Jam Factory provides a means of converting a jam into a sequence file with the inclusion of the new (American) MIDI File format. When you save a Movie, Jam Factory creates a MIDI File. You can open a MIDI File directly into another program such as M or Opcode's Sequencer 2.5, allowing you to take improvisations created on Jam Factory and edit or manipulate them with other software.
That means you can combine a Jam Factory improvisation with a pre-defined MIDI sequence. Or you can use a sequencer to provide a more advanced means of structuring and arranging music generated by Jam Factory. You can even go the other way, taking an existing sequence and feeding it into Jam Factory for some jammin' fun.
I've had lots of time to get to know this program, having used a copy for several months and created over 30 pieces of music. Each piece is unique and has its own identity. Generally speaking, I've found that the program works best when you give each Player a rather limited amount of musical input. But as with most things, the more you use Jam Factory, the more you understand how to get what you want out of it quickly.
The purists may claim that what Jam Factory produces is "not real music", but if they do, they'll be missing the point. Using Jam Factory is fun. F-U-N. It makes it easier than ever for non-players to create music, but equally, the program is only capable of manipulating the input you provide it with, so some people will get great results while others simply create noise.
Programs like Jam Factory move the MIDI revolution forward in leaps and bounds. It's a musical tool more powerful than anything we've had in the past, and it's capable of adding new inspiration to the music-making process.
Gear in this article:
Review by Jim Burgess
mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.
If you value this resource, you can support this project - it really helps!