-
-
Notifications
You must be signed in to change notification settings - Fork 4
Scribble strips
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.
This Hello World example can be produced with either of the following two techniques.
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);
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 device ID, 0x15 for X-Touch Extender and 0x14 for X-Touch. Not 0x42 as documented! |
5 | 0x4c |
Constant |
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
Bit-shifting pseudo-code: background | (upperColor << 4) | (lowerColor << 5) Example: dark lower text, light upper text, magenta background = |
8–14 | 0x48656c6c6f2020 |
Top text, encoded in 7-bit ASCII. The length is always 7 characters/bytes, padded with spaces ( Example: |
15–21 | 0x576f726c642020 |
Bottom text, encoded in 7-bit ASCII. The length is always 7 characters/bytes, padded with spaces ( Example: |
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.