Version 2.1.1

Framework:

- [Fix] BUG-10089 Crash when unloading plugin while automating a parameter
- [Fix] Warning dialog and broken UI in certain hosts if host alters
        the locale to something that uses , as decimal point instead of .

JE8086:

- [Imp] Patch Manager: Add support for .pat/.pfm preset files

- [Fix] BUG-10098 Automation parameters not updating when selecting a
        different patch/performance
- [Fix] Support Patch/Performance Dumps from edit buffers
- [Fix] Patch Manager list might erratically jump when selecting a Performance
- [Fix] Test Console: Fix name of binary and add missing macOS setup script

Version 2.1.0


Framework:

- [Fix] BUG-10085 Do not expand factory ROM presets tree node by default
- [Fix] BUG-10084 Linux: Plugin editor cannot be operated after releasing
        the mouse

JE8086:

- [Sad] Removed the volume knob animation that "emulated" the loose knob
        from the hardware. Apparently most people never owned the hardware
        and thought it was a bug

Version 2.0.14


Framework:

- [Imp] Implemented software renderer that is used if no compatible OpenGL
        version is available. Software rendering can be forced via config
        file: Set forceSoftwareRenderer to 1

- [Fix] Further attempts to improve thread priority for DSP threads on macOS
- [Fix] List view in patch manager might not always refresh correctly when
        selecting a different bank

JE8086:

- [Imp] JE-8086 is now compatible with DSP Bridge
- [Imp] Added JE test console, a command line tool to test performance by
        rendering the factory demos to a .wav file

Version 2.0.13


Framework:

- [Imp] Improved compatiblity with Win 7 and older OpenGL versions

JE8086:

- [Fix] At latency setting 0, processing is now done in the audio thread to
        prevent spikes when app is not in focus
- [Fix] BUG-10060 Remote Control Channel resetting to 1 if set to Off
- [Fix] BUG-10064 Patch/Performance toggle button state not reporting the
        correct state after switching skin
- [Fix] BUG-10060 Performances were saved incorrectly and caused issues when
        loading them again
- [Fix] BUG-10058 Fix Osc 2 Fine/Wide center values and
        incorrect parameter value labels

Version 2.0.11


Framework:

- [Fix] BUG-10045 Vertical sliders won't reset to 0 but to -1 on double click
- [Fix] BUG-10051 Do not send gesture begin/end to host if parameter is
        changed via midi CCs

JE8086:

- [Imp] UI polishing and improvements
- [Fix] Add Remote Midi Channel selection to UI. The Remote Midi Channel is
        used for the arpeggiator and split key mode.
        The default value has now changed from 3 to 1 for new instances.
- [Fix] Voice Assign numbers were reversed, now correctly display Upper-Lower
- [Fix] Selecting a Performance in Patch Manager didn't update the selection
        for both parts, causing Patch Manager to select obsolete patches when
        switching between Upper / Lower
- [Fix] BUG-10053 Upper/Lower button state ignored after loading Performance
        from browser
- [Fix] BUG-10050 No visual feedback when controlling Osc 2 Fine via Midi CC

Version 2.0.10


Framework:

- [Fix] BUG-10043 First GUI event "eaten" on plugin init

Version 2.0.9


Framework:

- [Fix] Thread priorities were not set correctly on Mac/Linux, solves
        BUG-10040 Track performance affected by application focus
- [Fix] BUG-10039 Right clicking a menu entry opened a second menu
- [Fix] Reworked UI frame timing to use less resources
- [Fix] Patch Manager: Exported patches may not have consecutive
        bank/program numbers

JE8086:

- [Imp] Added Performmance/Patch LCD toggle button
- [Imp] UI has been further polished

- [Fix] BUG-10037 Osc Range -12/+12 placement on UI didn't match parameter value

Version 2.0.8


Framework:

- [Imp] Patch Manager: Setting to hide duplicates by name & hash are now
        remembered when reopening the plugin

- [Fix] Random tooltips shown when resizing the plugin window
- [Fix] BUG-10035 Automation randomly stopped working in some hosts due to UI
        sending automation events back to host
- [Fix] EMU-25 focused parameter keeps dragged element in focus

JE8086:

- [Imp] Default Master Volume and maximum Master Volume increased by 12 dB
- [Imp] Expose Master Volume and Master Tune as automatable parameters
- [Imp] Velocity/Control Assign has been redesigned, now uses new
        graphics for knobs/sliders
- [Imp] Patch Manager design improved to match the overall synth design
- [Imp] Overall UI polishing and improvements

- [Fix] Oscillator Shift dropdown was reversed, causing mouse wheel to work
        in the wrong direction
- [Fix] Automating a parameter while both parts were selected cuased the other
        part to be modified too and caused some hosts to disable the automation
        lane
- [Fix] Some Midi CCs updated the UI but didn't modify the patch because CC mode
        was set to Mode 1 instead of Mode 2

Version 2.0.7


JE8086:

- [Fix] Incorrect parameter range for Velocity & Control Assign for Oscillator 2
        Range and Fine/Wide
- [Fix] Possibly lost midi events when automating many parameters at once

Version 2.0.6


Framework:

- [Fix] [UI] Pressing a button should not set the "checked" pseudo-class, that is what
        the "active" state is for. BUG-10026 Furthermore, checked state was kept when
        moving out of the button while holding the mouse button down.
- [Fix] [UI] Missing repaint if parameter changed via Midi CC causing sliders to jump
- [Fix] Possible crash when resizing the editor window

JE8086:

- [Fix] MIDI timing issues due to synchronization problems, more prominent when rendering
- [Fix] Some controls only affected Upper Part even if Lower Part was selected:
        Amp Pan / Amp LFO1 Depth / Bend Range Up & Down / Transpose
- [Fix] Damaged MIDI files when exporting patches via drag & drop

Version 2.0.5


JE8086:

- [Imp] UI polishing and improvements
- [Imp] Support MIDI Control Changes for all parameters according
        to specification of original hardware

- [Fix] Performances were saved in a broken state
- [Fix] Much better MIDI timing & correction of reported latency to host
- [Fix] Save menu for Performances didn't show "Performance" but "Patch Upper"

Version 2.0.4


Framework:

- [Imp] Add ability to cycle through drop down entries and radio button groups
        via mouse wheel

- [Fix] Fix inverted mouse wheel on Mac if natural scrolling is enabled

JE8086:

- [Fix] Slow boot when opening the plugin for the first time
- [Fix] Validate ROM content before attempting to boot the device to prevent crashes due to
        other ROMs in the same folder that might not belong to the synth
- [Fix] Default Master Volume is now higher and the highest possible value has been increased
        too. Furhtermore, the displayed percentage values have been adjusted to show
        lower values overall

Version 2.0.3


Framework:

- [Imp] DSP Bridge: The last connected host is now stored as part of the plugin state
        and is reconnected to automatically on next plugin load.
        If a connection cannot be established, the plugin will display a warning message
        and will automatically fall back to local processing.

- [Fix] BUG-10016 Added OpenGL 2 renderer as fallback if OpenGL 3.3 is not supported to
        fix crashes on older hardware / Raspberry Pi
- [Fix] BUG-10013 Sliders can now be adjusted via mouse wheel.
- [Fix] BUG-10014 Patch Manager: Child data sources were still visible even
        if parent node closed.
- [Fix] BUG-10017 Tooltips could exceed screen bounds in some cases
- [Fix] Patch Manager: List entry was being force-selected when being dragged
- [Fix] Patch Manager: Patch list didn't refresh after renaming a patch
- [Fix] Patch Manager: Drag & Drop from patch list to patch slot of UI (depending on plugin)
        not working
- [Fix] Wrong initial state of toggle buttons bound to a parameter
- [Fix] Toggle buttons that are part of a radio group shouldn't disable when clicked again
- [Fix] Vertical sliders being reversed when bound to a parameter
- [Fix] Erratic behaviour of tooltips/focused parameters when multiple parameters
        are automated
- [Fix] Focused parameter display & tooltips not working for sliders

Version 2.0.2


Framework:

- [Fix] Disable all DSP Bridge related network activity if DSP Bridge is
        not explicitly enabled via config file.
- [Fix] Context Menus didn't open via Ctrl+Click on macOS.
- [Fix] Plugins consumed all keyboard events regardless of if they were
        actually handled or not. This caused issues in various hosts. For example,
        it prevented using the space bar to toggle playback while the plugin was
        focused.
- [Fix] Content flickering in some hosts when resizing the plugin window to odd
        aspect ratios

Version 2.0.1


Framework:

- [Imp] Incresed size of RmlUi debugger

- [Fix] Knobs didn't respect the selected part and always displayed/modified part 1
- [Fix] Patch Manager: Data sources were not sorted
- [Fix] Patch Manager: List/Grid cell sizes height increased to cover descenders of letters like 'g' or 'y'
- [Fix] UI didn't repaint immediately when parameter is modified via automation or MIDI
- [Fix] Skin conversion didn't work when skin was in the legacy location next to the plugin
- [Fix] Multiple context menus could be opened at the same time

Version 2.0.0


Framework:

- [Imp] Juce GUI has been replaced with RmlUi, a HTML/CSS based UI framework.
        This allows to create more complex and visually appealing UI skins.
        More information can be found at
        https://dsp56300.wordpress.com/2025/08/19/rmlui-new-gui-rendering-engine-skinning-system/

Version 1.4.5


Framework:

- [Fix] Physical MIDI input was not disabled when changing port from any
        valid input to none
- [Fix] The program name was always returned as "default" even if previously
        modified via the host. This fixes incorrect host preset names after
        a rename in Logic, Reaper and possibly other hosts
- [Fix] Various issues if root path contains non-ASCII characters

Version 1.4.2


Framework:

- [Imp] Skinning System: Added ability to add parameter bindings to labels
- [Imp] Skinning System: Added roughly CSS-based styling system. This allows to
        move properties that are common to all buttons/knobs/etc to a single style
        to prevent that they need to be repeated for each element.
        Export the latest NodalRed2x skin to see the new format

- [Imp] Downgraded to Juce 7 to regain compatibility with Windows 7 & fix font
        rendering issues on macOS

Version 1.4.1


Framework:

- [Imp] Allow to find patches with similar parameter setting by right clicking on
        a knob and selecting "Find similar..."
- [Imp] Allow to add a patch to a user bank by dragging it onto the free space of
        the patch list

- [Imp] [Skins] Add new option "boldRootItems" to tree view style to disable that root
        items are displayed in bold font (default 1 = enabled)
- [Imp] [Skins] Add new option "antialiasing" for label style to disable antialiased
        font rendering (default 1 = enabled)

- [Fix] Patch Manager might report file access errors that are not relevant
- [Fix] Renamed patches might be displayed with previous name when loaded

Version 1.4.0


Framework:

- [Imp] Upgraded to Juce 8.0.3 which uses Direct2D on Windows for faster UI rendering
- [Imp] Patch Manager now stores its database in the user documents folder, next
        to skins and roms:
        c:\Users\<username>\Documents\The Usual Suspects\<synthname>\patchmanager (Win)
        ~/Documents/The Usual Suspects/<synthname>/patchmanager (Mac)
        [XDG_DATA_HOME or ~/.local/share]/The Usual Suspects/<synthname>/patchmanager (Linux)
        Any existing database in the old location is automatically migrated to
        the new one.
- [Imp] Config file location has been changed and is now located in a subfolder
        "config" next to the other folders. Existing configurations in legacy
        locations are migrated automatically.

Version 1.3.21


DSP:

- [Imp] Performance improvements

Framework:

- [Imp] Added new entry to 'Skins' submenu to open the skins folder in the default
        file browser
- [Imp] All MacOS builds now include a script to remove quaratine attributes
- [Imp] The default skin folder has changed. Custom skins are now supposed to be in:

        c:\Users\<username>\Documents\The Usual Suspects\<synthname>\skins (Win)
        ~/Documents/The Usual Suspects/<synthname>/skins (Mac)
        [XDG_DATA_HOME or ~/.local/share]/The Usual Suspects/<synthname>/skins (Linux)

        Existing skins in the old location are still supported to ensure backwards
        compatibility

- [Imp] ROMs are now also searched for in the following directories

        c:\Users\<username>\Documents\The Usual Suspects\<synthname>\roms (Win)
        ~/Documents/The Usual Suspects/<synthname>/roms (Mac)
        [XDG_DATA_HOME or ~/.local/share]/The Usual Suspects/<synthname>/roms (Linux)

        For backwards compatibility, it is also possible to copy ROMs next to the
        plugins as it was before

- [Imp] If a firmware is missing, the target folder is now being opened to prevent
        that a user has to search for it manually

- [Fix] FX plugins didn't apply latency when being processed as bypassed, causing the
        signal to appear early
- [Fix] Tooltips didn't refresh correctly in some hosts / plugin formats
- [Fix] Redraw issues in Bitwig on Windows if DPI is set to a value != 100%
- [Fix] VST3: Hosts didn't pick up new parameter values when switching presets or
        loading state

Version 1.3.20


Framework:

- [Imp] Strip path names from skin names in GUI Skin submenu (mkruselj)

- [Fix] Patch Manager: Lost Favourites/Tags/User Banks if plugin closed before scan
        finished
- [Fix] Crash when dragging a patch from Patch Manager to a part slot
- [Fix] Crash when dragging a patch on an empty area in grid view
- [Fix] Drag target slot rectangles displayed in grid view for areas without content
- [Fix] Continue MIDI clock generation while DAW sequencer is stopped

Version 1.3.19


Framework:

- [Imp] Patch Manager: Added options to reveal a datasource in the default
        File Browser of the OS

- [Fix] CLAP: Ranges of discrete parameters were not reported properly,
        causing automation issues
- [Fix] Context menu for text edit fields was twice as large as intended
- [Fix] LV2 plugins were packaged into a a Unix like subfolder for Mac/Win

Version 1.3.18


Framework:

- [Imp] Physical MIDI port selection is now stored per instance

- [Fix] Physical MIDI ports were not opened before GUI was opened

Version 1.3.17 (2024.08.04)


Framework:

- [Imp] Patch Manager: Added grid layout, you can switch between list and
        grid layout via context menu

- [Fix] LV2 plugins were packaged incorrectly (#199)

Version 1.3.16 (2024.07.14)


Framework:

- [Fix] Patch Manager: Last selected patch was not always restored properly

Version 1.3.15 (2024.07.06)


Framework:

- [Imp] Patches can now be imported via drag & drop. You can drag .mid, .syx,
        .vstpreset, .fxb, .fxp files into the plugin to load them. You can drop
        patches on a part to load them directly, drop them on the patch manager
        data sources to add them as new source or drop them onto the user banks
        area to add a new user bank or add them to an existing one
- [Imp] Patches can now be dragged to external applications or the desktop. This
        will export MIDI files. You can drag parts, data sources or an arbitrary
        number of selected patches from the patch list
- [Imp] You can now drag parts from one instances to a part of another instance
        of the same plugin kind to copy/paste patches across instances
- [Imp] The patch of the currently selected part can now be copied & pasted via
        Ctrl/Cmd C/V or via context menu. This copying is text based so that you
        can share presets easily in forums etc.
- [Imp] A data source can now be dragged onto tags to modify all patches at once
- [Imp] Parameters now have their own context menu. In this context menu you can:
- Lock/unlock a region
- Copy/paste a region
- Link/unlink regions across parts
- [Imp] Added parameter linking across parts. If you link a region of a part to
        another part, knob movements/automation data/MIDI controls for the
        source part are forwarded to all parts linked. This eases automation
        for layered instruments
- [Imp] Region locks are now per part instead of being global
- [Imp] Region locks are indicated by displaying an overlay next to each locked
        parameter.
- [Imp] Rotaries operated via mouse wheel now increment/decrement in single
        steps while shift is pressed
- [Imp] Tooltip duration shortened to 1.5 seconds (mkruselj)
- [Imp] Parameter tooltips are now constrained to the plugin window (mkruselj)

- [Fix] Patch export as .mid created broken midi files
- [Fix] Corrupted data was sent to physical midi output (if selected) at plugin startup
- [Fix] Parameter change information in LCDs and tooltips were flickering if one knob
        was modified via mouse while another one was modified via automation or MIDI

Version 1.3.14


Framework:

- [Imp] Rename "db" to "dB" in all gain context menus (mkruselj)
- [Imp] Column breaks for dropdown menu based parameters improved (mkruselj)
- [Imp] Selecting the same skin again reloads it, useful for skin
        developers (mkruselj)

Patch Manager:

- [Fix] Typo "Deleted Selected" in patch context menu (mkruselj)

Version 1.3.13


Framework:

- [Imp] Added warning message if running under Rosetta as performance will be bad
- [Imp] Added 'Panic' menu to send All Notes Off / reboot device

- [Fix] Do not crash if a skin cannot be loaded

Patch Manager:

- [Imp] Added context menu setting to hide duplicates by name
- [Imp] Added options to add/remove patches to/from tags, categories & favourites
        via context menu
- [Imp] "Save" buttons now have more options: Allow to save to any
        existing user bank or create a new one automatically if there is none yet
- [Fix] Name of user bank not displayed in patch information panel
- [Fix] Fix possible crash when loading cache
- [Fix] List ordering incorrect when being loaded from cache
- [Fix] Tags/Favourites got lost in some circumstances

Version 1.3.12


Framework:

- [Fix] VST3 plugins were rejected by some hosts on macOS

Version 1.3.11


Framework:

- [Imp] Added disclaimer about ROM usage
- [Imp] Add warning message if a Midi port cannot be opened because it is already in use
- [Imp] Third-party skins are now expected to be in a folder that is named like the plugin:
        skins_PlugName, for example skins_Osirus.
        Currently selected skins are still loaded and you can export the current skin to
        disk to create the new folder automatically. Move other skins to the new
        folder manually.

Patch Manager:

- [Imp] Database is now cached so subsequent loads are faster. If a datasource needs to be
        updated, right click and select "Refresh" to force a rescan
- [Imp] Added a default text "Search..." to search boxes independent from the used skin
- [Imp] Allow to add multiple files/folders at once when adding datasources

- [Fix] Info about selected patch not updated when patch renamed or tags modified

Version 1.3.9


DSP:

- [Imp] Small performance optimizations

- [Fix] DSP thread not set to high priority on Mac/Linux

Framework:

- [Imp] Upgraded Juce to version 7.0.10
- [Imp] Plugin window can now have an arbitrary size by dragging the bottom right corner
- [Imp] Added support for the LV2 plugin format
- [Imp] Added options to Save button to allow storing the current preset in a user bank

- [Fix] VST3 packaging corrected for Windows & Linux to match specification as stated at
        https://steinbergmedia.github.io/vst3_dev_portal/pages/Technical+Documentation/Locations+Format/Plugin+Format.html
- [Fix] Patch Manager: Failed to parse folder that contains UTF-8 characters
- [Fix] Patch Manager: Selection was not updated when a part is saved to a user bank
- [Fix] Knob movement via mouse wheel didn't update automation & parameter display

Version 1.3.8 (2024.03.11)


DSP:

- [Imp] Small performance improvements

Framework:

- [Imp] Second click on root tree items of category tree deselects the item
- [Imp] Patch Manager: "Uncategorized" has been moved into the Categories group

- [Fix] Patch Manager: Missing patches if a directory contains files with unicode characters

Version 1.3.7


Framework:

- [Imp] Patch Manager: A category can now be deselected via second mouse click to remove
        any category filter
- [Imp] Patch Manager: Root tree items (Factory Patches, Datasources) are no longer
        auto-expand upon load
- [Imp] Patch Manager: data source names are now shortened

- [Imp] Inform that changing plugin latency blocks while being in use might cause synchronization
        problems

- [Fix] Patch Manager: No error message was displayed if a user bank cannot be written to disk
- [Fix] Patch Manager: It was not possible to add presets to a newly created tag until another
        data source was selected

Version 1.3.6 (2024.03.03)


DSP:

- [Imp] Performance improvements

- [Fix] Crash on x86 processors in various circumstances

Framework:

- [Fix] PatchManager: Edit field not refreshing text while typing in some hosts when adding
        a user bank or favourite

Version 1.3.5 (2024.03.01)


DSP:

- [Imp] Reduced host memory consumption
- [Imp] Performance improvements

Framework:

- [Imp] Patch Manager: Add "Locate" context menu entry for patch to select the data source that contains it

Version 1.3.4 (TBD)


DSP:

- [Imp] Small performance improvements when JIT compiler needs to recompile code

Framework:

- [Imp] Patch Manager: Add tooltip for data source to show the full path in case its cut off
- [Imp] Patch Manager: Columns can now be resized by dragging
- [Imp] The DSP can now be underclocked/overclocked via context menu between 50% and 200%. This is
        an advanced setting that needs to be confirmed before activation

- [Fix] Patch Manager: Fix subfolders not enumerated on Mac & Linux
- [Fix] Add missing .vstpreset, .fxb and .cpr file extensions to file selector when loading a patch via "Load" button
- [Fix] Parameter value change by double-click on knob to reset it was not sent to host for automation
- [Fix] Linked parameters confused Bitwig / Ableton and other hosts
- [Fix] Long plugin loading times in some hosts due to excessive initial parameter automation updates
- [Fix] Part context menu and global context menu opened at the same time on right click

Version 1.2.21 (2022.12.06)


DSP:

- Performance improvements (5-10%)
- Stability improvemens
- Large speedup of code (re)generation. Results in faster startup time, reduces hiccups in Multi mode and when changing patches
