diff --git a/assets/img/de-screenshots/settings-midi.inc b/assets/img/de-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/de-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/en-screenshots/settings-midi.inc b/assets/img/en-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/en-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/es-screenshots/settings-midi.inc b/assets/img/es-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/es-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/fr-screenshots/settings-midi.inc b/assets/img/fr-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/fr-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/ko-KR-screenshots/settings-midi.inc b/assets/img/ko-KR-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/ko-KR-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/nb-NO-screenshots/settings-midi.inc b/assets/img/nb-NO-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/nb-NO-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/nl-screenshots/settings-midi.inc b/assets/img/nl-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/nl-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/pt-BR-screenshots/settings-midi.inc b/assets/img/pt-BR-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/pt-BR-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/pt-PT-screenshots/settings-midi.inc b/assets/img/pt-PT-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/pt-PT-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/ru-screenshots/settings-midi.inc b/assets/img/ru-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/ru-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/sv-SE-screenshots/settings-midi.inc b/assets/img/sv-SE-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/sv-SE-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/th-screenshots/settings-midi.inc b/assets/img/th-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/th-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/assets/img/zh-CN-screenshots/settings-midi.inc b/assets/img/zh-CN-screenshots/settings-midi.inc
new file mode 100644
index 000000000..ac458a36f
--- /dev/null
+++ b/assets/img/zh-CN-screenshots/settings-midi.inc
@@ -0,0 +1 @@
+https://github.com/user-attachments/assets/2f14110c-5e73-4416-b8dc-f326fe3b5f3d
diff --git a/wiki/en/Include-Client-Commands.md b/wiki/en/Include-Client-Commands.md
index 023bf6fff..b136fe066 100644
--- a/wiki/en/Include-Client-Commands.md
+++ b/wiki/en/Include-Client-Commands.md
@@ -1,6 +1,6 @@
-- `-M` or `--mutestream` Prevent others on a server from hearing what I play
-- `--mutemyown` Prevent me from hearing what I play in the server mix (headless only)
-- `-c` or `--connect` Connect to given server address on startup, format `address[:port]`
-- `-j` or `--nojackconnect` Disable auto JACK connections
-- `--ctrlmidich` MIDI channel to listen on, Jamulus control + MIDI control number and count of consecutive CC numbers (or Jamulus channels), device selection option. Format: `channel[;fn[*n]][;pn[*n]][;sn[*n]][;mn[*n]][;on][;dDeviceName]` See [Tips & Tricks](Tips-Tricks-More#using---ctrlmidich-for-midi-controllers).
+- `-M` or `--mutestream` Prevent others on a server from hearing what I play
+- `--mutemyown` Prevent me from hearing what I play in the server mix (headless only)
+- `-c` or `--connect` Connect to given server address on startup, format `address[:port]`
+- `-j` or `--nojackconnect` Disable auto JACK connections
+- `--ctrlmidich` MIDI channel to listen on, Jamulus control + MIDI control number and count of consecutive CC numbers (or Jamulus channels), pick-up mode, device selection option. Format: `channel[;fn[*n]][;pn[*n]][;sn[*n]][;mn[*n]][;on][;u][;dDeviceName]` See [Tips & Tricks](Tips-Tricks-More#using---ctrlmidich-for-midi-controllers).
- `--clientname` Window title and JACK client name
diff --git a/wiki/en/Software-Manual.md b/wiki/en/Software-Manual.md
index 939223f5c..09fe87063 100644
--- a/wiki/en/Software-Manual.md
+++ b/wiki/en/Software-Manual.md
@@ -173,7 +173,7 @@ Sorts by the instrument or city someone has in their profile, along with their n
* Sort by Group
Where the fader group feature is in use, this sorts in ascending group number from left to right (and within that, by name), with any ungrouped channels off to the right.
* Sort by Channel
-Where Jamulus channel controls (fader, mute, solo, etc) are being controlled by MIDI (see [Using --ctrlmidich for MIDI controllers](Tips-Tricks-More#using---ctrlmidich-for-midi-controllers)), this sorts by the channel number to help ensure a stable sort order that aligns with MIDI hardware controls.
+Where Jamulus channel controls (fader, mute, solo, etc) are being controlled by MIDI (see [MIDI control](#midi-control)), this sorts by the channel number to help ensure a stable sort order that aligns with MIDI hardware controls.
Note that in Jamulus clients before version 3.12.0, channel numbers are assigned directly by the server. Clients from 3.12.0 onwards manage their own channel number assignments and always assign channel 0 to the local user (provided the server version is at least 3.5.5).
### View > Chat
@@ -338,6 +338,35 @@ Controls the relative levels of the left and right local audio channels. For a m
it acts as a pan between the two channels. For example, if a microphone is connected to the right input channel and
an instrument is connected to the left input channel which is much louder than the microphone, move the audio fader to increase the relative volume of the mic.
+## MIDI Control
+
+
+
+The volume fader, pan control and mute and solo buttons in the Client's mixer window strips can be controlled using a connected MIDI controller. This feature is available from version 3.7.0 on macOS, Linux, and the JACK version of Jamulus for Windows. From Jamulus 3.12.0 onwards, it is also available for the non-JACK (ASIO) Windows version. To enable this feature and open a MIDI-in port, activate the "MIDI-in" checkbox.
+
+### MIDI Device
+
+With MIDI-in enabled, Jamulus will detect the MIDI devices available for connection and list them in the 'MIDI Device' dropdown menu. Select the device you wish to connect to Jamulus. The non-JACK Windows version of Jamulus will automatically connect to all available MIDI devices if none have been selected previously or a saved device is not present. To connect to a single device, select it from the dropdown.
+
+### MIDI parameters
+
+There is one global MIDI channel parameter (0-16) and two parameters you can set for each item controlled: First MIDI CC and consecutive CC numbers (count). First set the channel you want Jamulus to listen on (0 for all channels). Then, for each item you want to control (volume fader, pan, solo, mute), set the first MIDI CC (CC number to start from) and number of consecutive CC numbers (count) you wish to assign to that particular item. You can either type in the MIDI CC values or use the "Learn" button: click on "Learn", actuate the fader/knob/button on your MIDI controller, and the MIDI CC number will be detected and saved.
+
+As an example, a 'First MIDI CC' of 0 and a 'Count' of 8 for volume faders will mean that CC numbers 0 - 7 will control the volume faders for up to 8 mixer channels.
+
+There is one exception that does not require establishing consecutive CC numbers which is the “Mute Myself” parameter - it only requires a single CC number as it is only applied to one’s own audio stream.
+
+### Pick-up Mode
+
+When enabled, fader and pan controls will wait for your physical controller to match their value before moving. This prevents sudden jumps when they are out of sync.
+
+
+*Note*: Jamulus does not provide feedback on the on/off state of buttons, meaning that your controller must keep track and toggle LEDs (if any) to 'on' or 'off' itself, that is, buttons on your MIDI controller need to be set to "toggle" mode. This means that when pressed to 'turn on' a control, it must send a MIDI CC number with a value >=64, and to 'turn off' the control it must send the same CC number with a value <64. You can read your controller's manual to find out how to set this.
+
+When MIDI is enabled, Jamulus will prepend a channel number to each Client name, which can be used to control the channel using MIDI CC numbers. In Jamulus version 3.12.0 onwards, when connected to a server of at least version 3.5.5, your own fader will always be given channel 0, and so will appear first when sorted by channel or when "Own Fader First" is enabled.
+
+*Tip*: With default settings, when some users leave and others join, their left-right arrangement in the GUI may cease to follow a numerical order, making it more difficult to know who each physical fader/knob on your MIDI controller corresponds to. To keep the fader strips following a numerical order, go to "View" on the top menu bar and switch to "Sort by Channel" (or type `Ctrl+E`).
+
# Backing up Jamulus
{% include_relative Include-Backing-Up.md %}
diff --git a/wiki/en/Tips-Tricks-More.md b/wiki/en/Tips-Tricks-More.md
index 1f5be4ca7..93bfc6010 100644
--- a/wiki/en/Tips-Tricks-More.md
+++ b/wiki/en/Tips-Tricks-More.md
@@ -82,15 +82,9 @@ Here is the script:
### Using `--ctrlmidich` for MIDI controllers
-The volume fader, pan control and mute and solo buttons in the Client's mixer window strips can be controlled using a connected MIDI controller. This feature is available from version 3.7.0 on macOS, Linux, and the JACK version of Jamulus for Windows. From Jamulus 3.12.0 onwards, it is also available for the non-JACK (ASIO) Windows version. To enable this feature, Jamulus must be launched with the `--ctrlmidich` command-line option.
+MIDI controller parameters can be set using the `--ctrlmidich` command-line option. Bear in mind that when used, specified control parameters will overwrite any values set previously using the GUI. Any controls not set in the command line will be disabled, though their values will be preserved.
-When this option is used on the command line, Jamulus will prepend a channel number to each Client name, which can be used to control the channel using MIDI CC numbers. In Jamulus version 3.12.0 onwards, when connected to a server of at least version 3.5.5, your own fader will always be given channel 0, and so will appear first when sorted by channel or when "Own Fader First" is enabled.
-
-*Tip*: With default settings, when some users leave and others join, their left-right arrangement in the GUI may cease to follow a numerical order, making it more difficult to know who each physical fader/knob on your MIDI controller corresponds to. To keep the fader strips following a numerical order, go to "View" on the top menu bar and switch to "Sort by Channel" (or type `Ctrl+E`).
-
-When using JACK or macOS, make sure you connect your MIDI device's output port to the Jamulus MIDI in port (QjackCtl (Linux/Windows), Audio/MIDI Setup (macOS) or whatever you use for managing connections). In Linux you may need to install and launch `a2jmidid` so your device shows up in the MIDI tab in Qjackctl. For non-JACK Windows, Jamulus will find the MIDI device(s) automatically, but see the `d` option below if more than one MIDI device is connected.
-
-`--ctrlmidich` takes a single argument. If you omit it, the parameter is ignored. There are two formats for the argument:
+`--ctrlmidich` takes a single argument. If you omit it, the parameter is ignored. There are two formats for the argument:
1. The legacy definition has one or two numbers in the format:
@@ -98,9 +92,9 @@ When using JACK or macOS, make sure you connect your MIDI device's output port t
[MIDI channel];[offset for first fader]
```
- * `MIDI channel` is required or else the parameter argument is ignored and the feature is not active. `0` means "any channel", `1`-`16` listen only to MIDI messages on the specified MIDI channel.
+ * `MIDI channel` is required or else the parameter argument is ignored and the feature is not active. `0` means "any channel", `1`-`16` listen only to MIDI messages on the specified MIDI channel.
- * `offset for first fader` is the first MIDI CC to use to control a Jamulus Channel fader (default 70, which matches the Behringer X-Touch defaults), with all MIDI CCs after that being used; must be a number or else the long form is used.
+ * `offset for first fader` is the first MIDI CC to use to control a Jamulus Channel fader, with all MIDI CCs after that being used; must be a number or else the long form is used.
For example
@@ -108,7 +102,7 @@ When using JACK or macOS, make sure you connect your MIDI device's output port t
--ctrlmidich "0"
```
- would listen on all MIDI channels and use MIDI controller 70 to control Jamulus channel 0 fader and so on. Here's another example:
+ would listen on all MIDI channels and use MIDI controller 0 to control Jamulus channel 0 fader and so on. Here's another example:
```
--ctrlmidich "2;50"
@@ -122,7 +116,7 @@ When using JACK or macOS, make sure you connect your MIDI device's output port t
[MIDI channel];[control letter][offset](*[count])(;...)
```
- * `MIDI channel` is required or else the parameter argument is ignored and the feature is not active. `0` means "any channel", `1`-`16` listen only to MIDI messages on the specified MIDI channel.
+ * `MIDI channel` is required or else the parameter argument is ignored and the feature is not active. `0` means "any channel", `1`-`16` listen only to MIDI messages on the specified MIDI channel.
* `control letter` defines which Jamulus Control the MIDI controller number is assigned to:
@@ -149,17 +143,19 @@ When using JACK or macOS, make sure you connect your MIDI device's output port t
--ctrlmidich "0;f0*8;p16*8;s32*8;m48*8"
```
- * Two additional `control letter` values are available:
+ * Three additional `control letter` values are available:
1. `o` controls Mute Myself and has a single `offset` (i.e. `count` is ignored and taken as 1).
- 2. `d` is an option on Windows non-JACK Jamulus to specify a particular MIDI input device by name -- without this, all devices will be assigned to Jamulus; with it, only the specified device will be used. For example:
+ 2. `u` enables `MIDI Pick-up Mode` for the fader and pan controls.
+
+ 3. `d` is an option to specify a particular MIDI input device by name -- without this, it is up to the user to make connections with a connection manager or by other means, and on Windows non-JACK Jamulus all devices will be assigned to Jamulus; with it, only the specified device will be used. For example:
```
--ctrlmidich "1;f0*8;dnanoKontrol"
```
- would listen for CC0 through CC7 on MIDI channel 1 from a MIDI device called "nanoKontrol". Remember to wrap the whole of the `--ctrlmidich` argument in double quotes and you will have no problems with device names containing spaces.
+ would listen for CC0 through CC7 on MIDI channel 1 from a MIDI device called "nanoKontrol". Remember to wrap the whole of the `--ctrlmidich` argument in double quotes and you will have no problems with device names containing spaces.
In order to discover the correct device name to use, start Jamulus from the command line with `--ctrlmidich` and observe the output. Jamulus will list all discovered MIDI devices:
@@ -179,11 +175,9 @@ When using JACK or macOS, make sure you connect your MIDI device's output port t
1: Keystation Mini 32 (ignored)
```
- Note that if only one MIDI device is connected, the `d` option is not necessary, as Jamulus will use the device automatically.
-
- On macOS, Linux or Windows with JACK, the `d` option is accepted if given, but ignored.
+ Note that for Windows non-JACK Jamulus if only one MIDI device is connected, the `d` option is not necessary, as Jamulus will use the device automatically.
-*Note*: Jamulus does not provide feedback on the on/off state of buttons, meaning that your controller must keep track and toggle LEDs (if any) to 'on' or 'off' itself, that is, buttons on your MIDI controller need to be set to "toggle" mode. This means that when pressed to 'turn on' a control, it must send a MIDI CC number with a value >=64, and to 'turn off' the control it must send the same CC number with a value <64. You can read your controller's manual to find out how to set this.
+ For more information about using MIDI devices with Jamulus, see the [MIDI control](Software-Manual#midi-control) section in the Software Manual.
## For Server admins