20 August 2008

Hacking the DigiTech JamMan

The DigiTech JamMan would be the perfect looper pedal if not for the fact that it's near impossible to sync to a specific rhythm. Not only does it not have MIDI capability for syncing to an external clock, it doesn't even show you the BPM. The best you can do is tap the tempo, and that's likely to drift in short order. It's useless in a live situation where someone else is setting the tempo.

Or is it? Here's a nice hack I came up with. For it to work you need to know the exact BPM. Hopefully there are some electronics in play that display it. It's not going to work if you're trying to loop to your pal's guitar noodling or worse yet, his JamMan. You're also SOL if you have to loop to anything other than a 4/4 time signature.

The big idea is to preset the JamMan with empty loops set for each BPM at which you're likely to play. The other folks in the band have to agree not to stray out the range you pick, so choose carefully. Me, I'm covered from 81 to 140 BPM. That leaves 39 loop slots to play with. I can use the extra slots for preloaded samples, making backups of common tempos, or recording tap stuff if I happen to be leading the band. Why 81 and not 80? Simpler math. I just add 80 to the loop number to get the tempo. Loop 01 is 81 BPM (1 + 80 = 81). Loop 40 is 120 BPM (40 + 80 = 120). Got it? The rest of this article uses my range as an example.

To start, connect the JamMan to a computer. The computer should recognize it as an external hard drive. The root folder is JAMMAN and there is a subfolder for each loop: LOOP01, LOOP02, etc. Copy the entire JAMMAN folder to your computer. That way if you screw this up you can undo the damage.

Next, make a LOOP subfolder for each tempo in the range. Start with LOOP01 and go up to LOOP60. It's fine if a folder is already there. Just make sure to delete the WAV file inside it. All that should be left is the LOOP.XML file.

When you have 60 subfolders, go through them and make sure each has a LOOP.XML file. If one isn't there, create one. It must be called LOOP.XML, with capital letters! If you misspell it or use lower case it won't work. Paste this bit of code into each new file:


<?xml version="1.0" encoding="utf-8">
<jammanloopsetup>
<loopmode>Loop</loopmode>
<tempo>21168</tempo>
<timesignature>2</timesignature>
<rhythmtype>1</rhythmtype>
<stopmode>Stop</stopmode>
</jammanloopsetup>

By the way, the leading space on the 3rd through 7th lines ought to be a tab, not a space, but it's a space above due to Blogger's limitations. Technically, the JamMan shouldn't choke on a space (whitespace is whitespace in XML) but I didn't write it's parser and can't say for sure. Use a space at your own risk.

Now you should have 60 subfolders named LOOP01 through LOOP60, each with its own LOOP.XML file. The next step is to edit each XML file to set the proper tempo. (You didn't have anything fun planned for the evening, did you? I didn't think so. Then again, I did this work for you if you happen to run Windows. Download the zip file here.)

Some genius figured out that the number inside the Tempo element is in fact the number of samples per beat. This bit of info plus the knowledge that the JamMan samples at the rate of 44,100 samples per second (CD quality) means we can calculate the proper Tempo for any BPM:


Tempo = 44100 * 60 / BPM


For example, 110 BPM yields a tempo around 24054.54545 samples per beat. How can you have a fractional number of samples? You can't, so round it to 24055. Even if you play a song for ten minutes, and I hope you don't, the difference won't amount to more than half a millisecond. So to review, you'd plug 24055 into Tempo under the subfolder for 110 BPM. In our example, that's LOOP30, because 30 + 80 = 110. Still with me? I recommend plugging the tempo formula into a spreadsheet for easy calculation.

Once you update all the XML files, copy the whole JAMMAN folder to another place on your computer. Put it in another folder called EMPTYLOOPS_81_140 or something that will remind you that it's a set of empty, precalibrated loops. This is to back up the work you just did and also insure yourself against accidentally hitting tap tempo and screwing up the JamMan. More on that later.

Copy JAMMAN from the computer to the JamMan and you're good to go. Disconnect the JamMan. Plug in your instrument and, if necessary, a rhythm source into the AUX jack. Remember, the goal is to sync the JamMan to an external rhythm given nothing more than the BPM.

Let's say you have a drum machine plugged into AUX. Set it to play something at 120 BPM. Dial up loop 40 on the JamMan. It's tempo light should be blinking along with the beat. Notice the pattern: One red light and three green. Your goal is to get the red light to blink on the first beat of the measure. The easy way to do this is to start the drum machine on the red light. If you have that luxury then it's all good in the hood. Otherwise, you have to use Auto Record.

As you may recall, in Auto Record mode the JamMan starts recording as soon as it receives an audio signal. Now it may go without saying, but for this to work there must not be any signal on the JamMan input at all until the moment you choose to play. This is obvious, yes, but must be stated. You can't expect to play a little bit of something and then start recording. The first sound you make had better be on the first beat. Note that you only have to do this the first time you record a loop -- you won't have to use Auto Record for overdubs.

Push the Auto Rec button (or tap the MODE button on the FS3X footswitch). You'll see the Auto Record button light up. Then tap the REC/PLAY/OVERDUB pedal. The Record light will blink red, telling you that the JamMan is armed. Listen to the drum machine. As soon as it hits the one, play something. Continue for two bars or whatever and hit REC/PLAY/OVERDUB again. If you're timing is good it's now looping seamlessly with the drums.

At this point you can overdub until your heart's content. There are two things to consider. First, do not hit tap tempo. Doing that will completely bung you up! You can't restore the tempo to what it was without re-connecting the computer. That's why it's handy to have some spare preset loops for tempos you plan to use a lot. Be extremely careful around the STOP/TEMPO switch. Second, if you want to save a loop you should first move to an empty slot (loops 61-99 in our example). That way you can erase the main loop and reuse the tempo. To do this, press STORE once, dial to the free loop, and press STORE again. Now dial back to the main loop, erase it (hold down STOP/TEMPO for a few seconds) and start over.

There are a lot of ways to optimize this hack. You can know in advance what tempos you plan to use. That way you use far fewer loop slots. If your range is small enough you can give adjacent loops the same tempo. This way you can create alternate loops and switch between them for a more complex arrangement. One scheme would be to assign a tempo to adjacent even-odd pairs. For example, from loops 01 to 06 the tempos might go 110, 110, 111, 111, 112, 112. If you're in a song that's at 110 BPM, you have loops 01 and 02 to fill up and switch between.

Happy looping. If you try this, drop me a line and let me know how it went.

12 August 2008

Metainstrument

Here's our live improv setup. It provides the ability to sample and loop anything, the ability to apply a wide range of effects, and gives us total control of the final stereo mix. Considerations have been made for portability and modularity, and it can change from a live rig to a recording studio just by moving a few cables.
Not pictured: Light show, smoke machine, video of bright, shiny things.