Code
From Livid Wiki
Introduction
Code is a compact flexible control surface for computer music creation and performance.
Code provides:
32 endless encoders with
--LED Rings
--Built in Push Buttons
--Push-Button Indicator LEDs
13 Additional function buttons with indicator LEDs.
This provides a compact but versatile arrangement of controls for triggering events and altering continuous parameters.
Code sends and receives MIDI, providing endless possibilities for use with software such as:
-- Ableton Live,
-- Max/MSP,
-- Properllerhead's Reason and Record, and
-- NI Traktor to name a few.
Class complaint, bus powered, and completely reprogrammable,
Code is an ideal companion to hardware and software for music production.
Open source firmware (licenced under GPL v3) provides developers with new avenues of exploration, and
the potential for users to try out different configurations.
What’s in the box
Livid Code Controller
USB Cable
Registration Card
Features
32 Push-Button Encoders
32 LED Rings (13-LEDs each)
13 Additional Function Buttons
Controls and Connections

Any of the controls on the Code can be configured to provide a wide range of functionality.
Here are some basic terms and uses for the controls.
- Encoder Function
Many of the Encoder's Functions are modifiable:
- Absolute and Relative Modes:
- Absolute mode is generally used to control effects, EQ settings, or other continuous parameters.
- Code Sends:
- Encoder CC# of Value: 000-127
- Encoder CC# of Value: 000-127
- Code Receives:
- Encoder CC# of Value: 000-127
- Encoder CC# of Value: 000-127
- Code Rejects:
- CC's that address an Encoder while it is in motion
- CC's that address an Encoder while it is in motion
- Code Sends:
- Absolute mode is generally used to control effects, EQ settings, or other continuous parameters.
- Absolute and Relative Modes:
--Ex. Default Configuration: If the CC1, value 127, on Channel 0 is received,
Code will update it's stored value and LED Ring Display for the top-left encoder to 127
- Relative mode is used to control long lists or inc/dec adjustments.
- Code Sends:
- 2's Complement
- When Incementing: Encoder CC of value 001 for each increment
- When Decrementing:Encoder CC of value 127 for each decrement
- 2's Complement
- Code Receives:
- Encoder CC# of Value: 000-127
- Encoder CC# of Value: 000-127
- Code Rejects:
- CC's that address an Encoder while it is in motion
- CC's that address an Encoder while it is in motion
- Code Sends:
- Relative mode is used to control long lists or inc/dec adjustments.
Ex. Default Configuration: If the CC1, value 127, on Channel 0 is received,
Code will update it's stored value and LED Ring Display for the top-left encoder to 127.
--Note: The Code allows CC updates for Absolute Mode while in Relative Mode so that
users may intermittently change between absolute and relative mode
and Encoders will still receive updates sent by software.
- Encoder Sensitivity
- Encoder Sensitivity
Encoder Sensitivity is variable.
Encoders can travel at a multiple (or fraction) of their NaturalSpeed.
- Natural_Speed: 96 Ticks/ revolution
- Min: 1/16th Natural Speed (6 ticks/ revolution)
- Max: 16x Natural Speed (0-128 in 1/12th revolution)
- Two Speeds of Operation:
- Speed1 and Speed2
- Normally: Encoders Turn at SPEED1
- While a Speed_Control_Button (see below) is pressed: Encoders turn at Speed2
- Speed1 and Speed2
- Encoder Sensitivity is the same for all encoders.
- Encoder Sensitivity can be changed in Code Editor or by use of the Set Encoder Speed SysEx Message.
- Natural_Speed: 96 Ticks/ revolution
- Encoder LED Rings
If an Encoder is in Relative Mode, Encoder LED Rings display a V-shaped that tocks with each increment.
By default, Encoders are in Absolute Mode, and the LED Rings Display the current value of the Encoder
This behavior can be disabled by the Set Ring Control System Exclusive Message
LED Rings can be lit directly by the Set LED Rings System Exclusive Message
In Absolute Mode, Encoder LED Rings can display encoder value in two modes
- Walk Mode
- Lights 1 to 2 LEDs at a time and seemingly walks up as Encoder's value increases.
- Has almost twice the visual resolution of Fill Mode (~5 values per state)
- Number of States: 26
- Fill Mode
- Lights all preceeding LEDs as Encoder's value increases
- Much Brighter
- Number of States: 14 (~9 values per state)
- Toggling between Walk and Fill Modes
- Control Number: CC116-117
- CC116: Walk Mode
- CC117: Fill Mode
- Value: Code Encoder's Mapped Output CC#
- MIDI Channel: Omni-Channel
- Control Number: CC116-117
- Walk Mode
Ex. Default Configuration:
- While top-right Encoder is in Walk Mode: Turn that Encoder to Full value (green LED on).
- Send Code CC117 Value 29, and the encoder will change to Fill Mode and all 13 LEDs in the ring will be lit.
- Send Code CC116 Value 29, and the encoder will change to Walk Mode and only the green LED will be lit, again.
- Encoder Push Buttons
Each encoder is equipped with a push button.
The button can be programmed to send out MIDI notes or CC data on any channel independent of other buttons
via the Code Editor or the Map Buttons SysEx Command
- Code Sends: (button depressed)
- Note On: Velocity 64 (if button mapped as a Note)
- CC: Value 127 (if button is mapped as a CC)
- Default: Note On
- Note On: Velocity 64 (if button mapped as a Note)
- Code Sends: (button released)
- Note Off: Velocity 0 (if button Mapped as Note)
- CC: Value 0 (if button Mapped as CC)
- Default: Note Off
- Note Off: Velocity 0 (if button Mapped as Note)
- Code Sends: (button depressed)
- Encoder Push Button Indicator LEDs
Each encoder push-button is associated with an indicator LED.
LED Operation is now Velocity/ Value Sensitive and Blinky.
These LEDs can be programmed to be triggered MIDI notes or CC data on any channel independent of other buttons and LEDs,
via Code Editor or by the Map LED SysEx Command
- Code Receives:
- Note On/ CC
- LED Blink: 01 <= Value/ Velocity < 32
- LED BlinkFast: 32 <= Value/ Velocity < 64
- LED On: Value/ Velocity >=64
- LED Blink: 01 <= Value/ Velocity < 32
- Default: Note On
- Note On/ CC
- Code Receives:
Ex. Default Configuration: If Note 32, Value 64, on Channel 0 is received,
Code will solidly light the indicator LED below the bottom-right encoder
- Backlit Buttons
These programmable buttons can be used to activate effects or mute channels operate just like the Encoder Push Buttons.
- Code Sends: (button depressed)
- Note On: Velocity 64 or
- CC: Value 127, depending on whether the button is mapped as a Note or CC
- Default: Note On
- Note On: Velocity 64 or
- Code Sends: (button released)
- Note Off: Velocity 0 or
- CC: Value 0, depending on whether the button is mapped as a Note or CC
- Default: Note Off
- Note Off: Velocity 0 or
- Code Receives:
- Note On/ CC
- LED Blink: 01 <= Value/ Velocity < 32
- LED BlinkFast: 32 <= Value/ Velocity < 64
- LED On: Value/ Velocity >=64
- Default: Note On
- Note On/ CC
- Code Sends: (button depressed)
Ex. Default Configuration: If Note 33, Value 64, on Channel 0 is received,
Code will solidly light the indicator LED underneath the top-left button.
- Speed Control Button
- While pressed:
- Encoders will operate a Speed2.
- Encoders will operate a Speed2.
- When released:
- Encoders will operate a Speed1.
- Encoders will operate a Speed1.
- While pressed:
Any Encoder Push Button or Regular Backlit Button can be turned into a Speed Control Button
This can be done in one of two ways:
- Select the desired Button in Code Editor and in the pull-down box select for the mapping select Speed Control.
- Map your desired button to 127 (0x7F) using the Map Buttons SysEx Message.
- Any number of Speed Control Buttons Can be defined
- Any number of Speed Control Buttons Can be defined
- MIDI IN – The MIDI Input port provides a standard 5 PIN MIDI jack for connecting other MIDI devices to the Code.
MIDI input data is then routed over USB to the host computer, and is available to your software on the second port named “Code External” (on Windows XP, “USB Audio Device[2]”)
- MIDI OUT - The MIDI Output port provides a standard 5 PIN MIDI jack for outputting MIDI from your computer, over the USB cable, and to the MIDI jack.
The Code will also send its data out the MIDI jack.
This MIDI Output can be accessed on your computer via the port named “Code External” (on Windows XP, “USB Audio Device[2]”)
- USB – USB Port for powering the Code and sending MIDI messages to and from the instrument.
Connecting
The Code is completely USB powered and does not require an external power supply.
To make the Code controller compatible with industry standard sound and video equipment,
the controller comes equipped with both:
- USB, and
- MIDI In/Out connections.
- USB is designed to connect directly to a computer, and the
- MIDI Out can be used to connect to:
- MIDI Interfaces,
- PC Soundcards,
- External Soundcards,
- Any of the hundreds of MIDI processors and synthesizers using a standard MIDI cable.
- MIDI In jack can be used to get MIDI Signal from any other MIDI capable device onto your computer.
- USB is designed to connect directly to a computer, and the
For Direct USB Connectivity
The Code is class-complaint and does not require drivers when using the USB connectivity.
- Connect the USB cable from the computer to the USB port on the Code.
- When the encoders are turned, and the LEDs illuminate, the device is powered.
--Note: In Windows, you will need to open an application that accesses the MIDI Ports before the encoders will function.
For MIDI Connectivity
- Using a standard MIDI cable, connect the Code MIDI in and out to the MIDI in and out of your sound-card or other MIDI interface.
- The Code must be plugged into a USB host and have MIDI software running (even if it's something basic like MIDI Monitor (http://www.snoize.com) or MIDI OX (http://www.midiox.com) running.
--This is a by-product of USB-powered class-compliant devices with no external power source.
--Once you have the Code connected to a computer and some simple MIDI application running, The Ohm's will output MIDI to the MIDI Output jack.
--Rule of Thumb: If your encoders LED Rings, are changing with your encoders, then the MIDI Output is outputting MIDI (unless you have disabled the MIDI through Code Editor).
- MIDI OUT: Jack located next to the USB port (on the right if you are looking at it), and the
- MIDI IN: is the other jack (on the left).
Troubleshooting
- Make sure your USB cable is properly connected.
- If you are using a USB hub, try connecting the Code USB cable directly to your computer.
- The Encoders and LED Rings should operate once the Code has connected to the computer and a software has opened the MIDI Ports
If you are using a Macintosh Computer running OSX, make sure you have Code selected as your device in the Audio MIDI setup. To access Audio MIDI go to Applications>Utilities>Audio MIDI Setup.
Check to make sure your software is configured to use the Code.
Open your application’s preferences to verify that the software is configured to receive the MIDI messages from the Code controller.
Windows XP will show the port names as “USB Audio Device” and “USB Audio Device[2]”, though the “New Hardware Found” popup will show the device as “Code”.
Windows 7 will show your controller as Code and will automatically recognize the device.
If you are still having problems, confirm that you are receiving MIDI data using MidiMonitor (for OS X) at http://www.snoize.com/MIDIMonitor/ or MIDIOX (for Windows) http://www.midiox.com.
Editor
For details on editing the MIDI assignments on the Code, click here: Code Editor
Support
For questions or support please visit our forums at http://forums.lividinstruments.com/ Here you will find answers to many of your questions and ask new ones. We will do our best to answer most of of your questions within 24 hours.
Appendix
Default MIDI Settings
The following is a map of the MIDI note and CC settings that the Code controller ships with.
- Buttons
- Mapping: MIDI Notes 1-45
- MIDI Channel: 0
- no SpeedControl buttons enabled
- LEDs (button indicators)
- Mapping: MIDI Notes 1-45
- MIDI Channel: 0
- Auto-light (Local Control): Off
- Encoders
- Mapping: MIDI CC's 1-32
- MIDI Channel: 0
- Encoder Speed1: 1
- Encoder Speed2: 3
- Encosion Style: Absolute Mode
- LED Rings
- Mapping: linked to encoders
- MIDI Channel: linked to encoders
- Encoder Link: On
- Ring Mode: Walk Mode
- General MIDI
- Local Control: Off
- Omni Channel: Off
- External MIDI Jacks: Enabled
Ableton Live Remote Script
Using the Ableton Live Remote script available on our downloads page, the following functions are automatically mapped to Ableton Live:
Code Sysex
SYSTEM EXCLUSIVE COMMAND BYTES
The System Exclusive message includes the official MIDI Manufacturer ID for Livid, a Product number, and the Command number. A "wild card" Product number allows the same commands to be shared across multiple Livid products. These messages can be almost any number of bytes from 7 to (183) bytes. Note: In this specification, all numbers are hexadecimal unless parenthesized or otherwise noted, in which case they are decimal.
F0 00 01 61 04 NN ... F7
The Product number is 04 for the Code, and the Command numbers, NN, are described below.
COMMAND SUMMARY
- 00 : individual button map (not supported) *
- 01 : individual control map (not supported) *
- 02 : Save User Settings
- 03 : read presets (ignored) *
- 04 : Set all LED indicators
- 05 : Recall User Settings
- 06 : Factory Reset
- 07 : Request, multiple subtypes:
- 07.04 : Request all LED indicators
- 07.06 : Request Control Surface Snapshot
- 07.08 : Request MIDI Settings (Local Control, etc.)
- 07.09 : Request Single MIDI Input mapping
- 07.0A : Request Analog mapping (ignored)**
- 07.0B : Request Button mapping
- 07.0C : Request MIDI Basic Channel
- 07.0D : Request MIDI Output Merge setting
- 07.0F : Request crossfader Flip setting (ignored)**
- 07.10 : Request Encoders
- 07.11 : Request Encosion Style
- 07.12 : Request Analog Channel
- 07.13 : Request Button Channel
- 07.14 : Request Encoder Channel Map
- 07.16 : CODE_REQ_RINGMODE
- 07.17 : CODE_REQ_ENCODERSCALING...
- 07.18 : CODE_REQ_RINGLEDS
- 07.04 : Request all LED indicators
- 08 : MIDI Settings Response
- 09 : Map Single LED Indicator
- 0A : Map Analog Inputs (ignored)**
- 0B : Map Buttons
- 0C : Set MIDI Basic Channel
- 0D : Set MIDI Output Merge
- 0E : Erase entire MIDI Input Map
- 0F : Set crossfader Flip (ignored)**
- 10 : Encoder MIDI mapping
- 11 : Encosion Style mapping
- 12 : Analog Channel Map
- 13 : Button Channel Map
- 14 : Encoder Channel Map
- 15 : Map Single Note or CC Channel
- 16 : (reserved)
- 17 : (reserved)
- 18 : (reserved)
- 1D : Set Ring Mode (all encoders)
- 1E : Set Encoder Speed
- 1F : Set LED Ring indicators
- 20: : Local Ring Control
- 7E : NAK Negative Acknowledge
- 7F : ACK Positive Acknowledge
"*" Commands 0, 1, and 3 are Ohm "classic" System Exclusive commands.
Even though the MIDI Manufacturer ID is different, and the command structure is different as well,
these skipped command numbers pay tribute to what came before.
"**" Vestiges from Ohm64 commands
COMMAND DETAILS
02 : Save User Settings
- Message: F0 00 01 61 04 02 F7
- All User Settings which can be remembered will be stored in Flash and automatically restored whenever the Code is powered up.
- Response:
- ACK when finished processing command.
04 : Set all LED indicators
- Message: F0 00 01 61 04 04 b1 b2 b3 b4 b5 b6 b7 b8 F7
- Data Size: 8-Bytes (bitwise)
- Format: 1-bit turns on an LED, 0-bit turns off an LED
- BYTE 1: Indicator LEDs (01-07) as mapped by Default Configuration
- BYTE 2: Indicator LEDS (08-14) as mapped by Default Configuration
- BYTE 3: Indicator LEDs (15-21) as mapped by Default Configuration
- BYTE 4: Indicator LEDS (22-28) as mapped by Default Configuration
- BYTE 5: Indicator LEDs (29-35) as mapped by Default Configuration
- BYTE 6: Indicator LEDS (36-42) as mapped by Default Configuration
- BYTE 7: Indicator LEDs (43-45) as mapped by Default Configuration
- BYTE 8: ignored but must be included
LED Button (and Push Button Indicators can be set on or off with this command.
Encoder LEDs are not included in this string. A 1 bit turns on the LED, a 0 turns it off.
Ex1. To turn off all LEDs except the Top-Left Encoder Button
Send: F0 00 01 61 04 04 01 00 00 00 00 00 00 00
Ex2. To turn off all LEDs except the First Four Encoder Push Button Indicators
Send: F0 00 01 61 04 04 0F 00 00 00 00 00 00 00
The Code responds with ACK when finished processing this command.
05 : Recall User Settings
Message: F0 00 01 61 04 05 F7
- Recalls User Settings from storage, just like when the Code powers up.
- Response:
- ACK if the User Settings are valid
- NAK when no setting have been saved or the memory is unreadable
06 : Factory Reset
- Message: F0 00 01 61 04 06 F7
- This will erase the User Settings so that the Code is factory fresh.
- Response:
- ACK when finished processing command.
07 : Requests...
- Message Format: F0 00 01 61 04 07 RR .. F7
This command allows several types of information to be requested.
Each request type, RR, will be detailed below.
Some request messages require additional information bytes to specific which particular item is being requested.
The Code responds with the specified data.
- 07.04 : Request all LED indicators
- Message: F0 00 01 61 04 07 04 F7
- Response: Response will have the same format as Command 04.
- 07.06 : Request Control Surface Snapshot
Request values for all Analog inputs.
- Message: F0 00 01 61 04 07 06 F7
- Response: < none >
The Code Does not have analog inputs so this request is useless.
- 07.08 : Request MIDI state (Channel Mode, etc)
Request state of settings that are controlled by MIDI messages, such as Local Control, Omni, Mono/Poly Mode.
- Message: F0 00 01 61 04 07 08 F7
- Response: Response will have the same format as Command 08 (below).
- 07.09 : Request Single MIDI Input mapping
Request the current LED mapping of a MIDI CC.
- Message: F0 00 01 61 04 07 09 LL HH F7
- LL HH is the 8-bit map code defined under Command 09 (below).
- LL: 7-bit Note/ CC #
- HH: If (HH == 0) then checks Note. If (HH > 0) then looks for CC.
- LL HH is the 8-bit map code defined under Command 09 (below).
- Response: Response will have the same format as Command 09 (below)
- with LL HH Changed to the LED Code of the LED that is Mapped to the address defined CC/ Note #
- with LL HH Changed to the LED Code of the LED that is Mapped to the address defined CC/ Note #
- Message: F0 00 01 61 04 07 09 LL HH F7
LL and HH Values must not exceed 7F.
- 07.0A : Request Analog mapping
Request MIDI map for all Analog inputs.
- Message: F0 00 01 61 04 07 0A F7
- Response: Same as Command 0A, and the bits are arranged identically.
The Code does not have analog controls, so the response will be non-sense
- 07.0B : Request Button mapping
Request MIDI map for all Buttons.
- Message: F0 00 01 61 04 07 0B F7
- Response: Same as Command 0B, and the bits are formatted identically.
- 07.0C : Request MIDI Basic Channel
- Message: F0 00 01 61 04 07 0C F7
- Response: Same as Command 0C
Since the Code is a multi-channel device, basic channel has no effect on it's operation.
- 07.0D : Request MIDI Output Merge setting
Whether or not the Code is Outputting to the External MIDI Jacks.
- Message: F0 00 01 61 04 07 0D F7
- Response: Same as Command 0D.
- 07.10 : Request Encoder map
- Message:F0 00 01 61 04 07 10 F7
- Response: Same as Command 10.
- 07.11 : Request Encosion Style
- Message: F0 00 01 61 04 07 11 F7
- Response: Same as Command 11.
- 07.12 Request Analog Channel Map
- Message: F0 00 01 61 04 07 12 F7
- Response: Same as Command 12
The Code does not have analog controls, so the response will be non-sense
- 07.13 Request Button Channel Map
- Message: F0 00 01 61 04 07 13 F7
- Response: Same as Command 13.
- 07.14 Request Encoder Channel Map
- Message: F0 00 01 61 04 07 14 F7
- Response: Same as Command 14.
- 07.15 Request Note/CC Channel
- Message: F0 00 01 61 04 07 15 F7
- Response: Same as Command 15.
08 : MIDI Settings Response
- Message: F0 00 01 61 04 08 XX F7
- Data Size: 1-Byte (XX) Bit-wise
- Bit1: Omni Mode (1:On, 0:Off) (allows controls to accept incoming messages on any channel regaurdless of their mapping
- Bit3: Local Control (1:On, 0:Off)
- other Bits are currently unused.
Note: This is a response command only.
It will be ignored if received by the Code.
Use the official MIDI messages to change these settings.
09 : Map Single LED Indicator
This command updates the MIDI Input map for a single entry.
- Message: F0 00 01 61 04 09 LL HH CR F7
- If HH is 00, then LL specifies the Note number.
- If HH is 01, then LL specifies the Control number,
- Only valid control numbers are accepted from 0x00 to 0x74 (0-116).
- Values of HH above 1 are reserved.
- CR is the LED indicator Column and Row or 7F to clear the mapping for the specified entry.
- The Code responds with a Single MIDI Input mapping for the specified message.
"The CR Map for encoders is:
0 4 8 13 19 23 28 34
1 5 9 16 20 24 29 35
2 6 11 17 21 25 32 36
3 7 12 18 22 27 33 37"
and for the surrounding buttons:
38
39
40
41
43 44 45 48 49 50 51 52 53
(no, it is not a typo that 10, 14, 15, 26, 30, 31, 42, 46, 47 are skipped)
0A: Reserved
0B : Map Buttons
This command updates the MIDI map for all (45) Buttons.
- Message: F0 00 01 61 04 0B (45)*[LL HH] F7
- If HH is 00, then LL specifies the Note number.
- If HH is 01, then LL specifies the Control number,
- Only valid control numbers are accepted from 0x00 to 0x74 (0-116).
- Larger values of LL and HH are reserved, with 7A (start), 7B (continue), and 7C (stop) used for MMC.
- CC 127 (0x7F): Designates a button a Speed Control Button. (see Encoder Sensitivity).
- Data Size: 90 (45x2)
- There are (45) sets of LL HH value pairs in this message, each corresponding to the index of a Button.
- These indices do not conveniently match up with the physical layout.
Matching the encoder button layout with index position, we get:
0 1 8 9 16 17 24 25
2 3 10 11 18 19 26 27
4 5 12 13 20 21 28 29
6 7 14 15 22 23 30 31
and the surrounding buttons use indices:
32
33
34
35
36 37 38 39 40 41 42 43 44
0C : Set MIDI Basic Channel
- Message: F0 00 01 61 04 0C NN F7
This command sets the MIDI Basic Channel to NN, where 00 through 0F are valid and the rest are reserved.
Since Code is a multi-channel device. Basic Channel is not used at all on Code.
Response: ACK when finished processing this command.
0D : Set MIDI Output Merge
- Message: F0 00 01 61 04 0D NN F7
- if (NN==0) then MIDI Output Jacks are turned off.
- if (NN > 0) then MIDI Output Jacks are turned on.
- Response: The Code responds with ACK when finished processing this command.
0E : Erase entire MIDI Input Map
This command erases all MIDI Input message mappings. These affect the remote control of LED indicators, so no remote control will be available immediately after the map is erased.
- Message: F0 00 01 61 04 0E F7
- Because there are as many as (256) possible MIDI Input messages that can be mapped to an LED, and because multiple assignments to the same LED can cause conflicts, it is best to start the LED indicator mapping process by first erasing all entries before filling in the desired mappings, no more than (75), preferably.
- Response: The Code responds with ACK when finished processing this command.
10 : Map Encoder MIDI
F0 00 01 61 04 10 (32)*[LL HH] F7
This command updates the MIDI map for all (32) Encoder controls. If HH is 00, then LL specifies the 7-bit Control number, but only valid control numbers 00 to 78 are accepted. If HH is 01, then LL selects between 14-bit Control numbers and Pitch Bend. In the latter case, LL between 60 and 6F specifies a Pitch Bend message on Channel (1) through (16), respectively. Otherwise, LL selects a 14-bit Control number, of which the only valid control numbers are 00 to 1F. All other values for LL, 20 through 5F and 70 through 7F are reserved for future use. Values of HH above 1 are similarly reserved.
There are (32) sets of LL HH value pairs in this message, each corresponding to the index of a Button. These indices do not conveniently match up with the physical layout. Matching the encoder button layout with index position, we get: 1 2 9 10 17 18 25 26 3 4 11 12 19 20 27 28 5 6 13 14 21 22 29 30 7 8 15 16 23 24 31 32
11: Map Encosion Mode
F0 00 01 61 04 10 E1 E2 E3 E4 E5 E6 E7 E8 F7
This command sets the Mode for each encoder as "absolute" or "inc/dec". Absolute mode behaves as a linear poteniometer sweeping from 0-127. Inc/dec will send a value of 127 on a CW turn, and a value of 1 on a CCW turn.
- E1: Acceptable Values: 0-7F. Setting the individual bits for this byte controls mode for Encoders 0-6. A '0' for a bit sets the mode to "absolute," a '1' sets the mode to "inc/dec."
- E2: Acceptable Values: 0-7F Setting the individual bits for this byte controls mode for Encoder 7. Any byte value greater than 0 will set Encoder 7 to "inc/dec" mode.
- E3: controls Encoders 8-14
- E4: controls Encoder 15
and so on.
12 : Analog Channel Map
F0 00 01 61 04 12 xx F7
This command does not function with the Code controller, as there are no analog controls.
13 : Button Channel Map
F0 00 01 61 04 13 CH*(45) F7
This command creates a map of output channels for the buttons, making it possible for each button to send on a channel independent of the other buttons.
There are (45) instances of the byte CH, corresponding to the index of a button (see command 0B). CH specifies the channel, in the range of 0-0F (which translates to the more familiar range of (1)-(16)). Values above 0F will wrap to fit into the range 0-0F.
14 : Encoder Channel Map
F0 00 01 61 04 14 CH*(32) F7
This command creates a map of output channels for the encoders, making it possible for each encoder to send on a channel independent of the other encoders.
There are (32) instances of the byte CH, corresponding to the index of an encoder (see command 10). CH specifies the channel, in the range of 0-0F (which translates to the more familiar range of (1)-(16)). Values above 0F will wrap to fit into the range 0-0F.
15 : Map Single Note or CC Channel
F0 00 01 61 04 15 LL HH CH F7
This command makes it possible for incoming notes or ccs that are assigned to LEDs to be mapped to a unique channel. If HH is 00, then LL specifies the Note number. If HH is 01, then LL specifies the Control number, but only valid control numbers are accepted from 00 to 78. Values of HH above 1 are reserved. CH specifies the channel, in the range of 0-0F (which translates to the more familiar range of (1)-(16)). Values above 0F will wrap to fit into the range 0-0F.
Unlike command 09, this command does not require a CR (index) number to specify a given LED. It merely describes the channel for a particular incoming note or cc, and that note or cc can be linked to an LED using command 09.
16 : Reserved
17 : Reserved
18 : Reserved
1D : Set Ring Mode (all encoders)
F0 00 01 61 04 1D B1 B2 B3 B4 B5 B6 B7 B8 F7
All (32) Encoder LED Ring indicators can have their display mode set with this command. There are (8) bytes.. Values must be 7F or less. A 1 bit turns on Fill Mode for an encoder, a 0 puts the ring in Walk Mode (only 1 LED will light for indication).
- B1: RingMode (Encoders 01-07)
- B2: RingMode (Encoder 08)
- B3: RingMode (Encoders 09-15)
- B4: RingMode (Encoder 16)
- B5: RingMode (Encoders 17-23)
- B6: RingMode (Encoder 24)
- B7: RingMode (Encoders 25-31)
- B8: RingMode (Encoder 32)
Ring mode can also be set with controllers values 74 (116) and 75 (117).
1E : Set Encoder Speed
F0 00 01 61 04 1E S1 S2 F7
This command sets the sensitivity of all encoders. Encoders can travel at any multiple of the normal speed.
S1 and S2 describe the speed multiplier. S1 is the "normal" speed, and S2 is the speed when the Speed Button is depressed.
When set to 00 or 01, the encoder will have a normal sensitivity. For values from 02 to 0F, the encoder will respond more quickly. When set to 02, the encoder will have double speed, 03 will have 3x speed, and so on, up to a multiplier of 0F (15) times normal.
For values 42 to 4F, the encoder will respond more slowly. When set to 42, the encoder will respond with half speed, 43 will respond with 1/3 speed, and so on up to 4F (1/15th speed).
See "Speed Control Button" below.
1F : Set LED Ring indicators
F0 00 01 61 04 1F BYTE*(64) F7
There are 64 bytes that make up the bulk of this message. This command sets the on/off state for each LED on the Encoder LED Rings. A bit value of 1 will turn the LED on, a bit value of 0 will turn it off:
- BYTE01: LEDRing01: LEDs 01-07
- BYTE02: LEDRing01: LEDs 08-13
- BYTE03: LEDRing02: LEDs 01-07
- BYTE04: LEDRing02: LEDs 08-13
- BYTE05: LEDRing03: LEDs 01-07
- BYTE06: LEDRing03: LEDs 08-13
. . .
- BYTE63: LEDRing32: LEDs 01-07
- BYTE64: LEDRing32: LEDs 08-13
20 : Local Ring Control
F0 00 01 61 04 20 LL F7
This command will disable or enable (enabled by default) local control of the Encoder's LED rings. If LL is 00, the LED Rings will automatically follow Encoder Value. If LL is > 01, then LED Rings only respond to the 1F: Set LED Ring indicators SysEx Message as described above.
7E : NAK Negative Acknowledge
F0 00 01 61 04 7E F7
This is intended as a way for the Code to indicate a problem with the previous message. Unfortunately, when messages are sent too fast, it becomes impossible for the Code to reply with anything reliably, even NAK. The best approach is to wait for ACK (see below) after sending each message, rather than depend on NAK to indicate an error. The one exception is Recall User Settings, where the Code will reply with NAK if the contents of User memory are empty or otherwise corrupted.
7F : ACK Positive Acknowledge
F0 00 01 61 04 7F F7
ACK means the previous message was handled correctly. Some messages (e.g. Map Single LED Indicator) simply reply with a specific command instead of ACK, when more context is needed than a simple acknowledgment.
ADDITIONAL CONTROLS
Speed Control Button
If a button output is set to CC FF (127), then this button will act at the Speed Control Button. The Code's reaction to this button is determined by the BB byte of message 17. See "17 : Set Encoder Speed."
Button LED Velocity
Sending notes with different velocities can engage various blinking modes:
- 000-000: LED Off
- 001-031: LED Blink
- 032-063: LED BlinkFast
- 064-127: LED On
LED Ring Fill Mode
CC Control: Ring Mode of any encoder can be changed using CC116 and CC117, so that software can enable encoders to show feedback when filters are turned on or off. The "Value" sent of the CC addresses the Encoders.
- 74 (116): Walk Mode
- 75 (117): Fill Mode
For example,
- if the Code controller receives CC(116), value (002), then the Code Controller will change the LED Ring Mode of the Encoder that outputs CC002(if there is one) to Walk Mode.
- If the Code Controller receives CC(117), value (032), then the Code Controller will change the LED Ring Mode of the Encoder that outputs CC(032) (if there is one) to Fill Mode.
MAPPING SUMMARY
- Analog to CC; 121 control numbers; 7-bit value
- Analog to CC; 32 control numbers; 14-bit value
- Analog to Pitch Bend; 16 channels; 14-bit value
- Button to Note; 128 note numbers; 1-bit value
- Button to CC; 121 control numbers; 1-bit value
- Button to MMC; 3 types; no value
- LED from Note; 128 note numbers; 1-bit value
- LED from CC; 121 control numbers; 1-bit value
MIDI IMPLEMENTATION
The following standard MIDI messages are implemented.
System Real Time: MIDI System Reset
Channel Mode Messages: Reset All Controllers Local Control (connects buttons to corresponding LED indicators) Poly On / Mono On (both set Omni Off) Omni On/Off All Notes Off (turns off all LED indicators)
Warranty
Code WARRANTY AND RETURN POLICY
Damage
Your Instrument should be inspected immediately upon receiving it. If there are any damages they should be reported immediately. All of our instruments are fully tested just prior to leaving our plant. Return Policy
All sales of Livid Instruments hardware are given a fifteen (15) day return policy. A controller may be returned within fifteen (15) days of purchase. We will refund the purchase price of the product, less shipping, immediately upon receipt of the returned item in as good of shape as it was shipped in. Any damage will be the responsibility of the customer. We will do our best to determine if damage happened during shipping and will help the customer by allowing carrier inspection of any damaged items. Software cannot be returned. Any open software packaging is not returnable or available for any refund.
Warranty
Livid Instruments warrants that this product is free of defects in materials and workmanship under normal conditions for one year from the purchase date, so long as the product is: owned by the original purchaser; the original purchaser has proof of purchase from Livid Instruments or an authorized dealer. Warranty does not include repairs needed due to misuse or abuse.
In the event that Livid Instruments receives written notice of defects in materials or workmanship from such an original purchaser, Livid Instruments will either replace the product, repair the product, or refund 21
the purchase price at its option. In the event any repair is required, shipment to and from Livid Instruments and a nominal handling charge shall be born by the purchaser. In the event that repair is required, a Return Authorization (RMA) number must be obtained from Livid Instruments. After the RMA number is obtained, the unit should be shipped back to Livid Instruments in a protective package with a description of the problem and the Return Authorization (RMA) clearly written on the package.
In the event that Livid Instruments determines that the product requires repair because of user misuse or regular wear, it will assess a fair repair or replacement fee. The customer will have the option to pay this fee and have the unit repaired and returned, or not pay this fee and have the unit returned un-repaired.
THE REMEDY FOR BREACH OF THIS LIMITED WARRANTY SHALL NOT INCLUDE ANY OTHER DAMAGES. LIVID INSTRUMENTS WILL NOT BE LIABLE FOR CONSEQUENTIAL, SPECIAL, INDIRECT, OR SIMILAR DAMAGES OR CLAIMS INCLUDING LOSS OF PROFIT OR ANY OTHER COMMERCIAL DAMAGE, EVEN IF ITS AGENTS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, AND IN NO EVENT WILL LIVID INSTRUMENTS' LIABILITY FOR ANY DAMAGES TO THE PURCHASER OR ANY OTHER PERSON EXCEED THE PRICE PAID FOR THE PRODUCT, REGARDLESS OF ANY FORM OF THE CLAIM. LIVID INSTRUMENTS SPECIFICALLY DISCLAIMS ALL OTHER WARRANTIES, EXPRESSED OR IMPLIED. SPECIFICALLY, LIVID INSTRUMENTS MAKES NO WARRANTY THAT THE PRODUCT IS FIT FOR ANY PARTICULAR PURPOSE.
This warranty shall be construed, interpreted, and governed by the laws of the state of New Jersey. If any provision of this warranty is found void, invalid or unenforceable, it will not affect the validity of the balance of the warranty, which shall remain valid and enforceable according to its terms. In the event any remedy hereunder is determined to have failed of its essential purpose, all limitations of liability and exclusion of damages set forth herein shall remain in full force and effect.
Livid Instruments, Viditar Inc.
The Code is handcrafted and assembled in The United States of America.


