Skip to content

Releases: christofmuc/KnobKraft-orm

2.10.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 13:51

Features:

  • #518 Adaptations can now reply during bank transfers, including the handshakes needed by older synths such as the MKS-50. Failed or rejected transfers are reported as failures instead of importing a partial bank, and stalled transfers have timeout handling.
  • Added an adaptation API level check. Adaptations which need newer host functionality can now explain why they cannot run in an older KnobKraft version. The new MKS-50 adaptation uses this check, so please update the application as well as the Python file!
  • Expanded the automated tests with real patch files, simulated MIDI transfers, malformed dumps, database operations and import/rename regressions. This helps catch problems without having every supported synth here, though it is still no replacement for your hardware testing!

Synths:

  • #531 and #558 Three new adaptations from @Casuallynoted: Behringer UB-Xa, Casio CZ-101/CZ-1000, and Ensoniq Mirage running SoundProcess OS. Many thanks for the contribution and the testing! All three are included as alpha adaptations, with additional validation and regression tests. The Mirage adaptation is for SoundProcess, not the original sampler OS, and uses Patch 1 as its audition buffer, replacing its contents. UB-Xa and the Mirage's alternate SysEx header still need more hardware testing. Thanks also to @and-kal for making the Casio test patch available under the Unlicense.
  • #535 Added Sequential Fourm support, including all four banks and edit-buffer audition. Tested with a real patch dump and simulated MIDI; marked beta until we have more hardware feedback.
  • #550 and #559 Added Clavia Nord Lead / Nord Lead 2 / Nord Lead 2X support. This includes normal program dumps and older MIDI-file banks, with official Nord files used for testing. Direct downloads cover four banks; the 2X's additional ROM banks can be imported from files. Percussion kits, performances and Nord Lead 3 or later are not covered. This is alpha support, so feedback from owners is very welcome!
  • #307 and #518 Replaced the native Roland MKS-50 implementation with a Python adaptation, including Alpha Juno-1/2 tone-bank compatibility and proper 64-tone bulk-bank export. Existing patches saved by the old C++ implementation remain readable. Start bank downloads from the synth's front panel; two-way transfers now receive handshake replies. Patch-parameter and chord-memory banks are not supported. Many thanks to @planist79 for the detailed report, example banks and patient follow-up, and to @markusschloesser for connecting the related bank-export reports!
  • #545 Improved Sequential Pro 3 user/factory bank handling, with U1-U4 and read-only F5-F8 labels, clearer setup help, and a 50 ms message delay following the hardware report. Thanks to @gmtta for reporting the trouble and @RadekPilich for investigating and supplying the changes! A hardware retest of the original import problem is still welcome.
  • #533 and #567 The Roland SE-02 adaptation can now import .PRM files from USB backups directly, without a separate conversion step. Many thanks to @MammaScan for the converter, reference file and the suggestion to integrate it! Conversion uses the converter's parameter mapping and template defaults; COM_OCT, COM_TRNS, COM_PWM_DEPTH and COM_PWM_RATE are not converted, so this is not yet a lossless backup restore. Tested against the original converter, but hardware playback still needs verification. Store auditioned sounds permanently with WRITE on the SE-02.
  • #503 Thanks to @Casuallynoted for testing Roland U-20/U-220 support and reporting that it works well! The adaptation was added in 2.9.0; this release adds the deserved credit.

Bug fixes:

  • #542 The Sequential Trigon-6 adaptation was listed as supported but missing from the installer. It is now shipped. Thanks to @CoolColJ for spotting this!
  • #543 and #566 Reimporting a Trigon-6 patch called "Basic Program" no longer replaces the custom name assigned in KnobKraft. Thanks again to @CoolColJ for the report and the follow-up details! This fixes the lost-name symptom; the separately reported skipped/misaligned bulk-rename rows still need investigation.
  • #548 Sending an empty or partially filled user bank now shows an error instead of crashing before any MIDI is sent. Fill every slot before sending the bank. Thanks to @molenick for the Korg R3 crash report and reproduction steps!
  • #555 and #556 Fixed banks being parsed twice when the same incoming data was recognized both as individual program dumps and as a complete bank, as with the Access Virus. Identical sounds in different bank slots are still preserved.
  • #556 Fingerprint checks now work on copies of patch data, so an adaptation's duplicate-detection code cannot accidentally modify the patches being imported.
  • #560 Shared Roland adaptations now validate complete DT1 dumps and preserve block addresses when converting or renaming reordered messages, including supported JV family length variants. This prevents equal-sized tone blocks from silently trading places and rejects incomplete or corrupt dumps.
  • #561 Roland XV-3080/5080/5050 requests and patch sends now consistently use the detected device ID, including compatible JV imports, rather than falling back to the default ID.
  • #562 Equivalent Roland program and edit-buffer dumps now share a fingerprint regardless of patch name, device ID or block order. Back up your database, restart Orm, then use Edit > Reindex patches... for each affected JV/JD-Xi/XV synth before importing more patches. Ordinary program hashes are preserved, but some old representations need reindexing and duplicate sounds may merge. Recordings named by old fingerprints are not automatically renamed. Please read the compatibility and migration details first.
  • Hardened SysEx parsing against truncated and unterminated messages, and added regression tests for rejected bank transfers and recovery on the next import.

Thanks also to @art507 for the additional naming feedback in #543, and to everybody sending reports, logs, patch files and hardware test results. Not every report is solved yet, but these details make a big difference!

2.9.0 - Many new synths

Choose a tag to compare

@github-actions github-actions released this 19 Apr 13:43

Features:

  • #438 Added the LegacyLoaderCapability for adaptations that need to load older or non-standard file formats, and documented the new hook in the Adaptation Programming Guide.
  • #508 Added the CustomProgramChangeCapability Python binding so adaptations can define their own program change behavior.
  • Added a simulated MIDI wire test layer for adaptation tests, covering bank downloads, edit buffer requests, and send-to-synth code paths.
  • Exposed the filename currently being processed to Python adaptations, so file-based import logic can make better decisions.

Synths:

  • #433 and #72 Added the Kawai K5000 adaptation with bank import support and test data. Heroic effort by @markusschloesser on this what I think is our most complex adpatation yet!
  • #517 Added the Roland SE-02 adaptation contributed by @MammaScan. Many thanks for this!
  • #501 Improved Korg microKORG/microKORG S bank dump requests from @ilantz by returning the request sequence in the format expected by the C++ sender.
  • #460 Korg R3 adaptation added. By now it is possible to get adaptations 100% written by AI by just giving them the manual download. This adds a new GenericKorg python module which can be used for new Korg adaptations to reduce code duplication.
  • #464 Roland JD-Xi adaptation added, also 100% AI
  • #503 Roland U-20/U-220 adpatation added, also 100% AI.
  • Improved the Roland D-50 adaptation and used it to the new mock MIDI tests, extending test coverage.

Bug fixes:

  • #520 Improved CMake Python detection with a fallback path and explicit Python 3.12+ version checks. Thanks for @ilantz for this!
  • #525 Updated bundled third-party libraries, including JUCE 8.0.12, pybind11 3.0.3, spdlog 1.17.0, fmt 12.1.0, doctest 2.5.2, json 3.12.0, json-schema-validator 2.4.0, ICU, and WinSparkle.
  • #524 Updated pytest to 9.0.3.
  • #319 Added a docker build step testing that the archlinux version can be built as described by the README. Thanks to @fractalf for the details!
  • Hardened the macOS hdiutil retry script and fixed an off-by-one retry loop error.
  • Fixed a crash when a program buffer synth returned an empty list of bank descriptors.

2.8.4 - Fixing duplication and refresh issues

Choose a tag to compare

@github-actions github-actions released this 17 Feb 20:46

Bug fixes:

  • #512 and #408: Fix patch grid not refreshing properly on category assignments and flag setting
    be fixed by 2.8.3, potentially causing duplicate user bank names.
  • Bug fix: Remove patch duplication in Library view occuring with patches imported multiple times.
  • Added unit tests for the various patch search combinations

2.8.3 - bug fixes to get 2.8.x out of beta status

Choose a tag to compare

@github-actions github-actions released this 26 Jan 21:58

Bug fixes:

  • #504: Fix user banks created as synth banks by 2.8.x, causing the first save to work and subsequent saves to go into a different list (potentially duplicating the list in that process). Database will
    be fixed by 2.8.3, potentially causing duplicate user bank names.
  • #499 Categories do not refresh when database is changed and that has different categories
  • #484 Fix rotating behavior in auto fill new user bank from start patch. If there are not enough patches, just repeat the last one instead of starting again from the first one.
  • #408: Macro keyboard does not properly allow page transitions forward and backward. Stop hiding patches immediately when hide is clicked because it confuses the macro navigation.
  • #136: Generic timeout mechanism by forwarding empty MIDI messages into the callback handler when a timeout has passed. By default, the timeout is 30 seconds in order not to break any existing slow synths, but shorter timeouts can be reported by the adaptations via the messageTimings function. Adaptation Programming Guide was adapted.
  • Macro detection is now edge-triggered: The Orm tracks active macro states and only fires when a macro chord transitions from not-matched to matched, preventing repeated triggers while holding the chord and playing/releasing other notes.
  • All Notes Off (CC123) is now respected: incoming CC123 clears the internal MidiKeyboardState and resets macro armed states while still forwarding the message to the synth, so held external notes no longer block shortcut detection.
  • Setting and clearing the "is regular" flag now got its own macro entry

2.8.2 Hotfix

2.8.2 Hotfix Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Nov 18:22

Bug fixes:

  • Hotfix for duplication of patches on flag update. This actually inserted a new item into the import list on every click, the surprise came from the
    hidden side effect of the merge upsert. Furthermore, column names became suddenly ambiguous in certain filter combinations.
  • Change of behavior - lists currently can only be sorted by position of patch in list. This doesn't make much sense for import lists, so relaxed that
    for now only for imports. Maybe we want to be able to sort other lists as well.

2.8.1 Hotfix

2.8.1 Hotfix Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Nov 10:44

Bug fixes:

  • Hotfix for database migration failures caused by duplicate EditBufferImport lists that were disambiguated by synth only. Not sure why the database
    I have did not expose this problem, potentially cured by some intermediate inofficial build. Check your list and import data after updating!

2.8.0 (beta)

2.8.0 (beta) Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Nov 00:58

Features:

  • #498 Bigggest database change since a long time - backup your databases (Orm will keep a copy before the database migration)! This is to
    store Imports as normal lists just like Banks and User Lists. This allows for better drag and drop interoperability, and will enable important
    future features requested, like #362, different names of patches per bank.
  • #468 Adding support for routing all of KnobKraft's output to a secondary device via the Macro setup screen.
  • #457 Add a third state "regular" to all patches. This can be used to not only mark favorites and hide unwanted patches, but also to flag those
    which have already been reviewed and need no further attention. Added appropriate filter button to the search bar and defined the combinatorial
    search filter with all of these possibilities. now.

Synths:

  • #495 and #496 Fixing the Yamaha DX-7II adaptation. Thanks to @AgtSlick for the report and the fix!

Bug fixes:

  • #410 When importing a bank via the Import dialog instead of the active bank sync, the bank itself was not refreshed. This was now merged
    to be the same operation - either clicking on the "In Synth" bank or use the dialog to select which banks to import, both will produce an import list
    and refresh the In Synth bank.
  • #497 Sort the synths by name alphabetically both for the tree view on the left and the synth buttons at the top of the screen so we have a stable order.

2.7.2

Choose a tag to compare

@github-actions github-actions released this 01 Nov 23:34

Features:

#484 Added a new bank fill mode - From active patch - which will create a new bank filling it up with patches from the visible grid starting at the currently selected patch. If that is not visible, will fallback to fill from first element.
Switch Mac builds to build on Mac OS 14 on ARM architecture (still fat binary also including Intel chip support) becasue the Mac OS 13 builders are being retired by github

Synths:

#304 Experimental adaptation for the Behringer Pro 800. Sending to the synth is slow, this could benefit from sending the patch as a CC flood instead of real program dumps, which go into flash memory immediately.

Bug fixes:

Fixed crash of the software when encountering a database with a schema that is too new for it. Works only for this version and even newer databases, old versions will crash and you need to edit the settings file to prevent the software from opening the wrong file again on the next launch.
#485, the MIDI Input Device and the Fixed Synth name on the Macros page were wrongly persisted in the settings file.
#482 Increased the length of patch names to max 50 from max 20 before. Note that if the synth implements renamePatch(), the name entered by the user will be run through renamePatch() and then nameFromDump(), so the name can only be something that can actually be stored in the synth. This includes limitations to character set and length.
#474 Address delete bug throwing a SQL exception on ambiguous column name.

2.7.1 Fix macOS build

Choose a tag to compare

@github-actions github-actions released this 27 Sep 23:16

Synths:

  • #450 Implemented patch rename functionality for the Generic Roland module, this should provide all modern Rolands with patch name change and upload.
  • #411 Added a sort order column to the Edit Categories... catalog so that you can order the categories in a different order than they were created.

Bug fixes:

  • #459 Changed the build process hoping to get the file chooser dialogs backs on macOS 15.5 and newer

2.7.0 - Three new synths and some UI updates

Choose a tag to compare

@github-actions github-actions released this 13 Aug 22:43

Features:

  • #463 Trying to make the currently selected patch stand out better in the colour grid - using white background and black font now.
  • #461 Alt-Tabbing away did lose current edit of the tree control. This is complex, trying a better handler for now only for the inline editing in the tree control.
    You can tab away and back again and the current editor should still be active.
  • Updated JUCE to 8.0.8.
  • Updated embedded Python to version 3.12.10 for Windows.
  • Now building with Visual Studio 2022 instead of discontinued Visual Studio 2019.

Synths:

  • #467 Novation Bass Station II adaptation provided by @Cockroach! Awesomely nice to contribute, and this will be much loved I guess!
  • #469 Behringer Wave adaptation provided by @willxy! How great to have a second new synth supported by the community!
  • #465 Korg microKorg S adaptation provided by @ilantz! This is a first to have three new adaptations submitted for a single release. My friends, you rock!