Sweet Fruit, STRANGE Fruit

People who have been using Image-Line Software's Fruityloops for a while tend to be fanatics about it and with good reason. From its humble beginnings

People who have been using Image-Line Software's Fruityloops for a while tend to be fanatics about it — and with good reason. From its humble beginnings as shareware, the program has grown into a monster, packed with esoteric features and capable of a surprising range of musical effects. Fruityloops isn't a conventional sequencer, however; nor are its included software synths run-of-the-mill. Because its primary orientation is toward dance music, and because new bits have been grafted on as it has grown, finding the power tools you need isn't always a snap. In this article, I'll cover some advanced applications that you may not have known Fruityloops was capable of, from using sampled loops to coaxing evocative tones from the mysterious BeepMap.

I'll assume that you've installed Fruityloops 3.5 or higher and have prowled through the Help manual. If neither the Help section nor this feature answers your questions, a great resource is the online forum at www.fruityloops.com. It appears the Image-Line staff monitors traffic there, as I've gotten answers within minutes. You can download the example Fruityloops song files that are mentioned in this article from the EM Web site. (There are also MP3 examples, so you won't need to download and install a Fruityloops demo to hear these techniques in action.)

As of this writing, Image-Line is starting to drop hints about the new features in 4.0 — cool stuff, like variable-length patterns that can be triggered anywhere, not just on bar lines. But there's plenty to talk about in 3.5, so let's get started.


You might have noticed that Fruityloops' Shuffle slider operates globally for the entire song, delaying all of the offbeat 16th notes by some fixed amount. The way to get pinpoint control over the rhythmic feel is to forget about the slider and edit your patterns note by note. That takes more time, but depending on what you're trying to achieve, it can be well worth the effort.

For a modest example, download shuffle.flp or shuffle.mp3. This hip-hop drum groove (shown in Fig. 1) uses the Shift parameter to delay various offbeat 16ths by different amounts. Simply click the controller button at the upper-right corner of the pattern, click the green light next to the track that you want to edit, and slide the selector all the way to the right to the Shift position. When an offbeat note is followed immediately by an onbeat one, I usually lower the Velocity of the offbeat note a little, as well.

The most useful shift values for programming shuffle rhythms lie in the bottom quarter of the range. But by pushing the Shift for an offbeat 16th up near the top, you can create a flam (double strike) on the following beat.


Because Fruityloops offers so many tools for creating your own beats, you may not have noticed that it can also import — and even tempo-match — sampled beats. Just create a new Sampler or Granulizer generator, load the loop into it, and then adjust it to fit the tempo. Although the Granulizer's time-stretching feature isn't as high in quality as the ones in programs like Sonic Foundry's Acid, you can adjust the tempo using its Grain Spacing or Wave Spacing knobs. Another option is to purchase Image-Line's BeatSlicer (Win, $35), which does ReCycle-style splitting of drum loops. BeatSlicer loops can be played back by the Fruity Slicer generator. I generally use a Sampler for importing beats, but the method described below can also be used with the Granulizer.

Let's go through the process step by step. After creating an empty Sampler instrument in the Channels/Add One menu, click on the button labeled Sampler in the Step Sequencer to open the instrument's Channel Settings window. Next, click on the SMP button to display its SMP (Sample Parameters) page. The sample assigned to this instrument is “(none).” Clicking on the folder icon will open your computer's File/Open dialog box, where you'll be able to select any WAV file you like.

Choose a two-measure sampled loop. Once you've mastered the technique, you'll be able to use shorter or longer loops as needed. Before going on, you might also change the name of the instrument to SampLoop (by clicking on the little waveform button in the upper-left area of the Channel Settings window).

At this point, we come to a fork in the road. Using the loop at its original tempo is different than adapting it to the tempo of an existing song — it's a little trickier, but not much. Just create a two-bar note and then adjust Fruityloops' tempo until the loop sounds right.

Here's how: in the Step Sequencer, click in the first box of the SampLoop to create a note that will trigger the sample, but don't hit the Start button yet. Instead, right-click on the SampLoop instrument button and select Send to Piano Roll. Assuming your pattern is only one measure (16 16th notes) long, and the loop is two-measures long, you'll need to extend the note so that it lasts for two measures.

After doing that, click the Start button. (You should be in Pattern mode, not Song mode. Also, it will be easier to hear what's going on if you mute any other instruments that are being played in the pattern.) The orange triangle will proceed across the top of the window, and you'll hear your loop. Unless the tempo of your song happens to already match the tempo of the loop, one of two things will happen: either there will be a gap at the end of the two-measure phrase before the loop repeats, or you'll hear an overlapping collision of sound on each repetition. Raise or lower Fruityloops' tempo setting as needed until the loop cycles smoothly.

If you like the tempo, you're ready to start working on a new song. But let's say you'd like to change the tempo of the loop. That is even easier.

Create a two-measure-long note, as before. Then go to the lower-left corner of the Channel Settings window and grab the Fit parameter with the mouse. Set it to 32, as shown in Fig. 2. That is the number of 16th notes in the loop. Once you've set a value for Fit, the loop will automatically change tempo to match your song.

Fruityloops adjusts the tempo of samples the old-fashioned way, by changing their pitch. If you're changing the tempo up or down by only a few beats per minute, that probably won't cause any undesirable sonic changes in the loop. If there are extreme changes, you might even decide you like them. Maniacally sped-up drum loops are a staple of some dance styles.

When the Fit parameter is active, you won't be able to change the pitch of your sample by moving the notes up or down in the Piano Roll window. But you can produce syncopated stuttering effects in which the sample is restarted at some point in the pattern by shortening the main note and inserting new ones. You can even use the Edit/Chop command in the Piano Roll to make machine-gun fills. (You'll need to set the Sampler's volume envelope to instant attack, no hold, and instant release for the chop to work properly.)


When it comes to responding to both internal and external controller data, Fruityloops is more powerful than some programs that cost five times as much. But its documentation on how to customize the controller setup, especially about using mathematical equations, is pretty sparse.

If you think Fruityloops has only DAHDSR envelope generators, think again. With the Peak Controller (available only in the Fruityloops Full version), it's easy to create multisegment envelopes. In fact, the envelopes can be different from note to note. To explore this technique, you can download the controller.flp file, which is ready to go; follow the steps in the excellent online tutorial on www.fruityloops.com; or proceed as follows:

  1. Set up a drum pattern that you like.
  2. Create a bass line, perhaps something with some sustained tones using a 3xOsc instrument. Drop the filter cutoff and add a quick filter-envelope blip at the beginning of the notes.
  3. Add a Sample instrument and load a kick-drum sound into it. We won't listen to that instrument; it's a modulation source. Program some offbeat accents into it during the bass tone's sustaining notes.
  4. Assign that instrument to its own effects bus and add a Peak Controller effect to it. You'll stop hearing its output because the Peak Controller's audio output is muted by default. (Notice the little checkbox in the lower-right corner.)
  5. Select your bass instrument, right-click on its filter-cutoff knob, and choose Link to Controller. That brings up the Remote Control Settings dialog box (see Fig. 3). I always uncheck the Remove Conflicts checkbox at the lower left, as I often want to assign one controller to several parameters.
  6. Select Peak ctrl - Peak. When you click OK, the output of the Peak Controller will modulate the filter cutoff of your bass tone.

You may need to fiddle with parameters to give the right shape to the rhythmic pulses added by the Peak Controller. Start with the filter cutoff of the bass synth and the knobs in the Peak Controller itself. You can also play with the Vol envelope in the instrument you're using as the input for the Peak Controller.

Note that the Peak Controller's Dec (decay) knob is implemented backward: moving it to the left will give you a longer decay. The Vol knob is bidirectional; turning it left of center will cause peaks in the input to lower the output value, which means you'll need to turn the Base value up so the peak will have something to subtract from.


Once you've linked a knob or an external MIDI input to a controller, you can customize the parameter's response to the controller by typing an equation into the Mapping Formula box (see the sidebar “Fruityloop Formulas”). The mapping formula is used by Fruityloops to process any controller data assigned to the knob you've chosen. Don't be put off by the math; even a simple equation can give you musically useful results.

Until you enter your own equation, the Mapping Formula box will say Input. Input means “pass the input on to the knob on a 1:1 basis.” If you leave the formula as is, a minimum controller value (0) will turn the knob completely to the left, while a maximum controller value will turn the knob completely to the right. For musical purposes, processing the controller data is often useful.

When creating formulas in Fruityloops, keep three things in mind:

  1. Although MIDI controller data has a 0 to 127 range, Fruityloops “normalizes” all controller data internally to a 0 to 1 range before processing it.
  2. To be useful, the output also needs to be in the 0 to 1 range. Values less than 0 will simply turn the knob hard left, and values greater than 1 will turn it hard right.
  3. If you've done any computer programming, you may have heard that multiplication is faster than division. With real-time processing, it's usually better to multiply by 0.5 rather than to divide by 2. You can't do that with a Fruityloops formula though, because decimal values for constants aren't recognized. If you want to cut the “throw” of the input controller in half, use the formula (Input/2). (In computer programming, the symbol “/” is used for division, and “*” is used for multiplication.)

Let's use these ideas to add real-time control of filter resonance. For this experiment, you'll need an external MIDI keyboard with a mod wheel or joystick connected to your computer. First, make sure Fruityloops is set up to receive MIDI data by going to Options/MIDI Settings and choosing the Remote Control Input where your keyboard is plugged in. When you select a Fruityloops instrument and play the keyboard, you should hear it.

Right-click on the instrument's Res (resonance) knob and choose Link to Controller, as before. Uncheck both the Remove Conflicts and Auto Detect boxes. Auto-detection is handy for wiggling a controller and having it assigned automatically, but auto-detect will also close the dialog box.

For the resonance-control mapping formula, enter the following:

(Input/2) + ¼

Now click on OK and move your Mod Wheel. You should see the Res knob move from about 9:00 to about 3:00. This is a useful range for adding thicker resonance to a synth tone such as an analog-style bass.

A formula like this has two parts, a constant and a variable, which are added to or subtracted from one another. The constant (in this case, ¼) is where the knob will be when the input is zero. The variable part could simply be the word “Input,” or it could be a division or multiplication that uses “Input.”

A word of warning: don't put the Input in the bottom of a fraction (as in 5/Input). When the Input goes to zero, that will result in an illegal divide-by-zero error, which may cause other modulation routings to misbehave until you correct your formula.

The Fruity Formula Controller utilizes the same kind of algebra, but with three inputs. This handy device, which can be parked on any unused FX bus, is used for controlling a single knob from up to three sources. You could assign a Peak Controller to one of the Formula Controller's knobs and an external MIDI controller to a second knob, for instance, and then record automation moves for the third knob.

To get information on the special constants and variables that can be used in a formula, select Help from the little menu in the Formula Controller. If this doesn't open up a Help window (it didn't in my computer), you can find the help files for the effects in Windows Explorer. Go to Program Files/Fruityloops3/Plugins/Fruity/Effects, look in the folder for the effect you're using, and double-click on the HMTL file.


The BeepMap is Fruityloops' most bizarre sound generator. Though it's very versatile, the online help gives almost no information about it. You can discover a lot by clicking around in the controls on the Plugin page of the Channel Settings window. But before you do that, take the following steps:

  1. Insert a note at the beginning of the bar in the pattern you want to experiment with and send it to the Piano Roll.
  2. In the Piano Roll, extend the note so that it lasts for about three and a half bars.
  3. In the Ins/Vol page of the Channel Settings window, set envelope sustain to full, attack to about 11:00, and release to about 1:00. That will give you a sound that swells and dies away smoothly.

BeepMap is an additive-synthesis device that generates tones using the information in the graphic image in the middle of the Plugin page. (It may have been inspired by U&I Software's Metasynth.) The Frq knob governs the spread of the additive sine waves, and the Len knob controls how quickly the image is scanned from left to right. With short Len settings, you may want to turn on the Loop button so that the sound will keep going throughout the note. When Frq is set very low, all the sine waves will be at close to the same pitch, so you'll get a chorused beating tone that you can use melodically.

When you fiddle around with BeepMap, it may seem that the number box on the right side, just above the image, isn't doing anything. Here's the secret: this setting is used only when you open a graphic file using the Open button. The larger the number, the more pixels the image will cover vertically. Because the vertical axis controls the frequencies of the various sine waves, changing this setting and then reloading the image will change the tone color subtly or drastically. Computing the tone for a tall image takes lots of CPU power, but you can do a lot with BeepMap using images that are less than 50 pixels high.

For a musical example (perhaps reminiscent of the Residents) that uses two BeepMaps, download beepmap_tones.flp. In your own experiments, try loading other graphics files in addition to the ones stored in the Fruityloops folder. BeepMap will even load JPGs, so if you have access to the Web, your sound sources are never-ending.


The features of Fruityloops' Layer channel are well described in the online help, in the Generators section. But some of the things you can do with layers are not obvious.

Fig. 4 shows a simple pattern, called random_layer.flp, that I created. The Layer channel is in the top row, and all four of Fruityloops' default instruments have been assigned as children of this Layer. It looks like a pretty normal pattern except that I've activated the Random switch in the Layer. Because only a few notes are included in the Layer, the rhythm is anchored by the rest of the pattern. The Layer simply adds spice to the beat.

Crossfading among two or more Layers with the Layer channel's Crossfade knob isn't something you'll need to do every day, but it has some uses. It's a quick way to set a blend between two snare sounds, for example. Set the blend the way you want it, and then use the Layer channel just as if it were your snare channel.

A more interesting possibility is automating the Crossfade knob. We're going to use several features of Fruityloops in this example. (It's downloadable as crossfade_layer.flp.) First, create three Sampler instruments that use the same snare sample and assign them all to a Layer. Leave the first one in its default state. Assign the second one to FX bus 2, and strap a nice reverb onto that bus in the FX window. Add some rhythmic echoes to the third snare using the knobs on the Func page in the Channel Settings window. (When I'm doing this, I generally can't resist pulling down the cutoff knob and pushing up the resonance in the Echo Delay area.)

Next, create some kind of basic kick/snare pattern using the Layer as the snare. Switch to Song mode, open the Playlist window, and (this is important) select the Main Automation pattern. When this pattern is selected, any automation moves you make can run for the length of the song rather than being confined to one pattern. In the Playlist, insert your pattern 16 times in a row.

Returning to the Layer channel, click the Crossfade button, right-click on the Fade knob, and choose Edit Events. This will open the Controller Curve window. Zoom this out so that it shows all 16 measures of the song, choose the Dotted-outline tool, and drag in the time ruler at the top of the window so that all 16 measures are selected.

Now comes the fun part. Start playback, as you won't be able to use the transport buttons once you take the next step. Open the Event Editor-Options menu using the button in the upper-left corner of the Controller window, and choose Edit/LFO. The LFO (low-frequency oscillator) utility will insert controller sweeps into whatever time range you've selected. Play with the knobs in the LFO until you like what you hear; you might end up with something like Fig. 5. If you've followed the steps I've outlined, you'll hear a dry snare when the LFO curve is near the bottom, a reverb snare when the curve is in the middle, and an echoing, bouncing snare when the curve is near the top.

You could get a similar musical result and have more pinpoint control by skipping the Layer and automation process entirely and just triggering whichever snare sound(s) you want in a given pattern. The advantages of doing it with a Layer and automation are that you need to program only one pattern, yet the snare can change from bar to bar throughout the song. In addition, it's much easier to edit the curve in one Controller window than to fiddle with the Velocities and note events of three different snare instruments in all those patterns.


Here's a cute trick. Assign a sound that you want to chop up to its own FX bus. Add a Mute 2 to the effects bus. Right-click on the Mute knob, choose Edit Events, open the LFO utility from the menu, and choose a square wave for the LFO. Crank up the Range knob for the LFO: values above 50 percent will un-mute the bus, and values below 50 percent will mute it. The LFO isn't calibrated to give you a regular 32nd-note rhythm, but you can make the chopping rhythm speed up or slow down by activating the LFO's End parameters. The Phase knob will control when the first chop occurs. For an example that uses this technique and a couple of others, download chopped.flp.

To get a regular chop rhythm finer than 16th notes, set the pop-up in the Recording Panel to ¼-step or ½-step and then use the Pencil tool in Edit Events. If the Recording Panel isn't visible, you can get to it by right-clicking in the blank area in the upper-right corner of the screen.


As an exercise, you might want to try programming a pattern using only a single sample as your source material and see how many different sounds you can come up with. There's a lot of variety to be found in the Precomputed Effects, in the SMP page of the Channel Settings window (see Fig. 2). The knobs in this section are well explained in the online help, but playing with them will yield some surprises. The FX1 knob is great for adding aggression to dull kicks, and a taste of Sine FX can change the character of a hi-hat or snare.

Using only the default kick-drum sample, I came up with the madness in one_sample.flp. I couldn't resist adding some step-filter offsets. Speaking of which, when customizing your sounds, don't overlook the Filter pop-up menu in the INS pages. The SVF LPx2 setting has a harder sound than the normal lowpass, which will help low-level sounds cut through a mix.


There's much more to Fruityloops than what I've had space for in this Master Class: effects busing, the x-y controller, using external MIDI synths, strategies for assembling songs from patterns, and so on. As you explore the possibilities, you'll develop your own style with Fruityloops, which will make your music more personal and dynamic. Have fun!

Jim Aikinwrites about music technology for a variety of magazines and Web sites. Look for his book Quick Start: Fruityloops (Wizoo/Music Sales, 2003).

Fruityloop Formulas

These formulas and others like them can be used in the Remote Control Settings dialog box to customize Fruityloops' response to either internal or external controller data. In the fourth example, I'm using sin (the trigonometric sine function) and pi, which are two of the special values and variables supported in formulas.

Formula When Input Is 0 When Input Is 1

1 — (Input/3)1⅔(3 * Input)/40—(Input/2) + _½1sin (Input * pi)0 (rises to 1 as Input rises to ½)0 (rises to 1 as Input falls to ½)


Is the Step Sequencer window getting crowded? The Channels menu gives you two ways to unclutter the workspace. The Group Selected command tucks selected channels into the Groups pop-up menu (lower left). Alternatively, you can use Zip Selected, which minimizes channels to narrow bars, as shown above. Right-clicking on a zipped channel restores it to normal size.