You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Readme.md
+40-23Lines changed: 40 additions & 23 deletions
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,8 @@ BehringerXTouchExtender
11
11
12
12
1.[Quick Start](#quick-start)
13
13
1.[Prerequisites](#prerequisites)
14
+
-[MIDI control mode](#midi-control-mode)
15
+
-[Firmware upgrade](#firmware-upgrade)
14
16
1.[Installation](#installation)
15
17
1.[Connection](#connection)
16
18
1.[Track identifiers](#track-identifiers)
@@ -65,23 +67,35 @@ dotnet run
65
67
## Prerequisites
66
68
67
69
- A [Behringer X-Touch Extender](https://www.behringer.com/product.html?modelCode=P0CCR)
68
-
- Connect over USB, not Ethernet
69
-
- Set to absolute or relative MIDI control mode (persistent)
70
-
1. Turn on the device while holding the track 1 select button
71
-
1. Turn the track 1 rotary encoder knob until the track 1 LCD shows `Ctrl` (absolute MIDI control mode) or `CtrlRel` (relative MIDI control mode)
72
-
1. Press the track 1 select button
73
-
-*AMD Zen2 (Ryzen 3000) and later only:* install [firmware 1.21 or later](https://mediadl.musictribe.com/download/software/behringer/X-TOUCH/X-TOUCH-EXT_Firmware_V1.22.zip) to fix the [broken USB connection](https://community.amd.com/t5/drivers-software/behringer-x-touch-usb-driver-issues/m-p/199495)
74
-
1. Turn on the device while holding the track 8 record button
75
-
1. Download and run [MIDI-OX](http://www.midiox.com/moxdown.htm) on an unaffected (e.g. Intel) computer connected to the device over USB
76
-
1. Highlight the `X-Touch-Ext` entries in Options › MIDI Devices
77
-
1. Select the downloaded `.syx` file using Actions › Send › SysEx File
78
-
1. Wait for the upgrade to finish
79
-
1. Reboot the device using the power button
80
-
- Any Microsoft .NET runtime that supports [.NET Standard 2.0 or later](https://docs.microsoft.com/en-us/dotnet/standard/net-standard?tabs=net-standard-2-0#net-standard-versions)
70
+
- A Microsoft .NET runtime that supports [.NET Standard 2.0 or later](https://docs.microsoft.com/en-us/dotnet/standard/net-standard?tabs=net-standard-2-0#net-standard-versions):
81
71
-[.NET 5.0 or later](https://dotnet.microsoft.com/en-us/download/dotnet)
82
72
-[.NET Core 2.0 or later](https://dotnet.microsoft.com/en-us/download/dotnet)
83
73
-[.NET Framework 4.6.1 or later](https://dotnet.microsoft.com/en-us/download/dotnet-framework)
84
74
75
+
<aid="midi-control-mode"></a>
76
+
### MIDI control mode
77
+
78
+
You must manually set the device to absolute or relative MIDI control mode. The other two modes, HUI and MC, are not supported by this library.
79
+
80
+
1. Turn on the device while holding the track 1 select button
81
+
1. Turn the track 1 rotary encoder knob until the track 1 LCD shows `Ctrl` (absolute MIDI control mode) or `CtrlRel` (relative MIDI control mode)
82
+
1. Press the track 1 select button
83
+
1. Remember which mode you chose when you [connect](#connection) to the device
84
+
85
+
<aid="firmware-upgrade"></a>
86
+
### Firmware upgrade
87
+
88
+
If your computer has an AMD Zen2 (Ryzen 3000) or later CPU, then you must install X-Touch Extender firmware 1.21 or later to fix the [broken USB connection](https://community.amd.com/t5/drivers-software/behringer-x-touch-usb-driver-issues/m-p/199495).
89
+
90
+
1.[Download the firmware](https://mediadl.musictribe.com/download/software/behringer/X-TOUCH/X-TOUCH-EXT_Firmware_V1.22.zip)
91
+
1. Extract the `.syx` file from the `.zip` file
92
+
1. Turn on the device while holding the track 8 record button
93
+
1. Download and run [MIDI-OX](http://www.midiox.com/moxdown.htm) on an unaffected (e.g. Intel) computer connected to the device over USB
94
+
1. Highlight the `X-Touch-Ext` entries in Options › MIDI Devices
95
+
1. Select the downloaded `.syx` file using Actions › Send › SysEx File
The available Properties and their values for a rotary encoder depend on whether you created your `IBehringerXTouchExtender` instance using either `BehringerXTouchExtenderFactory.CreateWithAbsoluteMode()` or `.CreateWithRelativeMode()`.
218
232
219
-
This control mode must match the [configured mode on the physical X-Touch Extender](#prerequisites) (`Ctrl` or `CtrlRel`, respectively).
233
+
This control mode must match the [configured mode on the physical X-Touch Extender](#midi-control-mode) (`Ctrl` or `CtrlRel`, respectively).
220
234
221
235
##### Absolute control mode
222
236
223
-
Available when you [set the X-Touch Extender's control mode](#prerequisites) to `Ctrl` and called `BehringerXTouchExtenderFactory.CreateWithAbsoluteMode()`.
237
+
Available when you [set the X-Touch Extender's control mode](#midi-control-mode) to `Ctrl` and called `BehringerXTouchExtenderFactory.CreateWithAbsoluteMode()`.
224
238
225
239
When the knob is rotated, the rotary encoder will update its **`RotationPosition`** Property with the new position of the knob, from `0.0` (most counter-clockwise) to `1.0` (most clockwise).
Available when you [set the X-Touch Extender's control mode](#prerequisites) to `CtrlRel` and called `BehringerXTouchExtenderFactory.CreateWithRelativeMode()`.
254
+
Available when you [set the X-Touch Extender's control mode](#midi-control-mode) to `CtrlRel` and called `BehringerXTouchExtenderFactory.CreateWithRelativeMode()`.
241
255
242
256
When the knob is rotated, the rotary encoder will emit a **`Rotated`** event that tells you in which direction it was rotated. It does not tell you how far it was rotated, instead, it sends more `Rotated` events as you continue to turn the knob.
243
257
@@ -380,23 +394,26 @@ When you're done using an `IBehringerXTouchExtender<>` instance, you should [dis
// when control exits the Main method, device will be disposed
393
409
}
394
410
```
395
411
396
412
```cs
397
413
publicvoidImplicitlyDisposeWithUsingStatement() {
398
414
using (vardevice=BehringerXTouchExtenderFactory.CreateWithRelativeMode()) {
399
-
// use device
415
+
device.Open();
416
+
// use device here
400
417
// when control exits the using block, device will be disposed
401
418
}
402
419
}
@@ -411,5 +428,5 @@ public void ImplicitlyDisposeWithUsingStatement() {
411
428
<aid="acknowledgements"></a>
412
429
## Acknowledgements
413
430
414
-
-[Maxim Dobroselsky](https://github.com/melanchall) for the [DryWetMIDI](https://github.com/melanchall/drywetmidi) library to control MIDI devices in .NET
415
-
- The person on the now-deleted MusicTribe forums who correctly [answered a question](https://community.musictribe.com/t5/Recording/X-Touch-Extender-Scribble-Strip-Midi-Sysex-Command/td-p/251306) about the 5th byte of the scribble strip SysEx message, the value of which must be the message length `0x15` instead of the incorrectly documented device ID `0x42`.
431
+
-[Maxim Dobroselsky](https://github.com/melanchall) for the [DryWetMIDI](https://github.com/melanchall/drywetmidi) library that controls MIDI devices from .NET
432
+
- The person on the now-deleted MusicTribe forums who correctly [answered a question](https://community.musictribe.com/t5/Recording/X-Touch-Extender-Scribble-Strip-Midi-Sysex-Command/td-p/251306) about the 5th byte of the scribble strip SysEx message, the value of which must be the message length `0x15` instead of the incorrectly documented device ID `0x42`
0 commit comments