Skip to content

Conversation

@ignotus666
Copy link
Member

@ignotus666 ignotus666 commented Feb 11, 2026

Short description of changes
Updated docs to cover the UI MIDI tab. I moved a number of paragraphs from the Using --ctrlmidich for MIDI controllers section to the Software Manual and just left the command line instructions there. It's a feature whose usage initially can be tricky to understand both in the UI and when using the command line, so it's hard to know what to include/trim from each section.

I'm also not sure about assuming usage of Jack/QjackCtl in Linux or even hand-holding users to make MIDI connections at all for that matter (except perhaps to explain the d option for Windows). I'm inclined to think that by providing a standard MIDI-in port that works the same way as any other MIDI-aware application, it's not up to us to explain how to connect to it. Ok, it helps, but from the point of view of doc maintenance it might make sense to just limit ourselves to things that are specific to Jamulus. Case in point: Jack/QjackCtl is gradually becoming obsolete, being replaced by PipeWire, though people will probably continue to use one or the other for some time still. Do we expand the docs to also explain PipeWire, pipewire-jack, etc? It can get messy, fast, and might become outdated at any moment.

I did away with the default offset of 70 (it's gone in the app PR). It's an arbitrary value that was initially hard-coded to cater to a single device and hasn't made sense for a long time.

Context: Fixes an issue? Related issues
Related to #3502

@softins: #1119 may need updating if/when this gets in.

Status of this Pull Request
Preliminary version subject to comments.

What is missing until this pull request can be merged?

Does this need translation?

YES.

Checklist

  • I've verified that this Pull Request follows the general code principles
  • I waited some time after this Pull Request was opened and all GitHub checks completed without errors.
  • I'm sure that this Pull Request goes to the correct branch

@ignotus666 ignotus666 marked this pull request as draft February 11, 2026 09:09
@ignotus666
Copy link
Member Author

ignotus666 commented Feb 11, 2026

It seems that uploading images to an open issue to generate a url that can then be used is not working. Apparently GH is cracking down on using it as free image hosting and will only allow images to be used in its own system (issues, PR's, etc). Following the link directly will take you to the image (so should work in theory), but it's not rendered in the generated Jekyll website. If that's the case we're going to have to bundle all the images ourselves or find an alternative.

Edit: digging further, it appears that GH is generating temporary signed URLs that expire after 5 minutes when accessed from outside GH. So ideally this should be sorted before releasing the updated website. Great.

@ignotus666 ignotus666 requested a review from ann0see February 11, 2026 10:26
```

* `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`
Copy link
Contributor

@pljones pljones Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the description removed?

--ctrlmidich ";1"

should fail to parse and be ignored.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed it because it's a verbatim repetition of the same explanation a bit further up. But I see your point - it could be assumed that the requirement doesn't apply in this case.

### 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 it will overwrite any values set previously via the GUI. Any values not set in the command line will be reverted to defaults (0 for offset/first MIDI CC and 1 for count).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the style guide prefers "using" to "via" -- give it a quick read.

Also, it's probably useful to link to the MIDI section in the Software Manual page from here, as you've centralised it nicely.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will do.

@pljones
Copy link
Contributor

pljones commented Feb 12, 2026

Edit: digging further, it appears that GH is generating temporary signed URLs that expire after 5 minutes when accessed from outside GH. So ideally this should be sorted before releasing the updated website. Great.

MIDI Control Settings

OK - so this one is still here.... but you reckon it'll go?

@pljones
Copy link
Contributor

pljones commented Feb 12, 2026


image

Hm, I just noticed (as this is the first time I've properly looked, sorry!!) the layout of "MIDI Channel" abd "Mute Myself" look odd compared with the other rows.

Can you make the whole thing a table, so the layout is more consistent?

MIDI Channel [0-16<>]
Mute Myself MIDI CC [0-127<>] [ Learn ]
Fader First MIDI CC [0-127<>] [ Learn ] Count [0-127<>]
Pan First MIDI CC [0-127<>] [ Learn ] Count [0-127<>]
Solo First MIDI CC [0-127<>] [ Learn ] Count [0-127<>]
Mute First MIDI CC [0-127<>] [ Learn ] Count [0-127<>]

You could "learn" the channel, too -- any incoming MIDI message would do.

@ignotus666
Copy link
Member Author

OK - so this one is still here.... but you reckon it'll go?

Yes, you can see it here, but try pasting the link into the address bar and see what happens. It turns into an amazonaws-hosted link with a 5-minute expiry time. Keep the link with the image open for 5 mins and then force-refresh the page.

@ignotus666
Copy link
Member Author

Hm, I just noticed (as this is the first time I've properly looked, sorry!!) the layout of "MIDI Channel" abd "Mute Myself" look odd compared with the other rows.

Can you make the whole thing a table, so the layout is more consistent?

Back when I started this I did try laying it all out as a table with each "learnable" item on a single row. The thing is, you either end up with a really wide settings window, or if you try making it narrower, the text gets bunched up together and doesn't really look good. MIDI Channel and Mute Myself (and MIDI-in) are kind of "different" as regards the editable options they have so that's why I have a different layout, with both on the same row as they're shorter. Another reason is that I totally suck at using Qt Designer and had a hard time coming up with what you see. I can have another go at it though I suppose...

I hadn't really considered making MIDI channel learnable because the applications I use don't do it either - MIDI notes, CCs, CNs are learnable but not the channel. I guess because you just have 16 to choose from and it's easier to do it in a couple of clicks than click on "Learn" and move your controller. Which leads me to think - instead of a spinbox, what about a dropdown with 0 (all) to 15?

@pljones
Copy link
Contributor

pljones commented Feb 12, 2026

I don't think we generally use Qt Designer for anything -- just raw QT Creator and a lot of dynamically created stuff!

I find the Qt design support (Designer and Creator) is really painful to use. But then, I use vi for writing HTML. (I'm slowly training myself into using VSCode/Cursor and IntelliJ more for CoPilot/AI integration, though...)

Why not try feeding that table to Github CoPilot and say "Turn this into a Qt form that fits into the current bounds of the Settings dialog" or something?

@ignotus666
Copy link
Member Author

Why not try feeding that table to Github CoPilot and say "Turn this into a Qt form that fits into the current bounds of the Settings dialog" or something?

I tried that in VSCode with Copilot and it produced an unholy mess... I find that with code for visual stuff it's rubbish. It's great at more abstract things though - it's helped me immensely to put together the MIDI tab code.

@pljones
Copy link
Contributor

pljones commented Feb 12, 2026

This pulls the Count and spinner under the Channel and spinner, making it less wide:

Enable MIDI In [ ]
MIDI Channel [0-16<>]
Mute Myself MIDI CC [0-127<>] [ Learn ]
Fader First MIDI CC [0-127<>] [ Learn ]
Count [0-127<>]
Pan First MIDI CC [0-127<>] [ Learn ]
Count [0-127<>]
Solo First MIDI CC [0-127<>] [ Learn ]
Count [0-127<>]
Mute First MIDI CC [0-127<>] [ Learn ]
Count [0-127<>]

I'm still (and this is the wrong PR) wondering whether the code could have platform-specific "give me a list of available MIDI devices" and provide a drop-down (that works like the -d option on Windows but cross-platform)... Definitely not this PR... New feature...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants