Hardware Editor
From Livid Wiki
Introduction
For the sake of our sanity, this manual explains how to use both the CodeEditor, blockEditor and Ohm64Editor applications. They are so incredibly similar, that is not worth maintaining three separate documents! Instead, there will be references to “the device” and, when there’s a need to explain a difference, there will be explanations for both.
The Editor provides an interface for changing the MIDI assignments of the device’s buttons, knobs, and sliders. Sliders and knobs can send out a variety of combinations of control and pitchbend data.
Buttons send out note or controller messages. The lights behind all buttons except the F1-6 buttons on the Ohm64 respond to note or cc messages to turn them on and off. The LED indicators below the Code's encoders respond to the note or cc for the encoder's pushbutton. Additionally, the block’s BPM light does not respond to notes but will respond to a specific controller number (see the section about the “More” control panel)
Getting Started
- Make sure computer is connected to the device with a USB cable.
- Open the Editor application. The port menu in the lower left corner should read "Code" "Ohm64" or “block” (Windows XP will only show “USB Audio Device” and, for the Block’s MIDI jack on the back panel, “USB Audio Device[2]”). If a device is not found, you will get a very obvious message at the base of the grid:
Once properly connected, the Editor retreives the device’s current settings from the hardware. You can then click or use the device itself to select a knob, slider, or buton, and use the Inspector to change the values and types of messages.
Functions
There are a number of features to the Editor application. All are described below.
Inspector
The Inspector displays some fields to change values and types of controls an element will send/receive, and also displays the name and ID of the element.The IDs of buttons range from 0-80, and from 128-153 for sliders/knobs. For example, to change the MIDI message the second slider on the left to send on controller 25, click on the slider, then click on the value number box. Enter "25". Then, make sure the type menu is selected as "controller". To send these values to the device, press update, or just click on another control element. If you are warned that the note or cc number you chose is already assigned to something else, then chose a different value.The Code controller has the additional ability to set the channel number that each control is sent on. If you set the channel to "0", the control will use the value set in the #More... window. Other values can be between 1 and 16. If the speed button is turned on, then the button will act as a speed shift for the encoders, changing their responsiveness to turns. This simply sets the type to "cc" and the value to "127."
The OhmRGB supports preset banks, and the inspector can be used to assign a button as the Bank Cycle button.
Lock
When the Lock button is set in the inspector (buttons only),this ensures that MIDI going to the device to control LEDs is the same value that the button sends out. This is mostly for convenience, rather than necessity. If you press the Lock button, the inspector will expand to reveal settings for the LEDs, independent of the output messages.
On the Code controller, the LED input channel will be set to the same channel as the controller output channel.
MIDI Spy
You can confirm the device, or any other device, is sending the proper MIDI by clicking the MIDI Spy button to open a panel that displays incoming MIDI messages.Quick Assign
Quick Assign is a quick way to assign values to all the controls, just by typing in a few values.

For example, you can make a list of numbers that will, in order of the ID number, assign notes to the buttons or slider/knobs. A list such as
32 33 34 35 36 37 38 39
when entered into the buttons field, would assign those notes to the top row of the grid (ID 0-7).
You can also enter ranges of numbers such as
1-81
or even
10-17, 20-27, 30-37, 40-47, 50-57, 60-67, 70-77, 80-87, 100-109, 110-106
which would assign the eight rows of the grid, the slider and crossfade buttons (with 100-109), and the F1-F6 and BPM buttons with the notes defined by the ranges.
There is also the option for assigning a chord or scale to the button matrix, providing 8 octaves of a scale for harmonic experimentation. Simply select a scale, and all buttons will be assigned the appropriate note numbers for that scale.
Presets
Presets are a convenient way of storing a variety of device MIDI mappings on your computer, which can be quickly loaded onto the device. You can select presets with the arrow buttons, or by choosing from the menu. Presets can be renamed by clicking on the name, then entering in a new name. Press Store to save the current settings to a file on your computer. If you want to store to a preset that is not currently selected, hold down the option key on your keyboard, click Store, (the button will turn grey) then select a preset from the menu.  When you first start the Editor application, the menu will read "Current Settings" to indicate that you have not loaded a preset. If you press the "store" button while the menu is labeled with "Current Settings" your settings will be stored to Preset 1.
These presets are saved with the software on the host computer, not the device hardware, so they are only accessible if the Editor software is running.
You can find the preset files in the Editor preferences folder:
- Windows 7: C:/Users/username/AppData/Roaming/Livid/(device)Editor/Defaults/
- Windows XP: C:\Documents and Settings\{user}\Application Data\Livid\(device)Editor\Defaults
- Macintosh OS X: (harddrive):/Users/username/Library/Application Support/Livid/(device)Editor/Defaults
where the name of the controller (such as Ohm64) would fill in for "(device)".
Save/Open Settings to File
Using the File menu, you can save the current settings to a file. This would be useful, for example, if you want to share your settings (including the current LED pattern) with another user. Just select "Save" or "Save As...", enter a name, and save to a file. Similarly, "Open" will open a file from a saved settings and dump the settings to the Ohm64 or block. Of course, if you want these settings to save to the Code, Ohm64, or block, you will need to press the "Save To..." button.
Save To Ohm/block/Code
The "Save to.." function is very important. When the device is connected to power, settings are recalled from Flash memory. If you want the current settings to load when you plug the controller in, then you will have to press Save to Ohm (block/Code).
Show Assignments
Show Assignments provides a spreadsheet-style overview for all the assignments for the controls. It is a convenient display for when you want a quick look at everything. The block controller shows this in a popup window, rather than on the main interface, however, the information is the same.
LED Control
LEDs reveals a panel that gives control over lighting the Block LEDs in patterns. These patterns are instantly displayed on the attached Block, and saved with the preset. Additionally, you can load still images (JPEG, PNG, TIFF, etc.) or QuickTime movies which will be reduced to a resolution of 8x8 pixels. There are controls that determine how the image is scaled and reduced to a 64 pixel, 1 bit image. The setups are saved with the current preset, and can be controlled separately with MIDI notes or cc’s. These patterns are saved with the software, not the device hardware, so they are only accessible if the Editor software is running.
LED Control (OhmRGB)
The LED panel provides full control over the RGB LEDs. You can set any button to any color, simply by clicking and dragging in the button. Once you have made a pattern you like, you can save it to the current preset, as you would with your MIDI assignments, and the pattern will be recalled when the preset is loaded. You can load the LED preset separately from the MIDI settings preset by using the small "preset" number box in bottom of the LED panel.
The "message" area can be used to type a message that will print, one character at a time, on the OhmRGB's 8x8 button grid. The Loop button will keep the message constantly printing, rather than stopping at the end. Enable vertical and/or horizontal scroll to animate the letters. The R,G, and B buttons will change the color of the message letters. If you enable "pass keyboard input," every character you type on your computer keyboard will print to the 8x8 grid.
You can also use an image file or quicktime movie to set the LED lights. Any movie or image will be reduced to 3 bit color and 8x8 pixel resolution, and used to illuminate the LEDs. The interpolate, R thresh, G thresh, and B thresh let you adjust the color balance and image quality as it reduced to work on the OhmRGB.
Below the message display window is a small, horizontal crossfader. Use this to blend the message image with the quicktime movie image on the 8x8 grid. No, really, it works :)
Use the "clear all" button to turn off any movies and clear the LED buttons.
While the Quicktime movie feature seems like it might be somewhat of a (very cool) gimmick, this could be used for creating a visual score on the Ohm64. By creating a quicktime movie that uses color and positions to illuminate LEDs, the movie could be used to guide a performer where and what to play. I will be really really happy if I ever hear of anyone exploiting this feature.
Velocity Color Map (OhmRGB)
The OhmRGB's colors can be controlled with velocity value from notes or cc's. (refer to documentation for velocity values). The color that a velocity value activates can be changed using the "ColorMap" Control in the OhmRGB_Editor.
Open the LED panel, and in the top left is the Color Map control. Simply click and drag up/down to change the color assigned to a velocity range. The numbers in the colored buttons indicate a "color number" and the numbers above the colored buttons indicate the velocity range that will activate the color.
When the color map is changed, the colors in the LED controls will update with the new scheme.
Banking (OhmRGB only)
The OhmRGB can store four banks of different LED mappings in its flash memory. The Banking interface lets you change banks to create programs for each bank. In addition to storing unique maps in each preset, the four banks can send their data on unique MIDI channels. By default, the OhmRGB's presets are set to the default settings, but the presets sending data on MIDI channels 1-4, respectively. The steps to create settings for the four banks is as follows:
- Open the OhmRGB Editor
- If bank 1 is not the current bank, press "1"
- Modify the settings of the controls using the Inspector or Quick Assign
- Press "Send"
- Press the bank "2" button
- Modify the settings of the controls
- Press "Send"
- Press the bank "3" button
- Modify the settings of the controls
- Press "Send"
- Press the bank "4" button
- Modify the settings of the controls
- Press "Send"
- If the bank channels are not set to the desired channels for each bank, change them.
- Press "Save to OhmRGB" to save all bank settings
Bank Cycle Button
Any button (but only one button) on the OhmRGB can be assigned to act as the "bank cycle" button. Press the "bank" button in the inspector to assign the button the special setting of cc 126. This assignment will be added to all banks at once. Pressing the assigned button will change the OhmRGB to the settings in the next bank. The LED behind the button will indicate the bank number: bank 1=white, 2=red, 3=green, 4=blue. If you reassign the button to a regular MIDI message, the setting will be copied to all banks, and the bank button
More...
The More button shows a panel with some other controls. Because of hardware differences, there are slight differences between the Ohm64Editor’s, CodeEditor's and blockEditor’s More panel.Backlight
The Backlight dial gives control over the lights behind the knobs and F-buttons on the Ohm64. The block and Code have no backlighting like this, so there is no control for it.
Logo
The Logo brightness controls the light behind the OHM logo on the Ohm64, and the BPM light on the block. These dials are merely sending CC values: refer to the MIDI documentation for more information.
Local Control
When Local Control is off, the device’s LEDs will only blink in response to incoming MIDI messages. When Local Control is on, the LED's will blink under the buttons that are pressed, and will ignore any incoming MIDI.
Omni
Omni Mode determines if the device will listen for control data on all channels (Omni on) or just the specified channel (Omni off).
All Notes Off
All Notes Off is a standard MIDI message that will turn off all LEDs (excepting the backlights). It is necessary to have Omni Mode off for this to work.
All Lights On
All Lights On will send a sysex command to turn all LEDs on.
Fetch Settings
Fetch Settings will request all settings data from the device and populate the Editor with those settings.
Factory Reset
Factory Reset will reset the device to the standard settings it shipped with, as well as fetch the settings to populate the Editor.
Snapshot
Snapshot sends out all the button and knob values over MIDI, in the event you want your software values to match up with the hardware.
MIDI Merge
MIDI Merge, when on, will send MIDI data from the controls out the MIDI Out jack on the back panel, merging it with any data coming into the MIDI Input jack. The send/receive channel can be changed with the channel number box. True to MIDI specification, the Block also respects Omni Mode. When on, the Block will respond to messages on ANY channel for LED control, when off, it will listen only on the specified channel. Omni mode does not affect outgoing MIDI, so the Block will send only on the specified channel.
Safe Assign
Safe Assign is on by default. This protects you from making assigning the same midi note or cc to multiple controls. For example, if you have button 64 assigned to note 96, and you try to assign button 0 note 96, you will get a warning and you will need to reassign button 0. However, this protection can be annoying when making a large number of changes to the MIDI assignments, in which case, you will want to turn off Safe Assign.
Channel
Channel displays and sets the current MIDI channel the Ohm64, Code, or block will send data on. Because the Code controller can be programmed such that any button or encoder can send data on any MIDI channel, this may seem like an unnecessary setting. However, it is still used by the device to listen to any special controller data, such as All Notes Off, Omni On, and Omni off. Additionally, this channel setting will be used for any controls with a channel value of "0".
Store in preset
When checked, the channel data will be stored and recalled in the presets, allowing for presets set to different channels.
Encode (Code and CNTRL:R only)
The Encode button shows a panel with some controls that affect how encoders respond to various commands and gestures. Only the Code controller has encoders, so only the CodeEditor has this button.Speed
There are several possible speeds (or sensitivities) for the encoders. A low speed will mean the knob takes more rotations to go from low to high value, a high speed mean it will take less rotation. This top knob will let you set the default speed for all encoders. The metric of fractional speeds is in practice somewhat vague (though technically quite specific), and it is best to try simply try different values to find ones that are comfortable.
Shifted Speed
You can set 2 different speeds for encoders, where this shifted speed is accessed by assigning one of the buttons on the Code controller as the speed shifter. When this shift button is held down, the encoders will respond with the speed set with this Shifted Speed setting.
Use Logo Button...
This is a simple macro that will set up the bottom left logo button as a speed shift button, automatically assigning it the cc value of 127. The inspector will move to that button, then change the settings.
Walk
Pressing this button will set all encoders to the "Walk" mode of LED illumination. Of course, if desired, each controller can be set to its own mode using the inspector, or by sending the appropriate CC value to the Code controller (see below).
Fill
Pressing this button will set all encoders to the "FIll" mode of LED illumination. Of course, if desired, each controller can be set to its own mode using the inspector, or by sending the appropriate CC value to the Code controller (see below).
Seq
This is simply for demonstration. All LED in the rings will illuminate in succession. This uses a Sysex message to control the LEDs on the encoder rings remotely.
All off/on
Also for demonstration, you can turn all encoder ring LEDs on or off with this.
Local Control
If Local Control for Encoder rings is on (default), then the LED rings will illuminate automatically when encoders are turned. If Local Control is off, then the LED rings will illuminate only in response to Sysex messages. This is largely a setting for developers and users writing their own software.
MMC, Pitch Bend, MSB/LSB, and Encoder Speed
There’s a few more things to know about the Inspector that are not entirely obvious. Buttons can be programmed for notes and controllers, but they can also be programmed to send
MIDI Machine Control (MMC) messages “Start,” “Continue,” and “Stop.” To do this, select “control” as the type, and set the number to:
- 122 = Start
- 123 = Continue
- 124 = Stop
(Buttons can only send controller numbers 0-120, so we used higher numbers to squeeze in MMC)
Sliders and knobs on the block and Ohm64 can be programmed to send Pitch Bend data, too. Select “cc/bend” as the type, and used values 96-111 to send Pitch Bend on channels 1-16. Values 1-31 will set the slider to send 14-bit style cc messages with MSB and LSB, however, it is important to note the data is really only 7 bit.
On controllers with encoders, if a button is set to send CC messages on CC#127, then the button will act as a speed shift control, changing the responsiveness of the encoders to turns.
Updates
The Updates button takes you to our website to keep you informed of all the new projects, software, and examples for Livid hardware. These will mostly be open-source programs so you will be free to modify them as desired.














