Skip to content

5.6.35 maintenance multi midi tog#203

Open
dnaldoog wants to merge 83 commits intodamiensellier:masterfrom
dnaldoog:5.6.35-Maintenance_MultiMidiTog
Open

5.6.35 maintenance multi midi tog#203
dnaldoog wants to merge 83 commits intodamiensellier:masterfrom
dnaldoog:5.6.35-Maintenance_MultiMidiTog

Conversation

@dnaldoog
Copy link

@dnaldoog dnaldoog commented Dec 3, 2025

This updates the Multi Midi section with new code and a help section.

  • Removed Slider for ids::midiMessageCtrlrValue changing vlaue seems to do nothing - not sure what it does internally but left as is
  • Midi is now switchable to allow easier editing with uiSlider. Can be set to 7 bit 0-127 or 14 bit 0-16383 for (N)RPN ids::midiMessageCtrlrNumberSize
  • New Expressions tab explaining how to use expressions.
  1. mainComponent.h - I'm not sure if all that code it still being used?
  2. CtrlrIDs.h line 727 DECLARE_ID (midiMessageCtrlrNumberSize); -- used to toggle Slider for MIDI number 7 bit/14bit (NRPN)
  3. CtrlrIDs.xml line 695,697
  4. CtrlrSysexProcessor.cpp line 7 #include
  5. CtrlrSysexProcessor.h line 31,46,47
  6. CtrlrMidiMessage.cpp line 170,416,549,950,957,1030,1045
  7. CtrlrMidiMessage.h line 108,138,179 +
  8. CtrlrMidiMultiTemplate.xml Don't think this is being used now - referring to array in CtrlrPropertComponent to list MultiMessages
  9. CtrlrPanelEditorIcons.h added new SVG icons
  10. CtrlrPanelEditorIcons.cpp added new SVG icons
  11. CtrlrPanelProperties.h Component* createExpressionsHelpComponent();
  12. CtrlrPanelProperties.cpp big changes to file
  13. CtrlrPropertComponent.h Extensive changes to Multi Midi interface
  14. CtrlrPropertComponent.cpp Extensive changes to Multi Midi interface
  15. CtrlrAboutContent.h
  16. CtrlrSettingsContent.h

{B02CD203-5DF2-476A-B6DC-9FD8F3D47C9E}
{16E0B7F1-677F-45C7-AC57-775801586036}

damiensellier and others added 30 commits November 16, 2025 16:26
…ECT FALSE

* **UPDATED** Version from 5.6.34 to 5.6.35
* **UPDATED** CMakeLists IS_MIDI_EFFECT FALSE
…ldoog/CtrlrX into 5.6.35-Maintenance_modasdata

(1) Removed libopen_usb from CtrlrLuaManager  (2) Copy-paste bug in createLuaStateAudio()
@damiensellier
Copy link
Owner

damiensellier commented Dec 9, 2025

H̶i̶ ̶J̶o̶h̶n̶,̶ ̶I̶ ̶j̶u̶s̶t̶ ̶c̶h̶e̶c̶k̶e̶d̶ ̶y̶o̶u̶r̶ ̶n̶e̶w̶e̶s̶t̶ ̶v̶e̶r̶s̶i̶o̶n̶ ̶a̶n̶d̶ ̶C̶m̶d̶+̶H̶ ̶c̶r̶a̶s̶h̶e̶s̶ ̶t̶h̶e̶ ̶a̶p̶p̶ ̶s̶i̶n̶c̶e̶ ̶b̶o̶t̶h̶ ̶h̶e̶l̶p̶ ̶w̶i̶n̶d̶o̶w̶s̶ ̶a̶r̶e̶ ̶a̶s̶s̶i̶g̶n̶e̶d̶ ̶t̶o̶ ̶t̶h̶e̶ ̶s̶a̶m̶e̶ ̶s̶h̶o̶r̶t̶c̶u̶t̶.̶

EDIT: cmd+H is not crashing ctrlrx actually, it's hiding the main window on mac because it's a macOS shortcut. maybe cmd+? should be ok or F1 maybe...

Those help windows should be also resizeable and should have the possibility to be kept open but without focus so that the user could type in a property in the pane or message editor while reading the help. (not sure how to do that, it may be an option from the open popup window function's arguments.
(should be DocumentWindow not DialogWindow or TopLevelWindow)

I'll take a look at a nice way to implement a window with text and shortcuts from an index so that we could get a help window like MS word etc I'm pretty sure there's a class for that in JUCE.

Thanks for your work John

Damien

EDIT: btw i saw your [CI Skip] note in the commit title, the action is still running anyway and it's a good thing because I can download your installer and try the app to check your progress. I suggest you still run the action it's pretty handy.

@damiensellier
Copy link
Owner

EDIT: cmd+H is not crashing ctrlrx actually, it's hiding the main window on mac because it's a macOS shortcut. maybe cmd+? should be ok or F1 maybe...

@damiensellier
Copy link
Owner

damiensellier commented Dec 9, 2025

I just checked the demorunner from JUCE and the best way to implement a helper would be with a popup window from juce calling a WebBrowserComponent to read a local or distant html file . This way we could update the content on the go with new links to tutorials etc without the need to recompile everytime we update it.
And html/css is better for formating than JUCE component styling. What do you think?

@damiensellier
Copy link
Owner

... This is where the wiki from the CtrlrX repo would be handy. The helper window could show this particular page with the index etc

@dnaldoog
Copy link
Author

dnaldoog commented Dec 9, 2025

EDIT: btw i saw your [CI Skip] note in the commit title, the action is still running anyway and it's a good thing because I can download your installer and try the app to check your progress. I suggest you still run the action it's pretty handy.
I think I wrote [cl skip] but it's supposed to be [ci skip] afaik! Yes just discovered it. Was doing a push from work (the one you saw) for when I got home and didn't want to build it.

I am just fixing those help windows because they crash on Wayland. Wayland is a real problem.

But I'll see if I can add those suggestions. The web idea seems good, but it would have to be a permanent URL and not drop out like the original online help Roman had. I tried formatting those help strings in paint with component at one stage, but it was unstable. Will try Cmd?

Did you see the reworked Sysex Token Editor?

{A669599D-CA31-47E0-97E7-7902208F2098}

@damiensellier
Copy link
Owner

Yes we need a stable url , CtrlrX wiki is perfect it will always be available.

I will check the rework token editor tonight when back home.

@damiensellier
Copy link
Owner

damiensellier commented Dec 11, 2025

Hi John, I just checked. Everything seems good 👍
There's 2 things to improve:
We need a statement to have the native title bar for all systems but the Linux Wayland. And inside this condition we needed to check for the global preferences native title bar vs JUCE title bar.
Because right now, the new help windows are set to native bar false by default for all systems. That looks strange.

Another little thing to improve is a look and feel check for the multimessage list and icons. They need to follow the global look and feel like we did for the text (bold, italic, size etc) icons in the property lanes.
Right now if I use a dark lnf scheme the icons in the multi message box are black on black or white on white. Same with white text on white bkg. We need to call the default colour from the scheme components definitions. Not solid colours.

Apart from that everything is fine!

I think I'll work on the wiki page this winter holidays so that we just can call a url from the components to display in the help window. I'm thinking about a nice table index and sub categories for the wiki to make everything look good and practical so that we have a solid helper database to expend from.

The help window will then be a WebBrowserComponent .

I need to work on CtrlrX.org as well which is a lot to do. I'll definitely link this GitHub wiki from it for the help page.
Dominique @dobo365 wanted to resurrect the property description/ID hyperlinks to the wiki page that's definitely in the line.

#148

@dnaldoog
Copy link
Author

dnaldoog commented Dec 11, 2025 via email

@damiensellier
Copy link
Owner

For the color switch related to the lnf I'll give you the code I used as an example tonight when back home.
Have a nice day!

@damiensellier
Copy link
Owner

damiensellier commented Dec 11, 2025

I just remembered the way I updated the Icon color, it was for the eyedropper tool , the method is commented within the function:

// Added v5.6.34. Required extra class for the colour picker button so that it follows the lookAndFeel colourScheme in the panel windows as well as the others (layer manager etc)

@damiensellier
Copy link
Owner

damiensellier commented Dec 11, 2025

I've mistaken the native/Juce menu bar option with the alert windows option ( ctrlrNativeFileDialogs) and the one for the fileChooser.

It means that we can just add a statement from a macro for Linux vs other os for this help window menubar style.

@damiensellier
Copy link
Owner

I did not check the way you implemented your statement for if_linux and wayland if you do it at the preprocessor level with a macro, we can also use a mixture of both macros and juce::SystemStats::getEnvironmentVariable , something like :

#include <juce_core/juce_core.h>

void executeWaylandSpecificCode()
{
#if JUCE_LINUX
    // 1. Get the XDG_SESSION_TYPE environment variable
    // This variable is commonly set to "wayland" or "x11"
    juce::String sessionType = juce::SystemStats::getEnvironmentVariable (
        "XDG_SESSION_TYPE", 
        juce::String() // Default empty string if not found
    );

    // 2. Check if the environment variable indicates Wayland
    if (sessionType.equalsIgnoreCase ("wayland"))
    {
        // --- WAYLAND SPECIFIC CODE BLOCK ---
        
        juce::Logger::writeToLog ("Detected Wayland session. Executing Wayland-specific logic.");
        
        // Place your code that should *only* run on Wayland here.
        // For example, calling specific functions or logging debug info.
        
        // --- END WAYLAND SPECIFIC CODE BLOCK ---
    }
    else if (sessionType.equalsIgnoreCase ("x11"))
    {
        // Optional: Handle X11 explicitly
        juce::Logger::writeToLog ("Detected X11 session.");
    }
    else
    {
        // Handle cases where the variable is not set or has an unexpected value
        juce::Logger::writeToLog ("Could not determine display server (XDG_SESSION_TYPE: " + sessionType + ").");
    }

#else
    // Code for non-Linux platforms (Windows, macOS, etc.)
    juce::ignoreUnused (juce::SystemStats::getEnvironmentVariable); // Suppress warnings
    juce::Logger::writeToLog ("Not on a Linux system. Skipping Wayland check.");

#endif
}

@dnaldoog
Copy link
Author

I just pushed a new build - the L & F is working and the help section working on Linux - Includes markdown formatting.

Right click to copy text.

{DB9BB7F9-FF9F-41E1-A1D6-6B79467FD7AE} {3590F40B-55D1-41A5-9EB4-92FAF6810A3F} {69A67970-E237-498D-B2C8-3E22B08B18EA}

@damiensellier
Copy link
Owner

damiensellier commented Dec 12, 2025

Hi John, I just tried your latest version https://github.com/dnaldoog/CtrlrX/tree/refs/heads/5.6.35-Maintenance_formatHelp

It's really good and the icon colours are following the lnf.

The help title bar are still the JUCE one we would need to have the native OS one except for LINUX wayland since it's the only system having a problem.

I'll slowly include all your mods next week on my repo and will work on the Wiki page to provide a robust help structure.

Thanks a lot!

Capture d’écran 2025-12-12 à 12 21 53 Capture d’écran 2025-12-12 à 12 22 17

@dnaldoog
Copy link
Author

Great! Will look at that. I also created a help file for people to understand hex numbers and MIDI with its 7 bit limitation. It’s really for beginners, but I think it’s really good to give support for people who are just getting started with creating panels.

I was trying to think of a simple general help system for lua and CtrlrX, but it’s quite difficult to think where to start, because of course it gets pretty deep pretty quickly and then I thought, why not list a few useful tips like how to block midi;how to get the channel out; how to generate VST index; how to loop through all modulators; how to block functions on start - all that sort of thing - just a few general useful routines that people might find useful.

@damiensellier
Copy link
Owner

I think the best we can start is with a contextual help.
An index with all the properties will be a good introduction to the related methods and concepts.
I'm thinking about all that and first of all trying to find some references on other softwares to get inspired from.

@dnaldoog
Copy link
Author

I have just created another couple of help files; one is for saving files and another one for common lua code operations. I think it is already really helpful, but if you want to go the full hog, yes you will need some form of online reference, but I think right now as it stands, it’s very useful - will upload a build very soon.

Or the other thing could be you use Dominique’s already excellent guide. But for a quick reference, I think having a few help pages on the app is quite useful for quick reference.

@dnaldoog
Copy link
Author

Please check the Action build!
Also, are the native title bars now showing? They show on Wayland so no need for preprocessor code

Incidentally there is already Wayland detection code here as a static function , but I haven't used it yet.

{95E50674-5359-4DF4-9F92-43B61F973005}

@damiensellier
Copy link
Owner

Hi John, I just checked and the native bars are showing for macos.
The different helps are really good! I'll add them to the wiki page when I'll have some time free.

Thank for all the work you've done.

@dnaldoog
Copy link
Author

Great - did you try resizing the windows? There's some weirdness but I have fixed it in the latest commit. Shall I do a PR? Do you want to keep those help files in CrtrlrX or move them out or have both in the app and on a Wiki page?

@damiensellier
Copy link
Owner

I don't know yet for the pages if we should go local or distant with a webcomponentwindow.
Forget about the PR I'll do it manually, just don't remove your branch :)

@dnaldoog
Copy link
Author

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