crunch/remote Configuration

Basic Idea

crunch is designed to work with controllers that have several "strips" of controls. Each strip generally has the same set of controls, like a fader, some knobs, and some buttons. These will be mapped to control the functions on the tracks in the set. The controller can also have controls assigned to control the functions on the selected track.

For example, you could have the fader, knobs and buttons on each strip control volume, sends A & B, select, and arm functions for each track. Then have additional knobs control pan, sends C & D, mute and solo of the selected track.

In addition, there are a number of global functions that can be mapped to controls, like the cross-fader, scene select, tempo, etc...

Configuring

You have three options to configure crunch/remote:

  1. Use a layout file already created for your controller, if it exists. Find it in the layouts folder, and copy it over the layout file. Read through it to see how things are mapped.

  2. Use the default layout, and program your controller to send the MIDI commands for the functions you want. Read the file layout to see what is mapped where.

  3. Make a copy of the default layout and modify it to match what your controller sends.

You can read below to find these files, and just go ahead and dive in, the layout file format is not all that complicated. Further below there is a full explaination of how the mapping system works.

Note

When Live updates, you'll need to not only reinstall crunch/remote, you'll have to redo your configuration, since the Live keeps a separate preferences directory for each version. In general, after reinstalling crunch/remote, you'll need only copy your layout configuration file from the previous version to the current.

Files

The first time crunch is assigned as a remote script, it will write a set of files to the user preferences directory:

OS X: /Users/[username]/Library/Preferences/Ableton/Live x.y.z/crunch

Windows 7, 8, and 10 \Users\[username]\AppData\Roaming\Ableton\Live x.y.z\Preferences\crunch

Windows XP \Documents and Settings\[username]\Application Data\Ableton\Live x.y.z\Preferences\crunch

In that directory, you'll find:

layout

This file contains the layout that crunch/remote will use. If you edit it, you need only save, and then reload your set in Ableton to get crunch to re-read it.

If it has errors, when crunch loads it, the errors will be written back into the file as comments, pointing to the problems. Just fix them and reload your set again. You don't need to remove the error comments, they'll be removed once the file loads correctly.

layouts

This directory contains layout files for various controllers. To use one, copy it over layout, and reload your set. You'll probably want to read it through.

layouts/Default

This is just a clean copy of the default layout. If you are creating a custom layout, start with a copy of this.

layouts/FaderFox

For the FaderFox UC4 and UC44.

Controls and Strips

crunch is designed to work with controllers that have several "strips" of controls. Each strip generally has the same set of controls, like a fader, some knobs, and some buttons. Each control sends some MIDI command (CC or note), which is mapped in the layout file to a function.

The layout only specifies the MIDI control used on the first strip for each function. The rest of the controls can be inferred, because MIDI assignments on such controllers follow common patterns, which layout accomodates:

Typically, controllers have consecutive control numbers assigned to the controls accros the strips. For example, the layout file:

strip-channels:     ch 1
strips-per-channel: 8
control-spacing:    ccs 1 notes 1
volume:             cc 16
pan:                cc 24
sends:              2 @ cc 32
select:             note 80
solo:               note 88

corresponds to a controller with controls assigned to MIDI like this:

strip 1 2 3 4 5 6 7 8
ch 1 1 1 1 1 1 1 1
volume cc 16 17 18 19 20 21 22 23
pan cc 24 25 26 27 28 29 30 31
send A cc 32 33 34 35 36 37 38 39
send B cc 40 41 42 43 44 45 46 47
select note 80 81 82 83 84 85 86 87
solo note 88 89 90 91 92 93 94 96

Some controllers have the controls numbered consecutively down the strips. Changing the control spacing supports this:

strip-channels:     ch 1
strips-per-channel: 6
control-spacing:    ccs 4 notes 2
volume:             cc 16
pan:                cc 17
sends:              2 @ cc 18
select:             note 80
solo:               note 81

Works with a controller like this:

strip 1 2 3 4 5 6
ch 1 1 1 1 1 1
volume cc 16 20 24 28 32 36
pan cc 17 21 25 29 33 37
send A cc 18 22 26 30 34 38
send B cc 19 23 27 31 35 39
select note 80 82 84 86 88 90
solo note 81 83 85 87 89 91

Some controller use more than one channel. A controller that sends each strip on a different channel:

strip-channels:     ch 8, ch 9, ch 10, ch 11, ch 12, ch 13
strips-per-channel: 1
control-spacing:    ccs 1 notes 1
volume:             cc 16
pan:                cc 17
sends:              2 @ cc 18
select:             note 80
solo:               note 81
strip 1 2 3 4 5 6
ch 8 9 10 11 12 13
volume cc 16 16 16 16 16 16
pan cc 17 17 17 17 17 17
send A cc 18 18 18 18 18 18
send B cc 19 19 19 19 19 19
select note 80 80 80 80 80 80
solo note 81 81 81 81 81 81

A controller that repeats the layout across two channels:

strip-channels:     ch 1, ch 2
strips-per-channel: 4
control-spacing:    ccs 1 notes 1
volume:             cc 16
pan:                cc 20
sends:              2 @ cc 24
select:             note 80
solo:               note 84
strip 1 2 3 4 5 6 7 8
ch 1 1 1 1 2 2 2 2
volume cc 16 17 18 19 16 17 18 19
pan cc 20 21 22 23 20 21 22 23
send A cc 24 25 26 27 24 25 26 27
send B cc 28 29 30 31 28 29 30 31
select note 80 81 82 83 80 81 82 83
solo note 84 85 86 87 84 85 86 87

Track Functions

Each track function can be assigned to the control strips, as shown above, and can also be assigned to a control for the selected track. This is done by giving a second control on the function line:

strip-channels:     ch 1
selected-channel:   ch 1
strips-per-channel: 8
control-spacing:    ccs 1 notes 1

#                   strips       selected
#                   -------      --------
volume:             cc 16        none
sends:              1 @ cc 24    6 @ cc 80
select:             note 16
arm:                none         note 92
solo:               none         note 93
mute:               note         note 94

This works for a controller with strips like:

strip 1 2 3 4 5 6 7 8
ch 1 1 1 1 1 1 1 1
volume cc 16 17 18 19 20 21 22 23
send A cc 24 25 26 27 28 29 30 31
select note 16 17 18 19 20 21 22 23

and additional controls:

encoder send A send B send C send D send E send F
ch 1 1 1 1 1 1
cc 80 81 82 83 84 85
button arm solo mute
ch 1 1 1
note 92 93 94

Global Functions

There are a variety of global functions that can be mapped to controls. For example

global-channel:  ch 2
master-volume:   cc 90
cross-fade:      cc 91
scene-select:    cc 92 relative

Configuration Format Details

The format of the layout files should be pretty self explanitory. Feel free to dive in and just make a copy of one and start editing. Remember that only the file named layout is loaded by crunch. Details are here if you need them.

Channels

ch 7

MIDI Channels are specified by ch followed by a number, 1 through 16.

There are several settings that specify the default channels used by controls that don't specify a channel. See the file for details, they appear before they are used.

Controls

cc 48
note 60
pb

MIDI messages that are sent by the controls are specified by cc, note, and pb (pitch bend). The CC or Note number is given in the range 0 ~ 127.

cc 48 ch 14

These can be followed by ch and a number to explicitly set the channel.

cc 48 relative

The relative keyword means the CC controller sends relative motion values, rather than absolute.

No Control

none
--

If you don't want to assign a control to a function that crunch supports, set it to none or --.

Arrays

Some functions are an array of related controls: For examples sends can have up to 12 controls, and macros and chain-macros have up to 8 controls each. Usually the controls are assigned consecutively, and this can be specified directly:

4 @ cc 24

will assign for four consecutive controls to the function (like the first four sends, or first four macros).

If the controls aren't consecutive, they can be listed explicity:

[ cc 34, cc 36, cc 92, cc 94 ]

will also assign the first four sends or macros.

Both forms will "do the right thing" when used as a strip control, and correctly account for by strip or by function numbering. See the examples above for sends.