Skip to content
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

New device: Black Corporation Kijimi #74

Open
markusschloesser opened this issue Jan 10, 2021 · 41 comments
Open

New device: Black Corporation Kijimi #74

markusschloesser opened this issue Jan 10, 2021 · 41 comments

Comments

@markusschloesser
Copy link
Collaborator

I sent a mail to Black Corporation asking for the sysex docs for the Kijimi and the Deckard's Dream. As there is already open source available, they might be open to do disclose it.

Originally posted by @christofmuc in #62 (comment)

@markusschloesser
Copy link
Collaborator Author

While I really like my Kijimi, Black Corporation are notoriously bad at documenting stuff. I thing your best bet would be the person who wrote Bab Frik. He/She has some direct report with them and even made them fix stuff in the firmware. The repository for Babu Frik is here https://github.com/RitaAndAurora/kijimi-babu-frik

@christofmuc
Copy link
Owner

@markusschloesser Yes, I found that repository. I thought asking for documentation is a better way. But if they don't reply, I'll ask Bab.

@christofmuc christofmuc changed the title I sent a mail to Black Corporation asking for the sysex docs for the Kijimi and the Deckard's Dream. As there is already open source available, they might be open to do disclose it. New device: Black Corporation Kijimi Jan 10, 2021
@christofmuc
Copy link
Owner

I opened a question ticket with RitaAndAurora, let's see if they are willing to share info.

@markusschloesser
Copy link
Collaborator Author

I saw that, I follow her/him on gh as well :-)

@christofmuc
Copy link
Owner

christofmuc commented Jan 14, 2021

First shot at the Kijimi attached.
[removed]

@christofmuc christofmuc added the Ready for release Will be part of the next release label Jan 14, 2021
@christofmuc
Copy link
Owner

@markusschloesser Did you try the Kijimi adaptation I attached here?

@markusschloesser
Copy link
Collaborator Author

unfortunately haven't been able to, work 😒. Will try on the weekend

christofmuc added a commit that referenced this issue Jan 15, 2021
@christofmuc christofmuc removed the Ready for release Will be part of the next release label Jan 16, 2021
@christofmuc
Copy link
Owner

Kijimi put on hold since I received an email from Black Coporation offering me an NDA first. I need to see what they think is appropriate to disclose.

@christofmuc christofmuc added the On Hold On hold for now, waiting for other items to be done. label Jan 16, 2021
@markusschloesser
Copy link
Collaborator Author

markusschloesser commented Jan 16, 2021

test results:

  1. Auto configure says it works, but chooses wrong Midi ports (and channel, I have to correct this, kk says channel 2, while kijimi is set to channel 1, but if I set kk to 1, communication is lost, setting back to 2, it works again). While log file says:
    17:48:11: Found BC Kijimi on channel 2 replying on device Kijimi DIN 6 when sending to Kijimi DIN 6 on channel 2
    17:48:11: Found BC Kijimi on channel 2 replying on device LoopBe Internal MIDI when sending to LoopBe Internal MIDI on channel 2
    17:48:11: Found BC Kijimi on channel 2 replying on device UFX+ MADI optical when sending to UFX+ MADI optical on channel 2

  2. I then switched manually to the correct ports (still green after that), but import fails. Midi log sees something, seems to be 1 patch, but doesn't proceed (attached)
    midilogkijimi.zip

  3. Bank Names: Kijimi currently has 2 ROM Banks which are named (MJ, RD) and 9 numbered Banks (1-9). When doing "import patches from synth" the adaptation only offers importing of banks 1-10 (probably cos of py). Is there anyway thru sysex to request a) "amount of banks" (also helpful for memory cards that might be installed) b) names of banks?

  4. Did you get the unofficial manual as well? I have it.

  5. What's the deal with the NDA??? I'm starting to get angry at BC. No support site, no download site, you have write them or turn to either a user based FB group or hope that the babu frik guy has something. Great synths, but support and QA suck majorly.

@christofmuc
Copy link
Owner

@markusschloesser Maybe contact me via email at [email protected].

Quick answers:

  1. Ok, if it chooses the wrong ports that's usually because we need to extend the timeout (Knobkraft moved on to the next port and then the answer came). That can be done in Python.
  2. I'll look at that. I could import the sysex factory from the Internet, so it shouldn't be a big deal.
  3. Ah, I wasn't sure because the docs were conflicting. This can be increased in python (just add one). And no, there is no command to query the number of banks. That comes only with MIDI 2.0, the profile queries.
  4. I have a manual from the net which says DRAFT, but it has no sysex specification
  5. They want to get to me on Monday with something I should sign. I'll wait and see what it is... Obviously, with this being Open Source it'll be hard to provide a secret Adaptation script...

@markusschloesser
Copy link
Collaborator Author

will write you a mail.

  1. I tried with 500ms and 1500ms. At 500ms same as before (wrong port), at 1500 it's not found at all, which is strange
  2. ok
  3. can we name banks in the adaptation? And which is which?
  4. mine neither, but
  5. Babu Frik is GPL3 (and I think, what you need is here https://github.com/RitaAndAurora/kijimi-babu-frik/blob/master/Source/PresetControlComponent.h ). And because it is gpl3 you good to go, and nobody can forbid you to talk sysex to a synth ;-)

@markusschloesser
Copy link
Collaborator Author

Can later log what babufrik does when trying to auto configure thru midi-ox

@markusschloesser
Copy link
Collaborator Author

  1. a "load current device state from Kijimi" is SYSX: F0 02 14 F7
  2. a "send current state to Kijimi" is (00063E48 is the timestamp):
    00063E48 Loo -- F0 Buffer: 256 Bytes System Exclusive
    SYSX: F0 02 23 0B 22 00 25 3D 3C 3A 3C 3C 5D 3C 00 3D 3D 00
    SYSX: 7E 3B 5E 00 00 1D 49 6A 1B 2D 72 72 28 7E 42 00 70 3C
    SYSX: 3E 00 68 43 3C 21 09 23 1F 00 0F 64 41 00 7F 00 03 00
    SYSX: 01 01 01 00 00 00 01 01 00 00 02 00 04 01 00 00 00 00
    SYSX: 00 01 00 01 01 00 08 04 00 7F 08 7F 01 00 7F 7F 00 7F
    SYSX: 64 0A 00 00 00 00 00 7F 7F 7F 7F 01 02 01 01 01 01 01
    SYSX: 01 01 01 01 02 01 01 00 01 01 01 01 01 7F 7F 00 00 00
    SYSX: 00 00 14 14 13 00 0B 0B 0B 0B 0B 0B 0B 0B 22 22 22 22
    SYSX: 22 22 22 22 00 00 00 00 5E 5E 5E 5E 5E 5E 5E 5E 1D 1D
    SYSX: 1D 1D 1D 1D 1D 1D 00 00 00 00 00 00 00 00 49 49 49 49
    SYSX: 49 49 49 49 00 00 00 00 00 00 00 00 6A 6A 6A 6A 6A 6A
    SYSX: 6A 6A 00 00 00 00 00 00 00 00 03 03 03 03 03 03 03 03
    SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    SYSX: 30 00 64 0A 00 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
    SYSX: 02 7F 7F 7F

00063E48 Loo -- F7 Buffer: 4 Bytes SysEx End
SYSX: 7F 7F 7F F7

00063E48 Loo -- F0 Buffer: 4 Bytes System Exclusive
SYSX: F0 02 21 F7
or in direct sysex:
F0 02 23 0B 22 00 25 3D 3C 3A 3C 3C 5D 3C 00 3D 3D 00 7E 3B 5E 00 00 1D 49 6A 1B 2D 72 72 28 7E 42 00 70 3C 3E 00 68 43 3C 21 09 23 1F 00 0F 64 41 00 7F 00 03 00 01 01 01 00 00 00 01 01 00 00 02 00 04 01 00 00 00 00 00 01 00 01 01 00 08 04 00 7F 08 7F 01 00 7F 7F 00 7F 64 0A 00 00 00 00 00 7F 7F 7F 7F 01 02 01 01 01 01 01 01 01 01 01 02 01 01 00 01 01 01 01 01 7F 7F 00 00 00 00 00 14 14 13 00 0B 0B 0B 0B 0B 0B 0B 0B 22 22 22 22 22 22 22 22 00 00 00 00 5E 5E 5E 5E 5E 5E 5E 5E 1D 1D 1D 1D 1D 1D 1D 1D 00 00 00 00 00 00 00 00 49 49 49 49 49 49 49 49 00 00 00 00 00 00 00 00 6A 6A 6A 6A 6A 6A 6A 6A 00 00 00 00 00 00 00 00 03 03 03 03 03 03 03 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 00 64 0A 00 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 02 7F 7F 7F 7F 7F 7F F7 F0 02 21 F7

  1. loading a bank from the Kijimi does:
    000980A7 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 72 F7
    0009813F Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 73 F7
    000981D6 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 74 F7
    0009826D Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 75 F7
    00098304 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 76 F7
    0009839B Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 77 F7
    00098432 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 78 F7
    000984C9 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 79 F7
    00098561 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 7A F7
    000985F9 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 7B F7
    00098690 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 7C F7
    00098727 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 7D F7
    000987BE Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 7E F7
    00098855 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 7F F7
    etc but there's some strange patch sysex sometimes coming
    SYSX: F0 02 13 02 7E F7
    00098855 Loo Kij F0 Buffer: 6 Bytes System Exclusive
    SYSX: F0 02 13 02 7F F7
    00098951 Loo Kij F0 Buffer: 256 Bytes System Exclusive
    SYSX: F0 02 23 0B 22 00 25 3E 3C 3A 3C 3C 5D 3C 00 3D 3D 00
    SYSX: 7E 3B 5E 00 00 1D 49 6A 1B 2D 72 72 28 7E 42 2A 70 3C
    SYSX: 3E 00 68 43 3C 21 09 23 1F 00 0F 64 41 00 7F 00 03 00
    SYSX: 01 01 01 00 00 00 01 01 00 00 7F 00 04 7F 00 00 00 00
    SYSX: 7F 01 7F 7F 01 00 7F 04 00 7F 08 7F 01 00 7F 7F 00 7F
    SYSX: 64 0A 00 00 00 00 00 7F 7F 7F 7F 01 02 01 01 01 01 01
    SYSX: 01 01 01 01 02 01 01 00 01 01 01 01 01 7F 7F 00 00 00
    SYSX: 00 00 14 14 13 00 00 00 00 00 00 00 00 00 00 00 00 00
    SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    SYSX: 30 7F 64 0A 00 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
    SYSX: 7F 7F 7F 7F
    00098951 Loo Kij F7 Buffer: 4 Bytes SysEx End
    SYSX: 7F 7F 7F F7
    00098951 Loo Kij F0 Buffer: 4 Bytes System Exclusive
    SYSX: F0 02 21 F7

  2. the "device scan" doesn't seem to be doing anything (that I can find out) in babu

@markusschloesser
Copy link
Collaborator Author

re 1) changing your 15 to 14 doesn't change anything though 🤔🙄

@christofmuc
Copy link
Owner

1. I tried with 500ms and 1500ms. At 500ms same as before (wrong port), at 1500 it's not found at all, which is strange

Found it, it wasn't the timing but that my code took the reply from the MIDI loopback device also as a valid reply. I know check for the correct length of the message, and print the firmware version. That should fix it.

3. can we name banks in the adaptation? And which is which?

Yes, I implemented the friendlyBankName() function (adaptation programming guide) now, so you should get better names.

5. Babu Frik is GPL3 (and I think, what you need is here https://github.com/RitaAndAurora/kijimi-babu-frik/blob/master/Source/PresetControlComponent.h ). And because it is gpl3 you good to go, and nobody can forbid you to talk sysex to a synth ;-)

Yes, KnobKraft is dual licensed, so should somebody offer me tons of money I want to be able to sell it or parts of the code. So I cannot accept GPL3 code, even if KnobKraft is also AGPL.

I made a new version that should fix all of the above issues, but I don't want to upload it here before I see what the NDA is that BC is proposing.

@markusschloesser
Copy link
Collaborator Author

  1. did you get my mails w re to the kijimi on the 24.1?
  2. did you hear anything back from BC?

@christofmuc
Copy link
Owner

@markusschloesser Yes, I got your email, sorry for not getting back on this. I think we still have a timing problem, as the request going out looks correct, at least to my knowledge. And no, I heard nothing from them, so I would suggest we continue getting the adaptation fixed, and when it works for you I'll submit it to them for clearance.

@markusschloesser
Copy link
Collaborator Author

don't worry, just wanted to make sure, that the mail was received :-)
Sounds good! 👍

@markusschloesser
Copy link
Collaborator Author

hey, to pick up on this (and because BabuFrik is currently crashing all the time): What was the outcome of the NDA thing? Shall we just continue?

@christofmuc
Copy link
Owner

@markusschloesser We can continue, we only use stuff from BabuFrik. The main problem I remember was that you get empty patches all the while, and I believe it is a timing issue. In that way, similar to the one @Andy2No has with the Waldorf Pulse 2, ticket #136. I think I know the solution, but want to get the 1.15.0 out first. Hopefully today :-)

@markusschloesser
Copy link
Collaborator Author

did you ever change anything?
Yesterday I worked with KK and the Kijimi a bit.
I could import all banks, even though it said, that it only found 389 unique ones, which sounds fishy, and could also trigger a "per bank" import. ✔
When I changed a patch and saved it on the Kijimi and then imported that bank again, kk found one new patch ✔.
The "get edit buffer from synth" doesn't do anything, does the Kijimi support it?
Also the Kijimi is missing from the adaptation capability chart (https://github.com/christofmuc/KnobKraft-orm/blob/master/adaptions/implementation_overview.md)

@christofmuc
Copy link
Owner

@markusschloesser No, not that I know of. Maybe they fixed something, did you give it a firmware update?

The Kijimi might be missing because I have not officially included it in the distribution, but could do that now if you have some success. I need to dive in again and see if edit buffer is supposed to work.

@christofmuc christofmuc removed the On Hold On hold for now, waiting for other items to be done. label May 1, 2023
@christofmuc christofmuc added the Ready for release Will be part of the next release label May 1, 2023
@markusschloesser
Copy link
Collaborator Author

No fw update in ages, but currently in Sicily, so can't check fw version.
Edit buffer Support would be really great so that I don't have to overwrite an existing patch when I just tweaked it a bit.
Wrt only 389 unique patches found, we should check the fingerprinting for the kijimi.
Also what's the current adaptation version? I might be using an old one.
PS welcome back! 😊 😊

@christofmuc
Copy link
Owner

@markusschloesser Nice, enjoy Sicily! Have been there ages ago, still remember Syracuse as being especially nice, but generally awesome places and food.

I will add the Kijimi to the official release. We also have a new throttling feature since the last experiments, I remember the Kijimi transferring many patches as plain 0, which might explain the reduced number of unique patches. I found a comment in the code that it has no edit buffer though :-/

Keep your version of the adaptation before installing the new one, I am not sure which version we had floating around in case we have a regression!

@christofmuc
Copy link
Owner

I put in the BC Kijimi adaptation into today's 2.0.3. So you can try the released version and see if we still of open issues!

@christofmuc christofmuc removed the Ready for release Will be part of the next release label Jun 3, 2023
@markusschloesser
Copy link
Collaborator Author

Will do! Thank you! 😊

@markusschloesser
Copy link
Collaborator Author

Keep your version of the adaptation before installing the new one, I am not sure which version we had floating around in case we have a regression!

finally checked/compared the Kijimi adaptations, and yes, "my" version has a lot more stuff in it (edit buffer, friendly bank name, hasCorrectLength. Attached, does that mean that mine is newer/better?

BC_Kijimi 1.3.zip

@christofmuc
Copy link
Owner

Great! That looks much newer/better than what I had. I can't remember to have seen that before, so probably you did it :-)?

I can merge the changes in for the next release. The main thing that is missing and what might be problematic is that we can't convert old (short) format to new format, so we do not know if an old program converted to a state message would be accepted as an edit buffer? If that is not possible, we have the problem that only new patches can be sent to the edit buffer, making the adaptation somewhat inconsistent.

Can you try to send this, it's a short edit buffer of one of the test patches:
f0 02 23 0b 22 00 25 3e 3c 3a 3c 3c 5d 3c 00 3d 3d 00 7e 3b 5e 00 00 1d 49 6a 1b 2d 72 72 28 7e 42 2a 70 3c 3e 00 68 43 3c 21 09 23 1f 00 0f 64 41 00 7e 00 03 00 01 01 01 00 00 00 01 01 00 00 02 00 04 00 00 00 00 00 00 01 01 00 01 00 08 04 00 00 08 0a 01 00 00 00 01 00 64 0a 00 00 00 00 00 00 00 00 01 01 02 01 01 01 01 01 01 01 01 01 02 01 01 00 01 01 01 01 01 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f f7

@markusschloesser
Copy link
Collaborator Author

markusschloesser commented Nov 27, 2023

Great! That looks much newer/better than what I had. I can't remember to have seen that before, so probably you did it :-)?

I can merge the changes in for the next release. The main thing that is missing and what might be problematic is that we can't convert old (short) format to new format, so we do not know if an old program converted to a state message would be accepted as an edit buffer? If that is not possible, we have the problem that only new patches can be sent to the edit buffer, making the adaptation somewhat inconsistent.

nope, you sent this to me on 24.01.2021 and I quote
.....anbei eine neue Version des Kijimi - jetzt mit Edit Buffer support zum
Testen. Frederic hatte mir noch die set state codes geschickt.....

to which I replied with, that still too many patches are detected as duplicates and had attached this logfile
Documents.zip
(don't know why the syx is called something with A6)

Can you try to send this, it's a short edit buffer of one of the test patches: f0 02 23 0b 22 00 25 3e 3c 3a 3c 3c 5d 3c 00 3d 3d 00 7e 3b 5e 00 00 1d 49 6a 1b 2d 72 72 28 7e 42 2a 70 3c 3e 00 68 43 3c 21 09 23 1f 00 0f 64 41 00 7e 00 03 00 01 01 01 00 00 00 01 01 00 00 02 00 04 00 00 00 00 00 00 01 01 00 01 00 08 04 00 00 08 0a 01 00 00 00 01 00 64 0a 00 00 00 00 00 00 00 00 01 01 02 01 01 01 01 01 01 01 01 01 02 01 01 00 01 01 01 01 01 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f f7

when I send this, the Kijimi switches to Bank 1, Patch 1, but does not send anything back. (but I need to check if I'm on the most current kijimi fw version (currently 1.3.6)
EDIT: the current fw version is 1.4.4 which supposedly only fixed micro tuning stuff. Will backup sounds and update and then try again.

@christofmuc
Copy link
Owner

Ha ha, I might remember... was that in the 4th or 5th lockdown :-)?

The string I gave you was an edit buffer constructed from an old, short program, by dropping bank and program number from it.

I think we have the device sorted out - we just need to check that all the empty patches are either actually empty, or if the device runs into some form of overload. Then we need to increase some message delay or request shorter banks.

@markusschloesser
Copy link
Collaborator Author

something like that 😂
Edit buffer not working though, would like to fix this.
Will try to do that plus the "empty patches" by comparing with BabuFrik (device and code).

@norjad
Copy link

norjad commented Jan 29, 2024

Hey everyone,

I'm late to the party, but I just found this thread. I have a Deckard's Dream II and asked BC several times for the SysEx implementation because I wanted to build something. I just got no meaningful answer, so I assumed that the DD just doesn't have SysEx. But now that I saw that Kijimi has it (and DD also mentioned above) it's unlikely.

Do you know anything about DD II SysEx – or how to move forward with this?

Thanks a lot!

@markusschloesser
Copy link
Collaborator Author

The guy who wrote babu frik (editor and librarian for the kijimi), also wrote an editor and librarian for the dd. So he must have had access to the full midi spec, incl sysex. As both editors are open source and on github, an adaptation is absolutely possible

@norjad
Copy link

norjad commented Jan 29, 2024

Thanks @markusschloesser ! I just wrote him an email.

The editor/librarian you mentioned is J. F. Sebastian. It's great, but unfortunately it crashes when moving specific sliders on the DD II. I assume it was written with/for a DD 1.

Anyway, I hope he'll respond. Getting any useful info directly from BC seems close to impossible.

@christofmuc
Copy link
Owner

Interesting! I would expect the information required to be hidden here somewhere:

https://github.com/RitaAndAurora/ddrm-jfsebastian/blob/master/Source/DDRMPresetBank.h#L53

https://github.com/RitaAndAurora/ddrm-jfsebastian/blob/c0f2bf4bc22210bb05a26e02a3d2dce64f22e8c5/Source/PluginProcessor.cpp#L978

though it's a bit sad that there is no proper documentation available.

@norjad
Copy link

norjad commented Jan 29, 2024

Yes, thanks, unfortunately too hidden for me. ;-)

I would also mostly be interested in requesting/sending the edit buffer, which is not implemented in J. F. Sebastian.

@markusschloesser
Copy link
Collaborator Author

Didn't BC do a whole new midi implementation quite recently? And is edit buffer requesting actually supported by the DD?

@norjad
Copy link

norjad commented Jan 29, 2024

I didn't read anything about a new MIDI implementation. I'm pretty sure that I have the latest firmware and manual + addition.

I just can't find any info on DD SysEx online, so I don't know if edit buffer request/send is supported. But the fact that it is not implemented in J. F. Sebastian could mean that it is not supported by DD. Hard to tell...

@markusschloesser
Copy link
Collaborator Author

I was wrong, they implemented quite a lot of nice new features for the Xerxes, but apart from LFO to midi clock sync, nothing new wrt to midi

@christofmuc
Copy link
Owner

Doesn't look too good: RitaAndAurora/ddrm-jfsebastian#8

@norjad
Copy link

norjad commented Jan 29, 2024

Well spotted. Indeed, doesn't sound good. :-(

With their new Buchla 200 line BC will be even more busy, so I don't expect that to happen anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants