Changelog — From version 1.3 to 1.4.2 (October 9, 2025)
ARCHITECTURE
Version 1.4.2
1. Introduced a new multiprocess architecture:
2. MIDI transmissions and receptions are now handled by a dedicated MIDI process, which communicates with the main program through a backend integration module.
3. UMX dynamically loads the appropriate backend and MIDI process depending on the operating system, allowing for increasingly specific and optimised performance across platforms.
4. On Windows systems, UMX now acts as a MIDI manager, specifically:
5. Resolves the real names of MIDI devices and maintains connections even after USB port changes or system reboots.
6. Uses a safety process to reduce the risk of crashes when MIDI ports are busy.
7. Supports multiple MIDI IN ports routed to a single MIDI OUT (merging).
8. Supports a single MIDI IN routed to multiple MIDI OUT ports.
9. Improved transmission and UI rendering speed.
10. Added new MIDI callback functions, resulting in improved performance and reduced latency.
11. Introduced new control functions for MIDI meters, increasing precision and reducing CPU load (up to 160 meters supported in the Pro version).
FEATURES
1. Introduced tempo management:
· UMX can now sync to an external MIDI clock or act as Tempo Leader, sending standard MIDI clock messages to outputs.
· All slot transitions are now expressed in musical bars instead of milliseconds. Tempo or time signature changes trigger immediate recalculation of transition times.
2. Improved visual mapping between nodes and slots to make node assignments clearer.
3. Added separators in slot configuration screens to enhance parameter readability.
4. Added interface expansion control in the slot configuration panel.
5. Implemented backward compatibility with save files from previous versions. When older files are opened, UMX offers to update them and adds any missing features.
6. Improved the firmware update system: the entire filesystem of the umx_100 device is now upgradable.
7. Added the option to monitor all MIDI ports simultaneously in the MIDI monitor.
8. Enhanced the timestamp accuracy for received MIDI messages in the MIDI monitor.
9. Implemented a new sampling display method for output meters: visuals remain clear while reducing processor load.
10. Improved performance loading feedback with immediate display of loaded modules.
11. Added a new HELP menu item for quick access to online resources.
12. Introduced 4 new slot types:
· time_line_slot
· high_definition_slot
· procedure_slot
· bass_follower_slot
13. Integrated a "pass_through" module for each trunk:
· Each trunk can now handle over 130 individual MIDI parameters.
· Each parameter supports custom response curves, filtering, and creative routing options.
· Instrument profiles can be created, saved, and recalled across performances.
· A total of 16 pass_through modules allow real-time control of a vast amount of MIDI data.
14. Added custom naming for MIDI input and output ports.
15. Redesigned MIDI monitor architecture:
· Messages are grouped by type and highlighted in different colors.
· Users can filter which messages are shown, including clock and SysEx messages.
16. Added SysEx trunk compatibility: UMX now supports transit, interception, and routing of System Exclusive data flows of any length.
Changes from version 1.2.2 to 1.3 (June 11, 2024)
1. New Slot Types: Introduced three new slot types: player, pure_volume, and program_changer.
2. Performance Improvements: Improved the speed of slot moving functions, slot addition/reversal, and deletion by more than 20 times by handling the database directly without loading all patches for modification.
3. Slot Communication: Introduced a communication method between slots. One slot can now request an action from another, such as muting the volume of an instrument while a program change is being transmitted to avoid switching artifacts.
4. User Interface Enhancements: Eliminated the new performance and performance editing modes.
5. Simplified access to slot creation and deletion functions with the new item distribution module, allowing drag & drop.
6. Slots can now be moved with drag & drop, carrying all node activations with them.
7. Nodes now have a sequence and activation menu directly linked to the slot type, enabling specific functions (e.g., the dial slot can now transmit three controls on three different ports).
8. Slot Settings and Configuration: The new slot settings panel allows you to select patch parameters for a slot and copy them to other patches as needed, for instance, to homogenize the volume across all patches. It can work alongside the slot configuration panel for a complete view of all slot parameters across patches.
9. The slot configuration panel now allows vertical navigation between patches, displaying slot settings in adjacent patches. Autosave functions operate both horizontally between slots of the same patch and vertically when switching patches.
10. Enhanced Functionality: Introduced a right-click menu for slots with direct functions like setting the color and accessing parameters.
11. Added graphic functions to keep the window always visible and prevent screen lock (PC standby).
12. Differential graphic refresh functions now enable better transmission speed (1.7 ms for standard MIDI bulk transmission of 48 CC). The GUI refresh when loading a patch is virtually instantaneous.
13. On Windows, menus now feature Unimidi graphics and remain visible even on light themes.
14. Icons added to all menu items for quicker command location.
15. Slot selection now highlights the corresponding node column in the merger, making it easier to locate nodes of the selected slot.
16. Convenience Features: Performance and patch names can now be entered simultaneously in the main window.
· Ctrl+M opens the performance manager.
· Ctrl+T simultaneously transmits All Notes Off, All Sounds Off, and Stop to all open MIDI out ports and channels.
· The Esc key deselects all slots.
· Reordering patches and performances in the manager window is now simple with drag-and-drop.
· Color Management: Added color management for the transpose and keyboard range fields, making modified values more visible in the GUI.
Changes from version 1.2.1 to 1.2.2 March 28, 2024
1. Bug Fix: Fixed issue where layer slot performance parameters did not save due to the refreshByPanel function contained in the slots.
2. OSX and Windows Code: Adjusted fall down time for the zmeter class: 700 ms for OSX and 1000 ms for Windows.
Changes from version 1.2 to 1.2.1 March 16, 2024
1. Bug Fix: Fixed issue where standard slot fading time did not save. All fading sliders were fixed at 500 ms.
2. Code Realignment: Realigned Windows and OSX code.
Changes from version 1.1 to 1.2 March 7, 2024
1. Segmentation Fault Fix: Corrected segmentation fault error on exit related to UMX loading splash screen.
2. Next/Prev Signal Control: Inserted ignore_0 control for next/prev signals from the controller, allowing the software to ignore note-on messages with velocity 0, which some keyboards use instead of note-off.
3. Firmware Update Function: Improved device firmware update function. The software can now contain multiple firmware versions for devices of different generations (current firmware version 1.1 for the first series of UMX_100).
4. Ports Polling: Increased ports polling value to 8 seconds at the first run to allow a smooth interface opening, then queries the ports, resetting the polling time to 5 seconds.
5. Parameters Panel: The closeSettings function of parametersPanel now saves and updates the display only if necessary. It also fixed bad management of the load widget.
6. Raspberry Pi Pinout: Complete reassignment of the pinout for Raspberry Pi rotation. The pinout is now specified in variables at the beginning of the code, eliminating the need to search for pins in the script.
7. LED Color Values: LEDs are now common cathode, so color values have been recalculated.
Changes from version 1.0 to 1.1 February 23, 2024
1. Performance and Patch Name Fields: The performance name fields and patch names are now editable. You can replace the performance name and patch names (including all at once) directly from the main screen. Upon saving, all names will be updated, allowing for quick reorganization without needing to enter the configuration.
2. Third-Party Controller Management: Complete overhaul of third-party controller management. It is now possible to define the MIDI trunk that will control the program. The controller receives program changes to jump to a specific patch and the LSB controller for performance loading. Additionally, it supports two user-definable controls through self-learning for next and previous actions. Virtually all MIDI CC, PC, and note-on messages are supported.
3. Virtual Input: Introduced a virtual input for non-Windows systems. This MIDI input acts as a specific input for a software controller, allowing all the operations mentioned above. It is ideal for controlling UMX from a DAW (tested).
4. Standard Slot getValue Function: Modified the getValue function for standard slots. Previously, it did not return program change values (MSB, LSB, transport, and on exit). When duplicating a patch, slots received only a partial copy.
5. Default Dictionary Loading: Implemented loading of default dictionaries into global variables. When a value is loaded from the dictionary that does not exist (e.g., old version save file), the program loads default values from the reference dictionary. These values are then saved again, enriching old saves with new entries and adapting to more recent UMX versions.
6. Timer Function: Inserted a timer function to delay the closing of all windows by 300 ms to check if it resolves the random segmentation fault error when exiting the program.
7. UI Enhancements: Added decoration animation for Unimidi at the bottom merger screen.
8. Planned conversion to global variables for many parameters in the next version.
Version 1.0 Release January 29, 2024