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:
-
Use a layout file already created for your controller, if it exists. Find it in the
layouts
folder, and copy it over thelayout
file. Read through it to see how things are mapped. -
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. -
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
.