Skip to content

Scribble strips

Ben Hutchison edited this page Oct 8, 2022 · 4 revisions

Scribble strips are the LCD screens at the top of each channel column on the X-Touch Extender. They are so named because they are digital replacements for putting a strip of tape on your analog mixer and scribbling the channel name on them with a marker.

The eight X-Touch Extender scribble strips can each show two lines of seven characters each. The background color can be black, red, green, yellow, blue, magenta, cyan, or white. The text color can be light or dark, with the negative space inverted, and can be set independently for both rows.

I recommend not using a black background, because even with light text, it's completely illegible and the LCD appears to be off or broken. Instead, to show white text on a black background, you should set the text color to Light and the background color to White.

Example

This Hello World example can be produced with either of the following two techniques.

Hello World

Library usage

You can use the IScribbleStrip interface to change the text and colors. To retrieve an IScribbleStrip instance for a particular trackId (0-indexed), call IBehringerXTouchExtender<>.GetScribbleStrip(int trackId).

using BehringerXTouchExtender;

using IBehringerXTouchExtender<IRelativeRotaryEncoder> device = BehringerXTouchExtenderFactory.CreateWithRelativeMode();
device.Open();

IScribbleStrip scribbleStrip = device.GetScribbleStrip(0);
scribbleStrip.TopText.Connect("Hello");
scribbleStrip.BottomText.Connect("World");
scribbleStrip.TopTextColor.Connect(ScribbleStripTextColor.Light);
scribbleStrip.BottomTextColor.Connect(ScribbleStripTextColor.Dark);
scribbleStrip.BackgroundColor.Connect(ScribbleStripBackgroundColor.Magenta);

Raw MIDI usage

The scribble strips are controlled programmatically using MIDI system exclusive (SysEx) messages.

If you aren't using this library, you can create and send the SysEx events yourself. Feel free to refer to my C# and Kotlin implementations if you want to see how this message can be constructed programmatically.

The message is always 23 bytes long, including the leading status byte and trailing end of message marker.

Byte offset Example value Description
0 0xf0 Normal SysEx status header
1–3 0x002032 Behringer manufacturer ID
4 0x15 Constant message length, excluding status header and trailing EOM. Not 0x42 as documented!
5 0x4c Constant (possibly the X-Touch Extender model ID?)
6 0x00 Track ID in the range [0, 7], where track 0 is leftmost on the device and 7 is rightmost. Be aware that the printed legends on the device are 1-indexed, but this byte is 0-indexed.
7 0x25

Bit-packed colors. Bits are of the form 00LU0BBB, where

  • L is the lower text color (0 = Light, 1 = Dark)
  • U is the upper text color (0 = Light, 1 = Dark)
  • BBB is the background color (0 = Black, 1 = Red, 2 = Green, 3 = Yellow, 4 = Blue, 5 = Magenta, 6 = Cyan, 7 = White) encoded as a big-endian integer

Bit-shifting pseudo-code:

background | (upperColor << 4) | (lowerColor << 5)

Example: dark lower text, light upper text, magenta background = 00100101 = 0x25

8–14 0x48656c6c6f2020

Top text, encoded in 7-bit ASCII. The length is always 7 characters/bytes, padded with spaces (0x20).

Example: Hello = 0x48 0x65 0x6c 0x6c 0x6f 0x20 0x20

15–21 0x576f726c642020

Bottom text, encoded in 7-bit ASCII. The length is always 7 characters/bytes, padded with spaces (0x20).

Example: World = 0x57 0x6f 0x72 0x6c 0x64 0x20 0x20

22 0xf7 End of message

The above example describes a SysEx message that turns the leftmost LCD magenta and says "Hello" with light text and "World" with dark text, as shown in the photo above. The resulting message is represented by the bytes

f0 00 20 32 15 4c 00 25 48 65 6c 6c 6f 20 20 57 6f 72 6c 64 20 20 f7

Note that some MIDI libraries may automatically add the header (0xf0) or end-of-message (0xf7) bytes for you, so you may need to exclude them from your payload, while others may not.

Clone this wiki locally