KnobKraft-orm
KnobKraft-orm copied to clipboard
FR: Send a single patch and/or a 64 patch bank directly to the synth
Would it be possible to implement a function to send a single patch and/or a 64 patch bank directly to the synth (e.g. Korg DW-8000) instead of only exporting the sysex of the patches, and then have to use MIDI OX or similar?
For the Korg DW-8000 the Sysex for writing a patch to program 1 and 2 and so on would look like this:
C0 00 F0 42 30 03 40 00 0F 1F 00 00 00 00 00 00 1A 00 00 00 00 14 0D 00 00 00 0D 02 17 07 1F 0B 09 00 00 10 04 1F 00 07 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7 F0 42 30 03 11 00 F7 C0 01 F0 42 30 03 40 00 00 1F 00 00 00 1F 00 00 00 00 00 00 00 26 23 00 00 00 00 06 14 11 1B 1F 0C 00 00 1F 1F 1F 1F 0D 07 00 13 00 00 00 04 01 00 0D 00 00 00 0F 00 03 03 00 F7 F0 42 30 03 11 01 F7 and so on
Thank you, Peter
@planist79 Ah, sorry for my other answer, reading this suggestion only now, Yes, this is a good idea, and it will be implemented at the latest when I am done with the bank management: #9. Actually I am quite progressed on this, maybe I can make a beta build available soon.
This is possible with the KnobKraft Orm 2.0.0 beta release. Looking forward to feedback!
Thank you. Sorry for replying so late. I get a log entry that sending banks to the DW-8000 is not yet implemented. Am i doing somehting wrong?
@planist79 Hm, that should be a bug somewhere. I will check, I know I had made a DW-8000 adaptation in the meantime trying to replace the C++ code which is a bit too specific.
Which version of KnobKraft did you try?
Hi, thank you very much for your quick reply!! I am on version 2.1.0
Ok, this is a bit weird because I remember doing it, but somehow the change for the DW-8000 did not end up in the released version of it.
Can you try the attached adaptation? Place it in the user adaptation directory and restart the Orm. It identifies as "DW-8000 Adaptation", so it appears as a different synth than the DW-8000 C++ code, which you have used before. It will basically start without any patches. For tests, feel free to create a new database via the file menu.
This adaptation has the code you listed above, and I just tested it quickly with my EX-8000 and it appears to work, although I have no keyboard attached right now and just looked at the data and didn't listen to the sounds.
Can you give it a try? I'l make that part of the next official release then. KorgDW8000.zip
great, thank you. I will try it out tomorrow! Again, sorry for my late feedback on this but my DW-8000 was being repaired for quite a while.
No worries, same here, my MIDI interface was gone for a while and I had not started any of my retro synths :-)
Hi @christofmuc
i have made the following observations:
- I added the *.,py file into the adaption folder. I started KnobKraft. I setup the DW-8000 adaption in settings menu and activated it on the top right.
- In order to populate the Synth Bank on the right i cannot use the patches from the existing database which i thought to load by clicking "All patches" on the top left. But the drag and drop does not work,. It seems that first, I need to import new patches into the Adaption by pressing F3 and importing the 64 Patches from the DW-8000 (both import functions well by the way!).
- After that i can create a new "User bank" under the Adatpion, then thsi bank opens up n the right as an empty bank. Now i can drag and drop one patch at a time from the central patch window to the Synth Bank window on the right. 4. Feature Request: The first patch populates all 64 empty patches which is a bit strange. Better would be it would only populate one patch space. 5. Feature Request: It would be very handy to Ctrl+Click or Shift+Click a lot of patches i n the central patch screen and move them to the Synth bank on one go. Right now it is only one patch at a time.
- Then i press "Send to Synth" which works. It writes the patches to the DW-8000. One minor quirk: At the end of the Send process and turns of the Digits for a second and makes a weitrd sound. But then the new patches can be loaded. The Send to Synth function seems to irritate the DW-8000 somehow. A behaviour which does not happen when sending a 64 sysex patch bank via Bome SendSX to the DW.
The DW-8000 is warm and simple to edit. Just a great synth. I couldn't find another sysex librarian with Import/export function for it. So i am looking forward to a new version of KnobKraft. You said something about C++ code snippets and Python.. I'm not a programmer so i can't help you with that. ;) But I must say that i find the Meta information about the patches in the extra tab on the right helpful.
Thank you for looking into all this.
Peter
ps.. In the next weeks i will also try to create a patch database for my Roland Alpha JUNO-2 with KnobKraft. I hope i can use the MKS-50 adaption to import/export patches.
Hi Peter, this is correct. I am building the 2.2.0 right now, which brings the changes we tested to the regular DW 8000, so the release will work with your previous database. You might want to disable the test version to avoid confusion. In case you made changes to the patches or the metadata with the test version from last week, we can export the patches into a PIF file and change the synth name, and reimport so you can transport the patches from the test synth to the "real" released synth.
I also made one change to the patch upload with testing - but I think the additional program change before edit buffer send and store program call is not necessary, at least it was not in the bank files I found in the internet. Can you please test the release version and see if it still works? It should not confuse the synth like you described.
More in the other tickets, thanks for the feedback and the great ideas! Keep the coming!
Hi Christof, @christofmuc
i finally got around to testing it: Sending a bank with "Send to Synth" does not yet work here unfortunately. Autodetect of DW8000 works, so MIDI IN and OUT works fine.# the MIDI Log shows
Is it possible that the Patch selection is missing? In order to work in Bome SendSX a syx bank must include the patch selection "C0 00" etc... In your log file this section is missing..
C0 00 F0 42 30 03 40 00 0F 1F 00 00 00 00 00 00 1A 00 00 00 00 14 0D 00 00 00 0D 02 17 07 1F 0B 09 00 00 10 04 1F 00 07 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7 F0 42 30 03 11 00 F7
C0 01 F0 42 30 03 40 00 00 1F 00 00 00 1F 00 00 00 00 00 00 00 26 23 00 00 00 00 06 14 11 1B 1F 0C 00 00 1F 1F 1F 1F 0D 07 00 13 00 00 00 04 01 00 0D 00 00 00 0F 00 03 03 00 F7 F0 42 30 03 11 01 F7
one more finding which will help i hope:
The first two lines are an excerpt of the log file when sending a complete bank by pressing "Send To Synth"
13:10:57.345: Out MIDIOUT2 (BCR2000) Sysex [f0 00 06 1a 00 00 0a 00 01 06 08 00 02 00 00 10 3f 00 03 00 00 00 0e 00 00 00 00 07 00 00 1f 00 1f 00 03 00 16 00 09 00 02 00 03 00 00 12 0a 00 00 00 00 00] <-- at then end an "F7" seems to be missing?
13:10:57.346: Out MIDIOUT2 (BCR2000) Sysex [f0 42 30 03 11 01 f7]
This line here is the log file entry when sending the same patch to the edit buffer of the Synth by pressing a pacth in the patch window.
13:11:27.742: Out MIDIOUT2 (BCR2000) Sysex [f0 42 30 03 40 00 06 1a 00 00 0a 00 01 06 08 00 02 00 00 10 3f 00 03 00 00 00 0e 00 00 00 00 07 00 00 1f 00 1f 00 03 00 16 00 09 00 02 00 03 00 00 12 0a 00 00 00 00 00 f7]
Cyan: Sent To Synth
Green: Patch Send to Edit Buffer
@planist79 Yes, I just looked at it - it is a missing conversion at that place from the "legacy format" (used by the C++ code) to the new code, and it should fill these two bytes properly.
We don't need the program change. Here is a fixed adaptation to test, I will make a 2.2.1 release: KorgDW8000.zip
ok, wow!! that was fast! i try it out! THANKYOU!
@christofmuc
The new adaption sends patches, but it stops after patch 72.. so 73-88 are not updated. The DW also still makes a short strange sound, a hickup, at the end of the transfer.
When i send the same patch bank according to the following format with SendSX it works from 11-88 and without hickup ;-)
C0 00
F0 42 30 03 40 00 0F 1F 00 00 00 00 00 00 1A 00 00 00 00 14 0D 00 00 00 0D 02 17 07 1F 0B 09 00 00 10 04 1F 00 07 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7
F0 42 30 03 11 00 F7
C0 01
F0 42 30 03 40 00 00 1F 00 00 00 1F 00 00 00 00 00 00 00 26 23 00 00 00 00 06 14 11 1B 1F 0C 00 00 1F 1F 1F 1F 0D 07 00 13 00 00 00 04 01 00 0D 00 00 00 0F 00 03 03 00 F7
F0 42 30 03 11 01 F7
Hm, maybe we're sending too fast, I noticed that sending is much quicker than receiving. My EX 8000 did take all 64 patches.
Try adding this to the adaptation somewhere:
def generalMessageDelay():
return 50
This gives a 50ms pause between messages. if that doesn't help, we might want to increase it to 100 or even more?
great! 100ms works well!!! 75ms works!!! 50ms works!!!
maybe make it a safe 75ms in the final py file?
Yep, that sounds good. I'll kick off the build for the 2.2.1. I also fixed the MKS50 naming problem, I think.
Great! I'll also try out the MKS/aJuno patch naming
Just for (my/the) record .. the new patch extract from the saved syx file with the formerly missing bytes