-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MKS-80 implementation #98
Comments
Found a bug, I switched the bank on the MKS80 cartridge and the sounds are clearly different. KK though says "All patches already known to database" when importing |
@markusschloesser Ok, let me wrap my head around this. The MIDI protocol of the MKS 80 does not allow addressing the cartridge at all. It just allows access to 64 patches. My expectation would be as yours that when you set the memory switch to "Int" and do a bank request you get the 64 sounds from the internal memory, and when you switch to "A" you get 64 different sounds that are stored in the cartridge. Your modern cartridge adds another switch so you can have multiple banks under the same "A" switch position of the synth. But our expectations might be wrong given this is an ancient device. It might just be that the use case of the cartridge was only to backup and carry around data especially when you do not have a computer connected (because if you have a computer to backup your sounds to, why even bother with a cartridge)... I think the MIDI protocol maybe always addresses the internal memory, not the cartridge memory. Are the sounds you get those stored in the internal memory? Another test would be to transfer the sounds from the cartridge into the main memory (details on that in the manual p. 33ff) and then do a dump request, KK should find 64 new sounds. As my MKS-80 came without a cartridge, I can't test myself. |
That makes sense. It's how getting to patches on the Yamaha TX802 cartridge works too - sysex transfers only apply to internal memory, but you can manually transfer between internal memory and the currently selected cartridge bank, using the menus via the front panel. |
Makes sense! Will try it out later, just got the MKS80 back from reapir (one OSC was always out of tune, turns out there was a corroded PCB path)
Didn't even think of that! 🙄😂
Yep, I know, will try it out |
First off, let me say thank you for doing this and that I'm already incredibly impressed. I'm also now confused about the structure of the MKS data after successfully importing mine. Does each square contain both one tone and one patch? I tend to think of them as separate data locations, but I could see how they could be done that way given the same number of slots. Also, is there a way to put an entire bank back to the machine? I'd be interested in trying to find the original factory bank and sending it back. Mine arrived with some middling presets. Separately, any shot you own an MKS-70? If I wasn't working as much as I am, I'd take a shot at it, but that's entirely unrealistic right now. Thanks again for this. Being able to backup my MKS-80 patches will be a huge win. |
@jmfreeland Thank you! Let me try to answer your questions!
|
What a thorough response. I will do some experiments on the times as well. I’ve learned my MKS-70 quite well now, but I’m not as fluent on the interface of the 80. Good to know there’s potentially an edit buffer to be saving from. There are the same tones and patches setup in the 70, as each patch has an upper and lower associated tone. On top of that there’s a unison 2 mode which plays one note an octave lower. Given that each patch can have two tones with their own detune settings plus separate detune settings across tones, plus the chorus, you can really get some wide sounds. |
MS: I finally had some time to spend on sorting and organizing patches for the MKS80. And to confirm, yes, the sysex request always "gets" the internal bank. So copying from the cartridge to internal memory and then requesting again I managed to import 5 banks of patches and also additional banks I had on my computer. Also duplicates were found. So that's very fantastic! 😀😎🤗👏
Thanks, that worked! See above Now some things I noticed while spending about 4 hrs on doing that:
|
fyi I went ahead and put all knowledge of this issue into a wiki entry https://github.com/christofmuc/KnobKraft-orm/wiki/Roland-MKS-80 |
I am nearly done building a maxforlive device for the MKS-80. Stage 1 is to be able to edit parameters from Ableton > MKS80, Stage 2 to also parse what's coming from the MKS80 in order to properly show param values AS THEY ARE in the synth.
EDIT: Forget about 2. It's coming from the Electra ONE. When changing presets/patch ON the MKS, the sysex messages are what's to be expected (5 messages). Question now is, how to get those when sending a program change, is there an edit buffer request that's working for the MKS? |
@christofmuc is the "import edit buffer from synth" implemented for the mks80? Asking because I get no response from the MKS when clicking that button. |
UPDATE: Sending that to the MKS-80, the mks replies with what the manual describes as "5.1.3 Data (DAT)", which is 16 messages. Questions:
|
Hi, Did you ever finish the MaxForLive device? I have a functional editor for CTRLR, but I'd also be interested in something that can pull in the parameters as they are, which I don't think mine does. Cheers, |
I did, but only stage 1 https://github.com/markusschloesser/MKS-80_M4L |
I can easily see that. I wrote that code in C++, and that wasn't straightforward! |
@jmfreeland the latest version of my m4l device can now parse patches from the MKS80. However make sure to read the info on my repo. |
v35 of the maxforlive device can now receive directly from knobkraft, which is fantastic. So you can send from KK, device receives it, updates all dials etc and then sends to the MKS80. The device can also dump its content out (that's what it is doing to the MKS80, so it should also be able to send to kk, but I haven't tested it, yet. Is KK able to receive edit buffer messages? So 4, without program number @christofmuc |
@markusschloesser I have Ableton Lite, but hardly use it. How is your setup, the M4L pretends to be an MKS80 towards KK? |
@markusschloesser I looked into the code - currently the PGR message is mandatory. You could just make one up or always send the same program place PGR for KK to be happy, but it seems that needs some rework. I haven't touched the MKS80 code since I wanted to port it to Python - but it has all this beautiful handshake code in it which is only possible in C++ still. Did you checkout the revamped MKS70? It should now also be compatible with V3 bulk dumps. |
Live lite unfortunately doesn't include maxforlive Wrt question: do you mean when receiving? |
Ah OK, thanks for looking! |
Yeah, I haven't done anything in M4L obviously. PGR seems mandatory when receiving/loading sysex for the MKS80. The MKS70 adaptation now fully supports BLK from V3 and original Roland, and can also convert into APR messages. That I can't test however, sounds may sound wrong :-/ |
I still have my old Live10 suite (you can upgrade to 11) license lying around (I am a crashologist/beta tester for Ableton since a couple of years). You interested? Would make you a good price 😁 the MKS70 is the next step for me, especially now that Fred has implemented an edit buffer sysex request. But will take a couple of weeks, first I need to properly enjoy the MKS80 with full recall. |
Look forward to giving this a try! Big Live user, so definitely applicable. Had my family grow this weekend though, so time may be limited :) |
Congratulations! 😊🎉 |
That sounds amazing. I use KK as a librarian but editing without knowing the existing parameters can be a chore even in the reasonably nice editor that exists. Does this work because of the MKS poor MIDI thru implementation? |
I'm sorry, I don't understand the question. Could you please rephrase that? Flow is: kk > M4l device > mks80 |
Hi! ,maybe off topic here... I am not able to import any MKS 80 banks in knobkraft 2.10 via sysex (10:41:43: error Checksum error, aborting!). I was neither able to request banks from the synth. request command worked, but it constantly said "saving" on the display and never finished. any ideas? andromeda and K3m sysex patches work great in the librarian via patches import...thanks so much!! |
The mks80 needs bidirectional communication, are you sure that both midi out and in are properly selected in knobkraft? |
Hi! yes, I expected a handshake and connected motu Out and In respectively (don't know the error message, not in the studio) but I was not even able to import MKS 80 sysex files to KK via the patches "import from files to database" option that worked fine for my other synths...very strange... |
Hm, that is strange, but as my MIDI interface currently is broken I haven't tested the MKS80 for a while. Can you send me the bank file you're trying to upload? It should work. And the first thing to check for the bidirectional communication working is to try the autodetect and look at the MIDI log (you can upload that here as well) . Best temporarily disable the other synths (no data in the database will be lost) and activate only the MKS-80, and try an autodetection or the bank download, then let's have a look at the MIDI file. Also, just to check, make sure the Midi interface is not set to do MIDI filtering. The MKS80 is notorious for echoing MIDI commands and causing MIDI loops, so it might be that MIDI filtering is activated somewhere. |
Ok, "repaired" my MIDI interface. Finally dug deep enough into the 19" rack to detect a cabling issue. The MKS80 successful auto detection looks like this in the log for me:
And you need to make sure the MKS-80 responds to sysex. The MIDI function switch needs to be on roman III as far as I recall! |
thanks guys. Roman III is selected and my Behringer BCR2000 editor works well with the MKS so I guess sysex should work. will try it again soon with another interface! but I need to store the patches on the synth before sending something in there;) and for the problem B of importing .syx files in KK I attach a file here. there is no error log in KK. import from files into DB just won't work as expected:( |
The file you attached is for a Yamaha, not a Roland. It starts with 0xf0 0x43, which is the Yamaha code if I am not looking at it from the wrong angle? |
OMG you are right. I bought hundreds of sysex sounds and only one file (the presets) was working, hahaha. 20:19:40: info All patches already known to database. I hope that I can sort out my import problem with the guidance you gave. thanks so much!!! |
Same happened to me! It was on ebay sound load or some other name, and there were just a few files actually for the MKS-80. Note that I added .m80 and .mks80 import capabilities to the Orm because some older banks are floating around in these simple formats from other long forgotten Librarians. They might or might not work, worth a try. But if you're already setup with a BCR2000, you're good to go making your own! Which Preset do you use? |
hi Christof, I tried some other things but ended up with the same issue when I tried importing patches from MKS into KK. 21:11:37: info Found Roland MKS-80 on channel 1 replying on device micro lite Port 2 when sending to micro lite Port 2 on channel 1 |
@JK808909 Sorry I somehow missed your post here! Happy new year! About the import problem - there is a suspicious SQL exception in the log, the putPatchList should not fail. Also interesting is the checksum error. I can have a look at the MIDI data and see if I can find a problem with that, the SQL exception is hopefully only a follow up error of the checksum problem. Regarding the bidirectional sync - I am not sure how this works with the plugin, @markusschloesser might have more insights? To have the BCR2000 reflect the current patch, you normally need to send it the update messages, and I think that doesn't work for direct sysex controls. Can you make the BCR2000 send CC to the M4L device which would then generate the sysex for the MKS? |
@JK808909 Using your data I found a bug in the checksum calculation algorithm, which affects only the MKS80 and only for one specific checksum! With that fixed, it should be able to load your data without problems. I will make a fixed release as soon as I get around and let you know! |
Did you ever come around and implemented it? (not sure) |
Yes, on Jan 21st 2024, with commit 3c124c2. That was released with 2.2.0. |
Had the first chance to try out the MKS-80 implementation, it's fantastic! What's especially great is that, in contrast to what the guy from Midiquest was saying, one can remotely import all patches without manual intervention and send them. Amazing work! :-)
Questions:
(I have a memory card MC-256 - Memory Cartridge from SynthastiX / Waverex, which has 256 banks, https://shop.waverex.de/en/mc-256-memory-cartridge-for-roland-m64-c-compatible-devices.html )
The text was updated successfully, but these errors were encountered: