Code

From Livid Wiki
Jump to: navigation, search

Contents

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

Codelayout.png
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.

Buttons

The Code Controller Contains 32 Encoder push buttons and 13 custom designed rubber buttons.
All of a Buttons Parameters can be controlled using the Code's Hardware Editor,
which can be downloaded at our Support Downloads Page. The specific MIDI messages that the Code recognises are also detailed below.

Modes of Output

In firmware revisions 200+, buttons are capable of being designated as either Momentary or Toggle Buttons.
This feature can be modified using the Codes Hardware Editor's 'Momentary' Element or the Set Button Output Mode SysEx
In firmware revisions prior to 200, buttons are all Momentary.

Momentary

Momentary buttons send a Note On Message when pressed, and a Note Off Message when released.
This is similar to the way a piano key operates. Most audio programs are designed to use momentary buttons.
For this reason, all of Code's buttons are Momentary by Default.

Toggle

A toggle button sends a Note On Message the first time it is pressed, and nothing when released.
That toggle button sends a Note Off Message the second time it is pressed, and nothing when released.
This is similar to the way an on/off switch operates on your stereo.
You wouldn't want to have to hold down the power button the whole time your stereo was on, would you?
Similarly, when interfacing with hardware devices, you don't want to have to hold down the button the whole time a filter is on.
The Code allows you to individually select which buttons (in which banks) are momentary or toggle.

Mappability

Each button can be mapped to output Notes or CCs. Each button may also function as a Bank Cycle Button, or a Speed Control Button,
The Assignment of each Button in the Current Bank may be modified using the Code's Hardware Editor or the Set Button Mapping SysEx.

Note/ CC

Each button can be mapped as any Note (0-127) and any CC (0-115). Multiple Buttons can be mapped to output to the same Note/ CC, but only one Indicator LED Can receive feedback on that Note/CC.
In Firmware Versions 200+, a button will output on the Current Bank's MIDI Channel.
In Firmware Versions before 200, each button has it's own Individual Output Channel.
The Code outputs a different 'ON' Velocity by default based on whether it is mapped as a Note of a CC. This is in order to fall in accordance with some softwares, which treat a messages of velocity 64 as a Toggle message, and a message of velocity/ value 127 as a Momentary messages. By default, the Code's Buttons are mapped to Notes 1-45.

  • Mapped as Notes:
    • Button On Message Velocity: 64
    • Button Off Message Velocity: 0
  • Mapped as CCs:
    • Button On Message Value: 127
    • Button Off Message Velocity: 0

Speed Control Button

The Code's Encoders are capable of increasing or decreasing their value at 2 customisable Encoder Speeds.
In firmware versions 100+, any button may be mapped as a 'Speed Control Button' to toggle between these two speeds.
By default, the Code's Encoders increase values at about the same rate as a potentiometer,
and a little over a 3/4 turn achieves a full MIDI Range of 0-127.
When you switch to the Code's default alternate speed for fine control with the Speed Control Button,
you have to turn 1-1/2 turns to achieve a full MIDI Range of 0-127.

Bank Cycle Button

In Firmware versions 200+, any One button may be mapped as a Bank Cycle Button.
This button cycles through the Code's 4 Banks of Controls quickly, allowing the Code to essentially operate as a 128 encoder and 135 Button device.
A Bank Cycle Buttons indicator LED is Locally Controlled when the Bank Cycle Button is enabled.
The Indicator LED for the Bank Cycle Button is:

  • Off when controller is in Bank1
  • Blinking Slowly when controller is in Bank 2
  • Blinking Quickly when controller is in Bank 3;
  • On when controller is in Bank 4.

LED Feedback

Each of the Code's 45 buttons are backlit by an LED to designate the buttons current state.
Each Button Indicator LED Can be controlled by the Buttons current state (on/off) for either Momentary or Toggle Buttons (or both).
By default, Local Control of LEDs by Button is disabled for both Momentary and Toggle Buttons because it can interfere with Software MIDI feedback.
Local Control of Indicator LEDs by Buttons can be controlled in the Code Hardware Editor's Global Section ,
or by CC Message using the Local Control Feature of the Settings Channel.

Each LED underneath a button can also be controlled by incoming MIDI Messages.
By Default, each LED that is near a button has the same mapping default as the button on top of it (in each bank).
This makes the Button Indicator LEDs compatible with most softwares' default feedback systems by default.

Encoders

Modes of Output

Each encoder (in each bank) is capable of outputting in Absolute or Relative Mode.
The Output Mode of Each Encoder in the Current Bank can be adjusted using the Code's Hardware Editor's 'type' Element, or the Encoders feature of the Settings Channel.
The Output Mode of Each Encoder in the Current Bank can also be updated using the Set Encoder Output Modes SysEx.

Absolute

When in Absolute Mode, an encoder outputs very much like an ordinary Potentiometer.
By default, all of the Code's Encoders are in Absolute Mode.
Absolute mode is generally used to control effects, EQ settings, and other continuous parameters.
As you turn clock-wise, the Encoder will output increasing values until it outputs 127.
As you turn counter clock-wise, the Encoder will output decreasing values until it outputs 0.
If Local Control for Encoders in Absolute Mode is enabled, then the LED Ring will update the display the current value of the encoder.
Local Control for Encoders in Absolute Mode can be controlled by the Local Control feature of the Settings Channel.

Encoder Speeds

The angle of turn need to complete a full 0-127 sweep on an Encoder is dependent on the Code's declared Encoder Speed.
This is a global control.
The Code's Default Speed is 2, and the Code's Default Alternate Speed is 1. At a Speed of 2, the Encoder changes value at about the same rate as a potentiometer.
At a Speed of 1, the Encoder's Natural Speed, an Encoder changes value at about half of the rate of a potentiometer.
Maximum Encoder Speed is 16, and Minimum Speed is 1/16th.

The Code stores 2 Encoder Speeds at a time, and they can be toggled between using a Speed Control Button.
Encoder Speeds are assignable by the Code Hardware Editor's 'enc. speed A/B'.
Encoder Speeds can also be easily changed by sending a message to an Encoder on the Settings Channel.
Encoder Speeds are also assignable by the Set Encoder Speeds SysEx Message.

  • Natural Speed: 80 [96] Ticks/ revolution
  • Min Speed: 1/16th of Natural Speed
    • 5 [6] Ticks/ revolution
  • Max Speed: 16x Natural Speed
    • 0-127 sweep in 1/10th [1/12th] revolution
MIDI Feedback

Encoders in Absolute Mode accept standard MIDI Feedback.
If the Code receives a message with the same mapping as an Encoder,
the Code will use the value/velocity of that message to set the current value of the Encoder.

  • Ex. If the CC1, value 127, on Channel 0 is received on a Code with default settings,
    • Code will update it's stored value for the top-left encoder to 127
    • If Local Control for Encoders in Absolute Mode is enabled, then the LED Ring will update the display the current value of the encoder.
MIDI Feedback Loops

In order to eliminate feedback loops that could lock an Encoder at a value, the Code will ignore a MIDI message that is mapped to an encoder that is actively being turned by the user.
This is helpful for Traktor's feedback system especially, which will send a message right back to the Code after receiving it in some cases.
The Code can still accept messages that are mapped to the LED Ring that accompanies that encoder during this period if Local Control for Absolute Encoders is Disabled.

Relative

Code Encoders are also able to operate in Relative Mode.
This version of relative mode is known as 2's Compliment Mode.
When in relative Mode, an Encoder will output continuously in either direction.
Relative mode is generally used to cycle through long lists, adjust track position, and other increment/ decrement style adjustments. The Code only outputs two messages in this Mode.

  • Clockwise: +1 ( velocity/ value 1 )
  • Counter-Clockwise: -1 ( velocity/ value 127 )

One message is output for each increment or decrement.
There are approximately 80-increments in one full rotation of a Code's Encoder.
If Local Control for Encoders in Relative Mode is enabled, then the LED Ring will update to show which direction the Encoder last turned.
Local Control for Encoders in Relative Mod can be controlled using the Local Control feature of the Settings Channel.

MIDI Feedback

Firmware Versions 200+ Encoders in Relative Mode are capable of accepting MIDI Feedback to the LED Rings.
If the Code receives a message with the same mapping as an LED Ring,
the Code will use that message to set the current display of the LED Ring based on the LED Ring's Display Mode and the Messages Value.
If Local Control for Encoders in Relative Mode is disabled,
Programs capable of sending scaled feedback to your LED Rings can display Absolute style LED Ring Feedback to your Code
for controls that you are modifying with an encoder in Relative Mode.

Mappability

Note/ CC Messages

In Firmware versions 200+, each encoder can be mapped to output to any Note (0-127) and any CC (0-115) using the Code Hardware Editor's Button Inspector Element or the Set Encoder Mappings SysEx LINK2 SYSEX16.
In versions prior to 200, encoders can only be mapped to output CC Messages.
Multiple encoders can be mapped to output to the same Note/ CC, but only one will be able to receive Direct Feedback via MIDI Message in this case.
In Firmware Versions 200+, an encoder will output on the Current Bank's MIDI Channel.
In Firmware Versions before 200, each encoder has it's own Individual Output Channel that can be changed using the LED Inspector Element of Editors 1.273 and below.

LEDs (Button Indicators)

Each of the Code's 45 Buttons has an indicator LED.

Reception Modes

The Indicator LEDs are capable of responding to Note and CC MIDI Messages as well as Button Presses.

Note/ CC

Each LED can be mapped to respond to any Note (0-127) and any CC (0-115) using the Code Hardware Editor's LED Inspector Element,
LED Ring Mappings can also be adjusted using the following SysEx Messages:

Multiple LEDs cannot be mapped to output to the same Note/ CC, but one LED can be controlled by many messages if you use the SysEx Message to Map.
In Firmware Versions 200+, an LED will receive messages on it's Bank's MIDI Channel.
In Firmware Versions before 200, each Note/CC has it's own Individual Reception Channel.
By Default, each of these LEDs is mapped to the same MIDI Note as the Button it is underneath (Notes 1-32).

Button Local Control

These Button Indicator LEDs can also be Locally Controlled.
. In other words, they can light in reaction to a Button's Current State, but only if
if the Button Local Control is enabled for the Button's Output Mode.

Display

The Indicator LEDs on the Code have 4-states. Velocity
000-000: LED Turns Off
001-063: LED Blinks Slowly
064-126: LED Blinks Quickly
127-127: LED Turns Solid On

LED Rings

The LED Rings of each contain 13-LEDs (12-blue and 1-green).

Reception Modes

An LED Ring's display can be controlled by incoming Note and CC MIDI Messages, and the by the Encoder it surrounds.
By default, Encoders are in Absolute Mode, and the LED Rings Display the current value of the Encoder.
LINK2_EAM_LF By default, LED Rings are also updated when the Code receives a MIDI Message that matches the LED Rings Mapping.

Note/ CC Messages

By default, the LED Rings are mapped to CC33-64 on each bank of the Code.
LED Ring Mappings can be modified using the Code Hardware Editor's LED Ring Inspector Element.
LED Ring Mappings can also be adjusted using the following SysEx Messages:

When the Code Receives an LED Ring directed messages,

  • The LED Ring is updated as determined by the LED Ring's Display Mode and Message velocity/value.
  • These messages do Not effect Encoder Value.

Encoder Local Control

By default, all of the Code's LED Rings are Locally Controlled by the Encoders.
Locally Controlled Encoders can update the LED Rings when:

  • User Turns the Encoder
  • Code Receives a MIDI Message (also known as a Feedback Message) that matches the mapping of the Encoder.

Display Modes

The Code's LED Rings are capable of 4 Display Modes to accurately display the current state of any filter or effect.
The Display Mode of each LED Ring is accessible in the Code Hardware Editor's LED Ring Inspector Element.
These Display Modes are changeable by basic Note and CC Messages using the LED Rings feature of the Settings Channel.
Display Modes are also changeable by using the Set LED Display Mode SysEx.
For a full chart of each display mode and it's states, check out the Code LED Ring Modes Specification. LINK2 LEDRING_MODES_SPEC

Walk

Ledring walk.jpg
Walk Mode lights 1 to 2 LEDs at a time and seemingly walks up as Encoder's value increases.
This Mode has 26 states, so the visual resolution of each state is about 5 MIDI Values.
This Mode can be especially useful to designate a parameter that you are Modifying that is currently Off,
and when you need highest resolution LED Feedback.

Fill

Ledring fill.jpg
Fill Mode lights all preceeding LEDs as Encoder's value increases.
This Mode has 14 States, so the visual resolution of each state is about 9 MIDI Values.
This Mode can be especially useful to designate a parameter that you are Modifying that is currently On.

EQ

Firmware v200+
Ledring eq.jpg
EQ Mode Lights from the center LED and stretches either to the Left or Right depending on the LED Ring's Display Value.
When the LED Ring's Display Value reaches 0, the LEDs on the Left Side will all be lit.
When the LED Ring's Display Value reaches 127, the LEDs on the Right Side will all be lit.
This mode has 13 states, so the visual resolution of each state is about 10 MIDI Values.
This mode is good for parameters that are centered around MIDI Value 63-64, such as EQs and Pans.

Spread

Firmware v200+
Ledring spread.jpg
Spread Mode Lights from the center LED Out.
This Mode has 26 states, so the visual resolution of each state is about 5 MIDI Values.
This display mode is an especially good display for bandpass and notch filters.

Relative

Relative Mode is used only for Relative Encoder Local Control, and cannot be specially assigned. It has 5-states; still, incrementing, incrementing (alternate), decrementing, and decrementing (alternate).

Dual Display

LED Rings are capable of responding to incoming MIDI Messages,
and being controlled by Encoder Movements at the same time.
You may for example, have your software stream the current track's output level to the Code on CC33 (the top-left LED Ring).
You may also have that Encoder at CC1 controlling the Fader Volume for the track.
In this example, when you turn the encoder, the LED Ring will temporarily allow the Encoder Value to display on the LED Ring,
When you finish turning, the Code will release the control of the LED Ring back to the MIDI Stream of the current track's level.

Control Extensions

Banking/ Onboard Presets

Firmware versions 200+
The Code Controller now has 4 Banks (Onboard Presets) of Controls.
This gives the Code four pages of controls and allows you to control 4-times the effects.
The four banks of the Code are enabled on the Code by default, and
The Code starts on Bank 1 when it boots.
Active banks can receive messages at any time to change Button Indicator LED Feedback and Encoder Values,
Inactive banks can also receive messages at any time, and the changes are recorded to the Code's on-board memory.

All of the following parameters are banked:

  • Button Mapping, Button Output Mode, and Button Toggle State
  • LED State for each Button Indicator LED
  • Encoder Mapping, Encoder Output Mode, and Encoder Value
  • LED Ring Mapping and LED Ring Mode

Changing Bank

The easiest way to easily change banks is to create a Bank Cycle Button
using the Code Hardware Editor Software.
You can also change the bank of the Code:

  • Using the Code Hardware Editor to Directly Change the Bank
  • By Sending a Program Change Message on any of the Bank Channels or the Settings Channel.
    • The following values will lead to the following bank changes for this message:
      • 0 -> Bank 1
      • 1 -> Bank 2
      • 2 -> Bank 3
      • 3 -> Bank 4

Bank Channel

Each bank contains a global channel upon which all Buttons and Encoders will output messages and all LEDs, Encoders, and LEDRings will receive feedback.
The four Bank Channels are freely reassignable using the HardwareEditor or the Set Bank Channels Sysex.
By default,

  • Bank 1 is on MIDI Channel 1
  • Bank 2 is on MIDI Channel 2
  • Bank 3 is on MIDI Channel 3
  • Bank 4 is on MIDI Channel 4

Banks Sharing Channels

All four of your banks can be on the same channel.
If you have overlapping Encoders Mappings on the two banks, they will share Encoders values.
This allows you to create banks that merely shift or rearrange the control surface.

Multi-channel Output

Firmware versions 134 and below
In non-banking versions of the firmware, each button, led, and encoder has it's own reassignable output channel.
This allows your Code have one encoder output on Channel 1
and the encoder right next to it output on a different channel (Channel 13 for example).
These channels can be reassigned using Code Editor v1.273 and earlier.

Settings Channel

Firmware Versions 200+
When a MIDI Message is received by the Code on the Settings Channel, this message can modify some of the internal settings of the Code.
This allows you to Change LED Ring Display Style, Encoder Output Speed, Encoder Output Mode, Local Control Settings, and Current Bank with simple CC Messages.
Since CC Messages are accessible in every Software that allows MIDI Mapping, the settings channel gives you the opportunity to create more dynamic changes to your control surface without scripting.
The default Settings Channel for the Code is MIDI Channel 16.
The Settings Channel is freely reassignable using the Code Hardware Editor or the Set Settings Channel SysEx Message
For a full chart of the impact of the Code's Settings Channel Messages by message velocity/ value, check out this document: Code Settings Channel Specification. Please note that this document has individual tabs on the bottom for each type of Settings Channel Message.
The Code's Hardware Editor page also contains some good examples of settings channel messages.

Local Control

Local Control Allows the LEDs on the controller to react directly to the movement of controls.
Local Control is fixed at CC 122 because of MIDI Specification.
Here is a full Code Response by Velocity Map for the Local Control Message.

Button Indicator LEDs

Local Control of Indicator LEDs is available for the following control groups:

Local Control of Indicator LEDs can be controlled in the Global section of Code's Hardware Editor and by use of the Local Control feature of the Settings Channel.
LED Feedback is similar for all of these categories.
When a button sends a Note On message, the LED turns on.
When a button sends a Note Off message, the LED turns off.
If the LED receives a feedback message, the LED will still respond to it,
regardless of whether Local Control is enabled or disabled.

LED Rings

Local Control of LED Rings is available for these control groups:

Encoders - Relative

When this type of Local Control is enabled, and an encoder is designated as Relative Output Mode,
if this encoder is turned, the LED Ring will display Relative Feedback to display whether the encoder is Incrementing or Decrementing.
If the Code receives a MIDI Message that matches an LED Ring's Mapping,
the LED Ring will update the LED Ring according to the LED Ring's Mode and the Messages Velocity/ Value
regardless of whether or not this type of Local Control is Enabled or Disabled.

Encoders - Absolute

When this type of Local Control is enabled, and an encoder is designated as Absolute Output Mode,
if this encoder is turned, the LED Ring will display Feedback to display the current value of this encoder (0 - 127).
Similarly, if this encoder receives a MIDI Message that updates it's value while this is enabled,
the LED Ring will display Feedback to display the new value of this encoder according to the LED Ring's Display Mode.

If the Code receives a MIDI Message that matches an LED Ring's Mapping,
the LED Ring will update the LED Ring according to the LED Ring's Mode and the Message's Velocity/ Value
regardless of whether or not this type of Local Control is Enabled or Disabled.

Encoder Settings

When a message is received on the Settings Channel that has the same mapping as an Encoder in the Current Bank ( default: CC001-CC032 ),
that message can modify some encoder parameters.
Here is a full Code Response by Velocity Map for Encoder Settings Channel Messages.

Encoder Output Mode

The Settings Channel can be used to easily change any Encoder in the current bank between Relative and Absolute Output Modes.

Encoder Speed

The Settings Channel can be used to change the global Encoder Speed to the following values:
- Quick Speeds: 1-7
- Slow Speeds: 1/2 - 1/8

LED Ring Settings

When a message is received on the Settings Channel that has the same mapping as an LED Ring in the Current Bank
( default: CC033-CC064 ), that message can modify the LED Rings Look.
Here is a full Code Response by Velocity Map for the LED Rings Settings Channel Messages.

LED Ring Mode

Any LED Ring in the Current Bank can be changed to any one of the four LED Ring Display Modes with an LED Rings Settings message.

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.

For Direct USB Connectivity

The Code is class-complaint and does not require drivers when using the USB connectivity.

  1. Connect the USB cable from the computer to the USB port on the Code.
  2. 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.

Renegade Mode

Firmware versions 200+
Renegade button.jpg
If you push-in the top-right Encoder Push-Button, while you plug in the Controller,
the Code will enter Renegade Mode.
In Renegade Mode, the Code ignores USB Protocol, and start sending MIDI as soon as it gets power.
This allows your Code to operate as a standalone device without a Computer Connection.
You just need to connect your Code's USB Port to a 5V DC Adapter (commonly used for smart phone chargers). Ideally, the adapter should be rated at least 400mA.

If you are in Windows, Booting the Controller in Renegade Mode, will also allow the Encoders, Buttons, LED Rings, and MIDI In and Out Ports to operate without opening any MIDI Software. Renegade mode ignores USB Specifications for USB Sleep, which makes the Code an outlaw. For this reason, it is not advised that you run the Code in Renegade Mode on your computer. The Code will work in this condition, but your operating system may complain about it, especially if you have a lot of LEDs on when the computer tries to go enter a sleep state.

Back Panel

Mididin.gif

  1. MIDI In: Jack furthest from the USB port (on the left if you are looking at it).
  2. MIDI Out: Jack located next to the USB port (on the right if you are looking at it)
  3. USB – USB Port for powering the Code and sending MIDI messages to and from the instrument.

USB (bi-directional)

The USB Port provides a standard 4-Pin USB Type B jack for Connecting the Code to a USB Hosting Capable device, such as a computer or IPad.
The USB provides two sets of Virtual MIDI Ports to your Computer.
The first set of ports will send the MIDI Messages as a result of movement of the Code's Controls. This set of ports will be recognized in software as:

  • OSX: Code
  • Windows7: Code
  • Windows XP: USB Audio Device[n]

MIDI In

Number: 3
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 Code's Second Port. This port will be recognized in software as:

  • OSX: Code External
  • Windows7: Code External
  • Windows XP: USB Audio Device[n+1]

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 Code's Second Set of ports.
This port will be recognized in software as:

  • OSX: Code External
  • Windows7: Code External
  • Windows XP: USB Audio Device[n+1]

MIDI Connectivity

Using a standard MIDI cable, you can connect the Code MIDI in and out to the MIDI in and out of your sound-card or other MIDI interface.

Unless the Code is running in Renegade Mode LINK2_RENEGADEMODE,
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 that use no external power source.
Once you have the Code connected to a computer (and some simple MIDI application running on Windows),
The Code's Firmware 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 Merge Output through Code Editor).

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, check out the Code Hardware Editor's Wiki.

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.

Default MIDI settings for Code controller

  • 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:

Ableton Live Remote script with session view navigation for Code controller

Once downloaded and unzipped, the folder should go:

  • OS X – Right click on the Live App icon and put the Ohm64 (or block or Code) folder in Contents/App-Resources/MIDI Remote Scripts
  • Windows - C:\Program Files\Ableton\Live \Resources\MIDI Remote Scripts

When you open live go to the preferences and select Ohm64 (block,Code) in the control surface preferences, and the input/output prefs.

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
  • 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

Note Command Numbers are in Base 16, also known as Hexidecimal.

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.
      • 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 #

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 11 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: Set Bank Channel

F0 00 01 61 04 16 CH F7

This command will set the input and output channel for all controls in the current bank. CH specifies the channel, in the range of 0-0F. This does not change the controller's Main channel, which is used for communicating with the device for program changes, and other standard MIDI commands.

17: Set All Bank Channels

F0 00 01 61 04 17 CH*4 F7

This command will set the input and output channel for all controls in all (4) program banks. CH specifies the channel, in the range of 0-0F. This does not change the controller's Main channel, which is used for communicating with the device for program changes, and other standard MIDI commands.

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


23 : Set LED Note Map


F0 00 01 61 04 23 (128)*[LC] F7
Command 23 is an alternative to Command 09. This Command will attach an LED Code (or a 'No LED Code') to each of the 128 MIDI Notes for the Current Bank. The position index of the (128) bytes represent a note number. LC stands for LED Code.

  • LED Codes 0-53 = Button Indicator LEDs
  • LED Codes 54 - 85 = LED Rings
  • LED Codes 86+ = MIDI Note will not effect any LED.

24 : Set LED CC Map


F0 00 01 61 04 24 (128)*[LC] F7
Command 24 is an alternative to Command 09. This Command will attach an LED Code (or a 'No LED Code') to each of the 128 MIDI CCs for the Current Bank. The position index of the (128) bytes represent a note number. LC stands for LED Code.

  • LED Codes 0-53 = Button Indicator LEDs
  • LED Codes 54 - 85 = LED Rings
  • LED Codes 86+ = MIDI Note will not effect any LED.

26 : Set Encoder Values


F0 00 01 61 04 26 (32)*[VL] F7
Command 26 will set the value of Each and Every Encoder on the Controller. If Local Control for LED Rings is Enabled, then all LED Ring States will also be updated.

  • [VL]: Encoder Value
    • Min: 0
    • Max: 127

32 (50) : LED Ring Style


F0 00 01 61 04 32 (32)*BB F7
This command configures how LEDs in a group are illuminated in response to MIDI messages or local control. There is one byte per possible LED Grouping, and has a range of accepted values from 00-0F.
Available group modes:

  • 0 - Walk
  • 1 - Fill
  • 2 - Spread
  • 3 - EQ
  • 4-0E - reserved (OFF)
  • 0F - OFF

36 (54) : Button Toggle Mode Enable


F0 00 01 61 04 36 (12)*BB F7
This command sets the note-off behavior for buttons.
Each byte controls the behavior for four buttons, with each bit setting the toggle mode off (0) or on (1).
Accepted values for BB are 00-0F.
For example a BB value of 15 would set four buttons to act as toggles.
By default, a note velocity of 0 or cc value of 0 is sent when a button is released. If Button Toggle mode is enabled for a button,

  • then the first press and release of a button will send the Note on velocity,
  • and the next press and release will send the Note off velocity (or CC value 0).

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.

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.