SevenUpLive logo

7up Live

7up Live development has ended as the application will be replaced by 7up 2.0 which will take advantage of Max4Live. You can find that here.

7up Live is a Java application that combines 8 different monome applications into one interface.  With it, your monome communicates with Ableton Live 7 via MIDI and allows MLR-like functionality along with other goodies like sliders, sequencing melodies, creating patterns of beats, saving/loading/queueing your songs, and more.

Source code is available here: http://code.google.com/p/sevenuplive/. Please contact me if you're interested in helping with development or have found a bug.

Contents

Requirements

Download

The entire 7up Live package can be downloaded here:

Extras for advanced users:

Tutorials

Ableton Live Setup

There are a few configuration changes necessary in Ableton Live in order for it to accept and send MIDI data correctly.

  1. Open Ableton Live and navigate to Options -> Preferences
  2. Click on the MIDI Sync tab on the left
  3. Enable Track and Remote for the virtual INPUTS of 2-5 (but not 1).  Enable Track and Remote MIDI signals for the OUTPUT of device 1
    1. IMPORTANT: do not turn the input of device 1 on while the output for device 1 is on or you may cause MIDI feedback
  4. Your preference should now look similar to the image below (Macs will have differently named devices but the numbers should match up):
Live Midi Prefs

Getting Started

This section will provide you with a "Hello World" for 7up Live.  Once we get 7up Live talking to Ableton Live we'll later go into the details of how to navigate through the 7up Live interface.

  1. With your Monome connected to your PC, open MonomeSerial.  The values shown below will work with the defaults in 7up Live:
    Monome Serial
  2. Open SevenUpLive v1.4.JAR (Windows) or SevenUpLive.app (OSX)
  3. You should see the screen below. Choose your monome model from the dropdown and check to make sure your MIDI settings are correct. Your MIDI device names may differ depending on your virtual midi utility but the numbers should match
    SevenUp Connections
  4. Press the initialize button to start the connection to the monome.  Its buttons should clear except for 2 in the top right
  5. Open Ableton Live 7
  6. Open the 7up Live Template Set. It was distributed as an Ableton Live pack which means it needs to be installed first which is a simple process:
  7. Before you press play, click on the "Midi Clock" track and change the external instrument MIDI output to Device 1 and channel 8 as shown below:

  8. Next, change the MIDI Input devices of the Stepper, Looper, and Melodizer tracks to the following device numbers (2, 3, 4, 5).  Set the Stepper and Looper to listen only on channel 8:

  9. Press the play button in Live and your monome should start flashing rows of light in sync with Ableton Live
    1. If for some reason your monome doesn't react to pressing play in Ableton Live check that Live's MIDI sync preferences are set correctly and that your Initialized 7up Live according to the graphic above.
    2. Some users have seen issues when they initialize 7up WHILE Ableton Live is playing... so as a precaution make sure Ableton is stopped before opening/closing 7up
  10. Just for fun, press some of the monomes buttons in the LEFT 7 COLUMNS.  You should notice that they light up and play samples when their row is flashed.

Congratulations! You have 7up Live working correctly... read on to understand more about the SevenUp interface and how you can chop up loops, sequence MIDI notes, send MIDI Control values, and Sequence your patterns of samples.

The 7up Live Interface

The 7up Live interface is built so that you can compose and perform entire songs without ever having to touch your computer.  This creates a small learning curve in figuring out how to interpret the 8x8 grid of flashing lights in front of you.  In 7up Live there are 8 different modes that act as 8 different monome apps packaged into one super-app.  However, SevenUp's most useful feature is also its easiest to understand:  the right-most column will ALWAYS be your menu for choosing which mode to use.  This leaves you with the 7 left-most columns in order to chop loops, create patterns, sequence melodies, etc. 

Changing Modes

The diagram below shows the breakdown of the nav menu that lets you switch between modes:

In order to navigate from one mode to another, simply press on the solid button in the nav menu (which indicates your current mode) and then press the nav menu button corresponding to the mode you would like to enter.  Depending on the mode, there may also be flashing lights in the nav menu column.  The flashing lights indicate functions specific to that mode and are covered in the instructions for that particular mode.

Once you've mastered even 1 or 2 of the modes, you'll have plenty to play with.  Each mode is covered below.

1. Stepper

The stepper is the first mode that you enter after initializing 7up Live.  It's purpose is to trigger samples from top to bottom in an 8-beat measure.  Once you've laid out a group of samples to trigger, that is called a "Pattern".  You have the ability to store up to 7 different patterns by clicking on any sub-menu in the nav menu (sub-menu buttons are those that are NOT solid in the nav menu).  These different patterns can then be recalled in different orders by using the "Sequencer" mode.  The layout of the stepper interface is shown below:

Additional stepper notes:  You can copy 1 pattern to another by holding down the first pattern and then pressing another pattern.  You can clear a pattern by holding down that pattern's button for 3 seconds.  When you press a sample trigger, it will first be flashing to indicate low velocity, pressing it again will make it solid to indicate a high velocity.

2. Sequencer

The Sequencer allows you to sequence groups of patterns.  This is helpful in order to break up the repetetiveness of an 8-step pattern.  In this mode, each column on the left-side corresponds to one of the seven possible patterns.  Each row then corresponds to playing one measure of that pattern.  The diagram below shows a sequence that plays: Pattern 1, Pattern 2, Pattern 1, Pattern 3, Pattern 1, Pattern 2, Pattern 1, Pattern 4.

Additional notes about the sequencer:  You can store up to 7 different "sequence banks" by using the sub-menu buttons on the right nav bar. These banks can be played from the sequencer view or from the Masterizer Mode.

3. Controller

The controller mode allows you to map 7 banks of 7 sliders to various knobs in Ableton for a grand total of 49 unique sliders. While in the Masterizer mode, you can re-trigger the banks of controllers that you have positioned.

4. Looper

The looper mode allows you to play up to 7 different loops at any offset.  This allows you to chop up loops similar to MLR.  Each column on the left hand side corresponds to a loop.  If you press any row in a loop, the loop will play at that offset and continue to play. Each column also has a corresponding row in the right nav column which can also be used to start and stop the loop.

It's important to understand that loops loaded into the looper must already match your BPM (which may require consolidating a loop). Also, because 7up has no way of knowing how long your loop in Ableton is, you must use the 7up user interface to assign each loop's length.

Additionally, the interface gives you the option to add loops to different choke groups. This is similar to MLR's concept of choke groups in that only 1 loop in a particular choke group can be playing at once. For instance if loops 2 and 3 are both part of choke group 1, playing loop 2 will stop loop 3 and vice versa.

Loop Modes

Each loop may be played in one of five different loop modes: Loop, Shot, Momentary, Hit, and Slice.

How do I import new loops?

If you plan on using any loops besides the ones provided in the Template Set you'll want to read these instructions.  There are two things you want to avoid when importing new loops into the looper:

  1. Replacing an entire chain in the Looper track.  This will delete the MIDI mapping that exists between 7up Live and the "Start" knob of each chain
  2. Importing a loop that doesn't fit your tempo (unless it's intentional)

You're probably used to Live auto-warping samples that don't match your BPM so you rarely have to deal with loops not matching.  Unfortunately, if you want the auto-warping to take hold in the Looper, you must first "Consolidate" your sample before dragging it into the Looper.  The following instructions give an example of importing a beat into the Looper that doesn't match the song's BPM:

  1. In "Session" mode (horizontal), drag your loop onto the "Resample" track
  2. Righ click on the sample and choose "Consolidate" (this will stop audio)
  3. Staying in session mode, click on the looper track
  4. Click on the chain you'll be replacing (Loops 1-7)
  5. Drag your consolidated sample from the session view onto the WAVEFORM of the existing sample as this picture demonstrates.
    1. I emphasize that you must drag it onto the waveform because if you drag the sample onto the actual chain, you'll lose the MIDI mapping.

  6. The last step is to use 7up interface to select the loop's length (in measures).

Additional notes:  One pain about importing new loops is that if they are of a different BPM, you have to stop the audio and consolidate.  However, if your loop is of the same BPM (which could include resampling in real time your own track), you can simply drag it right onto the chain's waveform and not skip a beat.  Also, the "Mute Looper" checkbox in the interface allows you to temporarily mute the MIDI notes being sent by the loop in case you just want to modify the MIDI mapping of the Start Offset control values.

5. Loop Recorder

The Loop Recorder mode allows you to record yourself playing the Looper.  Pressing a sub-nav button on the right once arms that particular sequence for recording.  Once you've played some loops, press the same sub-nav button to stop recording and instantly play back what you recorded.  These recorded sequences can be stopped and started from the Masterizer mode.

Recording loops and melodies in 7up Live is done consistently throughout.  Press the sub-nav button corresponding to the track you want to record to once and it will start blinking slowly to let you know it is armed.  As soon as you start playing, the recording process begins and continues until you press the same sub-nav button.  That sub-nav button should then flash to let you know it's playing your recording back.

6. Melodizer 1

The Melodizer allows you to play and record sequences of melodies in any key of any scale.  It does this by providing a MIDI keyboard that is presented to you in a scale that is chosen through the 7up Live interface.  First select a scale (other than CLIP LAUNCH which is explained further down) from the dropdown of the interface:

With that scale selected, each button on the left-side of the monome will play a note within that scale started at a Key you select from the left-bottom interface.  This may be best explained with a graphic:

As you can see, the interface is split into 3 areas.  The Key area supplies the starting note of the Note area in the top left.  In this way, you can play a C major scale or a D major scale.  If you change your scale to minor in the 7up Live interface, you can then play a C minor scale or D minor scale.

Additional notes:  Recording here is similar as the loop recorder, simply press the current track you're on and start playing.  Once you're finished, press the track again and the sequence will immediately start playing.   Also, each track corresponds to a different MIDI channel (channels 1-7) sent to Ableton Live.  If you like, you could set up 7 different instruments in Live listening to 7 different channels rather than how my template is setup which uses 1 instrument listening to all 7 channels.

Melodizer Recording Modes

The interface allows for 2 recording modes for the melodizers.  "On Button Press" means that once a sequence is cued, it will start recording as soon as the first note is pressed and stop recording immediately when the sequence is stopped.   "Quantized" means that once the sequence is cued, recording will begin at the next 1/2 measure mark.  Similarly, when the sequence is cued to stop recording, it will stop at the next 1/2 measure mark.  These principles apply to the Masterizer screen as well.  That means that when "Quantized" mode is enabled, melodizer patterns triggered in the Masterizer screen will wait until the next 1/2 measure before triggering.

Clip Launch Mode

When Melodizer 1's scale is changed to "Clip Launch", the bottom "keys" section of the melodizer is removed and the melodizer becomes an interface to launch and view clip information from Ableton Live.  To take advantage of this mode we need to assign some melodizer MIDI notes to individual clips in Live's Session View. Also make sure that your MIDI preferences have the "Track" column selected.

FIRST make sure that no tracks are intercepting your MIDI notes.  Meaning, if you want to assign clips to Melodizer 1 which is set to output on MIDI device 4, make sure that you don't have a MIDI track with its "MIDI From" set to Device 4 as well.  ALSO, make sure that your MIDI preferences in Ableton Live have the "Track" AND "Remote" option turned on for your MIDI output device (typically Device 1).

  1. Set melodizer 1's scale to "CLIP LAUNCH"
  2. Change to melodizer 1 mode in SevenUp
  3. Add an audio track in Live with 4 audio clips loaded
  4. Open up Live's MIDI Map Mode by pressing the "MIDI" button in the top right
  5. For each of your 4 clips, select it and assign it to a note in the Melodizer by pressing anywhere on the left 7 columns
  6. Exit MIDI map mode by pressing the "MIDI" in the top right button once again
  7. Now with your mouse, press play on one of your clips.

You should notice that when the clip is played, the corresponding key in the melodizer lights up as well.  Live is sending information to 7up Live telling it when clips are started, stopped, and cued.  The reverse is also true, when pressing a melodizer 1 note, the corresponding clip will play.  On the monome, cued clips will blink, started clips will glow solid, and stopped clips will turn their LED off.  Each melodizer column should map to only a single Ableton Live track at a time because SevenUp assumes that only 1 clip in a column can be playing at once.

This functionality only works for Melodizer 1 because Ableton Live doesn't keep track of which device is sending the mapped MIDI notes.  Therefore, it makes no sense to set up two different devices to launch clips on the same channels.  Also, for the same reason, Melodizer 2 notes being sent MAY interfere with your clip launching if you're sending them both on the same channels.

7. Melodizer 2

Melodizer 2 is exactly the same as Melodizer 1 but without clip launch mode and with the option to accept incoming MIDI events from external MIDI isntruments.

External MIDI Instruments

Meldozier 2 will route any incoming MIDI data on SevenUp's input device (typically device 1) and channels 9-15 to the Melodizer 2 output device on channels 1-7.  In addition to routing the MIDI, it will also light up the corresponding buttons on the Melodizer screen and record any notes into any currently recording patterns.  This is useful for capturing complex melodic patterns with a keyboard, yet still retaining the ability to play back the pattern using SevenUp.

The following instructions explain how to set this up:

  1. Add a new MIDI channel to Ableton Live
  2. Change the "MIDI From" parameter to your MIDI keyboard device
  3. Change the "Monitor" option to "In"
  4. Change the "MIDI To" parameter to SevenUp's input device (typically IAC/Midi Yoke 1).
  5. Change the channel dropdown to "Ch. 9".  This will route notes to the Melodizer 2's channel 1.  Your track should now look like this:
  6. Pressing notes on your keyboard should now send audio out of the Melodizer 2 and light up monome if you have pattern 1 selected
  7. Enabling recording for a melodizer 2 pattern will also record any MIDI coming from external instruments.
  8. The new MIDI track's Ch. 10 maps to melodizer pattern 2, Ch. 11 to pattern 3, etc...

8. Masterizer

The purpose of the masterizer is to provide an interface where you can control what is going on in each of the other modes.  It's for this reason that the Masterizer interface is the least intuitive.  The left side of the Masterizer mode uses each column to control another mode as such:

What about Ableton Live?

I said at the beginning of this that you can compose and perform songs entirely with the monome and 7up Live without touching the computer.  While this is true, you'll find it more rewarding to compose in Ableton Live in parallel.  Because we're using Live as the DAW, we have access to all of its effects, instruments, and other capabilities.  For this reason, I'll touch on how 7up Live is interfacing with Live so that you can tweak with it yourself. 

The 7up Live package contains a template Live set that is configured to correctly interpret the MIDI signals being sent back and forth.  For instance, the template set has a track called "Stepper" that contains a Drum Rack that has been pre-configured to accept the MIDI notes being sent from 7up Live when in Stepper mode.

The template set looks like this:

As you can see, there is a track for the "Stepper mode", the "Looper mode" and both of the Melodizers.  By adding effects to these tracks, you will alter the sounds produced by 7up Live.  You may have also noticed that each track uses a different virtual midi device in order to accept its MIDI input.  Be careful only to change these settings if you know what you're doing.

The looper track is very similar to the stepper track except that each sample has its "Start Offset" knob mapped to a controller being used by 7up Live.  Manipulating these start offset knobs in time with your button-mashing is how 7up Live is able to chop up loops and start them at any offset.  Be caseful not to delete these samples in the drum rack or you will lose the mapping to the controller.  You can, however, drag a new sample on top of the old sample to change the samples that are looped.  Please note that dragging any sample into the looper doesnt mean it will fit your tempo.  You should first drag your sample into the "Resample" track, consolidate it, and then drag it into the looper.

Something that I've found fun is to use the "Resample" track to record 2 measures of what you've done, then drag that newly recorded sample onto one of the Looper drum rack samples and start chopping up what you just did in real time.  Using this technique, you could record vocals in real time and immediately start chopping them up as loops.

How does 7up Live know where it is in the song?

The timing of 7up Live is controled by a MIDI clock track located in the Ableton Live template called "MIDI Clock".  This track sends MIDI note values to 7up Live (to the MIDI device selected in the initialization screen) which 7up Live interprets in order to time the triggering of samples and sequences.  The "Midi Clock" track controls the Stepper. Looper, and Melodizers and is affected by any global shuffle you apply to your song in Live.

Pressing Ableton's stop button will cause 7up to reset all sequences, loops, and melodies to their starting point. Additionally, sending the MIDI note "F#4" from MIDI Clock 1 or 2 will tell 7up to stop all loops and melodies and reset the stepper to the first beat.  This can be used in conjunction with Patch queueing to make sure your newly loaded patches sync to Ableton's beat.

If for whatever reason you need to change the MIDI device or channel that Ableton Live uses to send timing data to 7up Live, you can do so by clicking on the "MIDI Clock" track, selecting the "External Instrument" effect, and changing the "MIDI To" value.

Using Multiple Monomes

As of v1.0, 7up supports connecting a 128, a 256, or any number of 64's (or 40h's) to the same 7up instance. For each 8x8 grid of buttons connected, a new window into the 7up instance is opened. For instance, a 256 allows 4 windows, each of which can view different 7up modes. Alternately, 8 x 64's could be connected, each viewing 1 mode of the same 7up instance.

This is done by first plugging all of the monomes into the same machine, using monomeserial's dropdown box to select each monome, then setting a unique start column and start row for each in increments of 8.

Monomeserial with dropdown for multiple monomes

Example with 1 x 128 and 2 x 64's: here we have 3 monomes but all 7up sees is 4 8x8 grids which it will assume is a 256 using the following settings in monomeserial:

MonomeStart ColStart Row
12800
64 (1)08
64 (2)88

Example with 3 x 64's: here we would arrange the 3 64's vertically and set the corresponding rows (cols stay at 0)

MonomeStart ColStart Row
64 (1)00
64 (2)08
64 (3)016

SevenUp Patches (Loading, Saving, and Queueing)

SevenUp has built in functionality for saving, loading, opening recent files, and queueing up a collection of Patterns/Loops/Melodies that you have arranged.  Each song you make with SevenUp is called a Patch.  Saving and loading are fairly straightforward as they are done through the "File" menu in the interface.  Each patch is saved as an XML file in a location of your choosing.

By default, the "Prev Patch" and "Next Patch" buttons will be disabled until you load a SevenUp Patch Pack.  A Patch Pack is a collection of patches that can be queued on the fly using the interface or using MIDI signals sent from Live.  This essentially gives you access to an unlimited combination of patterns/loops/melodies.  Currently, there is no utility for merging patches into Patch Packs so it must be done manually in a text editor.

Creating Patch Packs

Creating Patch Packs in a text editor is fairly straightforward.  In this example we will take two pre-existing patches and merge them into a single Patch Pack that can load those patches on the fly.

  1. Open your first Patch in a text editor.  You'll see the contents will look something like this:
  2. <?xml version="1.0" encoding="UTF-8"?>
    <SevenUpPatch areLoopsGated="false" patchName="Sample Patch 1.xml">
    ... ...
    </SevenUpPatch>
  3. Right now, the XML defines only 1 patch.  If we want to queue up another patch, all we have to do is copy the <SevenUpPatch> XML from our second patch and append it to our XML file.  REMEMBER: don't copy the first line that says "<?xml version="1.0" encoding="UTF-8"?>" there should only be 1 of those per XML file
  4. Our XML now looks something like this:
  5. <?xml version="1.0" encoding="UTF-8"?>
    <SevenUpPatch areLoopsGated="false" patchName="Sample Patch 1.xml">
    ... ...
    </SevenUpPatch>
    <SevenUpPatch areLoopsGated="false" patchName="Sample Patch 2.xml">
    ... ...
    </SevenUpPatch>
  6. You could go on adding more patches if you like at this point. The last step is important, we must enclose all of our patches in a <SevenUpPatchPack> </SevenUpPackPack> tag.  Our completed file now looks like this:
  7. <?xml version="1.0" encoding="UTF-8"?>
    <SevenUpPatchPack>
    <SevenUpPatch areLoopsGated="false" patchName="Sample Patch 1.xml">
    ... ...
    </SevenUpPatch>
    <SevenUpPatch areLoopsGated="false" patchName="Sample Patch 2.xml">
    ... ...
    </SevenUpPatch>
    </SevenUpPatchPack>

Now we're ready to load our file into SevenUp.  Once loaded, the "Prev Patch" and "Next Patch" buttons will be available to load up our queued Patches.  The title of the current patch will show itself in the title bar of the interface.  Patches can also be loaded using MIDI signals.  The MIDI note E4 will send the "Prev Patch" command and F4 will send the "Next Patch" command.

Change History

SevenUp's source code repository is located
here please contact me if you're interested in contributing.

Contact

Any comments or suggestions, contact me at sevenuplive@googlegroups.com