Releases: christofmuc/KnobKraft-orm
2.0.1 (Beta) - lot's of bug fixes
Thanks to everybody for feedback on the first beta release of KnobKraft 2.0.0, this is the second beta release with a couple of important bug fixes:
- Fix filtering of the log so you can select e.g. Debug or Warning level only
- Removed the colouring of the log as the algorithm was not stable and seemed to slow things down too much (#214).
- Fixed program change send mode for higher banks not being addressed correctly
- Speedup of building the list of all imports for a synth (#211)
- Speedup of querying for duplicate names in the database (#212) - thanks to @chatgpt !
- Fixed sort order for duplicate name search as well (#212)
- Fixed log entry not showing patch name anymore (#210)
- Fixed adaptation overview table in documentation (#208)
New features
- Initial try of adding a new second main window (open via View... menu) that can be used to switch patches from a second (potentially low-res) touchscreen. I am using this to try out new UI that can deal with much less pixels than the original UI.
Synth updates
KnobKraft Orm 2.0.0 (Beta) - This is it!
This is it!
A long time in progress, this 2.0.0 release contains too many changes to list here. The main important driving feature is my take on synth bank management, which is supported for now for all synths that have the Program Dump Capability implemented, the majority of modern synths.
The main features addressed are the following github issues:
- #9 Bank management - How does it work? KnobKraft can query and remember your synth's storage banks content, and with drag and drop you can modify these banks and then send them into the synth. You can also create user banks with a certain target bank, and load these as a whole into the synth. These are really just a special case of patch lists, in that they are taking patches only for a specific synth, and always have the exact number of patches the synth bank can store. You can also drag lists of patches into a synth bank.
- #19 Bulk rename - there is a new edit dialog that can be used to easily rename all patches currently selected, or just imported. It also has a feature to create the patch name from the file name, making it ideal to import legacy patches from single syx files. Additionally, supports clipboard copy and paste of list of patch names, so you can process your patch name table with Excel or similar tools.
- #149 and #176 Patch Selector mode - Additionally, if KnobKraft now knows that a patch is stored in the synth already, it will issue a bank change + program change instead of sending the whole sysex data for faster patch switching.
- #173 New Favoite/Hidden search - Favorite and Hidden are now no longer mutually exclusive, and you can actually use the new search options to produce any combination of hidden, favorite, or not marked (neither nor) patches. This is useful to find e.g. patches that were accidentally hidden.
New synths
- Added John Bowen Solaris support. Special thanks to @conversy for this community-contributed adaptation!
- Fixes and improvements for the Pioneer Toraiz AS-1 adaptation, thanks to @zzort!
- Updated Novation Peak/Summit adaptation with a fix for program dump request.
Bug fixes
Too many to list, but probably also introducing many new ones. Treat this as a beta version and give me feedback!
Handshake and ACK protocol support, MacOS Python via env
New features
- Support Handshake/ACK messages in the Generic Adaptation. The isPartOfEditBufferDump() and isPartOfSingleProgramDump() methods can now optionally return a tuple of a bool and a list of MIDI bytes instead of just a bool. If they do, the MIDI bytes are sent to the synth in reply to the message received
New synths
- Updated Korg Minilogue XD adaptation, now supports fingerprinting and friendly Program Name Display
Bug fixes
- MacOS Python now found when installed from MacPorts (thanks to @breun for the PR!), and most importantly use environment variable ORM_PYTHON to allow the user to provide a custom path to the installed Python
- Fixed fingerprinting algorithm in Generic Roland module, reindex your patches and get better deduplication!
Generic Roland, XV-3080, JV-1080, JV-80, Novation Summit, DSI Tempest
New features
- Generic Roland adaptation. This works the same way as the long proven Generic Sequential adaptation - there is a Python module with a "normal" adaptation implementation that can be parametrized for any Roland Synth. Examples are shipped (see below).
- The multi-message support per patch is now documented. Check out the adaptation programming guide and the functions isPartOfEditBufferDump and isPartOfSingleProgramDump
- New function for adaptation programming: bankDescriptors allows banks with varying sizes, names, and marking them as ROM banks
- New function for adaptation programming: storedTags allows adaptations to provide categories during import
- Introducing the beginnings of a new knobkraft python module with helper functions shared by various adaptations.
- Implement a generic test framework so all adaptations can benefit from tests written for one. Added a new mechanism for adaptations to provide test data for the common tests
New synths
- Roland XV-3080, patch mode for the 128 user patches. Rythms and Performances not implemented yet. This works, as I have tested it with a device here. The adaptation also explicitly implements the backward compatibility of the synth, and allows you to load patches for the JV-80/90 and JV-1080/2080 families, which will be sent unchanged to the synth, which understands the old patches.
- Roland JV-1080/2080, patch mode for the user patches. This is untested, but if the synth behaves like the XV-3080 it should work out of the box.
- Roland JV-80/880/90/1000, patch mode for the user patches. This is untested, but if the synth behaves like the XV-3080 it should work out of the box.
- Novation Summit/Peak adaptation done purely by the manual as an example for the new features. If it doesn't work, please give feedback!
- DSI Tempest - the Tempest is really limited in that the computer can not query the patches. But this should work with the receive manual dump mechanism. Looking for feedback!
Bug fixes
Hotfix of 1.16.0 - bring back search box
The 1.16.0 had an issue with the search box not showing up. Fixed this.
Prophet 12 layers, synth-specific grids
It has been a while since the last release, this one contains mostly bug fixes but also some improvements to the Generic Adaptations:
- the Adaptations can now implemen the LayeredPatch capability. Added this to the Adaptation Programming guide, and implemented it as an example for the Prophet 12. You can now see and change the name of both layers instead of just layer A.
- the grid size is now specific to each synth and goes up to 10x10, so you can match it to the bank size of the synth. Another grid size is persisted for the "multi-mode", when all synths are selected.
- all Sequential synths now support the numberFromDump() function, which can be used to extract the original program and bank from a patch. Newly imported patches will now show the program place correctly.
- the generic Sequential module now can define friendly Bank name and friendly Program name. I implemented this as an example for the DSI Tetra and the DSI Prophet 12, where the name of the program now should match the display on the synth
- to address #167, I added the menu item back that allows you to break out the naming rules with the regular expressions used for automatic category assigment based on the patch name. This might still be somewhat flaky, but can be very useful if it works.
Bug fixes included:
- Fixed #162, when you turn on only a single synth, no need for the full header bar. Saves vertical space.
- Fixed #168, new categories can be used by the import now without restarting the app
- Fixed #169, which led to wrong patch - import/file associations when importing duplicates.
- Fix problem with some Novation Ultranova banks not importing
- DSI Tetra now supports all 4 banks, somehow we thought it has only 2
- DSI Tetra now enumerates patches correctly, starting at 1 not at 0
Minor bugfixes, bringing back the Yamaha reface DX
Minor bugfixes, bringing back the Yamaha reface DX that was lost in the 1.15.0, and starting to build Ubuntu releases in addition to Windows and macOS.
New synths
Thanks to @nezetic, we have two new modules!
- We now have an adaptation for the Novation Ultranova.
- Also, the new Zoom MS adaptation supports the Zoom Multistomp padels of the Zoom MS Series (50G/60B/70CDR)!
bug fixes
- The refaceDX synth was gone - put it back in. This is not an adaptation (there is one to test the 1.15.0 multi-message feature) but still C++ code.
- Improve first time startup layout - gone is the old portrait mode layout meant for my Android Tablet.
Multi-message adpatations, configurable button info
First version with support for synts that use more than MIDI message per patch with the generic adaptation/python code!
Until now, for more complex synths like Roland and Yamaha you had to write C++ code, as the Adaptation in Python would assume each patch consists of only a single MIDI message. This has been extended, the adaptation API has been extended so the Python code gets bytes that could be more than one sysex message, and is allowed to return more than one message as well.
See the adaptation programming guide for more information, and the adptation for the Yamaha reface DX for an example implementation (view it on github).
new features
- EditBufferCapability and ProgramDumpCapability now work with lists of MIDI messages everywhere in their interface.
- Providing a Python based Yamaha reface DX implementation as example on how to use this in real life.
- Imports can now be renamed - just double click it in the tree and edit the name in place.
- Fix #151 in that no scrollbar appeared when your screen was not high enough or the font too big.
- #128 Increase the size of the category buttons on the right hand side so they are easier to touch.
- Change the way patch names are edited - introducing a new property panel on the right side, where you can edit the name or the layers directly.
- Added a combo box to select the mode of display on the patch buttons - choose name, layers, program number only. Persist this per synth.
bug fixes
Re-release 1.14.2 for Windows 7
It turned out the Python 3.10 upgrade done locks out old Windows 7 SP1 machines. That's not really what we want, so for the auto update mechanism to prevent Windows 7 users from ending up stuck with the broken 1.14.1 I re-release this here so the auto update points to the 1.14.2 for the Windows version (the Mac version doesn't auto update anyway).
This also has Sentry crash report support turned on again, the quick fix build of 1.14.1 did not have that enabled, so if you are running 1.14.1, please update to 1.14.2 ;-)
Hotfix 1.14 - don't crash on no synth configured, update Python required!
This is a hotfix of the 1.14.0 release. The 1.14.0 suffered from two problems:
- The software crashed when not a single synth had been configured before. This caused first time users to bail out and have to use an older version than 1.14.0 to get started.
- The Python version required was still stuck at 3.8. I updated this to 3.10. This should make no difference for Windows users, as the Python used is embedded in the installer, but for Mac users this requires a Python upgrade. This should be simpler than installing a Python 3.8, of which there are no Mac binary installers hosted anymore - just head over to https://www.python.org/downloads/macos/ and grab the latest 3.10 installer.